github.com/bingoohuang/gg@v0.0.0-20240325092523-45da7dee9335/pkg/jsoni/any_tests/jsoniter_wrap_test.go (about) 1 package any_tests 2 3 import ( 4 "context" 5 "testing" 6 7 "github.com/bingoohuang/gg/pkg/jsoni" 8 "github.com/stretchr/testify/require" 9 ) 10 11 func Test_wrap_and_valuetype_everything(t *testing.T) { 12 should := require.New(t) 13 var i interface{} 14 any := jsoni.Get([]byte("123")) 15 // default of number type is float64 16 i = float64(123) 17 should.Equal(i, any.GetInterface(nil)) 18 19 any = jsoni.Wrap(int8(10)) 20 should.Equal(any.ValueType(), jsoni.NumberValue) 21 should.Equal(any.LastError(), nil) 22 // get interface is not int8 interface 23 // i = int8(10) 24 // should.Equal(i, any.GetInterface()) 25 26 any = jsoni.Wrap(int16(10)) 27 should.Equal(any.ValueType(), jsoni.NumberValue) 28 should.Equal(any.LastError(), nil) 29 // i = int16(10) 30 // should.Equal(i, any.GetInterface()) 31 32 any = jsoni.Wrap(int32(10)) 33 should.Equal(any.ValueType(), jsoni.NumberValue) 34 should.Equal(any.LastError(), nil) 35 i = int32(10) 36 should.Equal(i, any.GetInterface(nil)) 37 any = jsoni.Wrap(int64(10)) 38 should.Equal(any.ValueType(), jsoni.NumberValue) 39 should.Equal(any.LastError(), nil) 40 i = int64(10) 41 should.Equal(i, any.GetInterface(nil)) 42 43 any = jsoni.Wrap(uint(10)) 44 should.Equal(any.ValueType(), jsoni.NumberValue) 45 should.Equal(any.LastError(), nil) 46 // not equal 47 // i = uint(10) 48 // should.Equal(i, any.GetInterface()) 49 any = jsoni.Wrap(uint8(10)) 50 should.Equal(any.ValueType(), jsoni.NumberValue) 51 should.Equal(any.LastError(), nil) 52 // not equal 53 // i = uint8(10) 54 // should.Equal(i, any.GetInterface()) 55 any = jsoni.Wrap(uint16(10)) 56 should.Equal(any.ValueType(), jsoni.NumberValue) 57 should.Equal(any.LastError(), nil) 58 any = jsoni.Wrap(uint32(10)) 59 should.Equal(any.ValueType(), jsoni.NumberValue) 60 should.Equal(any.LastError(), nil) 61 i = uint32(10) 62 should.Equal(i, any.GetInterface(nil)) 63 any = jsoni.Wrap(uint64(10)) 64 should.Equal(any.ValueType(), jsoni.NumberValue) 65 should.Equal(any.LastError(), nil) 66 i = uint64(10) 67 should.Equal(i, any.GetInterface(nil)) 68 69 any = jsoni.Wrap(float32(10)) 70 should.Equal(any.ValueType(), jsoni.NumberValue) 71 should.Equal(any.LastError(), nil) 72 // not equal 73 // i = float32(10) 74 // should.Equal(i, any.GetInterface()) 75 any = jsoni.Wrap(float64(10)) 76 should.Equal(any.ValueType(), jsoni.NumberValue) 77 should.Equal(any.LastError(), nil) 78 i = float64(10) 79 should.Equal(i, any.GetInterface(nil)) 80 81 any = jsoni.Wrap(true) 82 should.Equal(any.ValueType(), jsoni.BoolValue) 83 should.Equal(any.LastError(), nil) 84 i = true 85 should.Equal(i, any.GetInterface(nil)) 86 any = jsoni.Wrap(false) 87 should.Equal(any.ValueType(), jsoni.BoolValue) 88 should.Equal(any.LastError(), nil) 89 i = false 90 should.Equal(i, any.GetInterface(nil)) 91 92 any = jsoni.Wrap(nil) 93 should.Equal(any.ValueType(), jsoni.NilValue) 94 should.Equal(any.LastError(), nil) 95 i = nil 96 should.Equal(i, any.GetInterface(nil)) 97 98 stream := jsoni.NewStream(jsoni.ConfigDefault, nil, 32) 99 any.WriteTo(context.Background(), stream) 100 should.Equal("null", string(stream.Buffer())) 101 should.Equal(any.LastError(), nil) 102 103 any = jsoni.Wrap(struct{ age int }{age: 1}) 104 should.Equal(any.ValueType(), jsoni.ObjectValue) 105 should.Equal(any.LastError(), nil) 106 i = struct{ age int }{age: 1} 107 should.Equal(i, any.GetInterface(nil)) 108 109 any = jsoni.Wrap(map[string]interface{}{"abc": 1}) 110 should.Equal(any.ValueType(), jsoni.ObjectValue) 111 should.Equal(any.LastError(), nil) 112 i = map[string]interface{}{"abc": 1} 113 should.Equal(i, any.GetInterface(nil)) 114 115 any = jsoni.Wrap("abc") 116 i = "abc" 117 should.Equal(i, any.GetInterface(nil)) 118 should.Equal(nil, any.LastError()) 119 }