mirror of
https://github.com/dolthub/dolt.git
synced 2026-01-30 10:45:18 -06:00
112 lines
2.3 KiB
Go
112 lines
2.3 KiB
Go
package test
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/attic-labs/noms/Godeps/_workspace/src/github.com/stretchr/testify/assert"
|
|
"github.com/attic-labs/noms/chunks"
|
|
"github.com/attic-labs/noms/nomdl/codegen/test/gen"
|
|
"github.com/attic-labs/noms/types"
|
|
)
|
|
|
|
func SkipTestRef(t *testing.T) {
|
|
assert := assert.New(t)
|
|
cs := chunks.NewMemoryStore()
|
|
|
|
l := gen.ListOfStringDef{"a", "b", "c"}.New(cs)
|
|
l2 := gen.ListOfStringDef{"d", "e", "f"}.New(cs)
|
|
lRef := l.Ref()
|
|
r := gen.NewRefOfListOfString(lRef)
|
|
|
|
v := types.ReadValue(l.Ref(), cs)
|
|
assert.Nil(v)
|
|
|
|
assert.Panics(func() { r.TargetValue(cs) })
|
|
|
|
r2 := r.SetTargetValue(l, cs)
|
|
assert.True(r.Equals(r2))
|
|
v2 := r2.TargetValue(cs)
|
|
v3 := r.TargetValue(cs)
|
|
assert.True(v2.Equals(v3))
|
|
|
|
r3 := r2.SetTargetValue(l2, cs)
|
|
assert.False(r.Equals(r3))
|
|
}
|
|
|
|
func TestListOfRef(t *testing.T) {
|
|
assert := assert.New(t)
|
|
cs := chunks.NewMemoryStore()
|
|
|
|
a := types.Float32(0)
|
|
ra := a.Ref()
|
|
|
|
l := gen.NewListOfRefOfFloat32(cs)
|
|
r := gen.NewRefOfFloat32(ra)
|
|
l = l.Append(r)
|
|
r2 := l.Get(0)
|
|
assert.True(r.Equals(r2))
|
|
|
|
def := l.Def()
|
|
assert.EqualValues(ra, def[0])
|
|
|
|
l = l.Set(0, r.SetTargetValue(1, cs))
|
|
r3 := l.Get(0)
|
|
assert.False(r.Equals(r3))
|
|
assert.Panics(func() { r.TargetValue(cs) })
|
|
}
|
|
|
|
func TestStructWithRef(t *testing.T) {
|
|
assert := assert.New(t)
|
|
cs := chunks.NewMemoryStore()
|
|
|
|
set := gen.SetOfFloat32Def{0: true, 1: true, 2: true}.New(cs)
|
|
str := gen.StructWithRefDef{
|
|
R: set.Ref(),
|
|
}.New(cs)
|
|
|
|
r := str.R()
|
|
r2 := gen.NewRefOfSetOfFloat32(set.Ref())
|
|
assert.True(r.Equals(r2))
|
|
|
|
assert.True(r2.TargetValue(cs).Equals(set))
|
|
|
|
types.WriteValue(str, cs)
|
|
assert.True(r2.TargetValue(cs).Equals(set))
|
|
|
|
types.WriteValue(set, cs)
|
|
set2 := r2.TargetValue(cs)
|
|
assert.True(set.Equals(set2))
|
|
|
|
def := str.Def()
|
|
assert.EqualValues(set.Ref(), def.R)
|
|
}
|
|
|
|
func TestListOfRefChunks(t *testing.T) {
|
|
assert := assert.New(t)
|
|
cs := chunks.NewMemoryStore()
|
|
|
|
a := types.Float32(0)
|
|
ra := a.Ref()
|
|
|
|
l := gen.NewListOfRefOfFloat32(cs)
|
|
r := gen.NewRefOfFloat32(ra)
|
|
|
|
assert.Len(l.Chunks(), 0)
|
|
|
|
l2 := l.Append(r)
|
|
assert.Len(l2.Chunks(), 1)
|
|
}
|
|
|
|
func TestStructWithRefChunks(t *testing.T) {
|
|
assert := assert.New(t)
|
|
cs := chunks.NewMemoryStore()
|
|
|
|
set := gen.SetOfFloat32Def{0: true}.New(cs)
|
|
str := gen.StructWithRefDef{
|
|
R: set.Ref(),
|
|
}.New(cs)
|
|
|
|
// 1 for the Type and 1 for the ref in the R field.
|
|
assert.Len(str.Chunks(), 2)
|
|
}
|