77 lines
1.6 KiB
Go
77 lines
1.6 KiB
Go
package objx
|
|
|
|
import (
|
|
"github.com/stretchr/testify/assert"
|
|
"testing"
|
|
)
|
|
|
|
func TestExclude(t *testing.T) {
|
|
|
|
d := make(Map)
|
|
d["name"] = "Mat"
|
|
d["age"] = 29
|
|
d["secret"] = "ABC"
|
|
|
|
excluded := d.Exclude([]string{"secret"})
|
|
|
|
assert.Equal(t, d["name"], excluded["name"])
|
|
assert.Equal(t, d["age"], excluded["age"])
|
|
assert.False(t, excluded.Has("secret"), "secret should be excluded")
|
|
|
|
}
|
|
|
|
func TestCopy(t *testing.T) {
|
|
|
|
d1 := make(map[string]interface{})
|
|
d1["name"] = "Tyler"
|
|
d1["location"] = "UT"
|
|
|
|
d1Obj := New(d1)
|
|
d2Obj := d1Obj.Copy()
|
|
|
|
d2Obj["name"] = "Mat"
|
|
|
|
assert.Equal(t, d1Obj.Get("name").Str(), "Tyler")
|
|
assert.Equal(t, d2Obj.Get("name").Str(), "Mat")
|
|
|
|
}
|
|
|
|
func TestMerge(t *testing.T) {
|
|
|
|
d := make(map[string]interface{})
|
|
d["name"] = "Mat"
|
|
|
|
d1 := make(map[string]interface{})
|
|
d1["name"] = "Tyler"
|
|
d1["location"] = "UT"
|
|
|
|
dObj := New(d)
|
|
d1Obj := New(d1)
|
|
|
|
merged := dObj.Merge(d1Obj)
|
|
|
|
assert.Equal(t, merged.Get("name").Str(), d1Obj.Get("name").Str())
|
|
assert.Equal(t, merged.Get("location").Str(), d1Obj.Get("location").Str())
|
|
assert.Empty(t, dObj.Get("location").Str())
|
|
|
|
}
|
|
|
|
func TestMergeHere(t *testing.T) {
|
|
|
|
d := make(map[string]interface{})
|
|
d["name"] = "Mat"
|
|
|
|
d1 := make(map[string]interface{})
|
|
d1["name"] = "Tyler"
|
|
d1["location"] = "UT"
|
|
|
|
dObj := New(d)
|
|
d1Obj := New(d1)
|
|
|
|
merged := dObj.MergeHere(d1Obj)
|
|
|
|
assert.Equal(t, dObj, merged, "With MergeHere, it should return the first modified map")
|
|
assert.Equal(t, merged.Get("name").Str(), d1Obj.Get("name").Str())
|
|
assert.Equal(t, merged.Get("location").Str(), d1Obj.Get("location").Str())
|
|
assert.Equal(t, merged.Get("location").Str(), dObj.Get("location").Str())
|
|
}
|