| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- package test
- import (
- "testing"
- "reflect"
- "encoding/json"
- "github.com/stretchr/testify/require"
- "github.com/json-iterator/go"
- "fmt"
- )
- type unmarshalCase struct {
- ptr interface{}
- input string
- }
- var unmarshalCases []unmarshalCase
- var marshalCases = []interface{}{
- nil,
- }
- type selectedMarshalCase struct {
- marshalCase interface{}
- }
- func Test_unmarshal(t *testing.T) {
- should := require.New(t)
- for _, testCase := range unmarshalCases {
- valType := reflect.TypeOf(testCase.ptr).Elem()
- ptr1Val := reflect.New(valType)
- err1 := json.Unmarshal([]byte(testCase.input), ptr1Val.Interface())
- should.NoError(err1)
- ptr2Val := reflect.New(valType)
- err2 := jsoniter.ConfigCompatibleWithStandardLibrary.Unmarshal([]byte(testCase.input), ptr2Val.Interface())
- should.NoError(err2)
- should.Equal(ptr1Val.Interface(), ptr2Val.Interface())
- }
- }
- func Test_marshal(t *testing.T) {
- for _, testCase := range marshalCases {
- selectedMarshalCase, found := testCase.(selectedMarshalCase)
- if found {
- marshalCases = []interface{}{selectedMarshalCase.marshalCase}
- break
- }
- }
- for i, testCase := range marshalCases {
- var name string
- if testCase != nil {
- name = fmt.Sprintf("[%v]%v/%s", i, testCase, reflect.TypeOf(testCase).String())
- }
- t.Run(name, func(t *testing.T) {
- should := require.New(t)
- output1, err1 := json.Marshal(testCase)
- should.NoError(err1)
- output2, err2 := jsoniter.ConfigCompatibleWithStandardLibrary.Marshal(testCase)
- should.NoError(err2)
- should.Equal(string(output1), string(output2))
- })
- }
- }
|