| // | |
| // 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 "gtest/gtest.h" | |
| #include "compiler/preprocessor/Token.h" | |
| TEST(TokenTest, DefaultConstructor) | |
| { | |
| pp::Token token; | |
| EXPECT_EQ(0, token.type); | |
| EXPECT_EQ(0u, token.flags); | |
| EXPECT_EQ(0, token.location.line); | |
| EXPECT_EQ(0, token.location.file); | |
| EXPECT_EQ("", token.text); | |
| } | |
| TEST(TokenTest, Assignment) | |
| { | |
| pp::Token token; | |
| token.type = 1; | |
| token.flags = 1; | |
| token.location.line = 1; | |
| token.location.file = 1; | |
| token.text.assign("foo"); | |
| token = pp::Token(); | |
| EXPECT_EQ(0, token.type); | |
| EXPECT_EQ(0u, token.flags); | |
| EXPECT_EQ(0, token.location.line); | |
| EXPECT_EQ(0, token.location.file); | |
| EXPECT_EQ("", token.text); | |
| } | |
| TEST(TokenTest, Equals) | |
| { | |
| pp::Token token; | |
| EXPECT_TRUE(token.equals(pp::Token())); | |
| token.type = 1; | |
| EXPECT_FALSE(token.equals(pp::Token())); | |
| token.type = 0; | |
| token.flags = 1; | |
| EXPECT_FALSE(token.equals(pp::Token())); | |
| token.flags = 0; | |
| token.location.line = 1; | |
| EXPECT_FALSE(token.equals(pp::Token())); | |
| token.location.line = 0; | |
| token.location.file = 1; | |
| EXPECT_FALSE(token.equals(pp::Token())); | |
| token.location.file = 0; | |
| token.text.assign("foo"); | |
| EXPECT_FALSE(token.equals(pp::Token())); | |
| token.text.clear(); | |
| EXPECT_TRUE(token.equals(pp::Token())); | |
| } | |
| TEST(TokenTest, HasLeadingSpace) | |
| { | |
| pp::Token token; | |
| EXPECT_FALSE(token.hasLeadingSpace()); | |
| token.setHasLeadingSpace(true); | |
| EXPECT_TRUE(token.hasLeadingSpace()); | |
| token.setHasLeadingSpace(false); | |
| EXPECT_FALSE(token.hasLeadingSpace()); | |
| } | |
| TEST(TokenTest, Write) | |
| { | |
| pp::Token token; | |
| token.text.assign("foo"); | |
| std::stringstream out1; | |
| out1 << token; | |
| EXPECT_TRUE(out1.good()); | |
| EXPECT_EQ("foo", out1.str()); | |
| token.setHasLeadingSpace(true); | |
| std::stringstream out2; | |
| out2 << token; | |
| EXPECT_TRUE(out2.good()); | |
| EXPECT_EQ(" foo", out2.str()); | |
| } |