Просмотр исходного кода

Add test for connrewind

tags/v2.0.0-rc1
9seconds 5 лет назад
Родитель
Сommit
766800700a
1 измененных файлов: 57 добавлений и 0 удалений
  1. 57
    0
      mtglib/conns_internal_test.go

+ 57
- 0
mtglib/conns_internal_test.go Просмотреть файл

1
 package mtglib
1
 package mtglib
2
 
2
 
3
 import (
3
 import (
4
+	"bytes"
4
 	"context"
5
 	"context"
5
 	"errors"
6
 	"errors"
6
 	"io"
7
 	"io"
12
 	"github.com/stretchr/testify/suite"
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
 type ConnTrafficTestSuite struct {
28
 type ConnTrafficTestSuite struct {
16
 	suite.Suite
29
 	suite.Suite
17
 
30
 
144
 	suite.Equal(0, n)
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
 func TestConnTraffic(t *testing.T) {
199
 func TestConnTraffic(t *testing.T) {
148
 	t.Parallel()
200
 	t.Parallel()
149
 	suite.Run(t, &ConnTrafficTestSuite{})
201
 	suite.Run(t, &ConnTrafficTestSuite{})
150
 }
202
 }
203
+
204
+func TestConnRewind(t *testing.T) {
205
+	t.Parallel()
206
+	suite.Run(t, &ConnRewindTestSuite{})
207
+}

Загрузка…
Отмена
Сохранить