From 4e6642a3fe1795cf809d780e717093f1825281e1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mat=C3=A9o?= Date: Mon, 29 Dec 2025 16:49:10 +0100 Subject: [PATCH 1/5] pointers: rename Eq() to Equal() --- pointers/ptr.go | 2 +- pointers/ptr_test.go | 24 ++++++++++++------------ 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/pointers/ptr.go b/pointers/ptr.go index cd3830e..2d93899 100644 --- a/pointers/ptr.go +++ b/pointers/ptr.go @@ -23,7 +23,7 @@ func NullIsZero[T comparable](v *T) T { return *v } -func Eq[T comparable](a, b *T) bool { +func Equal[T comparable](a, b *T) bool { if a == b { return true } diff --git a/pointers/ptr_test.go b/pointers/ptr_test.go index aab8726..83b472d 100644 --- a/pointers/ptr_test.go +++ b/pointers/ptr_test.go @@ -42,31 +42,31 @@ type testStruct struct { func TestEq(t *testing.T) { n := 5 - assert.True(t, Eq(&n, &n)) - assert.True(t, Eq(Ptr(5), &n)) - assert.True(t, Eq(Ptr(5), Ptr(5))) - assert.False(t, Eq(&n, Ptr(6))) - assert.False(t, Eq(Ptr(5), Ptr(6))) + assert.True(t, Equal(&n, &n)) + assert.True(t, Equal(Ptr(5), &n)) + assert.True(t, Equal(Ptr(5), Ptr(5))) + assert.False(t, Equal(&n, Ptr(6))) + assert.False(t, Equal(Ptr(5), Ptr(6))) str := "foo" - assert.True(t, Eq(&str, &str)) - assert.True(t, Eq(&str, Ptr("foo"))) - assert.False(t, Eq(&str, Ptr("bar"))) + assert.True(t, Equal(&str, &str)) + assert.True(t, Equal(&str, Ptr("foo"))) + assert.False(t, Equal(&str, Ptr("bar"))) s := testStruct{ number: 1, string: "hello", } - assert.True(t, Eq(&s, &s)) - assert.True(t, Eq(&s, &testStruct{ + assert.True(t, Equal(&s, &s)) + assert.True(t, Equal(&s, &testStruct{ number: 1, string: "hello", })) - assert.False(t, Eq(&s, &testStruct{ + assert.False(t, Equal(&s, &testStruct{ number: 2, string: "hello", })) - assert.False(t, Eq(&s, &testStruct{ + assert.False(t, Equal(&s, &testStruct{ number: 1, string: "world", })) From c69e2d422ff5c12717a30635f12e02d882fb0e7e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mat=C3=A9o?= Date: Mon, 29 Dec 2025 17:05:54 +0100 Subject: [PATCH 2/5] pointers/ptr.go: try comparing with Equal() method --- pointers/ptr.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/pointers/ptr.go b/pointers/ptr.go index 2d93899..a477061 100644 --- a/pointers/ptr.go +++ b/pointers/ptr.go @@ -32,5 +32,9 @@ func Equal[T comparable](a, b *T) bool { return false } + if aa, ok := any(a).(interface{ Equal(b T) bool }); ok { + return aa.Equal(*b) + } + return *a == *b } From e81891898003902c6f6c27be82059ce467e2e910 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mat=C3=A9o?= Date: Mon, 29 Dec 2025 17:20:12 +0100 Subject: [PATCH 3/5] pointers: assert usage of Equal() method --- pointers/ptr_test.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/pointers/ptr_test.go b/pointers/ptr_test.go index 83b472d..e6ff2a5 100644 --- a/pointers/ptr_test.go +++ b/pointers/ptr_test.go @@ -2,6 +2,7 @@ package pointers import ( "testing" + "time" "github.com/stretchr/testify/assert" ) @@ -70,4 +71,9 @@ func TestEq(t *testing.T) { number: 1, string: "world", })) + + t0 := time.Now() + assert.True(t, Equal(Ptr(t0), Ptr(t0))) + assert.False(t, Equal(Ptr(t0), Ptr(t0.Add(time.Hour)))) + assert.True(t, Equal(Ptr(t0.Add(time.Hour)), Ptr(t0.Add(time.Hour)))) } From e2649b5c2c9df6e64ecdf48e4bd91d693da6f5a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mat=C3=A9o?= Date: Mon, 29 Dec 2025 17:40:59 +0100 Subject: [PATCH 4/5] pointers/ptr_test.go: fix time Equal() tests --- pointers/ptr_test.go | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/pointers/ptr_test.go b/pointers/ptr_test.go index e6ff2a5..84a0706 100644 --- a/pointers/ptr_test.go +++ b/pointers/ptr_test.go @@ -72,8 +72,9 @@ func TestEq(t *testing.T) { string: "world", })) - t0 := time.Now() - assert.True(t, Equal(Ptr(t0), Ptr(t0))) - assert.False(t, Equal(Ptr(t0), Ptr(t0.Add(time.Hour)))) - assert.True(t, Equal(Ptr(t0.Add(time.Hour)), Ptr(t0.Add(time.Hour)))) + d1 := Ptr(time.Date(2000, 2, 1, 12, 30, 0, 0, time.UTC)) + d2 := Ptr(time.Date(2000, 2, 1, 20, 30, 0, 0, time.FixedZone("z2", int(8*time.Hour)))) + assert.False(t, *d1 == *d2) // nolint + assert.True(t, Equal(d1, d2)) + assert.False(t, Equal(d1, Ptr(d2.Add(time.Hour)))) } From 5c6663eea5de62197423f12ee345a176204c03d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mat=C3=A9o?= Date: Mon, 29 Dec 2025 17:46:14 +0100 Subject: [PATCH 5/5] pointers/ptr_test.go: fix time Equal() tests --- pointers/ptr_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pointers/ptr_test.go b/pointers/ptr_test.go index 84a0706..c1f5d87 100644 --- a/pointers/ptr_test.go +++ b/pointers/ptr_test.go @@ -73,7 +73,7 @@ func TestEq(t *testing.T) { })) d1 := Ptr(time.Date(2000, 2, 1, 12, 30, 0, 0, time.UTC)) - d2 := Ptr(time.Date(2000, 2, 1, 20, 30, 0, 0, time.FixedZone("z2", int(8*time.Hour)))) + d2 := Ptr(time.Date(2000, 2, 1, 20, 30, 0, 0, time.FixedZone("z2", int((8*time.Hour).Seconds())))) assert.False(t, *d1 == *d2) // nolint assert.True(t, Equal(d1, d2)) assert.False(t, Equal(d1, Ptr(d2.Add(time.Hour))))