summaryrefslogtreecommitdiffstats
path: root/vendor/github.com/stretchr/objx/mutations_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/stretchr/objx/mutations_test.go')
-rw-r--r--vendor/github.com/stretchr/objx/mutations_test.go133
1 files changed, 81 insertions, 52 deletions
diff --git a/vendor/github.com/stretchr/objx/mutations_test.go b/vendor/github.com/stretchr/objx/mutations_test.go
index e20ee23bc..40901ceba 100644
--- a/vendor/github.com/stretchr/objx/mutations_test.go
+++ b/vendor/github.com/stretchr/objx/mutations_test.go
@@ -1,77 +1,106 @@
-package objx
+package objx_test
import (
- "github.com/stretchr/testify/assert"
+ "strings"
"testing"
+
+ "github.com/stretchr/objx"
+ "github.com/stretchr/testify/assert"
+ "github.com/stretchr/testify/require"
)
func TestExclude(t *testing.T) {
+ m := objx.Map{
+ "name": "Mat",
+ "age": 29,
+ "secret": "ABC",
+ }
- d := make(Map)
- d["name"] = "Mat"
- d["age"] = 29
- d["secret"] = "ABC"
+ excluded := m.Exclude([]string{"secret"})
- excluded := d.Exclude([]string{"secret"})
-
- assert.Equal(t, d["name"], excluded["name"])
- assert.Equal(t, d["age"], excluded["age"])
+ assert.Equal(t, m["name"], excluded["name"])
+ assert.Equal(t, m["age"], excluded["age"])
assert.False(t, excluded.Has("secret"), "secret should be excluded")
-
}
func TestCopy(t *testing.T) {
+ m1 := objx.Map{
+ "name": "Tyler",
+ "location": "UT",
+ }
- d1 := make(map[string]interface{})
- d1["name"] = "Tyler"
- d1["location"] = "UT"
+ m2 := m1.Copy()
+ require.NotNil(t, m2)
+ m2["name"] = "Mat"
- 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")
+ assert.Equal(t, m1.Get("name").Str(), "Tyler")
+ assert.Equal(t, m2.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())
-
+ m1 := objx.Map{
+ "name": "Mat",
+ }
+ m2 := objx.Map{
+ "name": "Tyler",
+ "location": "UT",
+ }
+
+ merged := m1.Merge(m2)
+
+ assert.Equal(t, merged.Get("name").Str(), m2.Get("name").Str())
+ assert.Equal(t, merged.Get("location").Str(), m2.Get("location").Str())
+ assert.Empty(t, m1.Get("location").Str())
}
func TestMergeHere(t *testing.T) {
+ m1 := objx.Map{
+ "name": "Mat",
+ }
+ m2 := objx.Map{
+ "name": "Tyler",
+ "location": "UT",
+ }
+
+ merged := m1.MergeHere(m2)
+
+ assert.Equal(t, m1, merged, "With MergeHere, it should return the first modified map")
+ assert.Equal(t, merged.Get("name").Str(), m2.Get("name").Str())
+ assert.Equal(t, merged.Get("location").Str(), m2.Get("location").Str())
+ assert.Equal(t, merged.Get("location").Str(), m1.Get("location").Str())
+}
- 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)
+func TestTransform(t *testing.T) {
+ m := objx.Map{
+ "name": "Mat",
+ "location": "UK",
+ }
+ r := m.Transform(keyToUpper)
+ assert.Equal(t, objx.Map{
+ "NAME": "Mat",
+ "LOCATION": "UK",
+ }, r)
+}
- merged := dObj.MergeHere(d1Obj)
+func TestTransformKeys(t *testing.T) {
+ m := objx.Map{
+ "a": "1",
+ "b": "2",
+ "c": "3",
+ }
+ mapping := map[string]string{
+ "a": "d",
+ "b": "e",
+ }
+ r := m.TransformKeys(mapping)
+ assert.Equal(t, objx.Map{
+ "c": "3",
+ "d": "1",
+ "e": "2",
+ }, r)
+}
- 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())
+func keyToUpper(s string, v interface{}) (string, interface{}) {
+ return strings.ToUpper(s), v
}