feat(ksuid): add Equal and IsZero for ApplyInterfacePtr
StringKSUID and BinaryKSUID now implement ApplyInterface with nil-nil equality semantics, enabling ApplyInterfacePtr in patch logic. Adds nil sentinel vars and tests. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -6,6 +6,7 @@ import (
|
||||
"io"
|
||||
"testing"
|
||||
|
||||
"github.com/go-jet/jet/v2/mysql"
|
||||
"github.com/segmentio/ksuid"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
@@ -118,6 +119,34 @@ func TestBinaryKSUID_Conversion(t *testing.T) {
|
||||
}
|
||||
|
||||
|
||||
func TestStringKSUID_EqualIsZero(t *testing.T) {
|
||||
id := NewStringKSUID()
|
||||
assert.True(t, NilStringKSUID.Equal(NilStringKSUID))
|
||||
assert.True(t, id.Equal(id))
|
||||
assert.False(t, id.Equal(NilStringKSUID))
|
||||
assert.True(t, NilStringKSUID.IsZero())
|
||||
assert.False(t, id.IsZero())
|
||||
}
|
||||
|
||||
func TestBinaryKSUID_EqualIsZero(t *testing.T) {
|
||||
id := NewBinaryKSUID()
|
||||
assert.True(t, NilBinaryKSUID.Equal(NilBinaryKSUID))
|
||||
assert.True(t, id.Equal(id))
|
||||
assert.False(t, id.Equal(NilBinaryKSUID))
|
||||
assert.True(t, NilBinaryKSUID.IsZero())
|
||||
assert.False(t, id.IsZero())
|
||||
}
|
||||
|
||||
func TestStringKSUID_ApplyInterfacePtr(t *testing.T) {
|
||||
targetCol := mysql.StringColumn("id")
|
||||
modified := make(ColumnList, 0)
|
||||
current := Ptr(NewStringKSUID())
|
||||
updated := ApplyInterfacePtr(current, Ptr(NewStringKSUID()), &modified, targetCol)
|
||||
require.NotNil(t, updated)
|
||||
assert.Len(t, modified, 1)
|
||||
assert.False(t, current.Equal(*updated))
|
||||
}
|
||||
|
||||
func TestParseStringKSUID(t *testing.T) {
|
||||
id := ksuid.New()
|
||||
parsed, err := ParseStringKSUID(id.String())
|
||||
|
||||
Reference in New Issue
Block a user