]> Sergey Matveev's repositories - btrtrc.git/blob - bencode/fuzz_test.go
Fix fuzz comparison of big.Int
[btrtrc.git] / bencode / fuzz_test.go
1 //go:build go1.18
2
3 package bencode
4
5 import (
6         "math/big"
7         "testing"
8
9         qt "github.com/frankban/quicktest"
10         "github.com/google/go-cmp/cmp"
11 )
12
13 var bencodeInterfaceChecker = qt.CmpEquals(cmp.Comparer(func(a, b *big.Int) bool {
14         return a.Cmp(b) == 0
15 }))
16
17 func Fuzz(f *testing.F) {
18         f.Fuzz(func(t *testing.T, b []byte) {
19                 c := qt.New(t)
20                 var d interface{}
21                 err := Unmarshal(b, &d)
22                 if err != nil {
23                         t.Skip()
24                 }
25                 b0, err := Marshal(d)
26                 c.Assert(err, qt.IsNil)
27                 var d0 interface{}
28                 err = Unmarshal(b0, &d0)
29                 c.Assert(err, qt.IsNil)
30                 c.Assert(d0, bencodeInterfaceChecker, d)
31         })
32 }