1d5bb405f54ca7cb5c1d86f01e4a7bf74f1f79aaaalokp@chromium.org//
2d5bb405f54ca7cb5c1d86f01e4a7bf74f1f79aaaalokp@chromium.org// Copyright (c) 2012 The ANGLE Project Authors. All rights reserved.
3d5bb405f54ca7cb5c1d86f01e4a7bf74f1f79aaaalokp@chromium.org// Use of this source code is governed by a BSD-style license that can be
4d5bb405f54ca7cb5c1d86f01e4a7bf74f1f79aaaalokp@chromium.org// found in the LICENSE file.
5d5bb405f54ca7cb5c1d86f01e4a7bf74f1f79aaaalokp@chromium.org//
6d5bb405f54ca7cb5c1d86f01e4a7bf74f1f79aaaalokp@chromium.org
7d5bb405f54ca7cb5c1d86f01e4a7bf74f1f79aaaalokp@chromium.org#include "gtest/gtest.h"
836124de8ce9855c1cfdfb6529b47822e12123274alokp@chromium.org
9d5bb405f54ca7cb5c1d86f01e4a7bf74f1f79aaaalokp@chromium.org#include "Token.h"
10d5bb405f54ca7cb5c1d86f01e4a7bf74f1f79aaaalokp@chromium.org
11d5bb405f54ca7cb5c1d86f01e4a7bf74f1f79aaaalokp@chromium.orgTEST(TokenTest, DefaultConstructor)
12d5bb405f54ca7cb5c1d86f01e4a7bf74f1f79aaaalokp@chromium.org{
13d5bb405f54ca7cb5c1d86f01e4a7bf74f1f79aaaalokp@chromium.org    pp::Token token;
14d5bb405f54ca7cb5c1d86f01e4a7bf74f1f79aaaalokp@chromium.org    EXPECT_EQ(0, token.type);
15d5bb405f54ca7cb5c1d86f01e4a7bf74f1f79aaaalokp@chromium.org    EXPECT_EQ(0, token.flags);
16d5bb405f54ca7cb5c1d86f01e4a7bf74f1f79aaaalokp@chromium.org    EXPECT_EQ(0, token.location.line);
17828cc4897d87cdff8393c5dbe6c6a7af2223b6fdalokp@chromium.org    EXPECT_EQ(0, token.location.file);
185b6a68e04a7d27dab71524fa481f42818f84a240alokp@chromium.org    EXPECT_EQ("", token.text);
19d5bb405f54ca7cb5c1d86f01e4a7bf74f1f79aaaalokp@chromium.org}
20d5bb405f54ca7cb5c1d86f01e4a7bf74f1f79aaaalokp@chromium.org
21d5bb405f54ca7cb5c1d86f01e4a7bf74f1f79aaaalokp@chromium.orgTEST(TokenTest, Assignment)
22d5bb405f54ca7cb5c1d86f01e4a7bf74f1f79aaaalokp@chromium.org{
23d5bb405f54ca7cb5c1d86f01e4a7bf74f1f79aaaalokp@chromium.org    pp::Token token;
24d5bb405f54ca7cb5c1d86f01e4a7bf74f1f79aaaalokp@chromium.org    token.type = 1;
25d5bb405f54ca7cb5c1d86f01e4a7bf74f1f79aaaalokp@chromium.org    token.flags = 1;
26d5bb405f54ca7cb5c1d86f01e4a7bf74f1f79aaaalokp@chromium.org    token.location.line = 1;
27828cc4897d87cdff8393c5dbe6c6a7af2223b6fdalokp@chromium.org    token.location.file = 1;
285b6a68e04a7d27dab71524fa481f42818f84a240alokp@chromium.org    token.text.assign("foo");
29d5bb405f54ca7cb5c1d86f01e4a7bf74f1f79aaaalokp@chromium.org
30d5bb405f54ca7cb5c1d86f01e4a7bf74f1f79aaaalokp@chromium.org    token = pp::Token();
31d5bb405f54ca7cb5c1d86f01e4a7bf74f1f79aaaalokp@chromium.org    EXPECT_EQ(0, token.type);
32d5bb405f54ca7cb5c1d86f01e4a7bf74f1f79aaaalokp@chromium.org    EXPECT_EQ(0, token.flags);
33d5bb405f54ca7cb5c1d86f01e4a7bf74f1f79aaaalokp@chromium.org    EXPECT_EQ(0, token.location.line);
34828cc4897d87cdff8393c5dbe6c6a7af2223b6fdalokp@chromium.org    EXPECT_EQ(0, token.location.file);
355b6a68e04a7d27dab71524fa481f42818f84a240alokp@chromium.org    EXPECT_EQ("", token.text);
36d5bb405f54ca7cb5c1d86f01e4a7bf74f1f79aaaalokp@chromium.org}
37d5bb405f54ca7cb5c1d86f01e4a7bf74f1f79aaaalokp@chromium.org
38d5bb405f54ca7cb5c1d86f01e4a7bf74f1f79aaaalokp@chromium.orgTEST(TokenTest, Equals)
39d5bb405f54ca7cb5c1d86f01e4a7bf74f1f79aaaalokp@chromium.org{
40d5bb405f54ca7cb5c1d86f01e4a7bf74f1f79aaaalokp@chromium.org    pp::Token token;
41d5bb405f54ca7cb5c1d86f01e4a7bf74f1f79aaaalokp@chromium.org    EXPECT_TRUE(token.equals(pp::Token()));
42d5bb405f54ca7cb5c1d86f01e4a7bf74f1f79aaaalokp@chromium.org
43d5bb405f54ca7cb5c1d86f01e4a7bf74f1f79aaaalokp@chromium.org    token.type = 1;
44d5bb405f54ca7cb5c1d86f01e4a7bf74f1f79aaaalokp@chromium.org    EXPECT_FALSE(token.equals(pp::Token()));
45d5bb405f54ca7cb5c1d86f01e4a7bf74f1f79aaaalokp@chromium.org    token.type = 0;
46d5bb405f54ca7cb5c1d86f01e4a7bf74f1f79aaaalokp@chromium.org
47d5bb405f54ca7cb5c1d86f01e4a7bf74f1f79aaaalokp@chromium.org    token.flags = 1;
48d5bb405f54ca7cb5c1d86f01e4a7bf74f1f79aaaalokp@chromium.org    EXPECT_FALSE(token.equals(pp::Token()));
49d5bb405f54ca7cb5c1d86f01e4a7bf74f1f79aaaalokp@chromium.org    token.flags = 0;
50d5bb405f54ca7cb5c1d86f01e4a7bf74f1f79aaaalokp@chromium.org
51d5bb405f54ca7cb5c1d86f01e4a7bf74f1f79aaaalokp@chromium.org    token.location.line = 1;
52d5bb405f54ca7cb5c1d86f01e4a7bf74f1f79aaaalokp@chromium.org    EXPECT_FALSE(token.equals(pp::Token()));
53d5bb405f54ca7cb5c1d86f01e4a7bf74f1f79aaaalokp@chromium.org    token.location.line = 0;
54d5bb405f54ca7cb5c1d86f01e4a7bf74f1f79aaaalokp@chromium.org
55828cc4897d87cdff8393c5dbe6c6a7af2223b6fdalokp@chromium.org    token.location.file = 1;
56d5bb405f54ca7cb5c1d86f01e4a7bf74f1f79aaaalokp@chromium.org    EXPECT_FALSE(token.equals(pp::Token()));
57828cc4897d87cdff8393c5dbe6c6a7af2223b6fdalokp@chromium.org    token.location.file = 0;
58d5bb405f54ca7cb5c1d86f01e4a7bf74f1f79aaaalokp@chromium.org
595b6a68e04a7d27dab71524fa481f42818f84a240alokp@chromium.org    token.text.assign("foo");
60d5bb405f54ca7cb5c1d86f01e4a7bf74f1f79aaaalokp@chromium.org    EXPECT_FALSE(token.equals(pp::Token()));
615b6a68e04a7d27dab71524fa481f42818f84a240alokp@chromium.org    token.text.clear();
62d5bb405f54ca7cb5c1d86f01e4a7bf74f1f79aaaalokp@chromium.org
63d5bb405f54ca7cb5c1d86f01e4a7bf74f1f79aaaalokp@chromium.org    EXPECT_TRUE(token.equals(pp::Token()));
64d5bb405f54ca7cb5c1d86f01e4a7bf74f1f79aaaalokp@chromium.org}
65d5bb405f54ca7cb5c1d86f01e4a7bf74f1f79aaaalokp@chromium.org
66d5bb405f54ca7cb5c1d86f01e4a7bf74f1f79aaaalokp@chromium.orgTEST(TokenTest, HasLeadingSpace)
67d5bb405f54ca7cb5c1d86f01e4a7bf74f1f79aaaalokp@chromium.org{
68d5bb405f54ca7cb5c1d86f01e4a7bf74f1f79aaaalokp@chromium.org    pp::Token token;
69d5bb405f54ca7cb5c1d86f01e4a7bf74f1f79aaaalokp@chromium.org    EXPECT_FALSE(token.hasLeadingSpace());
70d5bb405f54ca7cb5c1d86f01e4a7bf74f1f79aaaalokp@chromium.org    token.setHasLeadingSpace(true);
71d5bb405f54ca7cb5c1d86f01e4a7bf74f1f79aaaalokp@chromium.org    EXPECT_TRUE(token.hasLeadingSpace());
72d5bb405f54ca7cb5c1d86f01e4a7bf74f1f79aaaalokp@chromium.org    token.setHasLeadingSpace(false);
73d5bb405f54ca7cb5c1d86f01e4a7bf74f1f79aaaalokp@chromium.org    EXPECT_FALSE(token.hasLeadingSpace());
74d5bb405f54ca7cb5c1d86f01e4a7bf74f1f79aaaalokp@chromium.org}
75d5bb405f54ca7cb5c1d86f01e4a7bf74f1f79aaaalokp@chromium.org
76d5bb405f54ca7cb5c1d86f01e4a7bf74f1f79aaaalokp@chromium.orgTEST(TokenTest, Write)
77d5bb405f54ca7cb5c1d86f01e4a7bf74f1f79aaaalokp@chromium.org{
78d5bb405f54ca7cb5c1d86f01e4a7bf74f1f79aaaalokp@chromium.org    pp::Token token;
795b6a68e04a7d27dab71524fa481f42818f84a240alokp@chromium.org    token.text.assign("foo");
80d5bb405f54ca7cb5c1d86f01e4a7bf74f1f79aaaalokp@chromium.org    std::stringstream out1;
81d5bb405f54ca7cb5c1d86f01e4a7bf74f1f79aaaalokp@chromium.org    out1 << token;
82d5bb405f54ca7cb5c1d86f01e4a7bf74f1f79aaaalokp@chromium.org    EXPECT_TRUE(out1.good());
8307d921de027a386f39c712c3c034f5ebd5f57262alokp@chromium.org    EXPECT_EQ("foo", out1.str());
84d5bb405f54ca7cb5c1d86f01e4a7bf74f1f79aaaalokp@chromium.org
85d5bb405f54ca7cb5c1d86f01e4a7bf74f1f79aaaalokp@chromium.org    token.setHasLeadingSpace(true);
86d5bb405f54ca7cb5c1d86f01e4a7bf74f1f79aaaalokp@chromium.org    std::stringstream out2;
87d5bb405f54ca7cb5c1d86f01e4a7bf74f1f79aaaalokp@chromium.org    out2 << token;
88d5bb405f54ca7cb5c1d86f01e4a7bf74f1f79aaaalokp@chromium.org    EXPECT_TRUE(out2.good());
8907d921de027a386f39c712c3c034f5ebd5f57262alokp@chromium.org    EXPECT_EQ(" foo", out2.str());
90d5bb405f54ca7cb5c1d86f01e4a7bf74f1f79aaaalokp@chromium.org}
91