| package any_tests |
| |
| import ( |
| "testing" |
| |
| "github.com/json-iterator/go" |
| "github.com/stretchr/testify/require" |
| ) |
| |
| func Test_read_empty_array_as_any(t *testing.T) { |
| should := require.New(t) |
| any := jsoniter.Get([]byte("[]")) |
| should.Equal(jsoniter.ArrayValue, any.Get().ValueType()) |
| should.Equal(jsoniter.InvalidValue, any.Get(0.3).ValueType()) |
| should.Equal(0, any.Size()) |
| should.Equal(jsoniter.ArrayValue, any.ValueType()) |
| should.Nil(any.LastError()) |
| should.Equal(0, any.ToInt()) |
| should.Equal(int32(0), any.ToInt32()) |
| should.Equal(int64(0), any.ToInt64()) |
| should.Equal(uint(0), any.ToUint()) |
| should.Equal(uint32(0), any.ToUint32()) |
| should.Equal(uint64(0), any.ToUint64()) |
| should.Equal(float32(0), any.ToFloat32()) |
| should.Equal(float64(0), any.ToFloat64()) |
| } |
| |
| func Test_read_one_element_array_as_any(t *testing.T) { |
| should := require.New(t) |
| any := jsoniter.Get([]byte("[1]")) |
| should.Equal(1, any.Size()) |
| } |
| |
| func Test_read_two_element_array_as_any(t *testing.T) { |
| should := require.New(t) |
| any := jsoniter.Get([]byte("[1,2]")) |
| should.Equal(1, any.Get(0).ToInt()) |
| should.Equal(2, any.Size()) |
| should.True(any.ToBool()) |
| should.Equal(1, any.ToInt()) |
| should.Equal([]interface{}{float64(1), float64(2)}, any.GetInterface()) |
| stream := jsoniter.NewStream(jsoniter.ConfigDefault, nil, 32) |
| any.WriteTo(stream) |
| should.Equal("[1,2]", string(stream.Buffer())) |
| arr := []int{} |
| any.ToVal(&arr) |
| should.Equal([]int{1, 2}, arr) |
| } |
| |
| func Test_wrap_array_and_convert_to_any(t *testing.T) { |
| should := require.New(t) |
| any := jsoniter.Wrap([]int{1, 2, 3}) |
| any2 := jsoniter.Wrap([]int{}) |
| |
| should.Equal("[1,2,3]", any.ToString()) |
| should.True(any.ToBool()) |
| should.False(any2.ToBool()) |
| |
| should.Equal(1, any.ToInt()) |
| should.Equal(0, any2.ToInt()) |
| should.Equal(int32(1), any.ToInt32()) |
| should.Equal(int32(0), any2.ToInt32()) |
| should.Equal(int64(1), any.ToInt64()) |
| should.Equal(int64(0), any2.ToInt64()) |
| should.Equal(uint(1), any.ToUint()) |
| should.Equal(uint(0), any2.ToUint()) |
| should.Equal(uint32(1), any.ToUint32()) |
| should.Equal(uint32(0), any2.ToUint32()) |
| should.Equal(uint64(1), any.ToUint64()) |
| should.Equal(uint64(0), any2.ToUint64()) |
| should.Equal(float32(1), any.ToFloat32()) |
| should.Equal(float32(0), any2.ToFloat32()) |
| should.Equal(float64(1), any.ToFloat64()) |
| should.Equal(float64(0), any2.ToFloat64()) |
| should.Equal(3, any.Size()) |
| should.Equal(0, any2.Size()) |
| |
| var i interface{} = []int{1, 2, 3} |
| should.Equal(i, any.GetInterface()) |
| } |
| |
| func Test_array_lazy_any_get(t *testing.T) { |
| should := require.New(t) |
| any := jsoniter.Get([]byte("[1,[2,3],4]")) |
| should.Equal(3, any.Get(1, 1).ToInt()) |
| should.Equal("[1,[2,3],4]", any.ToString()) |
| } |
| |
| func Test_array_lazy_any_get_all(t *testing.T) { |
| should := require.New(t) |
| any := jsoniter.Get([]byte("[[1],[2],[3,4]]")) |
| should.Equal("[1,2,3]", any.Get('*', 0).ToString()) |
| any = jsoniter.Get([]byte("[[[1],[2],[3,4]]]"), 0, '*', 0) |
| should.Equal("[1,2,3]", any.ToString()) |
| } |
| |
| func Test_array_wrapper_any_get_all(t *testing.T) { |
| should := require.New(t) |
| any := jsoniter.Wrap([][]int{ |
| {1, 2}, |
| {3, 4}, |
| {5, 6}, |
| }) |
| should.Equal("[1,3,5]", any.Get('*', 0).ToString()) |
| should.Equal(jsoniter.ArrayValue, any.ValueType()) |
| should.True(any.ToBool()) |
| should.Equal(1, any.Get(0, 0).ToInt()) |
| } |
| |
| func Test_array_lazy_any_get_invalid(t *testing.T) { |
| should := require.New(t) |
| any := jsoniter.Get([]byte("[]")) |
| should.Equal(jsoniter.InvalidValue, any.Get(1, 1).ValueType()) |
| should.NotNil(any.Get(1, 1).LastError()) |
| should.Equal(jsoniter.InvalidValue, any.Get("1").ValueType()) |
| should.NotNil(any.Get("1").LastError()) |
| } |
| |
| func Test_invalid_array(t *testing.T) { |
| should := require.New(t) |
| any := jsoniter.Get([]byte("["), 0) |
| should.Equal(jsoniter.InvalidValue, any.ValueType()) |
| } |