Edit

kc3-lang/angle/tests/preprocessor_tests/operator_test.cpp

Branch :

  • Show log

    Commit

  • Author : alokp@chromium.org
    Date : 2012-06-28 20:29:13
    Hash : 5b6a68e0
    Message : Replaced pp::Token::value with pp::Token::text. The term value will be used for a function which will convert text to integer/float constant. git-svn-id: https://angleproject.googlecode.com/svn/trunk@1175 736b8ea6-26fd-11df-bfd4-992fa37f6226

  • tests/preprocessor_tests/operator_test.cpp
  • //
    // 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));