From 13d844c130b7d55c8c598842de59391d9c66bc67 Mon Sep 17 00:00:00 2001 From: Ethan Werner Date: Tue, 30 Jun 2026 00:29:48 +0400 Subject: initial commit --- snowflake_fuzz_test.go | 102 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 102 insertions(+) create mode 100644 snowflake_fuzz_test.go (limited to 'snowflake_fuzz_test.go') diff --git a/snowflake_fuzz_test.go b/snowflake_fuzz_test.go new file mode 100644 index 0000000..e527df3 --- /dev/null +++ b/snowflake_fuzz_test.go @@ -0,0 +1,102 @@ +package snowflake + +import "testing" + +func FuzzFromString(f *testing.F) { + s, _ := New() + f.Add(s.String()) + f.Add("") + f.Add("0") + f.Add("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789") + + f.Fuzz(func(t *testing.T, data string) { + result, err := FromString(data) + if err != nil { + return + } + if !result.IsZero() { + roundTrip := result.String() + parsed, err := FromString(roundTrip) + if err != nil { + t.Fatalf("round-trip failed: %v", err) + } + if parsed != result { + t.Fatalf("round-trip mismatch: %v != %v", result, parsed) + } + } + }) +} + +func FuzzFromHex(f *testing.F) { + s, _ := New() + f.Add(s.Hex()) + f.Add("") + f.Add("00") + + f.Fuzz(func(t *testing.T, data string) { + result, err := FromHex(data) + if err != nil { + return + } + roundTrip := result.Hex() + parsed, err := FromHex(roundTrip) + if err != nil { + t.Fatalf("round-trip failed: %v", err) + } + if parsed != result { + t.Fatalf("round-trip mismatch: %v != %v", result, parsed) + } + }) +} + +func FuzzUnmarshalJSON(f *testing.F) { + s, _ := New() + serialized, _ := s.MarshalJSON() + f.Add(string(serialized)) + f.Add(`""`) + f.Add(`"0"`) + + f.Fuzz(func(t *testing.T, data string) { + var result Snowflake + err := result.UnmarshalJSON([]byte(data)) + if err != nil { + return + } + if !result.IsZero() { + roundTrip, _ := result.MarshalJSON() + var parsed Snowflake + if err := parsed.UnmarshalJSON(roundTrip); err != nil { + t.Fatalf("round-trip failed: %v", err) + } + if parsed != result { + t.Fatalf("round-trip mismatch: %v != %v", result, parsed) + } + } + }) +} + +func FuzzUnmarshalText(f *testing.F) { + s, _ := New() + serialized, _ := s.MarshalText() + f.Add(string(serialized)) + f.Add("") + f.Add("0") + + f.Fuzz(func(t *testing.T, data string) { + var result Snowflake + err := result.UnmarshalText([]byte(data)) + if err != nil { + return + } + if !result.IsZero() { + roundTrip, _ := result.MarshalText() + var parsed Snowflake + if err := parsed.UnmarshalText(roundTrip); err != nil { + t.Fatalf("round-trip failed: %v", err) + } + if parsed != result { + t.Fatalf("round-trip mismatch: %v != %v", result, parsed) + } + } + }) +} -- cgit v1.3.1