magnetico/bencode/fuzz_test.go

63 lines
1.1 KiB
Go

package bencode
import (
"reflect"
"testing"
)
func Fuzz(f *testing.F) {
for _, ret := range random_encode_tests {
f.Add([]byte(ret.expected))
}
f.Fuzz(func(t *testing.T, b []byte) {
t.Parallel()
var d interface{}
err := Unmarshal(b, &d)
if err != nil {
t.Skip(err)
}
b0, err := Marshal(d)
if err != nil {
t.Errorf("Marshal error: %v", err)
}
var d0 interface{}
err = Unmarshal(b0, &d0)
if err != nil {
t.Errorf("Unmarshal error: %v", err)
}
if !reflect.DeepEqual(d0, d) {
t.Errorf("Unmarshaled value does not match original value")
}
})
}
func FuzzInterfaceRoundTrip(f *testing.F) {
for _, ret := range random_encode_tests {
f.Add([]byte(ret.expected))
}
f.Fuzz(func(t *testing.T, b []byte) {
t.Parallel()
var d interface{}
err := Unmarshal(b, &d)
if err != nil {
t.Skip()
}
b0, err := Marshal(d)
if err != nil {
t.Errorf("Marshal error: %v", err)
}
var d0 interface{}
err = Unmarshal(b0, &d0)
if err != nil {
t.Errorf("Unmarshal error: %v", err)
}
if !reflect.DeepEqual(d0, d) {
t.Errorf("Unmarshaled value does not match original value")
}
})
}