jsoniter_bool_test.go 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. package jsoniter
  2. import (
  3. "bytes"
  4. "encoding/json"
  5. "github.com/json-iterator/go/require"
  6. "testing"
  7. )
  8. func Test_true(t *testing.T) {
  9. should := require.New(t)
  10. iter := ParseString(ConfigDefault, `true`)
  11. should.True(iter.ReadBool())
  12. iter = ParseString(ConfigDefault, `true`)
  13. should.Equal(true, iter.Read())
  14. }
  15. func Test_false(t *testing.T) {
  16. should := require.New(t)
  17. iter := ParseString(ConfigDefault, `false`)
  18. should.False(iter.ReadBool())
  19. }
  20. func Test_write_true_false(t *testing.T) {
  21. should := require.New(t)
  22. buf := &bytes.Buffer{}
  23. stream := NewStream(ConfigDefault, buf, 4096)
  24. stream.WriteTrue()
  25. stream.WriteFalse()
  26. stream.Flush()
  27. should.Nil(stream.Error)
  28. should.Equal("truefalse", buf.String())
  29. }
  30. func Test_write_val_bool(t *testing.T) {
  31. should := require.New(t)
  32. buf := &bytes.Buffer{}
  33. stream := NewStream(ConfigDefault, buf, 4096)
  34. stream.WriteVal(true)
  35. stream.Flush()
  36. should.Nil(stream.Error)
  37. should.Equal("true", buf.String())
  38. }
  39. func Test_encode_string_bool(t *testing.T) {
  40. type TestObject struct {
  41. Field bool `json:",omitempty,string"`
  42. }
  43. should := require.New(t)
  44. output, err := json.Marshal(TestObject{true})
  45. should.Nil(err)
  46. should.Equal(`{"Field":"true"}`, string(output))
  47. output, err = Marshal(TestObject{true})
  48. should.Nil(err)
  49. should.Equal(`{"Field":"true"}`, string(output))
  50. }
  51. func Test_decode_string_bool(t *testing.T) {
  52. type TestObject struct {
  53. Field bool `json:",omitempty,string"`
  54. }
  55. should := require.New(t)
  56. obj := TestObject{}
  57. err := json.Unmarshal([]byte(`{"Field":"true"}`), &obj)
  58. should.Nil(err)
  59. should.True(obj.Field)
  60. obj = TestObject{}
  61. err = json.Unmarshal([]byte(`{"Field":true}`), &obj)
  62. should.NotNil(err)
  63. obj = TestObject{}
  64. err = Unmarshal([]byte(`{"Field":"true"}`), &obj)
  65. should.Nil(err)
  66. should.True(obj.Field)
  67. obj = TestObject{}
  68. err = Unmarshal([]byte(`{"Field":true}`), &obj)
  69. should.NotNil(err)
  70. }