mutation fixes
This commit is contained in:
@@ -0,0 +1,68 @@
|
||||
package cart
|
||||
|
||||
import "testing"
|
||||
|
||||
// equalOptional is the nullable-equality primitive shared by the AddItem
|
||||
// merge site and any future field-comparison. Two call sites use it today
|
||||
// with two distinct types — *uint32 (ParentId) and *string (StoreId) — so
|
||||
// the test pins both via generic instantiation.
|
||||
func TestEqualOptional(t *testing.T) {
|
||||
t.Run("both nil is equal", func(t *testing.T) {
|
||||
if !equalOptional[string](nil, nil) {
|
||||
t.Error("both nil should be equal")
|
||||
}
|
||||
if !equalOptional[uint32](nil, nil) {
|
||||
t.Error("both nil should be equal (uint32)")
|
||||
}
|
||||
})
|
||||
|
||||
t.Run("same address alias is equal", func(t *testing.T) {
|
||||
s := "x"
|
||||
if !equalOptional(&s, &s) {
|
||||
t.Error("same-address *string should be equal")
|
||||
}
|
||||
v := uint32(5)
|
||||
if !equalOptional(&v, &v) {
|
||||
t.Error("same-address *uint32 should be equal")
|
||||
}
|
||||
})
|
||||
|
||||
t.Run("distinct addresses with equal values are equal", func(t *testing.T) {
|
||||
a, b := "x", "x"
|
||||
if !equalOptional(&a, &b) {
|
||||
t.Error("equal strings at distinct addresses should be equal")
|
||||
}
|
||||
u, w := uint32(5), uint32(5)
|
||||
if !equalOptional(&u, &w) {
|
||||
t.Error("equal uint32 at distinct addresses should be equal")
|
||||
}
|
||||
})
|
||||
|
||||
t.Run("one nil, one set is not equal", func(t *testing.T) {
|
||||
a := "x"
|
||||
if equalOptional(&a, nil) {
|
||||
t.Error("non-nil vs nil should differ (string)")
|
||||
}
|
||||
if equalOptional[string](nil, &a) {
|
||||
t.Error("nil vs non-nil should differ (string)")
|
||||
}
|
||||
u := uint32(5)
|
||||
if equalOptional(&u, nil) {
|
||||
t.Error("non-nil vs nil should differ (uint32)")
|
||||
}
|
||||
if equalOptional[uint32](nil, &u) {
|
||||
t.Error("nil vs non-nil should differ (uint32)")
|
||||
}
|
||||
})
|
||||
|
||||
t.Run("differing values are not equal", func(t *testing.T) {
|
||||
a, b := "x", "y"
|
||||
if equalOptional(&a, &b) {
|
||||
t.Error("differing strings should differ")
|
||||
}
|
||||
u, w := uint32(5), uint32(6)
|
||||
if equalOptional(&u, &w) {
|
||||
t.Error("differing uint32 should differ")
|
||||
}
|
||||
})
|
||||
}
|
||||
Reference in New Issue
Block a user