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  }