From e0f9cc69f9f7f524610d65b288eecdbf2ad958d6 Mon Sep 17 00:00:00 2001 From: Ethan Werner Date: Sat, 1 Aug 2026 20:28:06 +0400 Subject: removed error on New() --- snowflake.go | 8 ++++-- snowflake_bench_test.go | 6 +--- snowflake_fuzz_test.go | 8 +++--- snowflake_test.go | 73 ++++++++++++------------------------------------- 4 files changed, 27 insertions(+), 68 deletions(-) diff --git a/snowflake.go b/snowflake.go index e2cb48e..92a6124 100644 --- a/snowflake.go +++ b/snowflake.go @@ -42,10 +42,12 @@ type Snowflake struct { } // New returns a new random Snowflake ID. -func New() (Snowflake, error) { +func New() Snowflake { var s Snowflake - _, err := rand.Read(s.bytes[:]) - return s, err + if _, err := rand.Read(s.bytes[:]); err != nil { + panic(err) + } + return s } // Zero returns the zero value of Snowflake. diff --git a/snowflake_bench_test.go b/snowflake_bench_test.go index e630f19..ffad399 100644 --- a/snowflake_bench_test.go +++ b/snowflake_bench_test.go @@ -2,11 +2,7 @@ package snowflake import "testing" -var benchmarkSnowflake Snowflake - -func init() { - benchmarkSnowflake, _ = New() -} +var benchmarkSnowflake = New() func BenchmarkNew(b *testing.B) { b.ReportAllocs() diff --git a/snowflake_fuzz_test.go b/snowflake_fuzz_test.go index e527df3..a2ba624 100644 --- a/snowflake_fuzz_test.go +++ b/snowflake_fuzz_test.go @@ -3,7 +3,7 @@ package snowflake import "testing" func FuzzFromString(f *testing.F) { - s, _ := New() + s := New() f.Add(s.String()) f.Add("") f.Add("0") @@ -28,7 +28,7 @@ func FuzzFromString(f *testing.F) { } func FuzzFromHex(f *testing.F) { - s, _ := New() + s := New() f.Add(s.Hex()) f.Add("") f.Add("00") @@ -50,7 +50,7 @@ func FuzzFromHex(f *testing.F) { } func FuzzUnmarshalJSON(f *testing.F) { - s, _ := New() + s := New() serialized, _ := s.MarshalJSON() f.Add(string(serialized)) f.Add(`""`) @@ -76,7 +76,7 @@ func FuzzUnmarshalJSON(f *testing.F) { } func FuzzUnmarshalText(f *testing.F) { - s, _ := New() + s := New() serialized, _ := s.MarshalText() f.Add(string(serialized)) f.Add("") diff --git a/snowflake_test.go b/snowflake_test.go index e8c5e7c..e69644c 100644 --- a/snowflake_test.go +++ b/snowflake_test.go @@ -6,10 +6,7 @@ import ( ) func TestNew(t *testing.T) { - s, err := New() - if err != nil { - t.Fatalf("New() returned error: %v", err) - } + s := New() if s.IsZero() { t.Error("New() returned zero Snowflake") } @@ -19,10 +16,8 @@ func TestNewUnique(t *testing.T) { seen := make(map[string]bool, 1000) for i := 0; i < 1000; i++ { - s, err := New() - if err != nil { - t.Fatalf("New() returned error: %v", err) - } + s := New() + str := s.String() if seen[str] { t.Fatalf("duplicate ID generated: %s", str) @@ -37,20 +32,14 @@ func TestIsZero(t *testing.T) { t.Error("Zero Snowflake should be zero") } - nonZero, err := New() - if err != nil { - t.Fatalf("New() returned error: %v", err) - } + nonZero := New() if nonZero.IsZero() { t.Error("New Snowflake should not be zero") } } func TestStringRoundTrip(t *testing.T) { - original, err := New() - if err != nil { - t.Fatalf("New() returned error: %v", err) - } + original := New() str := original.String() parsed, err := FromString(str) if err != nil { @@ -64,10 +53,8 @@ func TestStringRoundTrip(t *testing.T) { func TestStringRoundTripMany(t *testing.T) { for i := 0; i < 100; i++ { - original, err := New() - if err != nil { - t.Fatalf("New() returned error: %v", err) - } + original := New() + str := original.String() parsed, err := FromString(str) if err != nil { @@ -104,10 +91,7 @@ func TestFromStringTooLong(t *testing.T) { } func TestHexString(t *testing.T) { - s, err := New() - if err != nil { - t.Fatalf("New() returned error: %v", err) - } + s := New() hex := s.Hex() if len(hex) != IDByteSize*2 { @@ -138,10 +122,7 @@ func TestZeroString(t *testing.T) { } func TestHexRoundTrip(t *testing.T) { - original, err := New() - if err != nil { - t.Fatalf("New() returned error: %v", err) - } + original := New() hex := original.Hex() parsed, err := FromHex(hex) if err != nil { @@ -167,10 +148,7 @@ func TestFromHexWrongLength(t *testing.T) { } func TestMarshalText(t *testing.T) { - s, err := New() - if err != nil { - t.Fatalf("New() returned error: %v", err) - } + s := New() text, err := s.MarshalText() if err != nil { t.Fatalf("MarshalText failed: %v", err) @@ -196,10 +174,7 @@ func TestUnmarshalTextInvalid(t *testing.T) { } func TestMarshalJSON(t *testing.T) { - s, err := New() - if err != nil { - t.Fatalf("New() returned error: %v", err) - } + s := New() data, err := s.MarshalJSON() if err != nil { t.Fatalf("MarshalJSON failed: %v", err) @@ -244,10 +219,7 @@ func TestUnmarshalJSONInvalidInner(t *testing.T) { } func TestDriverValue(t *testing.T) { - s, err := New() - if err != nil { - t.Fatalf("New() returned error: %v", err) - } + s := New() val, err := s.Value() if err != nil { t.Fatalf("Value failed: %v", err) @@ -264,16 +236,12 @@ func TestDriverValue(t *testing.T) { } func TestDriverScan(t *testing.T) { - original, err := New() - if err != nil { - t.Fatalf("New() returned error: %v", err) - } + original := New() bytes := make([]byte, IDByteSize) copy(bytes, original.bytes[:]) var s Snowflake - err = s.Scan(bytes) - if err != nil { + if err := s.Scan(bytes); err != nil { t.Fatalf("Scan failed: %v", err) } @@ -283,16 +251,12 @@ func TestDriverScan(t *testing.T) { } func TestDriverScanString(t *testing.T) { - original, err := New() - if err != nil { - t.Fatalf("New() returned error: %v", err) - } + original := New() bytes := make([]byte, IDByteSize) copy(bytes, original.bytes[:]) var s Snowflake - err = s.Scan(string(bytes)) - if err != nil { + if err := s.Scan(string(bytes)); err != nil { t.Fatalf("Scan(string) failed: %v", err) } @@ -348,10 +312,7 @@ func TestJSONEmbedding(t *testing.T) { Ref *Snowflake `json:"ref,omitempty"` } - s, err := New() - if err != nil { - t.Fatalf("New() returned error: %v", err) - } + s := New() w := Wrapper{ Name: "test", ID: s, -- cgit v1.3.1