| // | |
| // 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)); | |