package test import ( "bytes" "encoding/json" "github.com/json-iterator/go" "github.com/stretchr/testify/require" "io/ioutil" "testing" ) func Test_disallowUnknownFields(t *testing.T) { should := require.New(t) type TestObject struct{} var obj TestObject decoder := jsoniter.NewDecoder(bytes.NewBufferString(`{"field1":100}`)) 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) } func Test_decoder_more(t *testing.T) { should := require.New(t) decoder := jsoniter.NewDecoder(bytes.NewBufferString("abcde")) should.True(decoder.More()) }