github.com/sohaha/zlsgo@v1.7.13-0.20240501141223-10dd1a906f76/zreflect/utils_test.go (about) 1 package zreflect 2 3 import ( 4 "reflect" 5 "testing" 6 "time" 7 8 "github.com/sohaha/zlsgo" 9 ) 10 11 type ( 12 Child2 struct { 13 P DemoChildSt 14 } 15 16 DemoChildSt struct { 17 ChildName int 18 } 19 20 DemoSt struct { 21 Date2 time.Time 22 Any interface{} 23 any interface{} 24 Child3 *DemoChildSt 25 Remark string `json:"remark"` 26 note string 27 Name string `json:"username"` 28 pri string 29 Hobby []string 30 Slice [][]string 31 Child struct { 32 Title string `json:"child_user_title"` 33 DemoChild2 Child2 `json:"demo_child_2"` 34 IsChildName bool 35 } `json:"child"` 36 Year float64 37 Child2 Child2 38 child4 DemoChildSt 39 Age uint 40 Lovely bool 41 } 42 TestSt struct { 43 Name string 44 I int `z:"iii"` 45 Note int `json:"note,omitempty"` 46 } 47 ) 48 49 func (d DemoSt) Text() string { 50 return d.Name + ":" + d.Remark 51 } 52 53 func TestNonzero(t *testing.T) { 54 tt := zlsgo.NewTest(t) 55 56 tt.Equal(true, Nonzero(ValueOf(true))) 57 tt.Equal(false, Nonzero(ValueOf(0))) 58 tt.Equal(true, Nonzero(ValueOf(1))) 59 tt.Equal(true, Nonzero(ValueOf("0"))) 60 tt.Equal(true, Nonzero(ValueOf("1"))) 61 tt.Equal(true, Nonzero(ValueOf(1.1))) 62 var s []string 63 tt.Equal(false, Nonzero(ValueOf(s))) 64 tt.Equal(true, Nonzero(ValueOf([]string{}))) 65 tt.Equal(false, Nonzero(ValueOf([...]string{}))) 66 tt.Equal(true, Nonzero(ValueOf(map[string]string{}))) 67 tt.Equal(true, Nonzero(ValueOf(map[string]string{"a": "b"}))) 68 } 69 70 func TestCan(t *testing.T) { 71 tt := zlsgo.NewTest(t) 72 73 tt.Equal(true, IsLabel(TypeOf(Demo))) 74 75 tt.Equal(false, CanExpand(TypeOf(1))) 76 tt.Equal(true, CanExpand(TypeOf([]string{}))) 77 78 tt.Equal(true, CanInline(TypeOf(map[string]string{}))) 79 tt.Equal(true, CanInline(TypeOf([]string{}))) 80 tt.Equal(true, CanInline(TypeOf("1"))) 81 tt.Equal(false, CanInline(TypeOf(&Demo))) 82 tt.Equal(false, CanInline(TypeOf(Demo))) 83 tt.Equal(false, CanInline(TypeOf(func() {}))) 84 } 85 86 func TestGetAbbrKind(t *testing.T) { 87 tt := zlsgo.NewTest(t) 88 89 tt.Equal(reflect.Int, GetAbbrKind(ValueOf(1))) 90 tt.Equal(reflect.Uint, GetAbbrKind(ValueOf(uint64(1)))) 91 tt.Equal(reflect.Float64, GetAbbrKind(ValueOf(float32(1)))) 92 tt.Equal(reflect.Struct, GetAbbrKind(ValueOf(Demo))) 93 }