summaryrefslogtreecommitdiff
path: root/tests/preprocessor_tests/operator_test.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/preprocessor_tests/operator_test.cpp')
-rw-r--r--tests/preprocessor_tests/operator_test.cpp80
1 files changed, 80 insertions, 0 deletions
diff --git a/tests/preprocessor_tests/operator_test.cpp b/tests/preprocessor_tests/operator_test.cpp
new file mode 100644
index 00000000..d73bec63
--- /dev/null
+++ b/tests/preprocessor_tests/operator_test.cpp
@@ -0,0 +1,80 @@
+//
+// Copyright (c) 2012 The ANGLE Project Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+//
+
+#include "PreprocessorTest.h"
+#include "Token.h"
+
+struct OperatorTestParam
+{
+ const char* str;
+ int op;
+};
+
+class OperatorTest : public PreprocessorTest,
+ public testing::WithParamInterface<OperatorTestParam>
+{
+};
+
+TEST_P(OperatorTest, Identified)
+{
+ OperatorTestParam param = GetParam();
+
+ ASSERT_TRUE(mPreprocessor.init(1, &param.str, 0));
+
+ pp::Token token;
+ mPreprocessor.lex(&token);
+ EXPECT_EQ(param.op, token.type);
+ EXPECT_EQ(param.str, token.text);
+}
+
+static const OperatorTestParam kOperators[] = {
+ {"(", '('},
+ {")", ')'},
+ {"[", '['},
+ {"]", ']'},
+ {".", '.'},
+ {"+", '+'},
+ {"-", '-'},
+ {"~", '~'},
+ {"!", '!'},
+ {"*", '*'},
+ {"/", '/'},
+ {"%", '%'},
+ {"<", '<'},
+ {">", '>'},
+ {"&", '&'},
+ {"^", '^'},
+ {"|", '|'},
+ {"?", '?'},
+ {":", ':'},
+ {"=", '='},
+ {",", ','},
+ {"++", pp::Token::OP_INC},
+ {"--", pp::Token::OP_DEC},
+ {"<<", pp::Token::OP_LEFT},
+ {">>", pp::Token::OP_RIGHT},
+ {"<=", pp::Token::OP_LE},
+ {">=", pp::Token::OP_GE},
+ {"==", pp::Token::OP_EQ},
+ {"!=", pp::Token::OP_NE},
+ {"&&", pp::Token::OP_AND},
+ {"^^", pp::Token::OP_XOR},
+ {"||", pp::Token::OP_OR},
+ {"+=", pp::Token::OP_ADD_ASSIGN},
+ {"-=", pp::Token::OP_SUB_ASSIGN},
+ {"*=", pp::Token::OP_MUL_ASSIGN},
+ {"/=", pp::Token::OP_DIV_ASSIGN},
+ {"%=", pp::Token::OP_MOD_ASSIGN},
+ {"<<=", pp::Token::OP_LEFT_ASSIGN},
+ {">>=", pp::Token::OP_RIGHT_ASSIGN},
+ {"&=", pp::Token::OP_AND_ASSIGN},
+ {"^=", pp::Token::OP_XOR_ASSIGN},
+ {"|=", pp::Token::OP_OR_ASSIGN}
+};
+
+INSTANTIATE_TEST_CASE_P(All, OperatorTest,
+ testing::ValuesIn(kOperators));
+