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

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