| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- package main
- import (
- "bytes"
- "io"
- "testing"
- )
- func allPackets(buf []byte) ([][]byte, error) {
- var packets [][]byte
- r := bytes.NewReader(buf)
- for {
- p, err := nextPacket(r)
- if err != nil {
- return packets, err
- }
- packets = append(packets, p)
- }
- }
- func packetsEqual(a, b [][]byte) bool {
- if len(a) != len(b) {
- return false
- }
- for i := range a {
- if !bytes.Equal(a[i], b[i]) {
- return false
- }
- }
- return true
- }
- func TestNextPacket(t *testing.T) {
- for _, test := range []struct {
- input string
- packets [][]byte
- err error
- }{
- {"", [][]byte{}, io.EOF},
- {"\x00", [][]byte{}, io.ErrUnexpectedEOF},
- {"\x00\x00", [][]byte{{}}, io.EOF},
- {"\x00\x00\x00", [][]byte{{}}, io.ErrUnexpectedEOF},
- {"\x00\x01", [][]byte{}, io.ErrUnexpectedEOF},
- {"\x00\x05hello\x00\x05world", [][]byte{[]byte("hello"), []byte("world")}, io.EOF},
- } {
- packets, err := allPackets([]byte(test.input))
- if !packetsEqual(packets, test.packets) || err != test.err {
- t.Errorf("%x\nreturned %x %v\nexpected %x %v",
- test.input, packets, err, test.packets, test.err)
- }
- }
- }
|