jsoniter_adapter_test.go 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. package jsoniter
  2. import (
  3. "bytes"
  4. "encoding/json"
  5. "github.com/json-iterator/go/require"
  6. "io/ioutil"
  7. "testing"
  8. "fmt"
  9. )
  10. func Test_new_decoder(t *testing.T) {
  11. should := require.New(t)
  12. decoder1 := json.NewDecoder(bytes.NewBufferString(`[1][2]`))
  13. decoder2 := NewDecoder(bytes.NewBufferString(`[1][2]`))
  14. arr1 := []int{}
  15. should.Nil(decoder1.Decode(&arr1))
  16. should.Equal([]int{1}, arr1)
  17. arr2 := []int{}
  18. should.True(decoder1.More())
  19. buffered, _ := ioutil.ReadAll(decoder1.Buffered())
  20. should.Equal("[2]", string(buffered))
  21. should.Nil(decoder2.Decode(&arr2))
  22. should.Equal([]int{1}, arr2)
  23. should.True(decoder2.More())
  24. buffered, _ = ioutil.ReadAll(decoder2.Buffered())
  25. should.Equal("[2]", string(buffered))
  26. should.Nil(decoder1.Decode(&arr1))
  27. should.Equal([]int{2}, arr1)
  28. should.False(decoder1.More())
  29. should.Nil(decoder2.Decode(&arr2))
  30. should.Equal([]int{2}, arr2)
  31. should.False(decoder2.More())
  32. }
  33. func Test_new_encoder(t *testing.T) {
  34. should := require.New(t)
  35. buf1 := &bytes.Buffer{}
  36. encoder1 := json.NewEncoder(buf1)
  37. encoder1.SetEscapeHTML(false)
  38. encoder1.Encode([]int{1})
  39. should.Equal("[1]\n", buf1.String())
  40. buf2 := &bytes.Buffer{}
  41. encoder2 := NewEncoder(buf2)
  42. encoder2.SetEscapeHTML(false)
  43. encoder2.Encode([]int{1})
  44. should.Equal("[1]", buf2.String())
  45. }
  46. func Test_use_number(t *testing.T) {
  47. should := require.New(t)
  48. decoder1 := json.NewDecoder(bytes.NewBufferString(`123`))
  49. decoder1.UseNumber()
  50. decoder2 := NewDecoder(bytes.NewBufferString(`123`))
  51. decoder2.UseNumber()
  52. var obj1 interface{}
  53. should.Nil(decoder1.Decode(&obj1))
  54. should.Equal(json.Number("123"), obj1)
  55. var obj2 interface{}
  56. should.Nil(decoder2.Decode(&obj2))
  57. should.Equal(json.Number("123"), obj2)
  58. }
  59. func Test_use_number_for_unmarshal(t *testing.T) {
  60. should := require.New(t)
  61. api := Config{UseNumber: true}.Froze()
  62. var obj interface{}
  63. should.Nil(api.UnmarshalFromString("123", &obj))
  64. should.Equal(json.Number("123"), obj)
  65. }
  66. func Test_marshal_indent(t *testing.T) {
  67. t.Skip("WIP")
  68. should := require.New(t)
  69. output, err := json.MarshalIndent(struct{
  70. F1 int
  71. F2 []int
  72. }{1, []int{2, 3, 4}}, "", " ")
  73. should.Nil(err)
  74. fmt.Println(string(output))
  75. should.Equal("{\nab\"F1\": 1,\nab\"F2\": 2\na}", string(output))
  76. }