TestParseExpressionIntegration tests parsing and then visiting the tree
(t *testing.T)
| 937 | |
| 938 | // TestParseExpressionIntegration tests parsing and then visiting the tree |
| 939 | func TestParseExpressionIntegration(t *testing.T) { |
| 940 | input := "(github.event_name == 'issues') && (github.event.action == 'opened') || !(contains(github.event.labels, 'wip'))" |
| 941 | |
| 942 | // Parse the expression |
| 943 | tree, err := ParseExpression(input) |
| 944 | if err != nil { |
| 945 | t.Fatalf("ParseExpression() error: %v", err) |
| 946 | } |
| 947 | |
| 948 | // Collect all literal expressions using the visitor |
| 949 | var literals []string |
| 950 | err = VisitExpressionTree(tree, func(expr *ExpressionNode) error { |
| 951 | literals = append(literals, expr.Expression) |
| 952 | return nil |
| 953 | }) |
| 954 | |
| 955 | if err != nil { |
| 956 | t.Errorf("VisitExpressionTree() error: %v", err) |
| 957 | } |
| 958 | |
| 959 | expected := []string{ |
| 960 | "github.event_name == 'issues'", |
| 961 | "github.event.action == 'opened'", |
| 962 | "contains(github.event.labels, 'wip')", |
| 963 | } |
| 964 | |
| 965 | if len(literals) != len(expected) { |
| 966 | t.Errorf("Expected %d literals, got %d", len(expected), len(literals)) |
| 967 | return |
| 968 | } |
| 969 | |
| 970 | for i, expectedLiteral := range expected { |
| 971 | if literals[i] != expectedLiteral { |
| 972 | t.Errorf("Literal[%d] = '%s', expected '%s'", i, literals[i], expectedLiteral) |
| 973 | } |
| 974 | } |
| 975 | |
| 976 | // Verify the tree structure by rendering |
| 977 | rendered := tree.Render() |
| 978 | expectedRendered := "(github.event_name == 'issues') && (github.event.action == 'opened') || !(contains(github.event.labels, 'wip'))" |
| 979 | if rendered != expectedRendered { |
| 980 | t.Errorf("Rendered = '%s', expected '%s'", rendered, expectedRendered) |
| 981 | } |
| 982 | } |
| 983 | |
| 984 | // TestBreakLongExpression tests the expression line breaking functionality |
| 985 | func TestBreakLongExpression(t *testing.T) { |
nothing calls this directly
no test coverage detected