github.com/wfusion/gofusion@v1.1.14/test/common/utils/cases/cmp_test.go (about) 1 package cases 2 3 import ( 4 "context" 5 "math" 6 "testing" 7 8 "github.com/stretchr/testify/suite" 9 10 "github.com/wfusion/gofusion/common/utils" 11 "github.com/wfusion/gofusion/common/utils/clone" 12 "github.com/wfusion/gofusion/common/utils/cmp" 13 "github.com/wfusion/gofusion/log" 14 15 testUtl "github.com/wfusion/gofusion/test/common/utils" 16 ) 17 18 func TestCmp(t *testing.T) { 19 t.Parallel() 20 testingSuite := &Cmp{Test: new(testUtl.Test)} 21 suite.Run(t, testingSuite) 22 } 23 24 type Cmp struct { 25 *testUtl.Test 26 } 27 28 func (t *Cmp) BeforeTest(suiteName, testName string) { 29 t.Catch(func() { 30 log.Info(context.Background(), "right before %s %s", suiteName, testName) 31 }) 32 } 33 34 func (t *Cmp) AfterTest(suiteName, testName string) { 35 t.Catch(func() { 36 log.Info(context.Background(), "right after %s %s", suiteName, testName) 37 }) 38 } 39 40 func (t *Cmp) TestComparable() { 41 t.Catch(func() { 42 t.Equal(true, cmp.ComparablePtr(utils.AnyPtr(1), utils.AnyPtr(1))) 43 t.Equal(false, cmp.ComparablePtr(utils.AnyPtr(1), utils.AnyPtr(2))) 44 t.Equal(true, cmp.ComparablePtr(utils.AnyPtr(math.MaxInt), utils.AnyPtr(math.MaxInt))) 45 t.Equal(true, cmp.ComparablePtr(utils.AnyPtr(math.MinInt), utils.AnyPtr(math.MinInt))) 46 47 t.Equal(true, cmp.ComparablePtr(utils.AnyPtr(int8(1)), utils.AnyPtr(int8(1)))) 48 t.Equal(false, cmp.ComparablePtr(utils.AnyPtr(int8(1)), utils.AnyPtr(int8(2)))) 49 t.Equal(true, cmp.ComparablePtr(utils.AnyPtr(int8(math.MaxInt8)), utils.AnyPtr(int8(math.MaxInt8)))) 50 t.Equal(true, cmp.ComparablePtr(utils.AnyPtr(int8(math.MinInt8)), utils.AnyPtr(int8(math.MinInt8)))) 51 52 t.Equal(true, cmp.ComparablePtr(utils.AnyPtr(int16(1)), utils.AnyPtr(int16(1)))) 53 t.Equal(false, cmp.ComparablePtr(utils.AnyPtr(int16(1)), utils.AnyPtr(int16(2)))) 54 t.Equal(true, 55 cmp.ComparablePtr(utils.AnyPtr(int16(math.MaxInt16)), utils.AnyPtr(int16(math.MaxInt16)))) 56 t.Equal(true, 57 cmp.ComparablePtr(utils.AnyPtr(int16(math.MinInt16)), utils.AnyPtr(int16(math.MinInt16)))) 58 59 t.Equal(true, cmp.ComparablePtr(utils.AnyPtr(int32(1)), utils.AnyPtr(int32(1)))) 60 t.Equal(false, cmp.ComparablePtr(utils.AnyPtr(int32(1)), utils.AnyPtr(int32(2)))) 61 t.Equal(true, 62 cmp.ComparablePtr(utils.AnyPtr(int32(math.MaxInt32)), utils.AnyPtr(int32(math.MaxInt32)))) 63 t.Equal(true, 64 cmp.ComparablePtr(utils.AnyPtr(int32(math.MinInt32)), utils.AnyPtr(int32(math.MinInt32)))) 65 66 t.Equal(true, cmp.ComparablePtr(utils.AnyPtr(int64(1)), utils.AnyPtr(int64(1)))) 67 t.Equal(false, cmp.ComparablePtr(utils.AnyPtr(int64(1)), utils.AnyPtr(int64(2)))) 68 t.Equal(true, 69 cmp.ComparablePtr(utils.AnyPtr(int64(math.MaxInt64)), utils.AnyPtr(int64(math.MaxInt64)))) 70 t.Equal(true, 71 cmp.ComparablePtr(utils.AnyPtr(int64(math.MinInt64)), utils.AnyPtr(int64(math.MinInt64)))) 72 73 t.Equal(true, cmp.ComparablePtr(utils.AnyPtr(uint(1)), utils.AnyPtr(uint(1)))) 74 t.Equal(false, cmp.ComparablePtr(utils.AnyPtr(uint(1)), utils.AnyPtr(uint(2)))) 75 t.Equal(true, cmp.ComparablePtr(utils.AnyPtr(uint(math.MaxUint)), utils.AnyPtr(uint(math.MaxUint)))) 76 t.Equal(true, cmp.ComparablePtr(utils.AnyPtr(uint(0)), utils.AnyPtr(uint(0)))) 77 78 t.Equal(true, cmp.ComparablePtr(utils.AnyPtr(uint8(1)), utils.AnyPtr(uint8(1)))) 79 t.Equal(false, cmp.ComparablePtr(utils.AnyPtr(uint8(1)), utils.AnyPtr(uint8(2)))) 80 t.Equal(true, cmp.ComparablePtr(utils.AnyPtr(uint8(0)), utils.AnyPtr(uint8(0)))) 81 t.Equal(true, 82 cmp.ComparablePtr(utils.AnyPtr(uint8(math.MaxUint8)), utils.AnyPtr(uint8(math.MaxUint8)))) 83 84 t.Equal(true, cmp.ComparablePtr(utils.AnyPtr(uint16(1)), utils.AnyPtr(uint16(1)))) 85 t.Equal(false, cmp.ComparablePtr(utils.AnyPtr(uint16(1)), utils.AnyPtr(uint16(2)))) 86 t.Equal(true, cmp.ComparablePtr(utils.AnyPtr(uint16(0)), utils.AnyPtr(uint16(0)))) 87 t.Equal(true, 88 cmp.ComparablePtr(utils.AnyPtr(uint16(math.MaxUint16)), utils.AnyPtr(uint16(math.MaxUint16)))) 89 90 t.Equal(true, cmp.ComparablePtr(utils.AnyPtr(uint32(1)), utils.AnyPtr(uint32(1)))) 91 t.Equal(false, cmp.ComparablePtr(utils.AnyPtr(uint32(1)), utils.AnyPtr(uint32(2)))) 92 t.Equal(true, cmp.ComparablePtr(utils.AnyPtr(uint32(0)), utils.AnyPtr(uint32(0)))) 93 t.Equal(true, 94 cmp.ComparablePtr(utils.AnyPtr(uint32(math.MaxUint32)), utils.AnyPtr(uint32(math.MaxUint32)))) 95 96 t.Equal(true, cmp.ComparablePtr(utils.AnyPtr(uint64(1)), utils.AnyPtr(uint64(1)))) 97 t.Equal(false, cmp.ComparablePtr(utils.AnyPtr(uint64(1)), utils.AnyPtr(uint64(2)))) 98 t.Equal(true, cmp.ComparablePtr(utils.AnyPtr(uint64(0)), utils.AnyPtr(uint64(0)))) 99 t.Equal(true, 100 cmp.ComparablePtr(utils.AnyPtr(uint64(math.MaxUint64)), utils.AnyPtr(uint64(math.MaxUint64)))) 101 102 t.Equal(true, cmp.ComparablePtr(utils.AnyPtr("1"), utils.AnyPtr("1"))) 103 t.Equal(false, cmp.ComparablePtr(utils.AnyPtr("1"), utils.AnyPtr("12"))) 104 105 t.Equal(true, cmp.ComparablePtr(utils.AnyPtr(true), utils.AnyPtr(true))) 106 t.Equal(false, cmp.ComparablePtr(utils.AnyPtr(true), utils.AnyPtr(false))) 107 108 }) 109 } 110 111 func (t *Cmp) TestMapAny() { 112 t.Catch(func() { 113 base := map[string]any{ 114 "1": map[string]any{ 115 "2": []int{1, 2, 3}, 116 "3": utils.AnyPtr("3"), 117 "4": []byte("123"), 118 "5": map[string]any{ 119 "6": 1e2, 120 }, 121 }, 122 "2": 2, 123 "3": []any{1, complex(1, 2), 1.0, uint(2)}, 124 } 125 a := clone.Slowly(base) 126 b := clone.Slowly(base) 127 t.True(cmp.MapAny(a, b)) 128 129 (b["1"].(map[string]any))["5"].(map[string]any)["6"] = 1e3 130 t.False(cmp.MapAny(a, b)) 131 }) 132 }