Compare commits

...

1 Commits

Author SHA1 Message Date
peze c2e107f1af fix default condition 2025-04-01 19:14:52 +08:00
2 changed files with 43 additions and 1 deletions
+16 -1
View File
@@ -642,8 +642,23 @@ func isNil(a interface{}) bool {
return vi.IsNil()
}
func isNilOrZero(value interface{}) bool {
if value == nil {
return true
}
v := reflect.ValueOf(value)
switch v.Kind() {
case reflect.Chan, reflect.Func, reflect.Map, reflect.Ptr, reflect.Interface, reflect.Slice:
return v.IsNil()
default:
// Check for zero value
return reflect.DeepEqual(value, reflect.Zero(v.Type()).Interface())
}
}
func Default(inputValue interface{}, defaultValue interface{}) (_result interface{}) {
if IsNil(inputValue) {
if isNilOrZero(inputValue) {
_result = defaultValue
return _result
}
+27
View File
@@ -995,6 +995,33 @@ func Test_Default(t *testing.T) {
b := ToInt32(a)
utils.AssertEqual(t, Int32Value(b), int32(10))
// Testing Default with nil values
if result := Default(nil, "default"); result != "default" {
t.Errorf("expected 'default', got '%v'", result)
}
// Testing Default with zero values
if result := Default("", "default"); result != "default" {
t.Errorf("expected 'default', got '%v'", result)
}
if result := Default(0, 42); result != 42 {
t.Errorf("expected 42, got %v", result)
}
if result := Default(false, true); result != true {
t.Errorf("expected true, got %v", result)
}
// Testing Default with non-zero values
if result := Default("value", "default"); result != "value" {
t.Errorf("expected 'value', got '%v'", result)
}
if result := Default([]int{1, 2, 3}, []int{}); !reflect.DeepEqual(result, []int{1, 2, 3}) {
t.Errorf("expected [1 2 3], got '%v'", result)
}
}
func TestToBytes(t *testing.T) {