(t *testing.T)
| 701 | } |
| 702 | |
| 703 | func TestScalarExpressionPrecedence(t *testing.T) { |
| 704 | tests := []struct { |
| 705 | in string |
| 706 | expected ScalarFilter |
| 707 | expectedStr string |
| 708 | }{ |
| 709 | { |
| 710 | in: "avg(.foo) > count() + sum(.bar)", |
| 711 | expected: newScalarFilter(OpGreater, |
| 712 | newAggregate(aggregateAvg, NewAttribute("foo")), |
| 713 | newScalarOperation(OpAdd, |
| 714 | newAggregate(aggregateCount, nil), |
| 715 | newAggregate(aggregateSum, NewAttribute("bar")), |
| 716 | ), |
| 717 | ), |
| 718 | expectedStr: "(avg(.foo)) > ((count()) + (sum(.bar)))", |
| 719 | }, |
| 720 | { |
| 721 | in: "avg(.foo) + count() > sum(.bar)", |
| 722 | expected: newScalarFilter(OpGreater, |
| 723 | newScalarOperation(OpAdd, |
| 724 | newAggregate(aggregateAvg, NewAttribute("foo")), |
| 725 | newAggregate(aggregateCount, nil), |
| 726 | ), |
| 727 | newAggregate(aggregateSum, NewAttribute("bar")), |
| 728 | ), |
| 729 | expectedStr: "((avg(.foo)) + (count())) > (sum(.bar))", |
| 730 | }, |
| 731 | } |
| 732 | |
| 733 | for _, tc := range tests { |
| 734 | t.Run(tc.in, func(t *testing.T) { |
| 735 | actual, err := Parse(tc.in) |
| 736 | |
| 737 | require.NoError(t, err) |
| 738 | require.Equal(t, newRootExpr(newPipeline(tc.expected)), actual) |
| 739 | require.Equal(t, tc.expectedStr, actual.String()) |
| 740 | }) |
| 741 | } |
| 742 | } |
| 743 | |
| 744 | func TestScalarExpressionOperators(t *testing.T) { |
| 745 | tests := []struct { |
nothing calls this directly
no test coverage detected