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, "["},