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