42 lines
1 KiB
Go
42 lines
1 KiB
Go
|
package objx
|
||
|
|
||
|
import (
|
||
|
"github.com/stretchr/testify/assert"
|
||
|
"testing"
|
||
|
)
|
||
|
|
||
|
func TestSimpleExample(t *testing.T) {
|
||
|
|
||
|
// build a map from a JSON object
|
||
|
o := MustFromJSON(`{"name":"Mat","foods":["indian","chinese"], "location":{"county":"hobbiton","city":"the shire"}}`)
|
||
|
|
||
|
// Map can be used as a straight map[string]interface{}
|
||
|
assert.Equal(t, o["name"], "Mat")
|
||
|
|
||
|
// Get an Value object
|
||
|
v := o.Get("name")
|
||
|
assert.Equal(t, v, &Value{data: "Mat"})
|
||
|
|
||
|
// Test the contained value
|
||
|
assert.False(t, v.IsInt())
|
||
|
assert.False(t, v.IsBool())
|
||
|
assert.True(t, v.IsStr())
|
||
|
|
||
|
// Get the contained value
|
||
|
assert.Equal(t, v.Str(), "Mat")
|
||
|
|
||
|
// Get a default value if the contained value is not of the expected type or does not exist
|
||
|
assert.Equal(t, 1, v.Int(1))
|
||
|
|
||
|
// Get a value by using array notation
|
||
|
assert.Equal(t, "indian", o.Get("foods[0]").Data())
|
||
|
|
||
|
// Set a value by using array notation
|
||
|
o.Set("foods[0]", "italian")
|
||
|
assert.Equal(t, "italian", o.Get("foods[0]").Str())
|
||
|
|
||
|
// Get a value by using dot notation
|
||
|
assert.Equal(t, "hobbiton", o.Get("location.county").Str())
|
||
|
|
||
|
}
|