Make sure Chunks includes type.Refs and the TypeRef

Chunks shold return the futures for types.Ref values.

For typed values that have a TypeRef which has a package ref, also
include that.
This commit is contained in:
Erik Arvidsson
2015-10-12 19:34:17 -04:00
parent 9e36e080fd
commit 8565f175ee
39 changed files with 346 additions and 140 deletions

View File

@@ -92,8 +92,10 @@ func (s EnumStruct) Ref() ref.Ref {
return s.m.Ref()
}
func (s EnumStruct) Chunks() []types.Future {
return s.m.Chunks()
func (s EnumStruct) Chunks() (futures []types.Future) {
futures = append(futures, s.TypeRef().Chunks()...)
futures = append(futures, s.m.Chunks()...)
return
}
func (s EnumStruct) Hand() Handedness {

View File

@@ -107,8 +107,10 @@ func (s S) Ref() ref.Ref {
return s.m.Ref()
}
func (s S) Chunks() []types.Future {
return s.m.Chunks()
func (s S) Chunks() (futures []types.Future) {
futures = append(futures, s.TypeRef().Chunks()...)
futures = append(futures, s.m.Chunks()...)
return
}
func (s S) S() string {

View File

@@ -97,8 +97,10 @@ func (s D) Ref() ref.Ref {
return s.m.Ref()
}
func (s D) Chunks() []types.Future {
return s.m.Chunks()
func (s D) Chunks() (futures []types.Future) {
futures = append(futures, s.TypeRef().Chunks()...)
futures = append(futures, s.m.Chunks()...)
return
}
func (s D) StructField() sha1_f1a192312c01fb47e8e329471242e475eb7001a4.S {

View File

@@ -55,8 +55,10 @@ func (l ListOfInt64) Ref() ref.Ref {
return l.l.Ref()
}
func (l ListOfInt64) Chunks() []types.Future {
return l.l.Chunks()
func (l ListOfInt64) Chunks() (futures []types.Future) {
futures = append(futures, l.TypeRef().Chunks()...)
futures = append(futures, l.l.Chunks()...)
return
}
// A Noms Value that describes ListOfInt64.

View File

@@ -58,3 +58,11 @@ func TestListFilter(t *testing.T) {
})
assert.Equal(ListOfInt64Def{0, 2, 4, 6, 8}, l2.Def())
}
func TestListChunks(t *testing.T) {
assert := assert.New(t)
l := ListOfInt64Def{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}.New()
cs := l.Chunks()
assert.Len(cs, 0)
}

View File

@@ -56,8 +56,10 @@ func (m MapOfBoolToString) Ref() ref.Ref {
return m.m.Ref()
}
func (m MapOfBoolToString) Chunks() []types.Future {
return m.m.Chunks()
func (m MapOfBoolToString) Chunks() (futures []types.Future) {
futures = append(futures, m.TypeRef().Chunks()...)
futures = append(futures, m.m.Chunks()...)
return
}
// A Noms Value that describes MapOfBoolToString.
@@ -185,8 +187,10 @@ func (m MapOfStringToValue) Ref() ref.Ref {
return m.m.Ref()
}
func (m MapOfStringToValue) Chunks() []types.Future {
return m.m.Chunks()
func (m MapOfStringToValue) Chunks() (futures []types.Future) {
futures = append(futures, m.TypeRef().Chunks()...)
futures = append(futures, m.m.Chunks()...)
return
}
// A Noms Value that describes MapOfStringToValue.

View File

@@ -50,7 +50,7 @@ func (r RefOfListOfString) Equals(other types.Value) bool {
}
func (r RefOfListOfString) Chunks() []types.Future {
return nil
return r.TypeRef().Chunks()
}
func (r RefOfListOfString) NomsValue() types.Value {
@@ -132,8 +132,10 @@ func (l ListOfString) Ref() ref.Ref {
return l.l.Ref()
}
func (l ListOfString) Chunks() []types.Future {
return l.l.Chunks()
func (l ListOfString) Chunks() (futures []types.Future) {
futures = append(futures, l.TypeRef().Chunks()...)
futures = append(futures, l.l.Chunks()...)
return
}
// A Noms Value that describes ListOfString.
@@ -270,8 +272,10 @@ func (l ListOfRefOfFloat32) Ref() ref.Ref {
return l.l.Ref()
}
func (l ListOfRefOfFloat32) Chunks() []types.Future {
return l.l.Chunks()
func (l ListOfRefOfFloat32) Chunks() (futures []types.Future) {
futures = append(futures, l.TypeRef().Chunks()...)
futures = append(futures, l.l.Chunks()...)
return
}
// A Noms Value that describes ListOfRefOfFloat32.
@@ -382,7 +386,7 @@ func (r RefOfFloat32) Equals(other types.Value) bool {
}
func (r RefOfFloat32) Chunks() []types.Future {
return nil
return r.TypeRef().Chunks()
}
func (r RefOfFloat32) NomsValue() types.Value {
@@ -480,8 +484,10 @@ func (s StructWithRef) Ref() ref.Ref {
return s.m.Ref()
}
func (s StructWithRef) Chunks() []types.Future {
return s.m.Chunks()
func (s StructWithRef) Chunks() (futures []types.Future) {
futures = append(futures, s.TypeRef().Chunks()...)
futures = append(futures, s.m.Chunks()...)
return
}
func (s StructWithRef) R() RefOfSetOfFloat32 {
@@ -514,7 +520,7 @@ func (r RefOfSetOfFloat32) Equals(other types.Value) bool {
}
func (r RefOfSetOfFloat32) Chunks() []types.Future {
return nil
return r.TypeRef().Chunks()
}
func (r RefOfSetOfFloat32) NomsValue() types.Value {
@@ -598,8 +604,10 @@ func (s SetOfFloat32) Ref() ref.Ref {
return s.s.Ref()
}
func (s SetOfFloat32) Chunks() []types.Future {
return s.s.Chunks()
func (s SetOfFloat32) Chunks() (futures []types.Future) {
futures = append(futures, s.TypeRef().Chunks()...)
futures = append(futures, s.s.Chunks()...)
return
}
// A Noms Value that describes SetOfFloat32.

View File

@@ -86,3 +86,30 @@ func TestStructWithRef(t *testing.T) {
set2 := r2.GetValue(cs)
assert.True(set.Equals(set2))
}
func TestListOfRefChunks(t *testing.T) {
assert := assert.New(t)
a := types.Float32(0)
ra := a.Ref()
l := NewListOfRefOfFloat32()
r := 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)
set := SetOfFloat32Def{0: true}.New()
str := StructWithRefDef{
R: set.Ref(),
}.New()
// 1 for the TypeRef and 1 for the ref in the R field.
assert.Len(str.Chunks(), 2)
}

View File

@@ -57,8 +57,10 @@ func (s SetOfBool) Ref() ref.Ref {
return s.s.Ref()
}
func (s SetOfBool) Chunks() []types.Future {
return s.s.Chunks()
func (s SetOfBool) Chunks() (futures []types.Future) {
futures = append(futures, s.TypeRef().Chunks()...)
futures = append(futures, s.s.Chunks()...)
return
}
// A Noms Value that describes SetOfBool.

View File

@@ -76,8 +76,10 @@ func (l ListOfStruct) Ref() ref.Ref {
return l.l.Ref()
}
func (l ListOfStruct) Chunks() []types.Future {
return l.l.Chunks()
func (l ListOfStruct) Chunks() (futures []types.Future) {
futures = append(futures, l.TypeRef().Chunks()...)
futures = append(futures, l.l.Chunks()...)
return
}
// A Noms Value that describes ListOfStruct.
@@ -234,8 +236,10 @@ func (s Struct) Ref() ref.Ref {
return s.m.Ref()
}
func (s Struct) Chunks() []types.Future {
return s.m.Chunks()
func (s Struct) Chunks() (futures []types.Future) {
futures = append(futures, s.TypeRef().Chunks()...)
futures = append(futures, s.m.Chunks()...)
return
}
func (s Struct) S() string {

View File

@@ -98,8 +98,10 @@ func (s OptionalStruct) Ref() ref.Ref {
return s.m.Ref()
}
func (s OptionalStruct) Chunks() []types.Future {
return s.m.Chunks()
func (s OptionalStruct) Chunks() (futures []types.Future) {
futures = append(futures, s.TypeRef().Chunks()...)
futures = append(futures, s.m.Chunks()...)
return
}
func (s OptionalStruct) S() (v string, ok bool) {

View File

@@ -156,8 +156,10 @@ func (s StructPrimitives) Ref() ref.Ref {
return s.m.Ref()
}
func (s StructPrimitives) Chunks() []types.Future {
return s.m.Chunks()
func (s StructPrimitives) Chunks() (futures []types.Future) {
futures = append(futures, s.TypeRef().Chunks()...)
futures = append(futures, s.m.Chunks()...)
return
}
func (s StructPrimitives) Uint64() uint64 {

View File

@@ -91,8 +91,10 @@ func (s Tree) Ref() ref.Ref {
return s.m.Ref()
}
func (s Tree) Chunks() []types.Future {
return s.m.Chunks()
func (s Tree) Chunks() (futures []types.Future) {
futures = append(futures, s.TypeRef().Chunks()...)
futures = append(futures, s.m.Chunks()...)
return
}
func (s Tree) Children() ListOfTree {
@@ -151,8 +153,10 @@ func (l ListOfTree) Ref() ref.Ref {
return l.l.Ref()
}
func (l ListOfTree) Chunks() []types.Future {
return l.l.Chunks()
func (l ListOfTree) Chunks() (futures []types.Future) {
futures = append(futures, l.TypeRef().Chunks()...)
futures = append(futures, l.l.Chunks()...)
return
}
// A Noms Value that describes ListOfTree.

View File

@@ -44,3 +44,12 @@ func TestTypeRef(t *testing.T) {
assert.Equal("Struct", typ.Name())
assert.Equal(types.TypeRefKind, typ.Kind())
}
func TestStructChunks(t *testing.T) {
assert := assert.New(t)
st := StructDef{"hi", true}.New()
cs := st.Chunks()
// One chunk for the TypeRef
assert.Len(cs, 1)
}

View File

@@ -245,8 +245,10 @@ func (s ImportUser) Ref() ref.Ref {
return s.m.Ref()
}
func (s ImportUser) Chunks() []types.Future {
return s.m.Chunks()
func (s ImportUser) Chunks() (futures []types.Future) {
futures = append(futures, s.TypeRef().Chunks()...)
futures = append(futures, s.m.Chunks()...)
return
}
func (s ImportUser) ImportedStruct() sha1_f9397427926127f67d8f3edb21c92bf642262e9b.D {

View File

@@ -106,8 +106,10 @@ func (s StructWithList) Ref() ref.Ref {
return s.m.Ref()
}
func (s StructWithList) Chunks() []types.Future {
return s.m.Chunks()
func (s StructWithList) Chunks() (futures []types.Future) {
futures = append(futures, s.TypeRef().Chunks()...)
futures = append(futures, s.m.Chunks()...)
return
}
func (s StructWithList) L() ListOfUInt8 {
@@ -190,8 +192,10 @@ func (l ListOfUInt8) Ref() ref.Ref {
return l.l.Ref()
}
func (l ListOfUInt8) Chunks() []types.Future {
return l.l.Chunks()
func (l ListOfUInt8) Chunks() (futures []types.Future) {
futures = append(futures, l.TypeRef().Chunks()...)
futures = append(futures, l.l.Chunks()...)
return
}
// A Noms Value that describes ListOfUInt8.

View File

@@ -137,8 +137,10 @@ func (s StructWithUnionField) Ref() ref.Ref {
return s.m.Ref()
}
func (s StructWithUnionField) Chunks() []types.Future {
return s.m.Chunks()
func (s StructWithUnionField) Chunks() (futures []types.Future) {
futures = append(futures, s.TypeRef().Chunks()...)
futures = append(futures, s.m.Chunks()...)
return
}
func (s StructWithUnionField) A() float32 {
@@ -319,8 +321,10 @@ func (s SetOfUInt8) Ref() ref.Ref {
return s.s.Ref()
}
func (s SetOfUInt8) Chunks() []types.Future {
return s.s.Chunks()
func (s SetOfUInt8) Chunks() (futures []types.Future) {
futures = append(futures, s.TypeRef().Chunks()...)
futures = append(futures, s.s.Chunks()...)
return
}
// A Noms Value that describes SetOfUInt8.

View File

@@ -108,8 +108,10 @@ func (s StructWithUnions) Ref() ref.Ref {
return s.m.Ref()
}
func (s StructWithUnions) Chunks() []types.Future {
return s.m.Chunks()
func (s StructWithUnions) Chunks() (futures []types.Future) {
futures = append(futures, s.TypeRef().Chunks()...)
futures = append(futures, s.m.Chunks()...)
return
}
func (s StructWithUnions) A() __unionOfBOfFloat64AndCOfString {
@@ -216,8 +218,10 @@ func (s __unionOfBOfFloat64AndCOfString) Ref() ref.Ref {
return s.m.Ref()
}
func (s __unionOfBOfFloat64AndCOfString) Chunks() []types.Future {
return s.m.Chunks()
func (s __unionOfBOfFloat64AndCOfString) Chunks() (futures []types.Future) {
futures = append(futures, s.TypeRef().Chunks()...)
futures = append(futures, s.m.Chunks()...)
return
}
func (s __unionOfBOfFloat64AndCOfString) B() (val float64, ok bool) {
@@ -356,8 +360,10 @@ func (s __unionOfEOfFloat64AndFOfString) Ref() ref.Ref {
return s.m.Ref()
}
func (s __unionOfEOfFloat64AndFOfString) Chunks() []types.Future {
return s.m.Chunks()
func (s __unionOfEOfFloat64AndFOfString) Chunks() (futures []types.Future) {
futures = append(futures, s.TypeRef().Chunks()...)
futures = append(futures, s.m.Chunks()...)
return
}
func (s __unionOfEOfFloat64AndFOfString) E() (val float64, ok bool) {