Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/angle
Path: blob/main_old/src/tests/preprocessor_tests/token_test.cpp
1693 views
1
//
2
// Copyright 2012 The ANGLE Project Authors. All rights reserved.
3
// Use of this source code is governed by a BSD-style license that can be
4
// found in the LICENSE file.
5
//
6
7
#include "gtest/gtest.h"
8
9
#include "compiler/preprocessor/Token.h"
10
11
namespace angle
12
{
13
14
TEST(TokenTest, DefaultConstructor)
15
{
16
pp::Token token;
17
EXPECT_EQ(0, token.type);
18
EXPECT_EQ(0u, token.flags);
19
EXPECT_EQ(0, token.location.line);
20
EXPECT_EQ(0, token.location.file);
21
EXPECT_EQ("", token.text);
22
}
23
24
TEST(TokenTest, Assignment)
25
{
26
pp::Token token;
27
token.type = 1;
28
token.flags = 1;
29
token.location.line = 1;
30
token.location.file = 1;
31
token.text.assign("foo");
32
33
token = pp::Token();
34
EXPECT_EQ(0, token.type);
35
EXPECT_EQ(0u, token.flags);
36
EXPECT_EQ(0, token.location.line);
37
EXPECT_EQ(0, token.location.file);
38
EXPECT_EQ("", token.text);
39
}
40
41
TEST(TokenTest, Equals)
42
{
43
pp::Token token;
44
EXPECT_TRUE(token.equals(pp::Token()));
45
46
token.type = 1;
47
EXPECT_FALSE(token.equals(pp::Token()));
48
token.type = 0;
49
50
token.flags = 1;
51
EXPECT_FALSE(token.equals(pp::Token()));
52
token.flags = 0;
53
54
token.location.line = 1;
55
EXPECT_FALSE(token.equals(pp::Token()));
56
token.location.line = 0;
57
58
token.location.file = 1;
59
EXPECT_FALSE(token.equals(pp::Token()));
60
token.location.file = 0;
61
62
token.text.assign("foo");
63
EXPECT_FALSE(token.equals(pp::Token()));
64
token.text.clear();
65
66
EXPECT_TRUE(token.equals(pp::Token()));
67
}
68
69
TEST(TokenTest, HasLeadingSpace)
70
{
71
pp::Token token;
72
EXPECT_FALSE(token.hasLeadingSpace());
73
token.setHasLeadingSpace(true);
74
EXPECT_TRUE(token.hasLeadingSpace());
75
token.setHasLeadingSpace(false);
76
EXPECT_FALSE(token.hasLeadingSpace());
77
}
78
79
TEST(TokenTest, Write)
80
{
81
pp::Token token;
82
token.text.assign("foo");
83
std::stringstream out1;
84
out1 << token;
85
EXPECT_TRUE(out1.good());
86
EXPECT_EQ("foo", out1.str());
87
88
token.setHasLeadingSpace(true);
89
std::stringstream out2;
90
out2 << token;
91
EXPECT_TRUE(out2.good());
92
EXPECT_EQ(" foo", out2.str());
93
}
94
95
} // namespace angle
96
97