Files
tladesignz_dnstt/dnstt-client/dns_test.go
T

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)
}
}
}