Этот коммит содержится в:
Christopher Speller
2018-01-29 14:17:40 -08:00
коммит произвёл GitHub
родитель 8d66523ba7
Коммит 961c04cae9
1508 изменённых файлов: 182081 добавлений и 24688 удалений

131
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) {
m1 := objx.Map{
"name": "Mat",
}
m2 := objx.Map{
"name": "Tyler",
"location": "UT",
}
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())
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",
}
d := make(map[string]interface{})
d["name"] = "Mat"
merged := m1.MergeHere(m2)
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())
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())
}
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)
}
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)
}
func keyToUpper(s string, v interface{}) (string, interface{}) {
return strings.ToUpper(s), v
}