yq/pkg/yqlib/operator_has_test.go

57 lines
1.0 KiB
Go
Raw Normal View History

2020-11-24 00:38:39 +00:00
package yqlib
import (
"testing"
)
var hasOperatorScenarios = []expressionScenario{
2021-01-11 22:30:24 +00:00
{
skipDoc: true,
document: `a: hello`,
expression: `has("a")`,
expected: []string{
"D0, P[], (!!bool)::true\n",
},
},
2020-11-24 00:38:39 +00:00
{
description: "Has map key",
document: `- a: "yes"
- a: ~
- a:
- b: nope
`,
expression: `.[] | has("a")`,
expected: []string{
"D0, P[0], (!!bool)::true\n",
"D0, P[1], (!!bool)::true\n",
"D0, P[2], (!!bool)::true\n",
"D0, P[3], (!!bool)::false\n",
},
},
{
dontFormatInputForDoc: true,
description: "Has array index",
document: `- []
- [1]
- [1, 2]
- [1, null]
- [1, 2, 3]
`,
expression: `.[] | has(1)`,
expected: []string{
"D0, P[0], (!!bool)::false\n",
"D0, P[1], (!!bool)::false\n",
"D0, P[2], (!!bool)::true\n",
"D0, P[3], (!!bool)::true\n",
"D0, P[4], (!!bool)::true\n",
},
},
}
func TestHasOperatorScenarios(t *testing.T) {
for _, tt := range hasOperatorScenarios {
testScenario(t, &tt)
}
documentScenarios(t, "Has", hasOperatorScenarios)
}