1e89c6ba3f3756b4e8ea0952bb8c0637e3eb55a4falokp@chromium.org// 2e89c6ba3f3756b4e8ea0952bb8c0637e3eb55a4falokp@chromium.org// Copyright (c) 2012 The ANGLE Project Authors. All rights reserved. 3e89c6ba3f3756b4e8ea0952bb8c0637e3eb55a4falokp@chromium.org// Use of this source code is governed by a BSD-style license that can be 4e89c6ba3f3756b4e8ea0952bb8c0637e3eb55a4falokp@chromium.org// found in the LICENSE file. 5e89c6ba3f3756b4e8ea0952bb8c0637e3eb55a4falokp@chromium.org// 6e89c6ba3f3756b4e8ea0952bb8c0637e3eb55a4falokp@chromium.org 730aa160bdfba216dfde6c16350166198522fe046alokp@chromium.org#include "PreprocessorTest.h" 8e89c6ba3f3756b4e8ea0952bb8c0637e3eb55a4falokp@chromium.org#include "Token.h" 9e89c6ba3f3756b4e8ea0952bb8c0637e3eb55a4falokp@chromium.org 10e89c6ba3f3756b4e8ea0952bb8c0637e3eb55a4falokp@chromium.orgstruct OperatorTestParam 11e89c6ba3f3756b4e8ea0952bb8c0637e3eb55a4falokp@chromium.org{ 12e89c6ba3f3756b4e8ea0952bb8c0637e3eb55a4falokp@chromium.org const char* str; 13e89c6ba3f3756b4e8ea0952bb8c0637e3eb55a4falokp@chromium.org int op; 14e89c6ba3f3756b4e8ea0952bb8c0637e3eb55a4falokp@chromium.org}; 15e89c6ba3f3756b4e8ea0952bb8c0637e3eb55a4falokp@chromium.org 1630aa160bdfba216dfde6c16350166198522fe046alokp@chromium.orgclass OperatorTest : public PreprocessorTest, 1730aa160bdfba216dfde6c16350166198522fe046alokp@chromium.org public testing::WithParamInterface<OperatorTestParam> 18e89c6ba3f3756b4e8ea0952bb8c0637e3eb55a4falokp@chromium.org{ 19e89c6ba3f3756b4e8ea0952bb8c0637e3eb55a4falokp@chromium.org}; 20e89c6ba3f3756b4e8ea0952bb8c0637e3eb55a4falokp@chromium.org 21e89c6ba3f3756b4e8ea0952bb8c0637e3eb55a4falokp@chromium.orgTEST_P(OperatorTest, Identified) 22e89c6ba3f3756b4e8ea0952bb8c0637e3eb55a4falokp@chromium.org{ 23e89c6ba3f3756b4e8ea0952bb8c0637e3eb55a4falokp@chromium.org OperatorTestParam param = GetParam(); 24e89c6ba3f3756b4e8ea0952bb8c0637e3eb55a4falokp@chromium.org 2530aa160bdfba216dfde6c16350166198522fe046alokp@chromium.org ASSERT_TRUE(mPreprocessor.init(1, ¶m.str, 0)); 26c584186afc3a6cc1a38c05e65f9ff1580bcd7047alokp@chromium.org 27c584186afc3a6cc1a38c05e65f9ff1580bcd7047alokp@chromium.org pp::Token token; 2830aa160bdfba216dfde6c16350166198522fe046alokp@chromium.org mPreprocessor.lex(&token); 29e89c6ba3f3756b4e8ea0952bb8c0637e3eb55a4falokp@chromium.org EXPECT_EQ(param.op, token.type); 307da6850c5b8ce3cfc641747d6228ec7282e847a7alokp@chromium.org EXPECT_EQ(param.str, token.text); 31e89c6ba3f3756b4e8ea0952bb8c0637e3eb55a4falokp@chromium.org} 32e89c6ba3f3756b4e8ea0952bb8c0637e3eb55a4falokp@chromium.org 33e89c6ba3f3756b4e8ea0952bb8c0637e3eb55a4falokp@chromium.orgstatic const OperatorTestParam kOperators[] = { 34e89c6ba3f3756b4e8ea0952bb8c0637e3eb55a4falokp@chromium.org {"(", '('}, 35e89c6ba3f3756b4e8ea0952bb8c0637e3eb55a4falokp@chromium.org {")", ')'}, 36e89c6ba3f3756b4e8ea0952bb8c0637e3eb55a4falokp@chromium.org {"[", '['}, 37e89c6ba3f3756b4e8ea0952bb8c0637e3eb55a4falokp@chromium.org {"]", ']'}, 38e89c6ba3f3756b4e8ea0952bb8c0637e3eb55a4falokp@chromium.org {".", '.'}, 39e89c6ba3f3756b4e8ea0952bb8c0637e3eb55a4falokp@chromium.org {"+", '+'}, 40e89c6ba3f3756b4e8ea0952bb8c0637e3eb55a4falokp@chromium.org {"-", '-'}, 41e89c6ba3f3756b4e8ea0952bb8c0637e3eb55a4falokp@chromium.org {"~", '~'}, 42e89c6ba3f3756b4e8ea0952bb8c0637e3eb55a4falokp@chromium.org {"!", '!'}, 43e89c6ba3f3756b4e8ea0952bb8c0637e3eb55a4falokp@chromium.org {"*", '*'}, 44e89c6ba3f3756b4e8ea0952bb8c0637e3eb55a4falokp@chromium.org {"/", '/'}, 45e89c6ba3f3756b4e8ea0952bb8c0637e3eb55a4falokp@chromium.org {"%", '%'}, 46e89c6ba3f3756b4e8ea0952bb8c0637e3eb55a4falokp@chromium.org {"<", '<'}, 47e89c6ba3f3756b4e8ea0952bb8c0637e3eb55a4falokp@chromium.org {">", '>'}, 48e89c6ba3f3756b4e8ea0952bb8c0637e3eb55a4falokp@chromium.org {"&", '&'}, 49e89c6ba3f3756b4e8ea0952bb8c0637e3eb55a4falokp@chromium.org {"^", '^'}, 50e89c6ba3f3756b4e8ea0952bb8c0637e3eb55a4falokp@chromium.org {"|", '|'}, 51e89c6ba3f3756b4e8ea0952bb8c0637e3eb55a4falokp@chromium.org {"?", '?'}, 52e89c6ba3f3756b4e8ea0952bb8c0637e3eb55a4falokp@chromium.org {":", ':'}, 53e89c6ba3f3756b4e8ea0952bb8c0637e3eb55a4falokp@chromium.org {"=", '='}, 54e89c6ba3f3756b4e8ea0952bb8c0637e3eb55a4falokp@chromium.org {",", ','}, 55e89c6ba3f3756b4e8ea0952bb8c0637e3eb55a4falokp@chromium.org {"++", pp::Token::OP_INC}, 56e89c6ba3f3756b4e8ea0952bb8c0637e3eb55a4falokp@chromium.org {"--", pp::Token::OP_DEC}, 57e89c6ba3f3756b4e8ea0952bb8c0637e3eb55a4falokp@chromium.org {"<<", pp::Token::OP_LEFT}, 58e89c6ba3f3756b4e8ea0952bb8c0637e3eb55a4falokp@chromium.org {">>", pp::Token::OP_RIGHT}, 59e89c6ba3f3756b4e8ea0952bb8c0637e3eb55a4falokp@chromium.org {"<=", pp::Token::OP_LE}, 60e89c6ba3f3756b4e8ea0952bb8c0637e3eb55a4falokp@chromium.org {">=", pp::Token::OP_GE}, 61e89c6ba3f3756b4e8ea0952bb8c0637e3eb55a4falokp@chromium.org {"==", pp::Token::OP_EQ}, 62e89c6ba3f3756b4e8ea0952bb8c0637e3eb55a4falokp@chromium.org {"!=", pp::Token::OP_NE}, 63e89c6ba3f3756b4e8ea0952bb8c0637e3eb55a4falokp@chromium.org {"&&", pp::Token::OP_AND}, 64e89c6ba3f3756b4e8ea0952bb8c0637e3eb55a4falokp@chromium.org {"^^", pp::Token::OP_XOR}, 65e89c6ba3f3756b4e8ea0952bb8c0637e3eb55a4falokp@chromium.org {"||", pp::Token::OP_OR}, 66e89c6ba3f3756b4e8ea0952bb8c0637e3eb55a4falokp@chromium.org {"+=", pp::Token::OP_ADD_ASSIGN}, 67e89c6ba3f3756b4e8ea0952bb8c0637e3eb55a4falokp@chromium.org {"-=", pp::Token::OP_SUB_ASSIGN}, 68e89c6ba3f3756b4e8ea0952bb8c0637e3eb55a4falokp@chromium.org {"*=", pp::Token::OP_MUL_ASSIGN}, 69e89c6ba3f3756b4e8ea0952bb8c0637e3eb55a4falokp@chromium.org {"/=", pp::Token::OP_DIV_ASSIGN}, 70e89c6ba3f3756b4e8ea0952bb8c0637e3eb55a4falokp@chromium.org {"%=", pp::Token::OP_MOD_ASSIGN}, 71e89c6ba3f3756b4e8ea0952bb8c0637e3eb55a4falokp@chromium.org {"<<=", pp::Token::OP_LEFT_ASSIGN}, 72e89c6ba3f3756b4e8ea0952bb8c0637e3eb55a4falokp@chromium.org {">>=", pp::Token::OP_RIGHT_ASSIGN}, 73e89c6ba3f3756b4e8ea0952bb8c0637e3eb55a4falokp@chromium.org {"&=", pp::Token::OP_AND_ASSIGN}, 74e89c6ba3f3756b4e8ea0952bb8c0637e3eb55a4falokp@chromium.org {"^=", pp::Token::OP_XOR_ASSIGN}, 75e89c6ba3f3756b4e8ea0952bb8c0637e3eb55a4falokp@chromium.org {"|=", pp::Token::OP_OR_ASSIGN} 76e89c6ba3f3756b4e8ea0952bb8c0637e3eb55a4falokp@chromium.org}; 77e89c6ba3f3756b4e8ea0952bb8c0637e3eb55a4falokp@chromium.org 78e89c6ba3f3756b4e8ea0952bb8c0637e3eb55a4falokp@chromium.orgINSTANTIATE_TEST_CASE_P(All, OperatorTest, 79e89c6ba3f3756b4e8ea0952bb8c0637e3eb55a4falokp@chromium.org testing::ValuesIn(kOperators)); 80e89c6ba3f3756b4e8ea0952bb8c0637e3eb55a4falokp@chromium.org 81