(t *testing.T)
| 643 | } |
| 644 | |
| 645 | func TestSpansetExpressionOperators(t *testing.T) { |
| 646 | tests := []struct { |
| 647 | in string |
| 648 | expected SpansetOperation |
| 649 | expectedStr string |
| 650 | }{ |
| 651 | {in: "{ true } && { false }", expected: newSpansetOperation(OpSpansetAnd, newSpansetFilter(NewStaticBool(true)), newSpansetFilter(NewStaticBool(false))), expectedStr: "({ true }) && ({ false })"}, |
| 652 | {in: "{ true } > { false }", expected: newSpansetOperation(OpSpansetChild, newSpansetFilter(NewStaticBool(true)), newSpansetFilter(NewStaticBool(false))), expectedStr: "({ true }) > ({ false })"}, |
| 653 | {in: "{ true } < { false }", expected: newSpansetOperation(OpSpansetParent, newSpansetFilter(NewStaticBool(true)), newSpansetFilter(NewStaticBool(false))), expectedStr: "({ true }) < ({ false })"}, |
| 654 | {in: "{ true } >> { false }", expected: newSpansetOperation(OpSpansetDescendant, newSpansetFilter(NewStaticBool(true)), newSpansetFilter(NewStaticBool(false))), expectedStr: "({ true }) >> ({ false })"}, |
| 655 | {in: "{ true } << { false }", expected: newSpansetOperation(OpSpansetAncestor, newSpansetFilter(NewStaticBool(true)), newSpansetFilter(NewStaticBool(false))), expectedStr: "({ true }) << ({ false })"}, |
| 656 | {in: "{ true } || { false }", expected: newSpansetOperation(OpSpansetUnion, newSpansetFilter(NewStaticBool(true)), newSpansetFilter(NewStaticBool(false))), expectedStr: "({ true }) || ({ false })"}, |
| 657 | {in: "{ true } ~ { false }", expected: newSpansetOperation(OpSpansetSibling, newSpansetFilter(NewStaticBool(true)), newSpansetFilter(NewStaticBool(false))), expectedStr: "({ true }) ~ ({ false })"}, |
| 658 | // this test was added to highlight the one shift/reduce conflict in the grammar. this could also be parsed as two spanset pipelines &&ed together. |
| 659 | {in: "({ true }) && ({ false })", expected: newSpansetOperation(OpSpansetAnd, newSpansetFilter(NewStaticBool(true)), newSpansetFilter(NewStaticBool(false))), expectedStr: "({ true }) && ({ false })"}, |
| 660 | {in: "{ true } !> { false }", expected: newSpansetOperation(OpSpansetNotChild, newSpansetFilter(NewStaticBool(true)), newSpansetFilter(NewStaticBool(false))), expectedStr: "({ true }) !> ({ false })"}, |
| 661 | {in: "{ true } !< { false }", expected: newSpansetOperation(OpSpansetNotParent, newSpansetFilter(NewStaticBool(true)), newSpansetFilter(NewStaticBool(false))), expectedStr: "({ true }) !< ({ false })"}, |
| 662 | {in: "{ true } !>> { false }", expected: newSpansetOperation(OpSpansetNotDescendant, newSpansetFilter(NewStaticBool(true)), newSpansetFilter(NewStaticBool(false))), expectedStr: "({ true }) !>> ({ false })"}, |
| 663 | {in: "{ true } !<< { false }", expected: newSpansetOperation(OpSpansetNotAncestor, newSpansetFilter(NewStaticBool(true)), newSpansetFilter(NewStaticBool(false))), expectedStr: "({ true }) !<< ({ false })"}, |
| 664 | {in: "{ true } !~ { false }", expected: newSpansetOperation(OpSpansetNotSibling, newSpansetFilter(NewStaticBool(true)), newSpansetFilter(NewStaticBool(false))), expectedStr: "({ true }) !~ ({ false })"}, |
| 665 | {in: "{ true } &> { false }", expected: newSpansetOperation(OpSpansetUnionChild, newSpansetFilter(NewStaticBool(true)), newSpansetFilter(NewStaticBool(false))), expectedStr: "({ true }) &> ({ false })"}, |
| 666 | {in: "{ true } &< { false }", expected: newSpansetOperation(OpSpansetUnionParent, newSpansetFilter(NewStaticBool(true)), newSpansetFilter(NewStaticBool(false))), expectedStr: "({ true }) &< ({ false })"}, |
| 667 | {in: "{ true } &>> { false }", expected: newSpansetOperation(OpSpansetUnionDescendant, newSpansetFilter(NewStaticBool(true)), newSpansetFilter(NewStaticBool(false))), expectedStr: "({ true }) &>> ({ false })"}, |
| 668 | {in: "{ true } &<< { false }", expected: newSpansetOperation(OpSpansetUnionAncestor, newSpansetFilter(NewStaticBool(true)), newSpansetFilter(NewStaticBool(false))), expectedStr: "({ true }) &<< ({ false })"}, |
| 669 | {in: "{ true } &~ { false }", expected: newSpansetOperation(OpSpansetUnionSibling, newSpansetFilter(NewStaticBool(true)), newSpansetFilter(NewStaticBool(false))), expectedStr: "({ true }) &~ ({ false })"}, |
| 670 | } |
| 671 | |
| 672 | for _, tc := range tests { |
| 673 | t.Run(tc.in, func(t *testing.T) { |
| 674 | actual, err := Parse(tc.in) |
| 675 | |
| 676 | require.NoError(t, err) |
| 677 | require.Equal(t, newRootExpr(newPipeline(tc.expected)), actual) |
| 678 | require.Equal(t, tc.expectedStr, actual.String()) |
| 679 | }) |
| 680 | } |
| 681 | } |
| 682 | |
| 683 | func TestScalarExpressionErrors(t *testing.T) { |
| 684 | tests := []struct { |
nothing calls this directly
no test coverage detected