diff options
Diffstat (limited to 'tests/preprocessor_tests/operator_test.cpp')
-rw-r--r-- | tests/preprocessor_tests/operator_test.cpp | 80 |
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, ¶m.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)); + |