Unit test parser/tokenizer against double minus Change-Id: I59bb592927544dd439025f928c32b3280c799297 Bug: b/402258176 Reviewed-on: https://gn-review.googlesource.com/c/gn/+/18420 Reviewed-by: Takuto Ikuta <tikuta@google.com> Commit-Queue: Takuto Ikuta <tikuta@google.com>
diff --git a/src/gn/parser_unittest.cc b/src/gn/parser_unittest.cc index 8cfdb8d..6f85589 100644 --- a/src/gn/parser_unittest.cc +++ b/src/gn/parser_unittest.cc
@@ -145,6 +145,18 @@ DoExpressionErrorTest("(a +", 1, 4); } +TEST(Parser, DoubleMinus) { + const char* input = "1--1\n"; + const char* expected = + "BINARY(-)\n" + " LITERAL(1)\n" + " LITERAL(-1)\n"; + DoExpressionPrintTest(input, expected); + DoExpressionErrorTest("1-- 1", 1, 3); + DoExpressionErrorTest("1 -- 1", 1, 4); + DoExpressionErrorTest("1 - - 1", 1, 5); +} + TEST(Parser, OrderOfOperationsLeftAssociative) { const char* input = "5 - 1 - 2\n"; const char* expected =
diff --git a/src/gn/tokenizer_unittest.cc b/src/gn/tokenizer_unittest.cc index d32cc31..a2aad0f 100644 --- a/src/gn/tokenizer_unittest.cc +++ b/src/gn/tokenizer_unittest.cc
@@ -100,6 +100,20 @@ CheckTokenizer("- + = += -= != == < > <= >= ! || && . ,", operators)); } +TEST(Tokenizer, DoubleMinus) { + TokenExpectation tokens[] = {{Token::INTEGER, "1"}, + {Token::MINUS, "-"}, + {Token::INTEGER, "-1"}}; + EXPECT_TRUE(CheckTokenizer(" 1 - -1 ", tokens)); +} + +TEST(Tokenizer, DoubleMinusNoSpace) { + TokenExpectation tokens[] = {{Token::INTEGER, "1"}, + {Token::MINUS, "-"}, + {Token::INTEGER, "-1"}}; + EXPECT_TRUE(CheckTokenizer(" 1--1 ", tokens)); +} + TEST(Tokenizer, Scoper) { TokenExpectation scopers[] = { {Token::LEFT_BRACE, "{"}, {Token::LEFT_BRACKET, "["},