1*f4a2713aSLionel Sambuc //===- unittests/Basic/CharInfoTest.cpp -- ASCII classification tests -----===//
2*f4a2713aSLionel Sambuc //
3*f4a2713aSLionel Sambuc // The LLVM Compiler Infrastructure
4*f4a2713aSLionel Sambuc //
5*f4a2713aSLionel Sambuc // This file is distributed under the University of Illinois Open Source
6*f4a2713aSLionel Sambuc // License. See LICENSE.TXT for details.
7*f4a2713aSLionel Sambuc //
8*f4a2713aSLionel Sambuc //===----------------------------------------------------------------------===//
9*f4a2713aSLionel Sambuc
10*f4a2713aSLionel Sambuc #include "clang/Basic/CharInfo.h"
11*f4a2713aSLionel Sambuc #include "gtest/gtest.h"
12*f4a2713aSLionel Sambuc
13*f4a2713aSLionel Sambuc using namespace llvm;
14*f4a2713aSLionel Sambuc using namespace clang;
15*f4a2713aSLionel Sambuc
16*f4a2713aSLionel Sambuc // Check that the CharInfo table has been constructed reasonably.
TEST(CharInfoTest,validateInfoTable)17*f4a2713aSLionel Sambuc TEST(CharInfoTest, validateInfoTable) {
18*f4a2713aSLionel Sambuc using namespace charinfo;
19*f4a2713aSLionel Sambuc EXPECT_EQ((unsigned)CHAR_SPACE, InfoTable[(unsigned)' ']);
20*f4a2713aSLionel Sambuc EXPECT_EQ((unsigned)CHAR_HORZ_WS, InfoTable[(unsigned)'\t']);
21*f4a2713aSLionel Sambuc EXPECT_EQ((unsigned)CHAR_HORZ_WS, InfoTable[(unsigned)'\f']); // ??
22*f4a2713aSLionel Sambuc EXPECT_EQ((unsigned)CHAR_HORZ_WS, InfoTable[(unsigned)'\v']); // ??
23*f4a2713aSLionel Sambuc EXPECT_EQ((unsigned)CHAR_VERT_WS, InfoTable[(unsigned)'\n']);
24*f4a2713aSLionel Sambuc EXPECT_EQ((unsigned)CHAR_VERT_WS, InfoTable[(unsigned)'\r']);
25*f4a2713aSLionel Sambuc EXPECT_EQ((unsigned)CHAR_UNDER, InfoTable[(unsigned)'_']);
26*f4a2713aSLionel Sambuc EXPECT_EQ((unsigned)CHAR_PERIOD, InfoTable[(unsigned)'.']);
27*f4a2713aSLionel Sambuc
28*f4a2713aSLionel Sambuc for (unsigned i = 'a'; i <= 'f'; ++i) {
29*f4a2713aSLionel Sambuc EXPECT_EQ((unsigned)CHAR_XLOWER, InfoTable[i]);
30*f4a2713aSLionel Sambuc EXPECT_EQ((unsigned)CHAR_XUPPER, InfoTable[i+'A'-'a']);
31*f4a2713aSLionel Sambuc }
32*f4a2713aSLionel Sambuc
33*f4a2713aSLionel Sambuc for (unsigned i = 'g'; i <= 'z'; ++i) {
34*f4a2713aSLionel Sambuc EXPECT_EQ((unsigned)CHAR_LOWER, InfoTable[i]);
35*f4a2713aSLionel Sambuc EXPECT_EQ((unsigned)CHAR_UPPER, InfoTable[i+'A'-'a']);
36*f4a2713aSLionel Sambuc }
37*f4a2713aSLionel Sambuc
38*f4a2713aSLionel Sambuc for (unsigned i = '0'; i <= '9'; ++i)
39*f4a2713aSLionel Sambuc EXPECT_EQ((unsigned)CHAR_DIGIT, InfoTable[i]);
40*f4a2713aSLionel Sambuc }
41*f4a2713aSLionel Sambuc
42*f4a2713aSLionel Sambuc // Check various predicates.
TEST(CharInfoTest,isASCII)43*f4a2713aSLionel Sambuc TEST(CharInfoTest, isASCII) {
44*f4a2713aSLionel Sambuc EXPECT_TRUE(isASCII('\0'));
45*f4a2713aSLionel Sambuc EXPECT_TRUE(isASCII('\n'));
46*f4a2713aSLionel Sambuc EXPECT_TRUE(isASCII(' '));
47*f4a2713aSLionel Sambuc EXPECT_TRUE(isASCII('a'));
48*f4a2713aSLionel Sambuc EXPECT_TRUE(isASCII('\x7f'));
49*f4a2713aSLionel Sambuc EXPECT_FALSE(isASCII('\x80'));
50*f4a2713aSLionel Sambuc EXPECT_FALSE(isASCII('\xc2'));
51*f4a2713aSLionel Sambuc EXPECT_FALSE(isASCII('\xff'));
52*f4a2713aSLionel Sambuc }
53*f4a2713aSLionel Sambuc
TEST(CharInfoTest,isIdentifierHead)54*f4a2713aSLionel Sambuc TEST(CharInfoTest, isIdentifierHead) {
55*f4a2713aSLionel Sambuc EXPECT_TRUE(isIdentifierHead('a'));
56*f4a2713aSLionel Sambuc EXPECT_TRUE(isIdentifierHead('A'));
57*f4a2713aSLionel Sambuc EXPECT_TRUE(isIdentifierHead('z'));
58*f4a2713aSLionel Sambuc EXPECT_TRUE(isIdentifierHead('Z'));
59*f4a2713aSLionel Sambuc EXPECT_TRUE(isIdentifierHead('_'));
60*f4a2713aSLionel Sambuc
61*f4a2713aSLionel Sambuc EXPECT_FALSE(isIdentifierHead('0'));
62*f4a2713aSLionel Sambuc EXPECT_FALSE(isIdentifierHead('.'));
63*f4a2713aSLionel Sambuc EXPECT_FALSE(isIdentifierHead('`'));
64*f4a2713aSLionel Sambuc EXPECT_FALSE(isIdentifierHead('\0'));
65*f4a2713aSLionel Sambuc
66*f4a2713aSLionel Sambuc EXPECT_FALSE(isIdentifierHead('$'));
67*f4a2713aSLionel Sambuc EXPECT_TRUE(isIdentifierHead('$', /*AllowDollar=*/true));
68*f4a2713aSLionel Sambuc
69*f4a2713aSLionel Sambuc EXPECT_FALSE(isIdentifierHead('\x80'));
70*f4a2713aSLionel Sambuc EXPECT_FALSE(isIdentifierHead('\xc2'));
71*f4a2713aSLionel Sambuc EXPECT_FALSE(isIdentifierHead('\xff'));
72*f4a2713aSLionel Sambuc }
73*f4a2713aSLionel Sambuc
TEST(CharInfoTest,isIdentifierBody)74*f4a2713aSLionel Sambuc TEST(CharInfoTest, isIdentifierBody) {
75*f4a2713aSLionel Sambuc EXPECT_TRUE(isIdentifierBody('a'));
76*f4a2713aSLionel Sambuc EXPECT_TRUE(isIdentifierBody('A'));
77*f4a2713aSLionel Sambuc EXPECT_TRUE(isIdentifierBody('z'));
78*f4a2713aSLionel Sambuc EXPECT_TRUE(isIdentifierBody('Z'));
79*f4a2713aSLionel Sambuc EXPECT_TRUE(isIdentifierBody('_'));
80*f4a2713aSLionel Sambuc
81*f4a2713aSLionel Sambuc EXPECT_TRUE(isIdentifierBody('0'));
82*f4a2713aSLionel Sambuc EXPECT_FALSE(isIdentifierBody('.'));
83*f4a2713aSLionel Sambuc EXPECT_FALSE(isIdentifierBody('`'));
84*f4a2713aSLionel Sambuc EXPECT_FALSE(isIdentifierBody('\0'));
85*f4a2713aSLionel Sambuc
86*f4a2713aSLionel Sambuc EXPECT_FALSE(isIdentifierBody('$'));
87*f4a2713aSLionel Sambuc EXPECT_TRUE(isIdentifierBody('$', /*AllowDollar=*/true));
88*f4a2713aSLionel Sambuc
89*f4a2713aSLionel Sambuc EXPECT_FALSE(isIdentifierBody('\x80'));
90*f4a2713aSLionel Sambuc EXPECT_FALSE(isIdentifierBody('\xc2'));
91*f4a2713aSLionel Sambuc EXPECT_FALSE(isIdentifierBody('\xff'));
92*f4a2713aSLionel Sambuc }
93*f4a2713aSLionel Sambuc
TEST(CharInfoTest,isHorizontalWhitespace)94*f4a2713aSLionel Sambuc TEST(CharInfoTest, isHorizontalWhitespace) {
95*f4a2713aSLionel Sambuc EXPECT_FALSE(isHorizontalWhitespace('a'));
96*f4a2713aSLionel Sambuc EXPECT_FALSE(isHorizontalWhitespace('_'));
97*f4a2713aSLionel Sambuc EXPECT_FALSE(isHorizontalWhitespace('0'));
98*f4a2713aSLionel Sambuc EXPECT_FALSE(isHorizontalWhitespace('.'));
99*f4a2713aSLionel Sambuc EXPECT_FALSE(isHorizontalWhitespace('`'));
100*f4a2713aSLionel Sambuc EXPECT_FALSE(isHorizontalWhitespace('\0'));
101*f4a2713aSLionel Sambuc EXPECT_FALSE(isHorizontalWhitespace('\x7f'));
102*f4a2713aSLionel Sambuc
103*f4a2713aSLionel Sambuc EXPECT_TRUE(isHorizontalWhitespace(' '));
104*f4a2713aSLionel Sambuc EXPECT_TRUE(isHorizontalWhitespace('\t'));
105*f4a2713aSLionel Sambuc EXPECT_TRUE(isHorizontalWhitespace('\f')); // ??
106*f4a2713aSLionel Sambuc EXPECT_TRUE(isHorizontalWhitespace('\v')); // ??
107*f4a2713aSLionel Sambuc
108*f4a2713aSLionel Sambuc EXPECT_FALSE(isHorizontalWhitespace('\n'));
109*f4a2713aSLionel Sambuc EXPECT_FALSE(isHorizontalWhitespace('\r'));
110*f4a2713aSLionel Sambuc
111*f4a2713aSLionel Sambuc EXPECT_FALSE(isHorizontalWhitespace('\x80'));
112*f4a2713aSLionel Sambuc EXPECT_FALSE(isHorizontalWhitespace('\xc2'));
113*f4a2713aSLionel Sambuc EXPECT_FALSE(isHorizontalWhitespace('\xff'));
114*f4a2713aSLionel Sambuc }
115*f4a2713aSLionel Sambuc
TEST(CharInfoTest,isVerticalWhitespace)116*f4a2713aSLionel Sambuc TEST(CharInfoTest, isVerticalWhitespace) {
117*f4a2713aSLionel Sambuc EXPECT_FALSE(isVerticalWhitespace('a'));
118*f4a2713aSLionel Sambuc EXPECT_FALSE(isVerticalWhitespace('_'));
119*f4a2713aSLionel Sambuc EXPECT_FALSE(isVerticalWhitespace('0'));
120*f4a2713aSLionel Sambuc EXPECT_FALSE(isVerticalWhitespace('.'));
121*f4a2713aSLionel Sambuc EXPECT_FALSE(isVerticalWhitespace('`'));
122*f4a2713aSLionel Sambuc EXPECT_FALSE(isVerticalWhitespace('\0'));
123*f4a2713aSLionel Sambuc EXPECT_FALSE(isVerticalWhitespace('\x7f'));
124*f4a2713aSLionel Sambuc
125*f4a2713aSLionel Sambuc EXPECT_FALSE(isVerticalWhitespace(' '));
126*f4a2713aSLionel Sambuc EXPECT_FALSE(isVerticalWhitespace('\t'));
127*f4a2713aSLionel Sambuc EXPECT_FALSE(isVerticalWhitespace('\f')); // ??
128*f4a2713aSLionel Sambuc EXPECT_FALSE(isVerticalWhitespace('\v')); // ??
129*f4a2713aSLionel Sambuc
130*f4a2713aSLionel Sambuc EXPECT_TRUE(isVerticalWhitespace('\n'));
131*f4a2713aSLionel Sambuc EXPECT_TRUE(isVerticalWhitespace('\r'));
132*f4a2713aSLionel Sambuc
133*f4a2713aSLionel Sambuc EXPECT_FALSE(isVerticalWhitespace('\x80'));
134*f4a2713aSLionel Sambuc EXPECT_FALSE(isVerticalWhitespace('\xc2'));
135*f4a2713aSLionel Sambuc EXPECT_FALSE(isVerticalWhitespace('\xff'));
136*f4a2713aSLionel Sambuc }
137*f4a2713aSLionel Sambuc
TEST(CharInfoTest,isWhitespace)138*f4a2713aSLionel Sambuc TEST(CharInfoTest, isWhitespace) {
139*f4a2713aSLionel Sambuc EXPECT_FALSE(isWhitespace('a'));
140*f4a2713aSLionel Sambuc EXPECT_FALSE(isWhitespace('_'));
141*f4a2713aSLionel Sambuc EXPECT_FALSE(isWhitespace('0'));
142*f4a2713aSLionel Sambuc EXPECT_FALSE(isWhitespace('.'));
143*f4a2713aSLionel Sambuc EXPECT_FALSE(isWhitespace('`'));
144*f4a2713aSLionel Sambuc EXPECT_FALSE(isWhitespace('\0'));
145*f4a2713aSLionel Sambuc EXPECT_FALSE(isWhitespace('\x7f'));
146*f4a2713aSLionel Sambuc
147*f4a2713aSLionel Sambuc EXPECT_TRUE(isWhitespace(' '));
148*f4a2713aSLionel Sambuc EXPECT_TRUE(isWhitespace('\t'));
149*f4a2713aSLionel Sambuc EXPECT_TRUE(isWhitespace('\f'));
150*f4a2713aSLionel Sambuc EXPECT_TRUE(isWhitespace('\v'));
151*f4a2713aSLionel Sambuc
152*f4a2713aSLionel Sambuc EXPECT_TRUE(isWhitespace('\n'));
153*f4a2713aSLionel Sambuc EXPECT_TRUE(isWhitespace('\r'));
154*f4a2713aSLionel Sambuc
155*f4a2713aSLionel Sambuc EXPECT_FALSE(isWhitespace('\x80'));
156*f4a2713aSLionel Sambuc EXPECT_FALSE(isWhitespace('\xc2'));
157*f4a2713aSLionel Sambuc EXPECT_FALSE(isWhitespace('\xff'));
158*f4a2713aSLionel Sambuc }
159*f4a2713aSLionel Sambuc
TEST(CharInfoTest,isDigit)160*f4a2713aSLionel Sambuc TEST(CharInfoTest, isDigit) {
161*f4a2713aSLionel Sambuc EXPECT_TRUE(isDigit('0'));
162*f4a2713aSLionel Sambuc EXPECT_TRUE(isDigit('9'));
163*f4a2713aSLionel Sambuc
164*f4a2713aSLionel Sambuc EXPECT_FALSE(isDigit('a'));
165*f4a2713aSLionel Sambuc EXPECT_FALSE(isDigit('A'));
166*f4a2713aSLionel Sambuc
167*f4a2713aSLionel Sambuc EXPECT_FALSE(isDigit('z'));
168*f4a2713aSLionel Sambuc EXPECT_FALSE(isDigit('Z'));
169*f4a2713aSLionel Sambuc
170*f4a2713aSLionel Sambuc EXPECT_FALSE(isDigit('.'));
171*f4a2713aSLionel Sambuc EXPECT_FALSE(isDigit('_'));
172*f4a2713aSLionel Sambuc
173*f4a2713aSLionel Sambuc EXPECT_FALSE(isDigit('/'));
174*f4a2713aSLionel Sambuc EXPECT_FALSE(isDigit('\0'));
175*f4a2713aSLionel Sambuc
176*f4a2713aSLionel Sambuc EXPECT_FALSE(isDigit('\x80'));
177*f4a2713aSLionel Sambuc EXPECT_FALSE(isDigit('\xc2'));
178*f4a2713aSLionel Sambuc EXPECT_FALSE(isDigit('\xff'));
179*f4a2713aSLionel Sambuc }
180*f4a2713aSLionel Sambuc
TEST(CharInfoTest,isHexDigit)181*f4a2713aSLionel Sambuc TEST(CharInfoTest, isHexDigit) {
182*f4a2713aSLionel Sambuc EXPECT_TRUE(isHexDigit('0'));
183*f4a2713aSLionel Sambuc EXPECT_TRUE(isHexDigit('9'));
184*f4a2713aSLionel Sambuc
185*f4a2713aSLionel Sambuc EXPECT_TRUE(isHexDigit('a'));
186*f4a2713aSLionel Sambuc EXPECT_TRUE(isHexDigit('A'));
187*f4a2713aSLionel Sambuc
188*f4a2713aSLionel Sambuc EXPECT_FALSE(isHexDigit('z'));
189*f4a2713aSLionel Sambuc EXPECT_FALSE(isHexDigit('Z'));
190*f4a2713aSLionel Sambuc
191*f4a2713aSLionel Sambuc EXPECT_FALSE(isHexDigit('.'));
192*f4a2713aSLionel Sambuc EXPECT_FALSE(isHexDigit('_'));
193*f4a2713aSLionel Sambuc
194*f4a2713aSLionel Sambuc EXPECT_FALSE(isHexDigit('/'));
195*f4a2713aSLionel Sambuc EXPECT_FALSE(isHexDigit('\0'));
196*f4a2713aSLionel Sambuc
197*f4a2713aSLionel Sambuc EXPECT_FALSE(isHexDigit('\x80'));
198*f4a2713aSLionel Sambuc EXPECT_FALSE(isHexDigit('\xc2'));
199*f4a2713aSLionel Sambuc EXPECT_FALSE(isHexDigit('\xff'));
200*f4a2713aSLionel Sambuc }
201*f4a2713aSLionel Sambuc
TEST(CharInfoTest,isLetter)202*f4a2713aSLionel Sambuc TEST(CharInfoTest, isLetter) {
203*f4a2713aSLionel Sambuc EXPECT_FALSE(isLetter('0'));
204*f4a2713aSLionel Sambuc EXPECT_FALSE(isLetter('9'));
205*f4a2713aSLionel Sambuc
206*f4a2713aSLionel Sambuc EXPECT_TRUE(isLetter('a'));
207*f4a2713aSLionel Sambuc EXPECT_TRUE(isLetter('A'));
208*f4a2713aSLionel Sambuc
209*f4a2713aSLionel Sambuc EXPECT_TRUE(isLetter('z'));
210*f4a2713aSLionel Sambuc EXPECT_TRUE(isLetter('Z'));
211*f4a2713aSLionel Sambuc
212*f4a2713aSLionel Sambuc EXPECT_FALSE(isLetter('.'));
213*f4a2713aSLionel Sambuc EXPECT_FALSE(isLetter('_'));
214*f4a2713aSLionel Sambuc
215*f4a2713aSLionel Sambuc EXPECT_FALSE(isLetter('/'));
216*f4a2713aSLionel Sambuc EXPECT_FALSE(isLetter('('));
217*f4a2713aSLionel Sambuc EXPECT_FALSE(isLetter('\0'));
218*f4a2713aSLionel Sambuc
219*f4a2713aSLionel Sambuc EXPECT_FALSE(isLetter('\x80'));
220*f4a2713aSLionel Sambuc EXPECT_FALSE(isLetter('\xc2'));
221*f4a2713aSLionel Sambuc EXPECT_FALSE(isLetter('\xff'));
222*f4a2713aSLionel Sambuc }
223*f4a2713aSLionel Sambuc
TEST(CharInfoTest,isLowercase)224*f4a2713aSLionel Sambuc TEST(CharInfoTest, isLowercase) {
225*f4a2713aSLionel Sambuc EXPECT_FALSE(isLowercase('0'));
226*f4a2713aSLionel Sambuc EXPECT_FALSE(isLowercase('9'));
227*f4a2713aSLionel Sambuc
228*f4a2713aSLionel Sambuc EXPECT_TRUE(isLowercase('a'));
229*f4a2713aSLionel Sambuc EXPECT_FALSE(isLowercase('A'));
230*f4a2713aSLionel Sambuc
231*f4a2713aSLionel Sambuc EXPECT_TRUE(isLowercase('z'));
232*f4a2713aSLionel Sambuc EXPECT_FALSE(isLowercase('Z'));
233*f4a2713aSLionel Sambuc
234*f4a2713aSLionel Sambuc EXPECT_FALSE(isLowercase('.'));
235*f4a2713aSLionel Sambuc EXPECT_FALSE(isLowercase('_'));
236*f4a2713aSLionel Sambuc
237*f4a2713aSLionel Sambuc EXPECT_FALSE(isLowercase('/'));
238*f4a2713aSLionel Sambuc EXPECT_FALSE(isLowercase('('));
239*f4a2713aSLionel Sambuc EXPECT_FALSE(isLowercase('\0'));
240*f4a2713aSLionel Sambuc
241*f4a2713aSLionel Sambuc EXPECT_FALSE(isLowercase('\x80'));
242*f4a2713aSLionel Sambuc EXPECT_FALSE(isLowercase('\xc2'));
243*f4a2713aSLionel Sambuc EXPECT_FALSE(isLowercase('\xff'));
244*f4a2713aSLionel Sambuc }
245*f4a2713aSLionel Sambuc
TEST(CharInfoTest,isUppercase)246*f4a2713aSLionel Sambuc TEST(CharInfoTest, isUppercase) {
247*f4a2713aSLionel Sambuc EXPECT_FALSE(isUppercase('0'));
248*f4a2713aSLionel Sambuc EXPECT_FALSE(isUppercase('9'));
249*f4a2713aSLionel Sambuc
250*f4a2713aSLionel Sambuc EXPECT_FALSE(isUppercase('a'));
251*f4a2713aSLionel Sambuc EXPECT_TRUE(isUppercase('A'));
252*f4a2713aSLionel Sambuc
253*f4a2713aSLionel Sambuc EXPECT_FALSE(isUppercase('z'));
254*f4a2713aSLionel Sambuc EXPECT_TRUE(isUppercase('Z'));
255*f4a2713aSLionel Sambuc
256*f4a2713aSLionel Sambuc EXPECT_FALSE(isUppercase('.'));
257*f4a2713aSLionel Sambuc EXPECT_FALSE(isUppercase('_'));
258*f4a2713aSLionel Sambuc
259*f4a2713aSLionel Sambuc EXPECT_FALSE(isUppercase('/'));
260*f4a2713aSLionel Sambuc EXPECT_FALSE(isUppercase('('));
261*f4a2713aSLionel Sambuc EXPECT_FALSE(isUppercase('\0'));
262*f4a2713aSLionel Sambuc
263*f4a2713aSLionel Sambuc EXPECT_FALSE(isUppercase('\x80'));
264*f4a2713aSLionel Sambuc EXPECT_FALSE(isUppercase('\xc2'));
265*f4a2713aSLionel Sambuc EXPECT_FALSE(isUppercase('\xff'));
266*f4a2713aSLionel Sambuc }
267*f4a2713aSLionel Sambuc
TEST(CharInfoTest,isAlphanumeric)268*f4a2713aSLionel Sambuc TEST(CharInfoTest, isAlphanumeric) {
269*f4a2713aSLionel Sambuc EXPECT_TRUE(isAlphanumeric('0'));
270*f4a2713aSLionel Sambuc EXPECT_TRUE(isAlphanumeric('9'));
271*f4a2713aSLionel Sambuc
272*f4a2713aSLionel Sambuc EXPECT_TRUE(isAlphanumeric('a'));
273*f4a2713aSLionel Sambuc EXPECT_TRUE(isAlphanumeric('A'));
274*f4a2713aSLionel Sambuc
275*f4a2713aSLionel Sambuc EXPECT_TRUE(isAlphanumeric('z'));
276*f4a2713aSLionel Sambuc EXPECT_TRUE(isAlphanumeric('Z'));
277*f4a2713aSLionel Sambuc
278*f4a2713aSLionel Sambuc EXPECT_FALSE(isAlphanumeric('.'));
279*f4a2713aSLionel Sambuc EXPECT_FALSE(isAlphanumeric('_'));
280*f4a2713aSLionel Sambuc
281*f4a2713aSLionel Sambuc EXPECT_FALSE(isAlphanumeric('/'));
282*f4a2713aSLionel Sambuc EXPECT_FALSE(isAlphanumeric('('));
283*f4a2713aSLionel Sambuc EXPECT_FALSE(isAlphanumeric('\0'));
284*f4a2713aSLionel Sambuc
285*f4a2713aSLionel Sambuc EXPECT_FALSE(isAlphanumeric('\x80'));
286*f4a2713aSLionel Sambuc EXPECT_FALSE(isAlphanumeric('\xc2'));
287*f4a2713aSLionel Sambuc EXPECT_FALSE(isAlphanumeric('\xff'));
288*f4a2713aSLionel Sambuc }
289*f4a2713aSLionel Sambuc
TEST(CharInfoTest,isPunctuation)290*f4a2713aSLionel Sambuc TEST(CharInfoTest, isPunctuation) {
291*f4a2713aSLionel Sambuc EXPECT_FALSE(isPunctuation('0'));
292*f4a2713aSLionel Sambuc EXPECT_FALSE(isPunctuation('9'));
293*f4a2713aSLionel Sambuc
294*f4a2713aSLionel Sambuc EXPECT_FALSE(isPunctuation('a'));
295*f4a2713aSLionel Sambuc EXPECT_FALSE(isPunctuation('A'));
296*f4a2713aSLionel Sambuc
297*f4a2713aSLionel Sambuc EXPECT_FALSE(isPunctuation('z'));
298*f4a2713aSLionel Sambuc EXPECT_FALSE(isPunctuation('Z'));
299*f4a2713aSLionel Sambuc
300*f4a2713aSLionel Sambuc EXPECT_TRUE(isPunctuation('.'));
301*f4a2713aSLionel Sambuc EXPECT_TRUE(isPunctuation('_'));
302*f4a2713aSLionel Sambuc
303*f4a2713aSLionel Sambuc EXPECT_TRUE(isPunctuation('/'));
304*f4a2713aSLionel Sambuc EXPECT_TRUE(isPunctuation('('));
305*f4a2713aSLionel Sambuc
306*f4a2713aSLionel Sambuc EXPECT_FALSE(isPunctuation(' '));
307*f4a2713aSLionel Sambuc EXPECT_FALSE(isPunctuation('\n'));
308*f4a2713aSLionel Sambuc EXPECT_FALSE(isPunctuation('\0'));
309*f4a2713aSLionel Sambuc
310*f4a2713aSLionel Sambuc EXPECT_FALSE(isPunctuation('\x80'));
311*f4a2713aSLionel Sambuc EXPECT_FALSE(isPunctuation('\xc2'));
312*f4a2713aSLionel Sambuc EXPECT_FALSE(isPunctuation('\xff'));
313*f4a2713aSLionel Sambuc }
314*f4a2713aSLionel Sambuc
TEST(CharInfoTest,isPrintable)315*f4a2713aSLionel Sambuc TEST(CharInfoTest, isPrintable) {
316*f4a2713aSLionel Sambuc EXPECT_TRUE(isPrintable('0'));
317*f4a2713aSLionel Sambuc EXPECT_TRUE(isPrintable('9'));
318*f4a2713aSLionel Sambuc
319*f4a2713aSLionel Sambuc EXPECT_TRUE(isPrintable('a'));
320*f4a2713aSLionel Sambuc EXPECT_TRUE(isPrintable('A'));
321*f4a2713aSLionel Sambuc
322*f4a2713aSLionel Sambuc EXPECT_TRUE(isPrintable('z'));
323*f4a2713aSLionel Sambuc EXPECT_TRUE(isPrintable('Z'));
324*f4a2713aSLionel Sambuc
325*f4a2713aSLionel Sambuc EXPECT_TRUE(isPrintable('.'));
326*f4a2713aSLionel Sambuc EXPECT_TRUE(isPrintable('_'));
327*f4a2713aSLionel Sambuc
328*f4a2713aSLionel Sambuc EXPECT_TRUE(isPrintable('/'));
329*f4a2713aSLionel Sambuc EXPECT_TRUE(isPrintable('('));
330*f4a2713aSLionel Sambuc
331*f4a2713aSLionel Sambuc EXPECT_TRUE(isPrintable(' '));
332*f4a2713aSLionel Sambuc EXPECT_FALSE(isPrintable('\t'));
333*f4a2713aSLionel Sambuc EXPECT_FALSE(isPrintable('\n'));
334*f4a2713aSLionel Sambuc EXPECT_FALSE(isPrintable('\0'));
335*f4a2713aSLionel Sambuc
336*f4a2713aSLionel Sambuc EXPECT_FALSE(isPrintable('\x80'));
337*f4a2713aSLionel Sambuc EXPECT_FALSE(isPrintable('\xc2'));
338*f4a2713aSLionel Sambuc EXPECT_FALSE(isPrintable('\xff'));
339*f4a2713aSLionel Sambuc }
340*f4a2713aSLionel Sambuc
TEST(CharInfoTest,isPreprocessingNumberBody)341*f4a2713aSLionel Sambuc TEST(CharInfoTest, isPreprocessingNumberBody) {
342*f4a2713aSLionel Sambuc EXPECT_TRUE(isPreprocessingNumberBody('0'));
343*f4a2713aSLionel Sambuc EXPECT_TRUE(isPreprocessingNumberBody('9'));
344*f4a2713aSLionel Sambuc
345*f4a2713aSLionel Sambuc EXPECT_TRUE(isPreprocessingNumberBody('a'));
346*f4a2713aSLionel Sambuc EXPECT_TRUE(isPreprocessingNumberBody('A'));
347*f4a2713aSLionel Sambuc
348*f4a2713aSLionel Sambuc EXPECT_TRUE(isPreprocessingNumberBody('z'));
349*f4a2713aSLionel Sambuc EXPECT_TRUE(isPreprocessingNumberBody('Z'));
350*f4a2713aSLionel Sambuc EXPECT_TRUE(isPreprocessingNumberBody('.'));
351*f4a2713aSLionel Sambuc EXPECT_TRUE(isPreprocessingNumberBody('_'));
352*f4a2713aSLionel Sambuc
353*f4a2713aSLionel Sambuc EXPECT_FALSE(isPreprocessingNumberBody('/'));
354*f4a2713aSLionel Sambuc EXPECT_FALSE(isPreprocessingNumberBody('('));
355*f4a2713aSLionel Sambuc EXPECT_FALSE(isPreprocessingNumberBody('\0'));
356*f4a2713aSLionel Sambuc
357*f4a2713aSLionel Sambuc EXPECT_FALSE(isPreprocessingNumberBody('\x80'));
358*f4a2713aSLionel Sambuc EXPECT_FALSE(isPreprocessingNumberBody('\xc2'));
359*f4a2713aSLionel Sambuc EXPECT_FALSE(isPreprocessingNumberBody('\xff'));
360*f4a2713aSLionel Sambuc }
361*f4a2713aSLionel Sambuc
TEST(CharInfoTest,isRawStringDelimBody)362*f4a2713aSLionel Sambuc TEST(CharInfoTest, isRawStringDelimBody) {
363*f4a2713aSLionel Sambuc EXPECT_TRUE(isRawStringDelimBody('0'));
364*f4a2713aSLionel Sambuc EXPECT_TRUE(isRawStringDelimBody('9'));
365*f4a2713aSLionel Sambuc
366*f4a2713aSLionel Sambuc EXPECT_TRUE(isRawStringDelimBody('a'));
367*f4a2713aSLionel Sambuc EXPECT_TRUE(isRawStringDelimBody('A'));
368*f4a2713aSLionel Sambuc
369*f4a2713aSLionel Sambuc EXPECT_TRUE(isRawStringDelimBody('z'));
370*f4a2713aSLionel Sambuc EXPECT_TRUE(isRawStringDelimBody('Z'));
371*f4a2713aSLionel Sambuc EXPECT_TRUE(isRawStringDelimBody('.'));
372*f4a2713aSLionel Sambuc EXPECT_TRUE(isRawStringDelimBody('_'));
373*f4a2713aSLionel Sambuc
374*f4a2713aSLionel Sambuc EXPECT_TRUE(isRawStringDelimBody('/'));
375*f4a2713aSLionel Sambuc EXPECT_FALSE(isRawStringDelimBody('('));
376*f4a2713aSLionel Sambuc EXPECT_FALSE(isRawStringDelimBody('\0'));
377*f4a2713aSLionel Sambuc
378*f4a2713aSLionel Sambuc EXPECT_FALSE(isRawStringDelimBody('\x80'));
379*f4a2713aSLionel Sambuc EXPECT_FALSE(isRawStringDelimBody('\xc2'));
380*f4a2713aSLionel Sambuc EXPECT_FALSE(isRawStringDelimBody('\xff'));
381*f4a2713aSLionel Sambuc }
382*f4a2713aSLionel Sambuc
TEST(CharInfoTest,toLowercase)383*f4a2713aSLionel Sambuc TEST(CharInfoTest, toLowercase) {
384*f4a2713aSLionel Sambuc EXPECT_EQ('0', toLowercase('0'));
385*f4a2713aSLionel Sambuc EXPECT_EQ('9', toLowercase('9'));
386*f4a2713aSLionel Sambuc
387*f4a2713aSLionel Sambuc EXPECT_EQ('a', toLowercase('a'));
388*f4a2713aSLionel Sambuc EXPECT_EQ('a', toLowercase('A'));
389*f4a2713aSLionel Sambuc
390*f4a2713aSLionel Sambuc EXPECT_EQ('z', toLowercase('z'));
391*f4a2713aSLionel Sambuc EXPECT_EQ('z', toLowercase('Z'));
392*f4a2713aSLionel Sambuc
393*f4a2713aSLionel Sambuc EXPECT_EQ('.', toLowercase('.'));
394*f4a2713aSLionel Sambuc EXPECT_EQ('_', toLowercase('_'));
395*f4a2713aSLionel Sambuc
396*f4a2713aSLionel Sambuc EXPECT_EQ('/', toLowercase('/'));
397*f4a2713aSLionel Sambuc EXPECT_EQ('\0', toLowercase('\0'));
398*f4a2713aSLionel Sambuc }
399*f4a2713aSLionel Sambuc
TEST(CharInfoTest,toUppercase)400*f4a2713aSLionel Sambuc TEST(CharInfoTest, toUppercase) {
401*f4a2713aSLionel Sambuc EXPECT_EQ('0', toUppercase('0'));
402*f4a2713aSLionel Sambuc EXPECT_EQ('9', toUppercase('9'));
403*f4a2713aSLionel Sambuc
404*f4a2713aSLionel Sambuc EXPECT_EQ('A', toUppercase('a'));
405*f4a2713aSLionel Sambuc EXPECT_EQ('A', toUppercase('A'));
406*f4a2713aSLionel Sambuc
407*f4a2713aSLionel Sambuc EXPECT_EQ('Z', toUppercase('z'));
408*f4a2713aSLionel Sambuc EXPECT_EQ('Z', toUppercase('Z'));
409*f4a2713aSLionel Sambuc
410*f4a2713aSLionel Sambuc EXPECT_EQ('.', toUppercase('.'));
411*f4a2713aSLionel Sambuc EXPECT_EQ('_', toUppercase('_'));
412*f4a2713aSLionel Sambuc
413*f4a2713aSLionel Sambuc EXPECT_EQ('/', toUppercase('/'));
414*f4a2713aSLionel Sambuc EXPECT_EQ('\0', toUppercase('\0'));
415*f4a2713aSLionel Sambuc }
416*f4a2713aSLionel Sambuc
TEST(CharInfoTest,isValidIdentifier)417*f4a2713aSLionel Sambuc TEST(CharInfoTest, isValidIdentifier) {
418*f4a2713aSLionel Sambuc EXPECT_FALSE(isValidIdentifier(""));
419*f4a2713aSLionel Sambuc
420*f4a2713aSLionel Sambuc // 1 character
421*f4a2713aSLionel Sambuc EXPECT_FALSE(isValidIdentifier("."));
422*f4a2713aSLionel Sambuc EXPECT_FALSE(isValidIdentifier("\n"));
423*f4a2713aSLionel Sambuc EXPECT_FALSE(isValidIdentifier(" "));
424*f4a2713aSLionel Sambuc EXPECT_FALSE(isValidIdentifier("\x80"));
425*f4a2713aSLionel Sambuc EXPECT_FALSE(isValidIdentifier("\xc2"));
426*f4a2713aSLionel Sambuc EXPECT_FALSE(isValidIdentifier("\xff"));
427*f4a2713aSLionel Sambuc EXPECT_FALSE(isValidIdentifier("$"));
428*f4a2713aSLionel Sambuc EXPECT_FALSE(isValidIdentifier("1"));
429*f4a2713aSLionel Sambuc
430*f4a2713aSLionel Sambuc EXPECT_TRUE(isValidIdentifier("_"));
431*f4a2713aSLionel Sambuc EXPECT_TRUE(isValidIdentifier("a"));
432*f4a2713aSLionel Sambuc EXPECT_TRUE(isValidIdentifier("z"));
433*f4a2713aSLionel Sambuc EXPECT_TRUE(isValidIdentifier("A"));
434*f4a2713aSLionel Sambuc EXPECT_TRUE(isValidIdentifier("Z"));
435*f4a2713aSLionel Sambuc
436*f4a2713aSLionel Sambuc // 2 characters, '_' suffix
437*f4a2713aSLionel Sambuc EXPECT_FALSE(isValidIdentifier("._"));
438*f4a2713aSLionel Sambuc EXPECT_FALSE(isValidIdentifier("\n_"));
439*f4a2713aSLionel Sambuc EXPECT_FALSE(isValidIdentifier(" _"));
440*f4a2713aSLionel Sambuc EXPECT_FALSE(isValidIdentifier("\x80_"));
441*f4a2713aSLionel Sambuc EXPECT_FALSE(isValidIdentifier("\xc2_"));
442*f4a2713aSLionel Sambuc EXPECT_FALSE(isValidIdentifier("\xff_"));
443*f4a2713aSLionel Sambuc EXPECT_FALSE(isValidIdentifier("$_"));
444*f4a2713aSLionel Sambuc EXPECT_FALSE(isValidIdentifier("1_"));
445*f4a2713aSLionel Sambuc
446*f4a2713aSLionel Sambuc EXPECT_TRUE(isValidIdentifier("__"));
447*f4a2713aSLionel Sambuc EXPECT_TRUE(isValidIdentifier("a_"));
448*f4a2713aSLionel Sambuc EXPECT_TRUE(isValidIdentifier("z_"));
449*f4a2713aSLionel Sambuc EXPECT_TRUE(isValidIdentifier("A_"));
450*f4a2713aSLionel Sambuc EXPECT_TRUE(isValidIdentifier("Z_"));
451*f4a2713aSLionel Sambuc
452*f4a2713aSLionel Sambuc // 2 characters, '_' prefix
453*f4a2713aSLionel Sambuc EXPECT_FALSE(isValidIdentifier("_."));
454*f4a2713aSLionel Sambuc EXPECT_FALSE(isValidIdentifier("_\n"));
455*f4a2713aSLionel Sambuc EXPECT_FALSE(isValidIdentifier("_ "));
456*f4a2713aSLionel Sambuc EXPECT_FALSE(isValidIdentifier("_\x80"));
457*f4a2713aSLionel Sambuc EXPECT_FALSE(isValidIdentifier("_\xc2"));
458*f4a2713aSLionel Sambuc EXPECT_FALSE(isValidIdentifier("_\xff"));
459*f4a2713aSLionel Sambuc EXPECT_FALSE(isValidIdentifier("_$"));
460*f4a2713aSLionel Sambuc EXPECT_TRUE(isValidIdentifier("_1"));
461*f4a2713aSLionel Sambuc
462*f4a2713aSLionel Sambuc EXPECT_TRUE(isValidIdentifier("__"));
463*f4a2713aSLionel Sambuc EXPECT_TRUE(isValidIdentifier("_a"));
464*f4a2713aSLionel Sambuc EXPECT_TRUE(isValidIdentifier("_z"));
465*f4a2713aSLionel Sambuc EXPECT_TRUE(isValidIdentifier("_A"));
466*f4a2713aSLionel Sambuc EXPECT_TRUE(isValidIdentifier("_Z"));
467*f4a2713aSLionel Sambuc
468*f4a2713aSLionel Sambuc // 3 characters, '__' prefix
469*f4a2713aSLionel Sambuc EXPECT_FALSE(isValidIdentifier("__."));
470*f4a2713aSLionel Sambuc EXPECT_FALSE(isValidIdentifier("__\n"));
471*f4a2713aSLionel Sambuc EXPECT_FALSE(isValidIdentifier("__ "));
472*f4a2713aSLionel Sambuc EXPECT_FALSE(isValidIdentifier("__\x80"));
473*f4a2713aSLionel Sambuc EXPECT_FALSE(isValidIdentifier("__\xc2"));
474*f4a2713aSLionel Sambuc EXPECT_FALSE(isValidIdentifier("__\xff"));
475*f4a2713aSLionel Sambuc EXPECT_FALSE(isValidIdentifier("__$"));
476*f4a2713aSLionel Sambuc EXPECT_TRUE(isValidIdentifier("__1"));
477*f4a2713aSLionel Sambuc
478*f4a2713aSLionel Sambuc EXPECT_TRUE(isValidIdentifier("___"));
479*f4a2713aSLionel Sambuc EXPECT_TRUE(isValidIdentifier("__a"));
480*f4a2713aSLionel Sambuc EXPECT_TRUE(isValidIdentifier("__z"));
481*f4a2713aSLionel Sambuc EXPECT_TRUE(isValidIdentifier("__A"));
482*f4a2713aSLionel Sambuc EXPECT_TRUE(isValidIdentifier("__Z"));
483*f4a2713aSLionel Sambuc
484*f4a2713aSLionel Sambuc // 3 characters, '_' prefix and suffix
485*f4a2713aSLionel Sambuc EXPECT_FALSE(isValidIdentifier("_._"));
486*f4a2713aSLionel Sambuc EXPECT_FALSE(isValidIdentifier("_\n_"));
487*f4a2713aSLionel Sambuc EXPECT_FALSE(isValidIdentifier("_ _"));
488*f4a2713aSLionel Sambuc EXPECT_FALSE(isValidIdentifier("_\x80_"));
489*f4a2713aSLionel Sambuc EXPECT_FALSE(isValidIdentifier("_\xc2_"));
490*f4a2713aSLionel Sambuc EXPECT_FALSE(isValidIdentifier("_\xff_"));
491*f4a2713aSLionel Sambuc EXPECT_FALSE(isValidIdentifier("_$_"));
492*f4a2713aSLionel Sambuc EXPECT_TRUE(isValidIdentifier("_1_"));
493*f4a2713aSLionel Sambuc
494*f4a2713aSLionel Sambuc EXPECT_TRUE(isValidIdentifier("___"));
495*f4a2713aSLionel Sambuc EXPECT_TRUE(isValidIdentifier("_a_"));
496*f4a2713aSLionel Sambuc EXPECT_TRUE(isValidIdentifier("_z_"));
497*f4a2713aSLionel Sambuc EXPECT_TRUE(isValidIdentifier("_A_"));
498*f4a2713aSLionel Sambuc EXPECT_TRUE(isValidIdentifier("_Z_"));
499*f4a2713aSLionel Sambuc }
500