소스 검색

Add test for connrewind

tags/v2.0.0-rc1
9seconds 5 년 전
부모
커밋
766800700a
1개의 변경된 파일57개의 추가작업 그리고 0개의 파일을 삭제
  1. 57
    0
      mtglib/conns_internal_test.go

+ 57
- 0
mtglib/conns_internal_test.go 파일 보기

@@ -1,6 +1,7 @@
1 1
 package mtglib
2 2
 
3 3
 import (
4
+	"bytes"
4 5
 	"context"
5 6
 	"errors"
6 7
 	"io"
@@ -12,6 +13,18 @@ import (
12 13
 	"github.com/stretchr/testify/suite"
13 14
 )
14 15
 
16
+type ConnRewindBaseConn struct {
17
+	testlib.NetConnMock
18
+
19
+	readBuffer bytes.Buffer
20
+}
21
+
22
+func (c *ConnRewindBaseConn) Read(p []byte) (int, error) {
23
+	c.Called(p)
24
+
25
+	return c.readBuffer.Read(p)
26
+}
27
+
15 28
 type ConnTrafficTestSuite struct {
16 29
 	suite.Suite
17 30
 
@@ -144,7 +157,51 @@ func (suite *ConnTrafficTestSuite) TestWriteNothingErr() {
144 157
 	suite.Equal(0, n)
145 158
 }
146 159
 
160
+type ConnRewindTestSuite struct {
161
+	suite.Suite
162
+
163
+	connMock *ConnRewindBaseConn
164
+	conn     *connRewind
165
+}
166
+
167
+func (suite *ConnRewindTestSuite) SetupTest() {
168
+	suite.connMock = &ConnRewindBaseConn{}
169
+	suite.conn = newConnRewind(suite.connMock)
170
+}
171
+
172
+func (suite *ConnRewindTestSuite) TearDownTest() {
173
+	suite.connMock.AssertExpectations(suite.T())
174
+}
175
+
176
+func (suite *ConnRewindTestSuite) TestRead() {
177
+	suite.connMock.On("Read", mock.Anything)
178
+	suite.connMock.readBuffer.Write([]byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 10})
179
+
180
+	buf := make([]byte, 2)
181
+
182
+	n, err := suite.conn.Read(buf)
183
+	suite.NoError(err)
184
+	suite.Equal(2, n)
185
+	suite.Equal([]byte{1, 2}, buf)
186
+
187
+	n, err = suite.conn.Read(buf)
188
+	suite.NoError(err)
189
+	suite.Equal(2, n)
190
+	suite.Equal([]byte{3, 4}, buf)
191
+
192
+	suite.conn.Rewind()
193
+
194
+	data, err := io.ReadAll(suite.conn)
195
+	suite.NoError(err)
196
+	suite.Equal([]byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, data)
197
+}
198
+
147 199
 func TestConnTraffic(t *testing.T) {
148 200
 	t.Parallel()
149 201
 	suite.Run(t, &ConnTrafficTestSuite{})
150 202
 }
203
+
204
+func TestConnRewind(t *testing.T) {
205
+	t.Parallel()
206
+	suite.Run(t, &ConnRewindTestSuite{})
207
+}

Loading…
취소
저장