Commit 28dfb20

mo khan <mo@mokhan.ca>
2025-04-16 19:38:40
feat: add IsZero function
1 parent cd7809e
Changed files (2)
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{}))
+		})
+	})
 }