simplejson_go10_test.go 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. // +build !go1.1
  2. package simplejson
  3. import (
  4. "bytes"
  5. "github.com/bmizerany/assert"
  6. "strconv"
  7. "testing"
  8. )
  9. func TestNewFromReader(t *testing.T) {
  10. buf := bytes.NewBuffer([]byte(`{
  11. "test": {
  12. "array": [1, "2", 3],
  13. "arraywithsubs": [
  14. {"subkeyone": 1},
  15. {"subkeytwo": 2, "subkeythree": 3}
  16. ],
  17. "bignum": 8000000000
  18. }
  19. }`))
  20. js, err := NewFromReader(buf)
  21. //Standard Test Case
  22. assert.NotEqual(t, nil, js)
  23. assert.Equal(t, nil, err)
  24. arr, _ := js.Get("test").Get("array").Array()
  25. assert.NotEqual(t, nil, arr)
  26. for i, v := range arr {
  27. var iv int
  28. switch v.(type) {
  29. case float64:
  30. iv = int(v.(float64))
  31. case string:
  32. iv, _ = strconv.Atoi(v.(string))
  33. }
  34. assert.Equal(t, i+1, iv)
  35. }
  36. ma := js.Get("test").Get("array").MustArray()
  37. assert.Equal(t, ma, []interface{}{float64(1), "2", float64(3)})
  38. mm := js.Get("test").Get("arraywithsubs").GetIndex(0).MustMap()
  39. assert.Equal(t, mm, map[string]interface{}{"subkeyone": float64(1)})
  40. assert.Equal(t, js.Get("test").Get("bignum").MustInt64(), int64(8000000000))
  41. }
  42. func TestSimplejsonGo10(t *testing.T) {
  43. js, err := NewJson([]byte(`{
  44. "test": {
  45. "array": [1, "2", 3],
  46. "arraywithsubs": [
  47. {"subkeyone": 1},
  48. {"subkeytwo": 2, "subkeythree": 3}
  49. ],
  50. "bignum": 8000000000
  51. }
  52. }`))
  53. assert.NotEqual(t, nil, js)
  54. assert.Equal(t, nil, err)
  55. arr, _ := js.Get("test").Get("array").Array()
  56. assert.NotEqual(t, nil, arr)
  57. for i, v := range arr {
  58. var iv int
  59. switch v.(type) {
  60. case float64:
  61. iv = int(v.(float64))
  62. case string:
  63. iv, _ = strconv.Atoi(v.(string))
  64. }
  65. assert.Equal(t, i+1, iv)
  66. }
  67. ma := js.Get("test").Get("array").MustArray()
  68. assert.Equal(t, ma, []interface{}{float64(1), "2", float64(3)})
  69. mm := js.Get("test").Get("arraywithsubs").GetIndex(0).MustMap()
  70. assert.Equal(t, mm, map[string]interface{}{"subkeyone": float64(1)})
  71. assert.Equal(t, js.Get("test").Get("bignum").MustInt64(), int64(8000000000))
  72. }