diff options
Diffstat (limited to 'src/test/java/com')
-rw-r--r-- | src/test/java/com/google/devtools/build/lib/syntax/ParserTest.java | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/src/test/java/com/google/devtools/build/lib/syntax/ParserTest.java b/src/test/java/com/google/devtools/build/lib/syntax/ParserTest.java index b5eedb2e90..20a70843f8 100644 --- a/src/test/java/com/google/devtools/build/lib/syntax/ParserTest.java +++ b/src/test/java/com/google/devtools/build/lib/syntax/ParserTest.java @@ -120,6 +120,35 @@ public class ParserTest extends EvaluationTestCase { } @Test + public void testNonAssociativeOperators() throws Exception { + setFailFast(false); + + parseExpression("0 < 2 < 4"); + assertContainsError("Operator '<' is not associative with operator '<'"); + clearEvents(); + + parseExpression("0 == 2 < 4"); + assertContainsError("Operator '==' is not associative with operator '<'"); + clearEvents(); + + parseExpression("1 in [1, 2] == True"); + assertContainsError("Operator 'in' is not associative with operator '=='"); + clearEvents(); + + parseExpression("1 >= 2 <= 3"); + assertContainsError("Operator '>=' is not associative with operator '<='"); + clearEvents(); + } + + @Test + public void testNonAssociativeOperatorsWithParens() throws Exception { + parseExpression("(0 < 2) < 4"); + parseExpression("(0 == 2) < 4"); + parseExpression("(1 in [1, 2]) == True"); + parseExpression("1 >= (2 <= 3)"); + } + + @Test public void testUnaryMinusExpr() throws Exception { FuncallExpression e = (FuncallExpression) parseExpression("-5"); FuncallExpression e2 = (FuncallExpression) parseExpression("- 5"); |