jsoniter_any_bool_test.go 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. package any_tests
  2. import (
  3. "fmt"
  4. "testing"
  5. "github.com/json-iterator/go"
  6. "github.com/stretchr/testify/require"
  7. )
  8. var boolConvertMap = map[string]bool{
  9. "null": false,
  10. "true": true,
  11. "false": false,
  12. `"true"`: true,
  13. `"false"`: true,
  14. "123": true,
  15. `"123"`: true,
  16. "0": false,
  17. `"0"`: false,
  18. "-1": true,
  19. `"-1"`: true,
  20. "1.1": true,
  21. "0.0": false,
  22. "-1.1": true,
  23. `""`: false,
  24. "[1,2]": true,
  25. "[]": false,
  26. "{}": true,
  27. `{"abc":1}`: true,
  28. }
  29. func Test_read_bool_as_any(t *testing.T) {
  30. should := require.New(t)
  31. var any jsoniter.Any
  32. for k, v := range boolConvertMap {
  33. any = jsoniter.Get([]byte(k))
  34. if v {
  35. should.True(any.ToBool(), fmt.Sprintf("origin val is %v", k))
  36. } else {
  37. should.False(any.ToBool(), fmt.Sprintf("origin val is %v", k))
  38. }
  39. }
  40. }
  41. func Test_write_bool_to_stream(t *testing.T) {
  42. should := require.New(t)
  43. any := jsoniter.Get([]byte("true"))
  44. stream := jsoniter.NewStream(jsoniter.ConfigDefault, nil, 32)
  45. any.WriteTo(stream)
  46. should.Equal("true", string(stream.Buffer()))
  47. should.Equal(any.ValueType(), jsoniter.BoolValue)
  48. any = jsoniter.Get([]byte("false"))
  49. stream = jsoniter.NewStream(jsoniter.ConfigDefault, nil, 32)
  50. any.WriteTo(stream)
  51. should.Equal("false", string(stream.Buffer()))
  52. should.Equal(any.ValueType(), jsoniter.BoolValue)
  53. }