1// +build go1.1 2 3package simplejson 4 5import ( 6 "bytes" 7 "encoding/json" 8 "github.com/bmizerany/assert" 9 "strconv" 10 "testing" 11) 12 13func TestNewFromReader(t *testing.T) { 14 //Use New Constructor 15 buf := bytes.NewBuffer([]byte(`{ 16 "test": { 17 "array": [1, "2", 3], 18 "arraywithsubs": [ 19 {"subkeyone": 1}, 20 {"subkeytwo": 2, "subkeythree": 3} 21 ], 22 "bignum": 9223372036854775807, 23 "uint64": 18446744073709551615 24 } 25 }`)) 26 js, err := NewFromReader(buf) 27 28 //Standard Test Case 29 assert.NotEqual(t, nil, js) 30 assert.Equal(t, nil, err) 31 32 arr, _ := js.Get("test").Get("array").Array() 33 assert.NotEqual(t, nil, arr) 34 for i, v := range arr { 35 var iv int 36 switch v.(type) { 37 case json.Number: 38 i64, err := v.(json.Number).Int64() 39 assert.Equal(t, nil, err) 40 iv = int(i64) 41 case string: 42 iv, _ = strconv.Atoi(v.(string)) 43 } 44 assert.Equal(t, i+1, iv) 45 } 46 47 ma := js.Get("test").Get("array").MustArray() 48 assert.Equal(t, ma, []interface{}{json.Number("1"), "2", json.Number("3")}) 49 50 mm := js.Get("test").Get("arraywithsubs").GetIndex(0).MustMap() 51 assert.Equal(t, mm, map[string]interface{}{"subkeyone": json.Number("1")}) 52 53 assert.Equal(t, js.Get("test").Get("bignum").MustInt64(), int64(9223372036854775807)) 54 assert.Equal(t, js.Get("test").Get("uint64").MustUint64(), uint64(18446744073709551615)) 55} 56 57func TestSimplejsonGo11(t *testing.T) { 58 js, err := NewJson([]byte(`{ 59 "test": { 60 "array": [1, "2", 3], 61 "arraywithsubs": [ 62 {"subkeyone": 1}, 63 {"subkeytwo": 2, "subkeythree": 3} 64 ], 65 "bignum": 9223372036854775807, 66 "uint64": 18446744073709551615 67 } 68 }`)) 69 70 assert.NotEqual(t, nil, js) 71 assert.Equal(t, nil, err) 72 73 arr, _ := js.Get("test").Get("array").Array() 74 assert.NotEqual(t, nil, arr) 75 for i, v := range arr { 76 var iv int 77 switch v.(type) { 78 case json.Number: 79 i64, err := v.(json.Number).Int64() 80 assert.Equal(t, nil, err) 81 iv = int(i64) 82 case string: 83 iv, _ = strconv.Atoi(v.(string)) 84 } 85 assert.Equal(t, i+1, iv) 86 } 87 88 ma := js.Get("test").Get("array").MustArray() 89 assert.Equal(t, ma, []interface{}{json.Number("1"), "2", json.Number("3")}) 90 91 mm := js.Get("test").Get("arraywithsubs").GetIndex(0).MustMap() 92 assert.Equal(t, mm, map[string]interface{}{"subkeyone": json.Number("1")}) 93 94 assert.Equal(t, js.Get("test").Get("bignum").MustInt64(), int64(9223372036854775807)) 95 assert.Equal(t, js.Get("test").Get("uint64").MustUint64(), uint64(18446744073709551615)) 96} 97