github.com/insionng/yougam@v0.0.0-20170714101924-2bc18d833463/libraries/bitly/go-simplejson/simplejson_go11_test.go (about)

     1  // +build go1.1
     2  
     3  package simplejson
     4  
     5  import (
     6  	"bytes"
     7  	"encoding/json"
     8  	"github.com/insionng/yougam/libraries/bmizerany/assert"
     9  	"strconv"
    10  	"testing"
    11  )
    12  
    13  func 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  
    57  func 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  }