...

Source file src/github.com/json-iterator/go/any_tests/jsoniter_any_array_test.go

Documentation: github.com/json-iterator/go/any_tests

     1  package any_tests
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/json-iterator/go"
     7  	"github.com/stretchr/testify/require"
     8  )
     9  
    10  func Test_read_empty_array_as_any(t *testing.T) {
    11  	should := require.New(t)
    12  	any := jsoniter.Get([]byte("[]"))
    13  	should.Equal(jsoniter.ArrayValue, any.Get().ValueType())
    14  	should.Equal(jsoniter.InvalidValue, any.Get(0.3).ValueType())
    15  	should.Equal(0, any.Size())
    16  	should.Equal(jsoniter.ArrayValue, any.ValueType())
    17  	should.Nil(any.LastError())
    18  	should.Equal(0, any.ToInt())
    19  	should.Equal(int32(0), any.ToInt32())
    20  	should.Equal(int64(0), any.ToInt64())
    21  	should.Equal(uint(0), any.ToUint())
    22  	should.Equal(uint32(0), any.ToUint32())
    23  	should.Equal(uint64(0), any.ToUint64())
    24  	should.Equal(float32(0), any.ToFloat32())
    25  	should.Equal(float64(0), any.ToFloat64())
    26  }
    27  
    28  func Test_read_one_element_array_as_any(t *testing.T) {
    29  	should := require.New(t)
    30  	any := jsoniter.Get([]byte("[1]"))
    31  	should.Equal(1, any.Size())
    32  }
    33  
    34  func Test_read_two_element_array_as_any(t *testing.T) {
    35  	should := require.New(t)
    36  	any := jsoniter.Get([]byte("[1,2]"))
    37  	should.Equal(1, any.Get(0).ToInt())
    38  	should.Equal(2, any.Size())
    39  	should.True(any.ToBool())
    40  	should.Equal(1, any.ToInt())
    41  	should.Equal([]interface{}{float64(1), float64(2)}, any.GetInterface())
    42  	stream := jsoniter.NewStream(jsoniter.ConfigDefault, nil, 32)
    43  	any.WriteTo(stream)
    44  	should.Equal("[1,2]", string(stream.Buffer()))
    45  	arr := []int{}
    46  	any.ToVal(&arr)
    47  	should.Equal([]int{1, 2}, arr)
    48  }
    49  
    50  func Test_wrap_array_and_convert_to_any(t *testing.T) {
    51  	should := require.New(t)
    52  	any := jsoniter.Wrap([]int{1, 2, 3})
    53  	any2 := jsoniter.Wrap([]int{})
    54  
    55  	should.Equal("[1,2,3]", any.ToString())
    56  	should.True(any.ToBool())
    57  	should.False(any2.ToBool())
    58  
    59  	should.Equal(1, any.ToInt())
    60  	should.Equal(0, any2.ToInt())
    61  	should.Equal(int32(1), any.ToInt32())
    62  	should.Equal(int32(0), any2.ToInt32())
    63  	should.Equal(int64(1), any.ToInt64())
    64  	should.Equal(int64(0), any2.ToInt64())
    65  	should.Equal(uint(1), any.ToUint())
    66  	should.Equal(uint(0), any2.ToUint())
    67  	should.Equal(uint32(1), any.ToUint32())
    68  	should.Equal(uint32(0), any2.ToUint32())
    69  	should.Equal(uint64(1), any.ToUint64())
    70  	should.Equal(uint64(0), any2.ToUint64())
    71  	should.Equal(float32(1), any.ToFloat32())
    72  	should.Equal(float32(0), any2.ToFloat32())
    73  	should.Equal(float64(1), any.ToFloat64())
    74  	should.Equal(float64(0), any2.ToFloat64())
    75  	should.Equal(3, any.Size())
    76  	should.Equal(0, any2.Size())
    77  
    78  	var i interface{} = []int{1, 2, 3}
    79  	should.Equal(i, any.GetInterface())
    80  }
    81  
    82  func Test_array_lazy_any_get(t *testing.T) {
    83  	should := require.New(t)
    84  	any := jsoniter.Get([]byte("[1,[2,3],4]"))
    85  	should.Equal(3, any.Get(1, 1).ToInt())
    86  	should.Equal("[1,[2,3],4]", any.ToString())
    87  }
    88  
    89  func Test_array_lazy_any_get_all(t *testing.T) {
    90  	should := require.New(t)
    91  	any := jsoniter.Get([]byte("[[1],[2],[3,4]]"))
    92  	should.Equal("[1,2,3]", any.Get('*', 0).ToString())
    93  	any = jsoniter.Get([]byte("[[[1],[2],[3,4]]]"), 0, '*', 0)
    94  	should.Equal("[1,2,3]", any.ToString())
    95  }
    96  
    97  func Test_array_wrapper_any_get_all(t *testing.T) {
    98  	should := require.New(t)
    99  	any := jsoniter.Wrap([][]int{
   100  		{1, 2},
   101  		{3, 4},
   102  		{5, 6},
   103  	})
   104  	should.Equal("[1,3,5]", any.Get('*', 0).ToString())
   105  	should.Equal(jsoniter.ArrayValue, any.ValueType())
   106  	should.True(any.ToBool())
   107  	should.Equal(1, any.Get(0, 0).ToInt())
   108  }
   109  
   110  func Test_array_lazy_any_get_invalid(t *testing.T) {
   111  	should := require.New(t)
   112  	any := jsoniter.Get([]byte("[]"))
   113  	should.Equal(jsoniter.InvalidValue, any.Get(1, 1).ValueType())
   114  	should.NotNil(any.Get(1, 1).LastError())
   115  	should.Equal(jsoniter.InvalidValue, any.Get("1").ValueType())
   116  	should.NotNil(any.Get("1").LastError())
   117  }
   118  
   119  func Test_invalid_array(t *testing.T) {
   120  	should := require.New(t)
   121  	any := jsoniter.Get([]byte("["), 0)
   122  	should.Equal(jsoniter.InvalidValue, any.ValueType())
   123  }
   124  

View as plain text