yq/pkg/yqlib/treeops/operator_traverse_path_test.go

114 lines
2.3 KiB
Go
Raw Normal View History

2020-10-20 02:53:26 +00:00
package treeops
import (
"testing"
)
var traversePathOperatorScenarios = []expressionScenario{
{
document: `{a: {b: apple}}`,
expression: `.a`,
expected: []string{
"D0, P[a], (!!map)::{b: apple}\n",
},
},
2020-10-20 04:33:20 +00:00
{
document: `[{b: apple}, {c: banana}]`,
expression: `.[]`,
expected: []string{
"D0, P[0], (!!map)::{b: apple}\n",
"D0, P[1], (!!map)::{c: banana}\n",
},
},
{
document: `{}`,
expression: `.a.b`,
expected: []string{
2020-10-21 01:54:58 +00:00
"D0, P[a b], (!!null)::null\n",
2020-10-20 04:33:20 +00:00
},
},
{
document: `{}`,
expression: `.[1].a`,
expected: []string{
2020-10-21 01:54:58 +00:00
"D0, P[1 a], (!!null)::null\n",
2020-10-20 04:33:20 +00:00
},
},
{
document: `{}`,
expression: `.a.[1]`,
expected: []string{
2020-10-21 01:54:58 +00:00
"D0, P[a 1], (!!null)::null\n",
2020-10-20 04:33:20 +00:00
},
},
{
document: `{a: {cat: apple, mad: things}}`,
expression: `.a."*a*"`,
expected: []string{
"D0, P[a cat], (!!str)::apple\n",
"D0, P[a mad], (!!str)::things\n",
},
},
{
document: `{a: {cat: {b: 3}, mad: {b: 4}, fad: {c: t}}}`,
expression: `.a."*a*".b`,
expected: []string{
"D0, P[a cat b], (!!int)::3\n",
"D0, P[a mad b], (!!int)::4\n",
2020-10-21 01:54:58 +00:00
"D0, P[a fad b], (!!null)::null\n",
2020-10-20 04:33:20 +00:00
},
},
{
document: `{a: {cat: apple, mad: things}}`,
expression: `.a | (.cat, .mad)`,
expected: []string{
"D0, P[a cat], (!!str)::apple\n",
"D0, P[a mad], (!!str)::things\n",
},
},
2020-10-20 05:27:30 +00:00
{
document: `{a: {cat: apple, mad: things}}`,
expression: `.a | (.cat, .mad, .fad)`,
expected: []string{
"D0, P[a cat], (!!str)::apple\n",
"D0, P[a mad], (!!str)::things\n",
2020-10-21 01:54:58 +00:00
"D0, P[a fad], (!!null)::null\n",
2020-10-20 05:27:30 +00:00
},
},
{
document: `{a: {cat: apple, mad: things}}`,
expression: `.a | (.cat, .mad, .fad) | select( (. == null) | not)`,
expected: []string{
"D0, P[a cat], (!!str)::apple\n",
"D0, P[a mad], (!!str)::things\n",
},
},
2020-10-29 23:56:45 +00:00
{
document: `{a: &cat {c: frog}, b: *cat}`,
expression: `.b`,
expected: []string{
"D0, P[b], (alias)::*cat\n",
},
},
{
document: `{a: &cat {c: frog}, b: *cat}`,
expression: `.b.[]`,
expected: []string{
"D0, P[b c], (!!str)::frog\n",
},
},
{
document: `{a: &cat {c: frog}, b: *cat}`,
expression: `.b.c`,
expected: []string{
"D0, P[b c], (!!str)::frog\n",
},
},
2020-10-20 02:53:26 +00:00
}
func TestTraversePathOperatorScenarios(t *testing.T) {
for _, tt := range traversePathOperatorScenarios {
testScenario(t, &tt)
}
}