support array index in PathGetter

This commit is contained in:
Donny Xia
2020-10-15 16:26:37 -07:00
parent 7e04be9ec6
commit 92826c6a1e
2 changed files with 109 additions and 4 deletions

View File

@@ -57,6 +57,36 @@ func TestAppend(t *testing.T) {
assert.Nil(t, rn)
}
func TestGetElementByIndex(t *testing.T) {
node, err := Parse(`
- 0
- 1
- 2
`)
assert.NoError(t, err)
rn, err := node.Pipe(GetElementByIndex("0"))
assert.NoError(t, err)
assert.Equal(t, "0\n", assertNoErrorString(t)(rn.String()))
rn, err = node.Pipe(GetElementByIndex("2"))
assert.NoError(t, err)
assert.Equal(t, "2\n", assertNoErrorString(t)(rn.String()))
rn, err = node.Pipe(GetElementByIndex("-"))
assert.NoError(t, err)
assert.Equal(t, "2\n", assertNoErrorString(t)(rn.String()))
_, err = node.Pipe(GetElementByIndex("#"))
assert.Errorf(t, err, "unknown index #")
rn, _ = node.Pipe(GetElementByIndex("-1"))
assert.Nil(t, rn)
rn, _ = node.Pipe(GetElementByIndex("4"))
assert.Nil(t, rn)
}
func TestGetElementByKey(t *testing.T) {
node, err := Parse(`
- b: c
@@ -340,6 +370,18 @@ j: k
p: q
`, assertNoErrorString(t)(rn.String()))
rn, err = node.Pipe(Lookup("a", "b", "0"))
assert.NoError(t, err)
assert.Equal(t, s, assertNoErrorString(t)(node.String()))
assert.Equal(t, `f: g
`, assertNoErrorString(t)(rn.String()))
rn, err = node.Pipe(Lookup("a", "b", "-", "h"))
assert.NoError(t, err)
assert.Equal(t, s, assertNoErrorString(t)(node.String()))
assert.Equal(t, `i
`, assertNoErrorString(t)(rn.String()))
rn, err = node.Pipe(Lookup("l"))
assert.NoError(t, err)
assert.Equal(t, s, assertNoErrorString(t)(node.String()))
@@ -384,6 +426,16 @@ j: k
assert.NoError(t, err)
assert.Equal(t, s, assertNoErrorString(t)(node.String()))
assert.Nil(t, rn)
rn, err = node.Pipe(Lookup("a", "b", "-1"))
assert.NoError(t, err)
assert.Equal(t, s, assertNoErrorString(t)(node.String()))
assert.Nil(t, rn)
rn, err = node.Pipe(Lookup("a", "b", "99"))
assert.NoError(t, err)
assert.Equal(t, s, assertNoErrorString(t)(node.String()))
assert.Nil(t, rn)
}
func TestSetField_Fn(t *testing.T) {