| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- package jsoniter
- import (
- "bytes"
- "encoding/json"
- "github.com/json-iterator/go/require"
- "io/ioutil"
- "testing"
- "fmt"
- )
- 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_new_encoder(t *testing.T) {
- should := require.New(t)
- buf1 := &bytes.Buffer{}
- encoder1 := json.NewEncoder(buf1)
- encoder1.SetEscapeHTML(false)
- encoder1.Encode([]int{1})
- should.Equal("[1]\n", buf1.String())
- buf2 := &bytes.Buffer{}
- encoder2 := NewEncoder(buf2)
- encoder2.SetEscapeHTML(false)
- encoder2.Encode([]int{1})
- should.Equal("[1]", buf2.String())
- }
- 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) {
- t.Skip("WIP")
- should := require.New(t)
- output, err := json.MarshalIndent(struct{
- F1 int
- F2 []int
- }{1, []int{2, 3, 4}}, "", " ")
- should.Nil(err)
- fmt.Println(string(output))
- should.Equal("{\nab\"F1\": 1,\nab\"F2\": 2\na}", string(output))
- }
|