| 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()) |
| } |