// Fuzz test for N iterations func testTypeFuzzN(t *testing.T, base interface{}, ff interface{}, n int) { require.Implements(t, (*json.Marshaler)(nil), ff) require.Implements(t, (*json.Unmarshaler)(nil), ff) require.Implements(t, (*marshalerFaster)(nil), ff) require.Implements(t, (*unmarshalFaster)(nil), ff) if _, ok := base.(unmarshalFaster); ok { require.FailNow(t, "base should not have a UnmarshalJSONFFLexer") } if _, ok := base.(marshalerFaster); ok { require.FailNow(t, "base should not have a MarshalJSONBuf") } f := fuzz.New() f.NumElements(0, 1+n/40) f.NilChance(0.2) f.Funcs(fuzzTime, fuzzTimeSlice) for i := 0; i < n; i++ { f.RandSource(rand.New(rand.NewSource(int64(i * 5275)))) f.Fuzz(base) f.RandSource(rand.New(rand.NewSource(int64(i * 5275)))) f.Fuzz(ff) testSameMarshal(t, base, ff) testCycle(t, base, ff) } }
func testType(t *testing.T, base interface{}, ff interface{}) { require.Implements(t, (*json.Marshaler)(nil), ff) require.Implements(t, (*json.Unmarshaler)(nil), ff) require.Implements(t, (*marshalerFaster)(nil), ff) require.Implements(t, (*unmarshalFaster)(nil), ff) if _, ok := base.(unmarshalFaster); ok { require.FailNow(t, "base should not have a UnmarshalJSONFFLexer") } if _, ok := base.(marshalerFaster); ok { require.FailNow(t, "base should not have a MarshalJSONBuf") } testSameMarshal(t, base, ff) testCycle(t, base, ff) }
func AssertErrorInterface(t *testing.T, expected interface{}, actual error, desc string) { require.Error(t, actual, desc) require.Implements(t, expected, actual, desc) }