63 lines
1.2 KiB
Go
63 lines
1.2 KiB
Go
package tape
|
|
|
|
import "slices"
|
|
import "testing"
|
|
|
|
func TestDecodePairs(test *testing.T) {
|
|
pairs := map[uint16] []byte {
|
|
3894: []byte("foo"),
|
|
7: []byte("br"),
|
|
}
|
|
got, err := DecodePairs([]byte {
|
|
0, 2,
|
|
0, 7, 0, 2,
|
|
15, 54, 0, 5,
|
|
98, 114,
|
|
102, 111, 111})
|
|
if err != nil { test.Fatal(err) }
|
|
length := 0
|
|
for key, value := range got {
|
|
test.Log(key, value)
|
|
if !slices.Equal(pairs[key], value) { test.Fatal("not equal") }
|
|
length ++
|
|
}
|
|
test.Log("length")
|
|
if length != len(pairs) { test.Fatal("wrong length") }
|
|
}
|
|
|
|
func TestEncodePairs(test *testing.T) {
|
|
pairs := map[uint16] []byte {
|
|
3894: []byte("foo"),
|
|
7: []byte("br"),
|
|
}
|
|
got, err := EncodePairs(pairs)
|
|
if err != nil { test.Fatal(err) }
|
|
test.Log(got)
|
|
valid := slices.Equal(got, []byte {
|
|
0, 2,
|
|
15, 54, 0, 3,
|
|
0, 7, 0, 5,
|
|
102, 111, 111,
|
|
98, 114}) ||
|
|
slices.Equal(got, []byte {
|
|
0, 2,
|
|
0, 7, 0, 2,
|
|
15, 54, 0, 5,
|
|
98, 114,
|
|
102, 111, 111})
|
|
if !valid { test.Fatal("not equal") }
|
|
}
|
|
|
|
func FuzzDecodePairs(fuzz *testing.F) {
|
|
fuzz.Add([]byte {
|
|
0, 2,
|
|
0, 7, 0, 2,
|
|
15, 54, 0, 5,
|
|
98, 114,
|
|
102, 111, 111})
|
|
fuzz.Fuzz(func(t *testing.T, buffer []byte) {
|
|
// ensure it does not panic :P
|
|
DecodePairs(buffer)
|
|
})
|
|
}
|