Edit

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

Branch :

  • Show log

    Commit

  • Author : Corentin Wallez
    Date : 2015-08-31 16:24:10
    Hash : 2728f992
    Message : Make unittest #includes start from src This is will help avoid adding many include directories for the GN build. BUG=angleproject:929 Change-Id: If8f7e98526df3560b8e410ec86271a2da0c6889d Reviewed-on: https://chromium-review.googlesource.com/296480 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Tested-by: Corentin Wallez <cwallez@chromium.org>

  • src/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 "compiler/preprocessor/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));