jsoniter_any_bool_test.go 1.2 KB

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