jsoniter_bool_test.go 2.0 KB

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