mirror of
https://github.com/dolthub/dolt.git
synced 2026-02-11 18:49:14 -06:00
@@ -24,11 +24,15 @@ func NewPath() Path {
|
||||
}
|
||||
|
||||
func (p Path) AddField(name string) Path {
|
||||
return append(p, newFieldPart(name))
|
||||
p1 := make(Path, len(p), len(p)+1)
|
||||
copy(p1, p)
|
||||
return append(p1, newFieldPart(name))
|
||||
}
|
||||
|
||||
func (p Path) AddIndex(idx Value) Path {
|
||||
return append(p, newIndexPart(idx))
|
||||
p1 := make(Path, len(p), len(p)+1)
|
||||
copy(p1, p)
|
||||
return append(p1, newIndexPart(idx))
|
||||
}
|
||||
|
||||
func (p Path) Resolve(v Value) (resolved Value) {
|
||||
|
||||
@@ -103,3 +103,15 @@ func TestPathToString(t *testing.T) {
|
||||
assert.Equal("[\"0\"][\"1\"][\"100\"]", NewPath().AddIndex(NewString("0")).AddIndex(NewString("1")).AddIndex(NewString("100")).String())
|
||||
assert.Equal(".foo[0].bar[4.5][false]", NewPath().AddField("foo").AddIndex(Number(0)).AddField("bar").AddIndex(Number(4.5)).AddIndex(Bool(false)).String())
|
||||
}
|
||||
|
||||
func TestPathImmutability(t *testing.T) {
|
||||
assert := assert.New(t)
|
||||
p1 := NewPath().AddField("/").AddField("value").AddField("data").AddIndex(Number(1)).AddField("data")
|
||||
p2 := p1.AddField("x")
|
||||
p3 := p1.AddField("y")
|
||||
p4 := p3.AddIndex(Number(19))
|
||||
assert.Equal("./.value.data[1].data", p1.String())
|
||||
assert.Equal("./.value.data[1].data.x", p2.String())
|
||||
assert.Equal("./.value.data[1].data.y", p3.String())
|
||||
assert.Equal("./.value.data[1].data.y[19]", p4.String())
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user