Commit 28dfb20
Changed files (2)
pkg
pkg/x/types.go
@@ -17,6 +17,10 @@ func Zero[T any]() T {
return item
}
+func IsZero[T comparable](item T) bool {
+ return item == Zero[T]()
+}
+
func IsPtr[T any](item T) bool {
return Is[T](item, reflect.Pointer)
}
pkg/x/types_test.go
@@ -77,4 +77,20 @@ func TestTypes(t *testing.T) {
assert.False(t, IsPtr[[]string]([]string{}))
})
})
+
+ t.Run("IsZero", func(t *testing.T) {
+ t.Run("returns true", func(t *testing.T) {
+ assert.True(t, IsZero[int](0))
+ assert.True(t, IsZero[bool](false))
+ assert.True(t, IsZero[string](""))
+ assert.True(t, IsZero[*http.Client](nil))
+ })
+
+ t.Run("returns false", func(t *testing.T) {
+ assert.False(t, IsZero[int](1))
+ assert.False(t, IsZero[bool](true))
+ assert.False(t, IsZero[string]("hello"))
+ assert.False(t, IsZero[*http.Client](&http.Client{}))
+ })
+ })
}