Files
dolt/nomdl/codegen/test/map_test.go
2015-10-07 13:40:34 -07:00

118 lines
2.7 KiB
Go

package test
import (
"testing"
"github.com/attic-labs/noms/Godeps/_workspace/src/github.com/stretchr/testify/assert"
"github.com/attic-labs/noms/types"
)
func TestMapDef(t *testing.T) {
assert := assert.New(t)
def := MapOfBoolToStringDef{true: "hi", false: "bye"}
m := def.New()
assert.Equal(uint64(2), m.Len())
assert.Equal("hi", m.Get(true))
assert.Equal("bye", m.Get(false))
def2 := m.Def()
assert.Equal(def, def2)
m2 := NewMapOfBoolToString().Set(true, "hi").Set(false, "bye")
assert.True(m.Equals(m2))
}
func TestValueMapDef(t *testing.T) {
assert := assert.New(t)
def := MapOfStringToValueDef{"s": types.NewString("s"), "i": types.Int32(42)}
m := def.New()
assert.Equal(uint64(2), m.Len())
assert.True(types.NewString("s").Equals(m.Get("s")))
assert.True(types.Int32(42).Equals(m.Get("i")))
def2 := m.Def()
assert.Equal(def, def2)
m2 := NewMapOfStringToValue().Set("s", types.NewString("s")).Set("i", types.Int32(42))
assert.True(m.Equals(m2))
}
func TestMapValue(t *testing.T) {
assert := assert.New(t)
def := MapOfBoolToStringDef{true: "hi", false: "bye"}
m := def.New()
val := m.NomsValue()
m2 := MapOfBoolToStringFromVal(val)
assert.True(m.Equals(m2))
}
func TestValueMapValue(t *testing.T) {
assert := assert.New(t)
def := MapOfStringToValueDef{"s": types.NewString("s"), "i": types.Int32(42)}
m := def.New()
val := m.NomsValue()
m2 := MapOfStringToValueFromVal(val)
assert.True(m.Equals(m2))
}
func TestMapIter(t *testing.T) {
assert := assert.New(t)
m := MapOfBoolToStringDef{true: "hi", false: "bye"}.New()
acc := NewMapOfBoolToString()
m.Iter(func(k bool, v string) bool {
acc = acc.Set(k, v)
return false
})
assert.True(m.Equals(acc))
acc = NewMapOfBoolToString()
m.Iter(func(k bool, v string) bool {
return true
})
assert.True(acc.Empty())
}
func TestMapIterAll(t *testing.T) {
assert := assert.New(t)
m := MapOfBoolToStringDef{true: "hi", false: "bye"}.New()
acc := NewMapOfBoolToString()
m.IterAll(func(k bool, v string) {
acc = acc.Set(k, v)
})
assert.True(m.Equals(acc))
}
func TestMapFilter(t *testing.T) {
assert := assert.New(t)
m := MapOfBoolToStringDef{true: "hi", false: "bye"}.New()
m2 := m.Filter(func(k bool, v string) bool {
return k
})
assert.True(NewMapOfBoolToString().Set(true, "hi").Equals(m2))
m3 := m.Filter(func(k bool, v string) bool {
return v == "bye"
})
assert.True(NewMapOfBoolToString().Set(false, "bye").Equals(m3))
}
func TestMapMaybeGet(t *testing.T) {
assert := assert.New(t)
m := NewMapOfStringToValue()
k1 := "key1"
k2 := "key2"
v1 := types.NewString("SomeValue")
m = m.Set(k1, v1)
v, ok := m.MaybeGet(k1)
assert.True(ok)
assert.Equal(v1, v)
v, ok = m.MaybeGet(k2)
assert.False(ok)
}