7 "github.com/stretchr/testify/assert"
10 func TestPktlineWriterWritesPacketsShorterThanMaxPacketSize(t *testing.T) {
13 w := NewPktlineWriter(&buf, 0)
14 assertWriterWrite(t, w, []byte("Hello, world!"), 13)
15 assertWriterWrite(t, w, nil, 0)
17 pl := newPktline(&buf, nil)
18 assertPacketRead(t, pl, []byte("Hello, world!"))
19 assertPacketRead(t, pl, nil)
22 func TestPktlineWriterWritesPacketsEqualToMaxPacketLength(t *testing.T) {
23 big := make([]byte, MaxPacketLength)
24 for i, _ := range big {
28 // Make a copy so that we can drain the data inside of it
29 p := make([]byte, MaxPacketLength)
34 w := NewPktlineWriter(&buf, 0)
35 assertWriterWrite(t, w, p, len(big))
36 assertWriterWrite(t, w, nil, 0)
38 pl := newPktline(&buf, nil)
39 assertPacketRead(t, pl, big)
40 assertPacketRead(t, pl, nil)
43 func TestPktlineWriterWritesMultiplePacketsLessThanMaxPacketLength(t *testing.T) {
46 w := NewPktlineWriter(&buf, 0)
47 assertWriterWrite(t, w, []byte("first\n"), len("first\n"))
48 assertWriterWrite(t, w, []byte("second"), len("second"))
49 assertWriterWrite(t, w, nil, 0)
51 pl := newPktline(&buf, nil)
52 assertPacketRead(t, pl, []byte("first\nsecond"))
53 assertPacketRead(t, pl, nil)
56 func TestPktlineWriterWritesMultiplePacketsGreaterThanMaxPacketLength(t *testing.T) {
59 b1 := make([]byte, MaxPacketLength*3/4)
60 for i, _ := range b1 {
64 b2 := make([]byte, MaxPacketLength*3/4)
65 for i, _ := range b2 {
69 w := NewPktlineWriter(&buf, 0)
70 assertWriterWrite(t, w, b1, len(b1))
71 assertWriterWrite(t, w, b2, len(b2))
72 assertWriterWrite(t, w, nil, 0)
74 // offs is how far into b2 we needed to buffer before writing an entire
76 offs := MaxPacketLength - len(b1)
78 pl := newPktline(&buf, nil)
79 assertPacketRead(t, pl, append(b1, b2[:offs]...))
80 assertPacketRead(t, pl, b2[offs:])
81 assertPacketRead(t, pl, nil)
84 func TestPktlineWriterAllowsFlushesOnNil(t *testing.T) {
85 assert.NoError(t, (*PktlineWriter)(nil).Flush())
88 func TestPktlineWriterDoesntWrapItself(t *testing.T) {
89 itself := &PktlineWriter{}
90 nw := NewPktlineWriter(itself, 0)
92 assert.Equal(t, itself, nw)
95 func assertWriterWrite(t *testing.T, w *PktlineWriter, p []byte, plen int) {
106 assert.Equal(t, plen, n)
109 func assertPacketRead(t *testing.T, pl *pktline, expected []byte) {
110 got, err := pl.readPacket()
113 assert.Equal(t, expected, got)