9 "github.com/stretchr/testify/assert"
10 "github.com/stretchr/testify/require"
14 func writePacket(t *testing.T, w io.Writer, datas ...[]byte) {
15 pl := newPktline(nil, w)
17 for _, data := range datas {
18 require.Nil(t, pl.writePacket(data))
21 require.Nil(t, pl.writeFlush())
24 func TestPktlineReaderReadsSinglePacketsInOneCall(t *testing.T) {
27 writePacket(t, &buf, []byte("asdf"))
29 pr := &pktlineReader{pl: newPktline(&buf, nil)}
31 data, err := ioutil.ReadAll(pr)
34 assert.Equal(t, []byte("asdf"), data)
37 func TestPktlineReaderReadsManyPacketsInOneCall(t *testing.T) {
40 writePacket(t, &buf, []byte("first\n"), []byte("second"))
42 pr := &pktlineReader{pl: newPktline(&buf, nil)}
44 data, err := ioutil.ReadAll(pr)
47 assert.Equal(t, []byte("first\nsecond"), data)
50 func TestPktlineReaderReadsSinglePacketsInMultipleCallsWithUnevenBuffering(t *testing.T) {
53 writePacket(t, &buf, []byte("asdf"))
55 pr := &pktlineReader{pl: newPktline(&buf, nil)}
60 n1, e1 := pr.Read(p1[:])
61 assert.Equal(t, 3, n1)
62 assert.Equal(t, []byte("asd"), p1[:])
65 n2, e2 := pr.Read(p2[:])
66 assert.Equal(t, 1, n2)
67 assert.Equal(t, []byte("f"), p2[:])
68 assert.Equal(t, io.EOF, e2)
71 func TestPktlineReaderReadsManyPacketsInMultipleCallsWithUnevenBuffering(t *testing.T) {
74 writePacket(t, &buf, []byte("first"), []byte("second"))
76 pr := &pktlineReader{pl: newPktline(&buf, nil)}
82 n1, e1 := pr.Read(p1[:])
83 assert.Equal(t, 4, n1)
84 assert.Equal(t, []byte("firs"), p1[:])
87 n2, e2 := pr.Read(p2[:])
88 assert.Equal(t, 7, n2)
89 assert.Equal(t, []byte("tsecond"), p2[:])
90 assert.Equal(t, io.EOF, e2)
92 n3, e3 := pr.Read(p3[:])
93 assert.Equal(t, 0, n3)
95 assert.Equal(t, io.EOF, e3)
98 func TestPktlineReaderReadsSinglePacketsInMultipleCallsWithEvenBuffering(t *testing.T) {
101 writePacket(t, &buf, []byte("firstother"))
103 pr := &pktlineReader{pl: newPktline(&buf, nil)}
108 n1, e1 := pr.Read(p1[:])
109 assert.Equal(t, 5, n1)
110 assert.Equal(t, []byte("first"), p1[:])
113 n2, e2 := pr.Read(p2[:])
114 assert.Equal(t, 5, n2)
115 assert.Equal(t, []byte("other"), p2[:])
116 assert.Equal(t, io.EOF, e2)
119 func TestPktlineReaderReadsManyPacketsInMultipleCallsWithEvenBuffering(t *testing.T) {
122 writePacket(t, &buf, []byte("first"), []byte("other"))
124 pr := &pktlineReader{pl: newPktline(&buf, nil)}
130 n1, e1 := pr.Read(p1[:])
131 assert.Equal(t, 5, n1)
132 assert.Equal(t, []byte("first"), p1[:])
135 n2, e2 := pr.Read(p2[:])
136 assert.Equal(t, 5, n2)
137 assert.Equal(t, []byte("other"), p2[:])
138 assert.Equal(t, io.EOF, e2)
140 n3, e3 := pr.Read(p3)
141 assert.Equal(t, 0, n3)
142 assert.Equal(t, io.EOF, e3)