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  }