Files
dolt/nomdl/codegen/test/struct_primitives_test.go
Erik Arvidsson 8294a77ead NomDL Codegen: Make sure we keep the original key names
The underlying map for structs should use the original field names as
the map keys.
2015-09-24 11:16:46 -04:00

126 lines
3.2 KiB
Go

package test
import (
"strings"
"testing"
"github.com/attic-labs/noms/Godeps/_workspace/src/github.com/stretchr/testify/assert"
"github.com/attic-labs/noms/types"
)
func TestAccessors(t *testing.T) {
assert := assert.New(t)
def := StructPrimitivesDef{
Uint64: uint64(1),
Uint32: uint32(2),
Uint16: uint16(3),
Uint8: uint8(4),
Int64: int64(5),
Int32: int32(6),
Int16: int16(7),
Int8: int8(8),
Float64: float64(9),
Float32: float32(10),
Bool: bool(false),
String: string("hi"),
Blob: types.NewEmptyBlob(),
Value: types.Bool(false),
}
st := def.New()
assert.Equal(uint64(1), st.Uint64())
st.SetUint64(uint64(11))
assert.Equal(uint64(1), st.Uint64())
st = st.SetUint64(uint64(11))
assert.Equal(uint64(11), st.Uint64())
assert.Equal(uint32(2), st.Uint32())
st.SetUint32(uint32(22))
assert.Equal(uint32(2), st.Uint32())
st = st.SetUint32(uint32(22))
assert.Equal(uint32(22), st.Uint32())
assert.Equal(uint16(3), st.Uint16())
st.SetUint16(uint16(33))
assert.Equal(uint16(3), st.Uint16())
st = st.SetUint16(uint16(33))
assert.Equal(uint16(33), st.Uint16())
assert.Equal(uint8(4), st.Uint8())
st.SetUint8(uint8(44))
assert.Equal(uint8(4), st.Uint8())
st = st.SetUint8(uint8(44))
assert.Equal(uint8(44), st.Uint8())
assert.Equal(int64(5), st.Int64())
st.SetInt64(int64(55))
assert.Equal(int64(5), st.Int64())
st = st.SetInt64(int64(55))
assert.Equal(int64(55), st.Int64())
assert.Equal(int32(6), st.Int32())
st.SetInt32(int32(66))
assert.Equal(int32(6), st.Int32())
st = st.SetInt32(int32(66))
assert.Equal(int32(66), st.Int32())
assert.Equal(int16(7), st.Int16())
st.SetInt16(int16(77))
assert.Equal(int16(7), st.Int16())
st = st.SetInt16(int16(77))
assert.Equal(int16(77), st.Int16())
assert.Equal(int8(8), st.Int8())
st.SetInt8(int8(88))
assert.Equal(int8(8), st.Int8())
st = st.SetInt8(int8(88))
assert.Equal(int8(88), st.Int8())
assert.Equal(float64(9), st.Float64())
st.SetFloat64(float64(99))
assert.Equal(float64(9), st.Float64())
st = st.SetFloat64(float64(99))
assert.Equal(float64(99), st.Float64())
assert.Equal(float32(10), st.Float32())
st.SetFloat32(float32(1010))
assert.Equal(float32(10), st.Float32())
st = st.SetFloat32(float32(1010))
assert.Equal(float32(1010), st.Float32())
assert.Equal(false, st.Bool())
st.SetBool(true)
assert.Equal(false, st.Bool())
st = st.SetBool(true)
assert.Equal(true, st.Bool())
assert.Equal("hi", st.String())
st.SetString("bye")
assert.Equal("hi", st.String())
st = st.SetString("bye")
assert.Equal("bye", st.String())
assert.True(st.Blob().Equals(types.NewEmptyBlob()))
b, err := types.NewBlob(strings.NewReader("hello"))
assert.NoError(err)
st.SetBlob(b)
assert.True(st.Blob().Equals(types.NewEmptyBlob()))
st = st.SetBlob(b)
assert.True(st.Blob().Equals(b))
assert.True(st.Value().Equals(types.Bool(false)))
st.SetValue(types.NewString("x"))
assert.True(st.Value().Equals(types.Bool(false)))
st = st.SetValue(types.NewString("x"))
assert.True(st.Value().Equals(types.NewString("x")))
}
func TestStructBackingMapKeyNames(t *testing.T) {
assert := assert.New(t)
s := NewStructPrimitives().SetBool(true)
assert.True(bool(s.NomsValue().(types.Map).Get(types.NewString("bool")).(types.Bool)))
}