| package jsoniter |
| |
| import ( |
| "bytes" |
| "encoding/json" |
| "github.com/json-iterator/go/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_new_encoder(t *testing.T) { |
| should := require.New(t) |
| buf1 := &bytes.Buffer{} |
| encoder1 := json.NewEncoder(buf1) |
| encoder1.Encode([]int{1}) |
| should.Equal("[1]\n", buf1.String()) |
| buf2 := &bytes.Buffer{} |
| encoder2 := NewEncoder(buf2) |
| 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) |
| } |