yq/pkg/yqlib/operator_equals_test.go
2023-06-05 15:27:59 -07:00

198 lines
4.4 KiB
Go

package yqlib
import (
"testing"
)
var equalsOperatorScenarios = []expressionScenario{
{
skipDoc: true,
expression: ".a == .b",
expected: []string{
"D0, P[a], (!!bool)::true\n",
},
},
// {
// expression: `(.k | length) == 0`,
// skipDoc: true,
// expected: []string{
// "D0, P[k], (!!bool)::true\n",
// },
// },
// {
// skipDoc: true,
// document: `a: cat`,
// expression: ".a == .b",
// expected: []string{
// "D0, P[a], (!!bool)::false\n",
// },
// },
// {
// skipDoc: true,
// document: `a: cat`,
// expression: ".b == .a",
// expected: []string{
// "D0, P[b], (!!bool)::false\n",
// },
// },
// {
// skipDoc: true,
// document: "cat",
// document2: "dog",
// expression: "select(fi==0) == select(fi==1)",
// expected: []string{
// "D0, P[], (!!bool)::false\n",
// },
// },
// {
// skipDoc: true,
// document: "{}",
// expression: "(.a == .b) as $x | .",
// expected: []string{
// "D0, P[], (!!map)::{}\n",
// },
// },
// {
// skipDoc: true,
// document: "{}",
// expression: ".a == .b",
// expected: []string{
// "D0, P[a], (!!bool)::true\n",
// },
// },
// {
// skipDoc: true,
// document: "{}",
// expression: "(.a != .b) as $x | .",
// expected: []string{
// "D0, P[], (!!map)::{}\n",
// },
// },
// {
// skipDoc: true,
// document: "{}",
// expression: ".a != .b",
// expected: []string{
// "D0, P[], (!!bool)::false\n",
// },
// },
// {
// skipDoc: true,
// document: "{a: {b: 10}}",
// expression: "select(.c != null)",
// expected: []string{},
// },
// {
// skipDoc: true,
// document: "{a: {b: 10}}",
// expression: "select(.d == .c)",
// expected: []string{
// "D0, P[], (!!map)::{a: {b: 10}}\n",
// },
// },
// {
// skipDoc: true,
// document: "{a: {b: 10}}",
// expression: "select(null == .c)",
// expected: []string{
// "D0, P[], (!!map)::{a: {b: 10}}\n",
// },
// },
// {
// skipDoc: true,
// document: "{a: { b: {things: \"\"}, f: [1], g: [] }}",
// expression: ".. | select(. == \"\")",
// expected: []string{
// "D0, P[a b things], (!!str)::\n",
// },
// },
// {
// description: "Match string",
// document: `[cat,goat,dog]`,
// expression: `.[] | (. == "*at")`,
// expected: []string{
// "D0, P[0], (!!bool)::true\n",
// "D0, P[1], (!!bool)::true\n",
// "D0, P[2], (!!bool)::false\n",
// },
// },
// {
// description: "Don't match string",
// document: `[cat,goat,dog]`,
// expression: `.[] | (. != "*at")`,
// expected: []string{
// "D0, P[0], (!!bool)::false\n",
// "D0, P[1], (!!bool)::false\n",
// "D0, P[2], (!!bool)::true\n",
// },
// },
// {
// description: "Match number",
// document: `[3, 4, 5]`,
// expression: `.[] | (. == 4)`,
// expected: []string{
// "D0, P[0], (!!bool)::false\n",
// "D0, P[1], (!!bool)::true\n",
// "D0, P[2], (!!bool)::false\n",
// },
// },
// {
// description: "Don't match number",
// document: `[3, 4, 5]`,
// expression: `.[] | (. != 4)`,
// expected: []string{
// "D0, P[0], (!!bool)::true\n",
// "D0, P[1], (!!bool)::false\n",
// "D0, P[2], (!!bool)::true\n",
// },
// },
// {
// skipDoc: true,
// document: `a: { cat: {b: apple, c: whatever}, pat: {b: banana} }`,
// expression: `.a | (.[].b == "apple")`,
// expected: []string{
// "D0, P[a cat b], (!!bool)::true\n",
// "D0, P[a pat b], (!!bool)::false\n",
// },
// },
// {
// skipDoc: true,
// document: ``,
// expression: `null == null`,
// expected: []string{
// "D0, P[], (!!bool)::true\n",
// },
// },
// {
// description: "Match nulls",
// document: ``,
// expression: `null == ~`,
// expected: []string{
// "D0, P[], (!!bool)::true\n",
// },
// },
// {
// description: "Non existent key doesn't equal a value",
// document: "a: frog",
// expression: `select(.b != "thing")`,
// expected: []string{
// "D0, P[], (!!map)::a: frog\n",
// },
// },
// {
// description: "Two non existent keys are equal",
// document: "a: frog",
// expression: `select(.b == .c)`,
// expected: []string{
// "D0, P[], (!!map)::a: frog\n",
// },
// },
}
func TestEqualOperatorScenarios(t *testing.T) {
for _, tt := range equalsOperatorScenarios {
testScenario(t, &tt)
}
documentOperatorScenarios(t, "equals", equalsOperatorScenarios)
}