jsoniter_bool_test.go 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. package jsoniter
  2. import (
  3. "bytes"
  4. "encoding/json"
  5. "testing"
  6. "github.com/json-iterator/go/require"
  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.WriteBool(false)
  27. stream.Flush()
  28. should.Nil(stream.Error)
  29. should.Equal("truefalsefalse", buf.String())
  30. }
  31. func Test_write_val_bool(t *testing.T) {
  32. should := require.New(t)
  33. buf := &bytes.Buffer{}
  34. stream := NewStream(ConfigDefault, buf, 4096)
  35. stream.WriteVal(true)
  36. should.Equal(stream.Buffered(), 4)
  37. stream.Flush()
  38. should.Equal(stream.Buffered(), 0)
  39. should.Nil(stream.Error)
  40. should.Equal("true", buf.String())
  41. }
  42. func Test_encode_string_bool(t *testing.T) {
  43. type TestObject struct {
  44. Field bool `json:",omitempty,string"`
  45. }
  46. should := require.New(t)
  47. output, err := json.Marshal(TestObject{true})
  48. should.Nil(err)
  49. should.Equal(`{"Field":"true"}`, string(output))
  50. output, err = Marshal(TestObject{true})
  51. should.Nil(err)
  52. should.Equal(`{"Field":"true"}`, string(output))
  53. }
  54. func Test_decode_string_bool(t *testing.T) {
  55. type TestObject struct {
  56. Field bool `json:",omitempty,string"`
  57. }
  58. should := require.New(t)
  59. obj := TestObject{}
  60. err := json.Unmarshal([]byte(`{"Field":"true"}`), &obj)
  61. should.Nil(err)
  62. should.True(obj.Field)
  63. obj = TestObject{}
  64. err = json.Unmarshal([]byte(`{"Field":true}`), &obj)
  65. should.NotNil(err)
  66. obj = TestObject{}
  67. err = Unmarshal([]byte(`{"Field":"true"}`), &obj)
  68. should.Nil(err)
  69. should.True(obj.Field)
  70. obj = TestObject{}
  71. err = Unmarshal([]byte(`{"Field":true}`), &obj)
  72. should.NotNil(err)
  73. }