github.com/wangyougui/gf/v2@v2.6.5/internal/empty/empty_z_unit_test.go (about)

     1  // Copyright GoFrame Author(https://goframe.org). All Rights Reserved.
     2  //
     3  // This Source Code Form is subject to the terms of the MIT License.
     4  // If a copy of the MIT was not distributed with this file,
     5  // You can obtain one at https://github.com/wangyougui/gf.
     6  
     7  package empty_test
     8  
     9  import (
    10  	"testing"
    11  
    12  	"github.com/wangyougui/gf/v2/frame/g"
    13  	"github.com/wangyougui/gf/v2/internal/empty"
    14  	"github.com/wangyougui/gf/v2/test/gtest"
    15  	"github.com/wangyougui/gf/v2/util/gconv"
    16  )
    17  
    18  type TestInt int
    19  
    20  type TestString string
    21  
    22  type TestPerson interface {
    23  	Say() string
    24  }
    25  
    26  type TestWoman struct {
    27  }
    28  
    29  func (woman TestWoman) Say() string {
    30  	return "nice"
    31  }
    32  
    33  func TestIsEmpty(t *testing.T) {
    34  	gtest.C(t, func(t *gtest.T) {
    35  		tmpT1 := "0"
    36  		tmpT2 := func() {}
    37  		tmpT2 = nil
    38  		tmpT3 := make(chan int)
    39  		var (
    40  			tmpT4 TestPerson  = nil
    41  			tmpT5 *TestPerson = nil
    42  			tmpT6 TestPerson  = TestWoman{}
    43  			tmpT7 TestInt     = 0
    44  			tmpT8 TestString  = ""
    45  		)
    46  		tmpF1 := "1"
    47  		tmpF2 := func(a string) string { return "1" }
    48  		tmpF3 := make(chan int, 1)
    49  		tmpF3 <- 1
    50  		var (
    51  			tmpF4 TestPerson = &TestWoman{}
    52  			tmpF5 TestInt    = 1
    53  			tmpF6 TestString = "1"
    54  		)
    55  
    56  		// true
    57  		t.Assert(empty.IsEmpty(nil), true)
    58  		t.Assert(empty.IsEmpty(0), true)
    59  		t.Assert(empty.IsEmpty(gconv.Int(tmpT1)), true)
    60  		t.Assert(empty.IsEmpty(gconv.Int8(tmpT1)), true)
    61  		t.Assert(empty.IsEmpty(gconv.Int16(tmpT1)), true)
    62  		t.Assert(empty.IsEmpty(gconv.Int32(tmpT1)), true)
    63  		t.Assert(empty.IsEmpty(gconv.Int64(tmpT1)), true)
    64  		t.Assert(empty.IsEmpty(gconv.Uint64(tmpT1)), true)
    65  		t.Assert(empty.IsEmpty(gconv.Uint(tmpT1)), true)
    66  		t.Assert(empty.IsEmpty(gconv.Uint16(tmpT1)), true)
    67  		t.Assert(empty.IsEmpty(gconv.Uint32(tmpT1)), true)
    68  		t.Assert(empty.IsEmpty(gconv.Uint64(tmpT1)), true)
    69  		t.Assert(empty.IsEmpty(gconv.Float32(tmpT1)), true)
    70  		t.Assert(empty.IsEmpty(gconv.Float64(tmpT1)), true)
    71  		t.Assert(empty.IsEmpty(false), true)
    72  		t.Assert(empty.IsEmpty([]byte("")), true)
    73  		t.Assert(empty.IsEmpty(""), true)
    74  		t.Assert(empty.IsEmpty(g.Map{}), true)
    75  		t.Assert(empty.IsEmpty(g.Slice{}), true)
    76  		t.Assert(empty.IsEmpty(g.Array{}), true)
    77  		t.Assert(empty.IsEmpty(tmpT2), true)
    78  		t.Assert(empty.IsEmpty(tmpT3), true)
    79  		t.Assert(empty.IsEmpty(tmpT3), true)
    80  		t.Assert(empty.IsEmpty(tmpT4), true)
    81  		t.Assert(empty.IsEmpty(tmpT5), true)
    82  		t.Assert(empty.IsEmpty(tmpT6), true)
    83  		t.Assert(empty.IsEmpty(tmpT7), true)
    84  		t.Assert(empty.IsEmpty(tmpT8), true)
    85  
    86  		// false
    87  		t.Assert(empty.IsEmpty(gconv.Int(tmpF1)), false)
    88  		t.Assert(empty.IsEmpty(gconv.Int8(tmpF1)), false)
    89  		t.Assert(empty.IsEmpty(gconv.Int16(tmpF1)), false)
    90  		t.Assert(empty.IsEmpty(gconv.Int32(tmpF1)), false)
    91  		t.Assert(empty.IsEmpty(gconv.Int64(tmpF1)), false)
    92  		t.Assert(empty.IsEmpty(gconv.Uint(tmpF1)), false)
    93  		t.Assert(empty.IsEmpty(gconv.Uint8(tmpF1)), false)
    94  		t.Assert(empty.IsEmpty(gconv.Uint16(tmpF1)), false)
    95  		t.Assert(empty.IsEmpty(gconv.Uint32(tmpF1)), false)
    96  		t.Assert(empty.IsEmpty(gconv.Uint64(tmpF1)), false)
    97  		t.Assert(empty.IsEmpty(gconv.Float32(tmpF1)), false)
    98  		t.Assert(empty.IsEmpty(gconv.Float64(tmpF1)), false)
    99  		t.Assert(empty.IsEmpty(true), false)
   100  		t.Assert(empty.IsEmpty(tmpT1), false)
   101  		t.Assert(empty.IsEmpty([]byte("1")), false)
   102  		t.Assert(empty.IsEmpty(g.Map{"a": 1}), false)
   103  		t.Assert(empty.IsEmpty(g.Slice{"1"}), false)
   104  		t.Assert(empty.IsEmpty(g.Array{"1"}), false)
   105  		t.Assert(empty.IsEmpty(tmpF2), false)
   106  		t.Assert(empty.IsEmpty(tmpF3), false)
   107  		t.Assert(empty.IsEmpty(tmpF4), false)
   108  		t.Assert(empty.IsEmpty(tmpF5), false)
   109  		t.Assert(empty.IsEmpty(tmpF6), false)
   110  	})
   111  }
   112  
   113  func TestIsNil(t *testing.T) {
   114  	gtest.C(t, func(t *gtest.T) {
   115  		t.Assert(empty.IsNil(nil), true)
   116  	})
   117  	gtest.C(t, func(t *gtest.T) {
   118  		var i int
   119  		t.Assert(empty.IsNil(i), false)
   120  	})
   121  	gtest.C(t, func(t *gtest.T) {
   122  		var i *int
   123  		t.Assert(empty.IsNil(i), true)
   124  	})
   125  	gtest.C(t, func(t *gtest.T) {
   126  		var i *int
   127  		t.Assert(empty.IsNil(&i), false)
   128  		t.Assert(empty.IsNil(&i, true), true)
   129  	})
   130  }