]> Sergey Matveev's repositories - btrtrc.git/blobdiff - bencode/fuzz_test.go
Drop support for go 1.20
[btrtrc.git] / bencode / fuzz_test.go
index 35b841d25486637c92d4e824360e210866eef8fd..d0dce71f3d327af54a59aef8df71dcd219199f73 100644 (file)
@@ -1,4 +1,5 @@
 //go:build go1.18
+// +build go1.18
 
 package bencode
 
@@ -15,6 +16,9 @@ var bencodeInterfaceChecker = qt.CmpEquals(cmp.Comparer(func(a, b *big.Int) bool
 }))
 
 func Fuzz(f *testing.F) {
+       for _, ret := range random_encode_tests {
+               f.Add([]byte(ret.expected))
+       }
        f.Fuzz(func(t *testing.T, b []byte) {
                c := qt.New(t)
                var d interface{}
@@ -30,3 +34,20 @@ func Fuzz(f *testing.F) {
                c.Assert(d0, bencodeInterfaceChecker, d)
        })
 }
+
+func FuzzInterfaceRoundTrip(f *testing.F) {
+       for _, ret := range random_encode_tests {
+               f.Add([]byte(ret.expected))
+       }
+       f.Fuzz(func(t *testing.T, b []byte) {
+               c := qt.New(t)
+               var d interface{}
+               err := Unmarshal(b, &d)
+               if err != nil {
+                       c.Skip(err)
+               }
+               b0, err := Marshal(d)
+               c.Assert(err, qt.IsNil)
+               c.Check(b0, qt.DeepEquals, b)
+       })
+}