mirror of
https://github.com/tladesignz/dnstt.git
synced 2026-09-29 18:38:09 +03:00
53 lines
1.1 KiB
Go
53 lines
1.1 KiB
Go
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)
|
|
}
|
|
}
|
|
}
|