mirror of
https://github.com/dolthub/dolt.git
synced 2026-04-24 19:49:43 -05:00
@@ -75,11 +75,7 @@ func main() {
|
||||
ref, err := types.WriteValue(nomsObj, ds)
|
||||
Chk.NoError(err)
|
||||
|
||||
// BUG 141
|
||||
nomsObj, err = types.ReadValue(ref, ds)
|
||||
Chk.NoError(err)
|
||||
|
||||
list = list.Append(nomsObj)
|
||||
list = list.Append(types.Ref{ref})
|
||||
return nil
|
||||
})
|
||||
|
||||
|
||||
@@ -38,3 +38,11 @@ func futureEqualsValue(f Future, v Value) bool {
|
||||
return f.Ref() == v.Ref()
|
||||
}
|
||||
}
|
||||
|
||||
func futureFromValue(v Value) Future {
|
||||
if r, ok := v.(Ref); ok {
|
||||
return &unresolvedFuture{ref:r.Ref()}
|
||||
} else {
|
||||
return resolvedFuture{v}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -104,3 +104,30 @@ func TestIncrementalLoadMap(t *testing.T) {
|
||||
return
|
||||
})
|
||||
}
|
||||
|
||||
func TestIncrementalAddRef(t *testing.T) {
|
||||
assert := assert.New(t)
|
||||
cs := &chunks.TestStore{}
|
||||
|
||||
expectedItem := UInt32(42)
|
||||
ref, err := WriteValue(expectedItem, cs)
|
||||
assert.NoError(err)
|
||||
|
||||
expected := NewList(Ref{ref})
|
||||
ref, err = WriteValue(expected, cs)
|
||||
actualVar, err := ReadValue(ref, cs)
|
||||
assert.NoError(err)
|
||||
|
||||
assert.Equal(1, cs.Reads)
|
||||
assert.True(expected.Equals(actualVar))
|
||||
|
||||
actual := actualVar.(List)
|
||||
actualItem := actual.Get(0)
|
||||
assert.Equal(2, cs.Reads)
|
||||
assert.True(expectedItem.Equals(actualItem))
|
||||
|
||||
// do it again to make sure caching works.
|
||||
actualItem = actual.Get(0)
|
||||
assert.Equal(2, cs.Reads)
|
||||
assert.True(expectedItem.Equals(actualItem))
|
||||
}
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
package types
|
||||
|
||||
import (
|
||||
"github.com/attic-labs/noms/ref"
|
||||
)
|
||||
|
||||
type Ref struct {
|
||||
R ref.Ref
|
||||
}
|
||||
|
||||
func (r Ref) Equals(other Value) bool {
|
||||
return r.R == other.Ref()
|
||||
}
|
||||
|
||||
func (r Ref) Ref() ref.Ref {
|
||||
return r.R
|
||||
}
|
||||
|
||||
func (r Ref) Chunks() []Future {
|
||||
return nil
|
||||
}
|
||||
@@ -5,10 +5,6 @@ import (
|
||||
"github.com/attic-labs/noms/ref"
|
||||
)
|
||||
|
||||
func futureFromValue(v Value) Future {
|
||||
return resolvedFuture{v}
|
||||
}
|
||||
|
||||
type resolvedFuture struct {
|
||||
val Value
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user