mirror of
https://github.com/json-iterator/go.git
synced 2025-04-20 11:28:49 +02:00
consolidate more tests
This commit is contained in:
parent
c3b6c1e845
commit
761ce8cce2
@ -1,18 +1,19 @@
|
||||
package jsoniter
|
||||
package any_tests
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/require"
|
||||
"github.com/json-iterator/go"
|
||||
)
|
||||
|
||||
func Test_read_empty_array_as_any(t *testing.T) {
|
||||
should := require.New(t)
|
||||
any := Get([]byte("[]"))
|
||||
should.Equal(ArrayValue, any.Get().ValueType())
|
||||
should.Equal(InvalidValue, any.Get(0.3).ValueType())
|
||||
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(ArrayValue, any.ValueType())
|
||||
should.Equal(jsoniter.ArrayValue, any.ValueType())
|
||||
should.Nil(any.LastError())
|
||||
should.Equal(0, any.ToInt())
|
||||
should.Equal(int32(0), any.ToInt32())
|
||||
@ -26,19 +27,19 @@ func Test_read_empty_array_as_any(t *testing.T) {
|
||||
|
||||
func Test_read_one_element_array_as_any(t *testing.T) {
|
||||
should := require.New(t)
|
||||
any := Get([]byte("[1]"))
|
||||
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 := Get([]byte("[1,2]"))
|
||||
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 := NewStream(ConfigDefault, nil, 32)
|
||||
stream := jsoniter.NewStream(jsoniter.ConfigDefault, nil, 32)
|
||||
any.WriteTo(stream)
|
||||
should.Equal("[1,2]", string(stream.Buffer()))
|
||||
arr := []int{}
|
||||
@ -48,8 +49,8 @@ func Test_read_two_element_array_as_any(t *testing.T) {
|
||||
|
||||
func Test_wrap_array_and_convert_to_any(t *testing.T) {
|
||||
should := require.New(t)
|
||||
any := Wrap([]int{1, 2, 3})
|
||||
any2 := Wrap([]int{})
|
||||
any := jsoniter.Wrap([]int{1, 2, 3})
|
||||
any2 := jsoniter.Wrap([]int{})
|
||||
|
||||
should.Equal("[1,2,3]", any.ToString())
|
||||
should.True(any.ToBool())
|
||||
@ -80,43 +81,43 @@ func Test_wrap_array_and_convert_to_any(t *testing.T) {
|
||||
|
||||
func Test_array_lazy_any_get(t *testing.T) {
|
||||
should := require.New(t)
|
||||
any := Get([]byte("[1,[2,3],4]"))
|
||||
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 := Get([]byte("[[1],[2],[3,4]]"))
|
||||
any := jsoniter.Get([]byte("[[1],[2],[3,4]]"))
|
||||
should.Equal("[1,2,3]", any.Get('*', 0).ToString())
|
||||
any = Get([]byte("[[[1],[2],[3,4]]]"), 0, '*', 0)
|
||||
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 := wrapArray([][]int{
|
||||
any := jsoniter.Wrap([][]int{
|
||||
{1, 2},
|
||||
{3, 4},
|
||||
{5, 6},
|
||||
})
|
||||
should.Equal("[1,3,5]", any.Get('*', 0).ToString())
|
||||
should.Equal(ArrayValue, any.ValueType())
|
||||
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 := Get([]byte("[]"))
|
||||
should.Equal(InvalidValue, any.Get(1, 1).ValueType())
|
||||
any := jsoniter.Get([]byte("[]"))
|
||||
should.Equal(jsoniter.InvalidValue, any.Get(1, 1).ValueType())
|
||||
should.NotNil(any.Get(1, 1).LastError())
|
||||
should.Equal(InvalidValue, any.Get("1").ValueType())
|
||||
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 := Get([]byte("["), 0)
|
||||
should.Equal(InvalidValue, any.ValueType())
|
||||
any := jsoniter.Get([]byte("["), 0)
|
||||
should.Equal(jsoniter.InvalidValue, any.ValueType())
|
||||
}
|
@ -1,10 +1,11 @@
|
||||
package jsoniter
|
||||
package any_tests
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/require"
|
||||
"github.com/json-iterator/go"
|
||||
)
|
||||
|
||||
var boolConvertMap = map[string]bool{
|
||||
@ -35,9 +36,9 @@ var boolConvertMap = map[string]bool{
|
||||
func Test_read_bool_as_any(t *testing.T) {
|
||||
should := require.New(t)
|
||||
|
||||
var any Any
|
||||
var any jsoniter.Any
|
||||
for k, v := range boolConvertMap {
|
||||
any = Get([]byte(k))
|
||||
any = jsoniter.Get([]byte(k))
|
||||
if v {
|
||||
should.True(any.ToBool(), fmt.Sprintf("origin val is %v", k))
|
||||
} else {
|
||||
@ -49,16 +50,16 @@ func Test_read_bool_as_any(t *testing.T) {
|
||||
|
||||
func Test_write_bool_to_stream(t *testing.T) {
|
||||
should := require.New(t)
|
||||
any := Get([]byte("true"))
|
||||
stream := NewStream(ConfigDefault, nil, 32)
|
||||
any := jsoniter.Get([]byte("true"))
|
||||
stream := jsoniter.NewStream(jsoniter.ConfigDefault, nil, 32)
|
||||
any.WriteTo(stream)
|
||||
should.Equal("true", string(stream.Buffer()))
|
||||
should.Equal(any.ValueType(), BoolValue)
|
||||
should.Equal(any.ValueType(), jsoniter.BoolValue)
|
||||
|
||||
any = Get([]byte("false"))
|
||||
stream = NewStream(ConfigDefault, nil, 32)
|
||||
any = jsoniter.Get([]byte("false"))
|
||||
stream = jsoniter.NewStream(jsoniter.ConfigDefault, nil, 32)
|
||||
any.WriteTo(stream)
|
||||
should.Equal("false", string(stream.Buffer()))
|
||||
|
||||
should.Equal(any.ValueType(), BoolValue)
|
||||
should.Equal(any.ValueType(), jsoniter.BoolValue)
|
||||
}
|
@ -1,9 +1,10 @@
|
||||
package jsoniter
|
||||
package any_tests
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/require"
|
||||
"github.com/json-iterator/go"
|
||||
)
|
||||
|
||||
var floatConvertMap = map[string]float64{
|
||||
@ -67,22 +68,22 @@ var floatConvertMap = map[string]float64{
|
||||
func Test_read_any_to_float(t *testing.T) {
|
||||
should := require.New(t)
|
||||
for k, v := range floatConvertMap {
|
||||
any := Get([]byte(k))
|
||||
any := jsoniter.Get([]byte(k))
|
||||
should.Equal(float64(v), any.ToFloat64(), "the original val is "+k)
|
||||
}
|
||||
|
||||
for k, v := range floatConvertMap {
|
||||
any := Get([]byte(k))
|
||||
any := jsoniter.Get([]byte(k))
|
||||
should.Equal(float32(v), any.ToFloat32(), "the original val is "+k)
|
||||
}
|
||||
}
|
||||
|
||||
func Test_read_float_to_any(t *testing.T) {
|
||||
should := require.New(t)
|
||||
any := WrapFloat64(12.3)
|
||||
any := jsoniter.WrapFloat64(12.3)
|
||||
anyFloat64 := float64(12.3)
|
||||
//negaAnyFloat64 := float64(-1.1)
|
||||
any2 := WrapFloat64(-1.1)
|
||||
any2 := jsoniter.WrapFloat64(-1.1)
|
||||
should.Equal(float64(12.3), any.ToFloat64())
|
||||
//should.Equal("12.3", any.ToString())
|
||||
should.True(any.ToBool())
|
||||
@ -96,7 +97,7 @@ func Test_read_float_to_any(t *testing.T) {
|
||||
should.Equal(uint(0), any2.ToUint())
|
||||
should.Equal(uint32(0), any2.ToUint32())
|
||||
should.Equal(uint64(0), any2.ToUint64())
|
||||
should.Equal(any.ValueType(), NumberValue)
|
||||
should.Equal(any.ValueType(), jsoniter.NumberValue)
|
||||
|
||||
should.Equal("1.23E+01", any.ToString())
|
||||
}
|
@ -1,10 +1,11 @@
|
||||
package jsoniter
|
||||
package any_tests
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/require"
|
||||
"github.com/json-iterator/go"
|
||||
)
|
||||
|
||||
var intConvertMap = map[string]int{
|
||||
@ -41,19 +42,19 @@ func Test_read_any_to_int(t *testing.T) {
|
||||
|
||||
// int
|
||||
for k, v := range intConvertMap {
|
||||
any := Get([]byte(k))
|
||||
any := jsoniter.Get([]byte(k))
|
||||
should.Equal(v, any.ToInt(), fmt.Sprintf("origin val %v", k))
|
||||
}
|
||||
|
||||
// int32
|
||||
for k, v := range intConvertMap {
|
||||
any := Get([]byte(k))
|
||||
any := jsoniter.Get([]byte(k))
|
||||
should.Equal(int32(v), any.ToInt32(), fmt.Sprintf("original val is %v", k))
|
||||
}
|
||||
|
||||
// int64
|
||||
for k, v := range intConvertMap {
|
||||
any := Get([]byte(k))
|
||||
any := jsoniter.Get([]byte(k))
|
||||
should.Equal(int64(v), any.ToInt64(), fmt.Sprintf("original val is %v", k))
|
||||
}
|
||||
|
||||
@ -94,17 +95,17 @@ func Test_read_any_to_uint(t *testing.T) {
|
||||
should := require.New(t)
|
||||
|
||||
for k, v := range uintConvertMap {
|
||||
any := Get([]byte(k))
|
||||
any := jsoniter.Get([]byte(k))
|
||||
should.Equal(uint64(v), any.ToUint64(), fmt.Sprintf("origin val %v", k))
|
||||
}
|
||||
|
||||
for k, v := range uintConvertMap {
|
||||
any := Get([]byte(k))
|
||||
any := jsoniter.Get([]byte(k))
|
||||
should.Equal(uint32(v), any.ToUint32(), fmt.Sprintf("origin val %v", k))
|
||||
}
|
||||
|
||||
for k, v := range uintConvertMap {
|
||||
any := Get([]byte(k))
|
||||
any := jsoniter.Get([]byte(k))
|
||||
should.Equal(uint(v), any.ToUint(), fmt.Sprintf("origin val %v", k))
|
||||
}
|
||||
|
||||
@ -112,7 +113,7 @@ func Test_read_any_to_uint(t *testing.T) {
|
||||
|
||||
func Test_read_int64_to_any(t *testing.T) {
|
||||
should := require.New(t)
|
||||
any := WrapInt64(12345)
|
||||
any := jsoniter.WrapInt64(12345)
|
||||
should.Equal(12345, any.ToInt())
|
||||
should.Equal(int32(12345), any.ToInt32())
|
||||
should.Equal(int64(12345), any.ToInt64())
|
||||
@ -123,14 +124,14 @@ func Test_read_int64_to_any(t *testing.T) {
|
||||
should.Equal(float64(12345), any.ToFloat64())
|
||||
should.Equal("12345", any.ToString())
|
||||
should.Equal(true, any.ToBool())
|
||||
should.Equal(any.ValueType(), NumberValue)
|
||||
stream := NewStream(ConfigDefault, nil, 32)
|
||||
should.Equal(any.ValueType(), jsoniter.NumberValue)
|
||||
stream := jsoniter.NewStream(jsoniter.ConfigDefault, nil, 32)
|
||||
any.WriteTo(stream)
|
||||
should.Equal("12345", string(stream.Buffer()))
|
||||
}
|
||||
func Test_read_int32_to_any(t *testing.T) {
|
||||
should := require.New(t)
|
||||
any := WrapInt32(12345)
|
||||
any := jsoniter.WrapInt32(12345)
|
||||
should.Equal(12345, any.ToInt())
|
||||
should.Equal(int32(12345), any.ToInt32())
|
||||
should.Equal(int64(12345), any.ToInt64())
|
||||
@ -141,15 +142,15 @@ func Test_read_int32_to_any(t *testing.T) {
|
||||
should.Equal(float64(12345), any.ToFloat64())
|
||||
should.Equal("12345", any.ToString())
|
||||
should.Equal(true, any.ToBool())
|
||||
should.Equal(any.ValueType(), NumberValue)
|
||||
stream := NewStream(ConfigDefault, nil, 32)
|
||||
should.Equal(any.ValueType(), jsoniter.NumberValue)
|
||||
stream := jsoniter.NewStream(jsoniter.ConfigDefault, nil, 32)
|
||||
any.WriteTo(stream)
|
||||
should.Equal("12345", string(stream.Buffer()))
|
||||
}
|
||||
|
||||
func Test_read_uint32_to_any(t *testing.T) {
|
||||
should := require.New(t)
|
||||
any := WrapUint32(12345)
|
||||
any := jsoniter.WrapUint32(12345)
|
||||
should.Equal(12345, any.ToInt())
|
||||
should.Equal(int32(12345), any.ToInt32())
|
||||
should.Equal(int64(12345), any.ToInt64())
|
||||
@ -160,15 +161,15 @@ func Test_read_uint32_to_any(t *testing.T) {
|
||||
should.Equal(float64(12345), any.ToFloat64())
|
||||
should.Equal("12345", any.ToString())
|
||||
should.Equal(true, any.ToBool())
|
||||
should.Equal(any.ValueType(), NumberValue)
|
||||
stream := NewStream(ConfigDefault, nil, 32)
|
||||
should.Equal(any.ValueType(), jsoniter.NumberValue)
|
||||
stream := jsoniter.NewStream(jsoniter.ConfigDefault, nil, 32)
|
||||
any.WriteTo(stream)
|
||||
should.Equal("12345", string(stream.Buffer()))
|
||||
}
|
||||
|
||||
func Test_read_uint64_to_any(t *testing.T) {
|
||||
should := require.New(t)
|
||||
any := WrapUint64(12345)
|
||||
any := jsoniter.WrapUint64(12345)
|
||||
should.Equal(12345, any.ToInt())
|
||||
should.Equal(int32(12345), any.ToInt32())
|
||||
should.Equal(int64(12345), any.ToInt64())
|
||||
@ -179,19 +180,19 @@ func Test_read_uint64_to_any(t *testing.T) {
|
||||
should.Equal(float64(12345), any.ToFloat64())
|
||||
should.Equal("12345", any.ToString())
|
||||
should.Equal(true, any.ToBool())
|
||||
should.Equal(any.ValueType(), NumberValue)
|
||||
stream := NewStream(ConfigDefault, nil, 32)
|
||||
should.Equal(any.ValueType(), jsoniter.NumberValue)
|
||||
stream := jsoniter.NewStream(jsoniter.ConfigDefault, nil, 32)
|
||||
any.WriteTo(stream)
|
||||
should.Equal("12345", string(stream.Buffer()))
|
||||
stream = NewStream(ConfigDefault, nil, 32)
|
||||
stream = jsoniter.NewStream(jsoniter.ConfigDefault, nil, 32)
|
||||
stream.WriteUint(uint(123))
|
||||
should.Equal("123", string(stream.Buffer()))
|
||||
}
|
||||
|
||||
func Test_int_lazy_any_get(t *testing.T) {
|
||||
should := require.New(t)
|
||||
any := Get([]byte("1234"))
|
||||
any := jsoniter.Get([]byte("1234"))
|
||||
// panic!!
|
||||
//should.Equal(any.LastError(), io.EOF)
|
||||
should.Equal(InvalidValue, any.Get(1, "2").ValueType())
|
||||
should.Equal(jsoniter.InvalidValue, any.Get(1, "2").ValueType())
|
||||
}
|
@ -1,14 +1,15 @@
|
||||
package jsoniter
|
||||
package any_tests
|
||||
|
||||
import (
|
||||
"github.com/stretchr/testify/require"
|
||||
"testing"
|
||||
"github.com/json-iterator/go"
|
||||
)
|
||||
|
||||
func Test_wrap_map(t *testing.T) {
|
||||
should := require.New(t)
|
||||
any := Wrap(map[string]string{"Field1": "hello"})
|
||||
any := jsoniter.Wrap(map[string]string{"Field1": "hello"})
|
||||
should.Equal("hello", any.Get("Field1").ToString())
|
||||
any = Wrap(map[string]string{"Field1": "hello"})
|
||||
any = jsoniter.Wrap(map[string]string{"Field1": "hello"})
|
||||
should.Equal(1, any.Size())
|
||||
}
|
@ -1,13 +1,14 @@
|
||||
package jsoniter
|
||||
package any_tests
|
||||
|
||||
import (
|
||||
"github.com/stretchr/testify/require"
|
||||
"testing"
|
||||
"github.com/json-iterator/go"
|
||||
)
|
||||
|
||||
func Test_read_null_as_any(t *testing.T) {
|
||||
should := require.New(t)
|
||||
any := Get([]byte(`null`))
|
||||
any := jsoniter.Get([]byte(`null`))
|
||||
should.Equal(0, any.ToInt())
|
||||
should.Equal(float64(0), any.ToFloat64())
|
||||
should.Equal("", any.ToString())
|
@ -1,26 +1,27 @@
|
||||
package jsoniter
|
||||
package any_tests
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/require"
|
||||
"github.com/json-iterator/go"
|
||||
)
|
||||
|
||||
func Test_read_object_as_any(t *testing.T) {
|
||||
should := require.New(t)
|
||||
any := Get([]byte(`{"a":"stream","c":"d"}`))
|
||||
any := jsoniter.Get([]byte(`{"a":"stream","c":"d"}`))
|
||||
should.Equal(`{"a":"stream","c":"d"}`, any.ToString())
|
||||
// partial parse
|
||||
should.Equal("stream", any.Get("a").ToString())
|
||||
should.Equal("d", any.Get("c").ToString())
|
||||
should.Equal(2, len(any.Keys()))
|
||||
any = Get([]byte(`{"a":"stream","c":"d"}`))
|
||||
any = jsoniter.Get([]byte(`{"a":"stream","c":"d"}`))
|
||||
// full parse
|
||||
should.Equal(2, len(any.Keys()))
|
||||
should.Equal(2, any.Size())
|
||||
should.True(any.ToBool())
|
||||
should.Equal(0, any.ToInt())
|
||||
should.Equal(ObjectValue, any.ValueType())
|
||||
should.Equal(jsoniter.ObjectValue, any.ValueType())
|
||||
should.Nil(any.LastError())
|
||||
obj := struct {
|
||||
A string
|
||||
@ -31,26 +32,26 @@ func Test_read_object_as_any(t *testing.T) {
|
||||
|
||||
func Test_object_lazy_any_get(t *testing.T) {
|
||||
should := require.New(t)
|
||||
any := Get([]byte(`{"a":{"stream":{"c":"d"}}}`))
|
||||
any := jsoniter.Get([]byte(`{"a":{"stream":{"c":"d"}}}`))
|
||||
should.Equal("d", any.Get("a", "stream", "c").ToString())
|
||||
}
|
||||
|
||||
func Test_object_lazy_any_get_all(t *testing.T) {
|
||||
should := require.New(t)
|
||||
any := Get([]byte(`{"a":[0],"stream":[1]}`))
|
||||
any := jsoniter.Get([]byte(`{"a":[0],"stream":[1]}`))
|
||||
should.Contains(any.Get('*', 0).ToString(), `"a":0`)
|
||||
}
|
||||
|
||||
func Test_object_lazy_any_get_invalid(t *testing.T) {
|
||||
should := require.New(t)
|
||||
any := Get([]byte(`{}`))
|
||||
should.Equal(InvalidValue, any.Get("a", "stream", "c").ValueType())
|
||||
should.Equal(InvalidValue, any.Get(1).ValueType())
|
||||
any := jsoniter.Get([]byte(`{}`))
|
||||
should.Equal(jsoniter.InvalidValue, any.Get("a", "stream", "c").ValueType())
|
||||
should.Equal(jsoniter.InvalidValue, any.Get(1).ValueType())
|
||||
}
|
||||
|
||||
func Test_wrap_map_and_convert_to_any(t *testing.T) {
|
||||
should := require.New(t)
|
||||
any := Wrap(map[string]interface{}{"a": 1})
|
||||
any := jsoniter.Wrap(map[string]interface{}{"a": 1})
|
||||
should.True(any.ToBool())
|
||||
should.Equal(0, any.ToInt())
|
||||
should.Equal(int32(0), any.ToInt32())
|
||||
@ -68,9 +69,9 @@ func Test_wrap_object_and_convert_to_any(t *testing.T) {
|
||||
Field1 string
|
||||
field2 string
|
||||
}
|
||||
any := Wrap(TestObject{"hello", "world"})
|
||||
any := jsoniter.Wrap(TestObject{"hello", "world"})
|
||||
should.Equal("hello", any.Get("Field1").ToString())
|
||||
any = Wrap(TestObject{"hello", "world"})
|
||||
any = jsoniter.Wrap(TestObject{"hello", "world"})
|
||||
should.Equal(2, any.Size())
|
||||
should.Equal(`{"Field1":"hello"}`, any.Get('*').ToString())
|
||||
|
||||
@ -96,11 +97,11 @@ func Test_wrap_object_and_convert_to_any(t *testing.T) {
|
||||
func Test_any_within_struct(t *testing.T) {
|
||||
should := require.New(t)
|
||||
type TestObject struct {
|
||||
Field1 Any
|
||||
Field2 Any
|
||||
Field1 jsoniter.Any
|
||||
Field2 jsoniter.Any
|
||||
}
|
||||
obj := TestObject{}
|
||||
err := UnmarshalFromString(`{"Field1": "hello", "Field2": [1,2,3]}`, &obj)
|
||||
err := jsoniter.UnmarshalFromString(`{"Field1": "hello", "Field2": [1,2,3]}`, &obj)
|
||||
should.Nil(err)
|
||||
should.Equal("hello", obj.Field1.ToString())
|
||||
should.Equal("[1,2,3]", obj.Field2.ToString())
|
@ -1,9 +1,10 @@
|
||||
package jsoniter
|
||||
package any_tests
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/require"
|
||||
"github.com/json-iterator/go"
|
||||
)
|
||||
|
||||
var stringConvertMap = map[string]string{
|
||||
@ -31,27 +32,27 @@ var stringConvertMap = map[string]string{
|
||||
func Test_read_any_to_string(t *testing.T) {
|
||||
should := require.New(t)
|
||||
for k, v := range stringConvertMap {
|
||||
any := Get([]byte(k))
|
||||
any := jsoniter.Get([]byte(k))
|
||||
should.Equal(v, any.ToString(), "original val "+k)
|
||||
}
|
||||
}
|
||||
|
||||
func Test_read_string_as_any(t *testing.T) {
|
||||
should := require.New(t)
|
||||
any := Get([]byte(`"hello"`))
|
||||
any := jsoniter.Get([]byte(`"hello"`))
|
||||
should.Equal("hello", any.ToString())
|
||||
should.True(any.ToBool())
|
||||
any = Get([]byte(`" "`))
|
||||
any = jsoniter.Get([]byte(`" "`))
|
||||
should.False(any.ToBool())
|
||||
any = Get([]byte(`"false"`))
|
||||
any = jsoniter.Get([]byte(`"false"`))
|
||||
should.True(any.ToBool())
|
||||
any = Get([]byte(`"123"`))
|
||||
any = jsoniter.Get([]byte(`"123"`))
|
||||
should.Equal(123, any.ToInt())
|
||||
}
|
||||
|
||||
func Test_wrap_string(t *testing.T) {
|
||||
should := require.New(t)
|
||||
any := Get([]byte("-32000")).MustBeValid()
|
||||
any := jsoniter.Get([]byte("-32000")).MustBeValid()
|
||||
should.Equal(-32000, any.ToInt())
|
||||
should.NoError(any.LastError())
|
||||
}
|
16
api_tests/config_test.go
Normal file
16
api_tests/config_test.go
Normal file
@ -0,0 +1,16 @@
|
||||
package test
|
||||
|
||||
import (
|
||||
"testing"
|
||||
"github.com/stretchr/testify/require"
|
||||
"github.com/json-iterator/go"
|
||||
"encoding/json"
|
||||
)
|
||||
|
||||
func Test_use_number_for_unmarshal(t *testing.T) {
|
||||
should := require.New(t)
|
||||
api := jsoniter.Config{UseNumber: true}.Froze()
|
||||
var obj interface{}
|
||||
should.Nil(api.UnmarshalFromString("123", &obj))
|
||||
should.Equal(json.Number("123"), obj)
|
||||
}
|
@ -5,6 +5,8 @@ import (
|
||||
"github.com/stretchr/testify/require"
|
||||
"testing"
|
||||
"github.com/json-iterator/go"
|
||||
"io/ioutil"
|
||||
"encoding/json"
|
||||
)
|
||||
|
||||
func Test_disallowUnknownFields(t *testing.T) {
|
||||
@ -15,3 +17,43 @@ func Test_disallowUnknownFields(t *testing.T) {
|
||||
decoder.DisallowUnknownFields()
|
||||
should.Error(decoder.Decode(&obj))
|
||||
}
|
||||
|
||||
|
||||
func Test_new_decoder(t *testing.T) {
|
||||
should := require.New(t)
|
||||
decoder1 := json.NewDecoder(bytes.NewBufferString(`[1][2]`))
|
||||
decoder2 := jsoniter.NewDecoder(bytes.NewBufferString(`[1][2]`))
|
||||
arr1 := []int{}
|
||||
should.Nil(decoder1.Decode(&arr1))
|
||||
should.Equal([]int{1}, arr1)
|
||||
arr2 := []int{}
|
||||
should.True(decoder1.More())
|
||||
buffered, _ := ioutil.ReadAll(decoder1.Buffered())
|
||||
should.Equal("[2]", string(buffered))
|
||||
should.Nil(decoder2.Decode(&arr2))
|
||||
should.Equal([]int{1}, arr2)
|
||||
should.True(decoder2.More())
|
||||
buffered, _ = ioutil.ReadAll(decoder2.Buffered())
|
||||
should.Equal("[2]", string(buffered))
|
||||
|
||||
should.Nil(decoder1.Decode(&arr1))
|
||||
should.Equal([]int{2}, arr1)
|
||||
should.False(decoder1.More())
|
||||
should.Nil(decoder2.Decode(&arr2))
|
||||
should.Equal([]int{2}, arr2)
|
||||
should.False(decoder2.More())
|
||||
}
|
||||
|
||||
func Test_use_number(t *testing.T) {
|
||||
should := require.New(t)
|
||||
decoder1 := json.NewDecoder(bytes.NewBufferString(`123`))
|
||||
decoder1.UseNumber()
|
||||
decoder2 := jsoniter.NewDecoder(bytes.NewBufferString(`123`))
|
||||
decoder2.UseNumber()
|
||||
var obj1 interface{}
|
||||
should.Nil(decoder1.Decode(&obj1))
|
||||
should.Equal(json.Number("123"), obj1)
|
||||
var obj2 interface{}
|
||||
should.Nil(decoder2.Decode(&obj2))
|
||||
should.Equal(json.Number("123"), obj2)
|
||||
}
|
||||
|
@ -1,6 +1,6 @@
|
||||
// +build go1.8
|
||||
//+build go1.8
|
||||
|
||||
package jsoniter
|
||||
package test
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
@ -9,6 +9,7 @@ import (
|
||||
"unicode/utf8"
|
||||
|
||||
"github.com/stretchr/testify/require"
|
||||
"github.com/json-iterator/go"
|
||||
)
|
||||
|
||||
func Test_new_encoder(t *testing.T) {
|
||||
@ -19,14 +20,14 @@ func Test_new_encoder(t *testing.T) {
|
||||
encoder1.Encode([]int{1})
|
||||
should.Equal("[1]\n", buf1.String())
|
||||
buf2 := &bytes.Buffer{}
|
||||
encoder2 := NewEncoder(buf2)
|
||||
encoder2 := jsoniter.NewEncoder(buf2)
|
||||
encoder2.SetEscapeHTML(false)
|
||||
encoder2.Encode([]int{1})
|
||||
should.Equal("[1]\n", buf2.String())
|
||||
}
|
||||
|
||||
func Test_string_encode_with_std_without_html_escape(t *testing.T) {
|
||||
api := Config{EscapeHTML: false}.Froze()
|
||||
api := jsoniter.Config{EscapeHTML: false}.Froze()
|
||||
should := require.New(t)
|
||||
for i := 0; i < utf8.RuneSelf; i++ {
|
||||
input := string([]byte{byte(i)})
|
20
api_tests/encoder_test.go
Normal file
20
api_tests/encoder_test.go
Normal file
@ -0,0 +1,20 @@
|
||||
package test
|
||||
|
||||
import (
|
||||
"testing"
|
||||
"github.com/stretchr/testify/require"
|
||||
"bytes"
|
||||
"github.com/json-iterator/go"
|
||||
"encoding/json"
|
||||
)
|
||||
|
||||
// Standard Encoder has trailing newline.
|
||||
func TestEncoderHasTrailingNewline(t *testing.T) {
|
||||
should := require.New(t)
|
||||
var buf, stdbuf bytes.Buffer
|
||||
enc := jsoniter.ConfigCompatibleWithStandardLibrary.NewEncoder(&buf)
|
||||
enc.Encode(1)
|
||||
stdenc := json.NewEncoder(&stdbuf)
|
||||
stdenc.Encode(1)
|
||||
should.Equal(stdbuf.Bytes(), buf.Bytes())
|
||||
}
|
36
api_tests/marshal_indent_test.go
Normal file
36
api_tests/marshal_indent_test.go
Normal file
@ -0,0 +1,36 @@
|
||||
package test
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"github.com/stretchr/testify/require"
|
||||
"testing"
|
||||
"github.com/json-iterator/go"
|
||||
)
|
||||
|
||||
func Test_marshal_indent(t *testing.T) {
|
||||
should := require.New(t)
|
||||
obj := struct {
|
||||
F1 int
|
||||
F2 []int
|
||||
}{1, []int{2, 3, 4}}
|
||||
output, err := json.MarshalIndent(obj, "", " ")
|
||||
should.Nil(err)
|
||||
should.Equal("{\n \"F1\": 1,\n \"F2\": [\n 2,\n 3,\n 4\n ]\n}", string(output))
|
||||
output, err = jsoniter.MarshalIndent(obj, "", " ")
|
||||
should.Nil(err)
|
||||
should.Equal("{\n \"F1\": 1,\n \"F2\": [\n 2,\n 3,\n 4\n ]\n}", string(output))
|
||||
}
|
||||
|
||||
func Test_marshal_indent_map(t *testing.T) {
|
||||
should := require.New(t)
|
||||
obj := map[int]int{1: 2}
|
||||
output, err := json.MarshalIndent(obj, "", " ")
|
||||
should.Nil(err)
|
||||
should.Equal("{\n \"1\": 2\n}", string(output))
|
||||
output, err = jsoniter.MarshalIndent(obj, "", " ")
|
||||
should.Nil(err)
|
||||
should.Equal("{\n \"1\": 2\n}", string(output))
|
||||
output, err = jsoniter.ConfigCompatibleWithStandardLibrary.MarshalIndent(obj, "", " ")
|
||||
should.Nil(err)
|
||||
should.Equal("{\n \"1\": 2\n}", string(output))
|
||||
}
|
@ -1,40 +0,0 @@
|
||||
package jsoniter
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"encoding/json"
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
// Standard Encoder has trailing newline.
|
||||
func TestEncoderHasTrailingNewline(t *testing.T) {
|
||||
should := require.New(t)
|
||||
var buf, stdbuf bytes.Buffer
|
||||
enc := ConfigCompatibleWithStandardLibrary.NewEncoder(&buf)
|
||||
enc.Encode(1)
|
||||
stdenc := json.NewEncoder(&stdbuf)
|
||||
stdenc.Encode(1)
|
||||
should.Equal(stdbuf.Bytes(), buf.Bytes())
|
||||
}
|
||||
|
||||
// Non-nil but empty map should be ignored.
|
||||
func TestOmitempty(t *testing.T) {
|
||||
o := struct {
|
||||
A string `json:"a,omitempty"`
|
||||
B string `json:"b,omitempty"`
|
||||
Annotations map[string]string `json:"annotations,omitempty"`
|
||||
}{
|
||||
A: "a",
|
||||
B: "b",
|
||||
Annotations: map[string]string{},
|
||||
}
|
||||
should := require.New(t)
|
||||
var buf, stdbuf bytes.Buffer
|
||||
enc := ConfigCompatibleWithStandardLibrary.NewEncoder(&buf)
|
||||
enc.Encode(o)
|
||||
stdenc := json.NewEncoder(&stdbuf)
|
||||
stdenc.Encode(o)
|
||||
should.Equal(string(stdbuf.Bytes()), string(buf.Bytes()))
|
||||
}
|
@ -1,84 +0,0 @@
|
||||
package jsoniter
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"encoding/json"
|
||||
"github.com/stretchr/testify/require"
|
||||
"io/ioutil"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func Test_new_decoder(t *testing.T) {
|
||||
should := require.New(t)
|
||||
decoder1 := json.NewDecoder(bytes.NewBufferString(`[1][2]`))
|
||||
decoder2 := NewDecoder(bytes.NewBufferString(`[1][2]`))
|
||||
arr1 := []int{}
|
||||
should.Nil(decoder1.Decode(&arr1))
|
||||
should.Equal([]int{1}, arr1)
|
||||
arr2 := []int{}
|
||||
should.True(decoder1.More())
|
||||
buffered, _ := ioutil.ReadAll(decoder1.Buffered())
|
||||
should.Equal("[2]", string(buffered))
|
||||
should.Nil(decoder2.Decode(&arr2))
|
||||
should.Equal([]int{1}, arr2)
|
||||
should.True(decoder2.More())
|
||||
buffered, _ = ioutil.ReadAll(decoder2.Buffered())
|
||||
should.Equal("[2]", string(buffered))
|
||||
|
||||
should.Nil(decoder1.Decode(&arr1))
|
||||
should.Equal([]int{2}, arr1)
|
||||
should.False(decoder1.More())
|
||||
should.Nil(decoder2.Decode(&arr2))
|
||||
should.Equal([]int{2}, arr2)
|
||||
should.False(decoder2.More())
|
||||
}
|
||||
|
||||
func Test_use_number(t *testing.T) {
|
||||
should := require.New(t)
|
||||
decoder1 := json.NewDecoder(bytes.NewBufferString(`123`))
|
||||
decoder1.UseNumber()
|
||||
decoder2 := NewDecoder(bytes.NewBufferString(`123`))
|
||||
decoder2.UseNumber()
|
||||
var obj1 interface{}
|
||||
should.Nil(decoder1.Decode(&obj1))
|
||||
should.Equal(json.Number("123"), obj1)
|
||||
var obj2 interface{}
|
||||
should.Nil(decoder2.Decode(&obj2))
|
||||
should.Equal(json.Number("123"), obj2)
|
||||
}
|
||||
|
||||
func Test_use_number_for_unmarshal(t *testing.T) {
|
||||
should := require.New(t)
|
||||
api := Config{UseNumber: true}.Froze()
|
||||
var obj interface{}
|
||||
should.Nil(api.UnmarshalFromString("123", &obj))
|
||||
should.Equal(json.Number("123"), obj)
|
||||
}
|
||||
|
||||
func Test_marshal_indent(t *testing.T) {
|
||||
should := require.New(t)
|
||||
obj := struct {
|
||||
F1 int
|
||||
F2 []int
|
||||
}{1, []int{2, 3, 4}}
|
||||
output, err := json.MarshalIndent(obj, "", " ")
|
||||
should.Nil(err)
|
||||
should.Equal("{\n \"F1\": 1,\n \"F2\": [\n 2,\n 3,\n 4\n ]\n}", string(output))
|
||||
output, err = MarshalIndent(obj, "", " ")
|
||||
should.Nil(err)
|
||||
should.Equal("{\n \"F1\": 1,\n \"F2\": [\n 2,\n 3,\n 4\n ]\n}", string(output))
|
||||
}
|
||||
|
||||
func Test_marshal_indent_map(t *testing.T) {
|
||||
should := require.New(t)
|
||||
obj := map[int]int{1: 2}
|
||||
output, err := json.MarshalIndent(obj, "", " ")
|
||||
should.Nil(err)
|
||||
should.Equal("{\n \"1\": 2\n}", string(output))
|
||||
output, err = MarshalIndent(obj, "", " ")
|
||||
should.Nil(err)
|
||||
should.Equal("{\n \"1\": 2\n}", string(output))
|
||||
output, err = ConfigCompatibleWithStandardLibrary.MarshalIndent(obj, "", " ")
|
||||
should.Nil(err)
|
||||
should.Equal("{\n \"1\": 2\n}", string(output))
|
||||
}
|
@ -1,62 +0,0 @@
|
||||
package jsoniter
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
func Test_alias(t *testing.T) {
|
||||
should := require.New(t)
|
||||
type myint int
|
||||
type myint8 int8
|
||||
type myint16 int16
|
||||
type myint32 int32
|
||||
type myint64 int64
|
||||
type myuint uint
|
||||
type myuint8 uint8
|
||||
type myuint16 uint16
|
||||
type myuint32 uint32
|
||||
type myuint64 uint64
|
||||
type myfloat32 float32
|
||||
type myfloat64 float64
|
||||
type mystring string
|
||||
type mybool bool
|
||||
type myuintptr uintptr
|
||||
var a struct {
|
||||
A myint8 `json:"a"`
|
||||
B myint16 `json:"stream"`
|
||||
C myint32 `json:"c"`
|
||||
D myint64 `json:"d"`
|
||||
E myuint8 `json:"e"`
|
||||
F myuint16 `json:"f"`
|
||||
G myuint32 `json:"g"`
|
||||
H myuint64 `json:"h"`
|
||||
I myfloat32 `json:"i"`
|
||||
J myfloat64 `json:"j"`
|
||||
K mystring `json:"k"`
|
||||
L myint `json:"l"`
|
||||
M myuint `json:"m"`
|
||||
N mybool `json:"n"`
|
||||
O myuintptr `json:"o"`
|
||||
}
|
||||
|
||||
should.Nil(UnmarshalFromString(`{"a" : 1, "stream" : 1, "c": 1, "d" : 1, "e" : 1, "f" : 1, "g" : 1, "h": 1, "i" : 1, "j" : 1, "k" :"xxxx", "l" : 1, "m":1, "n": true, "o" : 1}`, &a))
|
||||
should.Equal(myfloat32(1), a.I)
|
||||
should.Equal(myfloat64(1), a.J)
|
||||
should.Equal(myint8(1), a.A)
|
||||
should.Equal(myint16(1), a.B)
|
||||
should.Equal(myint32(1), a.C)
|
||||
should.Equal(myint64(1), a.D)
|
||||
should.Equal(myuint8(1), a.E)
|
||||
should.Equal(myuint16(1), a.F)
|
||||
should.Equal(myuint32(1), a.G)
|
||||
should.Equal(myuint64(1), a.H)
|
||||
should.Equal(mystring("xxxx"), a.K)
|
||||
should.Equal(mybool(true), a.N)
|
||||
should.Equal(myuintptr(1), a.O)
|
||||
b, err := Marshal(a)
|
||||
should.Nil(err)
|
||||
should.Equal(`{"a":1,"stream":1,"c":1,"d":1,"e":1,"f":1,"g":1,"h":1,"i":1,"j":1,"k":"xxxx","l":1,"m":1,"n":true,"o":1}`, string(b))
|
||||
|
||||
}
|
@ -28,6 +28,23 @@ func init() {
|
||||
(*uint32Alias)(nil),
|
||||
(*uintptr)(nil),
|
||||
(*uintptrAlias)(nil),
|
||||
(*struct {
|
||||
A int8Alias `json:"a"`
|
||||
B int16Alias `json:"stream"`
|
||||
C int32Alias `json:"c"`
|
||||
D int64Alias `json:"d"`
|
||||
E uintAlias `json:"e"`
|
||||
F uint16Alias `json:"f"`
|
||||
G uint32Alias `json:"g"`
|
||||
H uint64Alias `json:"h"`
|
||||
I float32Alias `json:"i"`
|
||||
J float64Alias `json:"j"`
|
||||
K stringAlias `json:"k"`
|
||||
L intAlias `json:"l"`
|
||||
M uintAlias `json:"m"`
|
||||
N boolAlias `json:"n"`
|
||||
O uintptrAlias `json:"o"`
|
||||
})(nil),
|
||||
)
|
||||
}
|
||||
|
||||
@ -47,3 +64,6 @@ type uint8Alias uint8
|
||||
type uint16Alias uint16
|
||||
type uint32Alias uint32
|
||||
type uintptrAlias uintptr
|
||||
type uintAlias uint
|
||||
type uint64Alias uint64
|
||||
type intAlias int
|
||||
|
@ -137,6 +137,11 @@ func init() {
|
||||
F1 uint32 `json:"F1"`
|
||||
F2 uint32 `json:"F2,string"`
|
||||
})(nil),
|
||||
(*struct {
|
||||
A string `json:"a,omitempty"`
|
||||
B string `json:"b,omitempty"`
|
||||
Annotations map[string]string `json:"annotations,omitempty"`
|
||||
})(nil),
|
||||
)
|
||||
}
|
||||
|
||||
@ -193,7 +198,6 @@ type StringFieldName struct {
|
||||
StringFieldNameE `json:"e"`
|
||||
}
|
||||
|
||||
|
||||
type StructFieldNameS1 struct {
|
||||
S1F string
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user