19893902eceba7f01dd1521349d33866f77254d78Jordan Rose//===- unittests/Basic/CharInfoTest.cpp -- ASCII classification tests -----===//
29893902eceba7f01dd1521349d33866f77254d78Jordan Rose//
39893902eceba7f01dd1521349d33866f77254d78Jordan Rose//                     The LLVM Compiler Infrastructure
49893902eceba7f01dd1521349d33866f77254d78Jordan Rose//
59893902eceba7f01dd1521349d33866f77254d78Jordan Rose// This file is distributed under the University of Illinois Open Source
69893902eceba7f01dd1521349d33866f77254d78Jordan Rose// License. See LICENSE.TXT for details.
79893902eceba7f01dd1521349d33866f77254d78Jordan Rose//
89893902eceba7f01dd1521349d33866f77254d78Jordan Rose//===----------------------------------------------------------------------===//
99893902eceba7f01dd1521349d33866f77254d78Jordan Rose
109893902eceba7f01dd1521349d33866f77254d78Jordan Rose#include "clang/Basic/CharInfo.h"
119893902eceba7f01dd1521349d33866f77254d78Jordan Rose#include "gtest/gtest.h"
129893902eceba7f01dd1521349d33866f77254d78Jordan Rose
139893902eceba7f01dd1521349d33866f77254d78Jordan Roseusing namespace llvm;
149893902eceba7f01dd1521349d33866f77254d78Jordan Roseusing namespace clang;
159893902eceba7f01dd1521349d33866f77254d78Jordan Rose
169893902eceba7f01dd1521349d33866f77254d78Jordan Rose// Check that the CharInfo table has been constructed reasonably.
179893902eceba7f01dd1521349d33866f77254d78Jordan RoseTEST(CharInfoTest, validateInfoTable) {
189893902eceba7f01dd1521349d33866f77254d78Jordan Rose  using namespace charinfo;
199893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_EQ((unsigned)CHAR_SPACE,   InfoTable[(unsigned)' ']);
209893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_EQ((unsigned)CHAR_HORZ_WS, InfoTable[(unsigned)'\t']);
219893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_EQ((unsigned)CHAR_HORZ_WS, InfoTable[(unsigned)'\f']); // ??
229893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_EQ((unsigned)CHAR_HORZ_WS, InfoTable[(unsigned)'\v']); // ??
239893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_EQ((unsigned)CHAR_VERT_WS, InfoTable[(unsigned)'\n']);
249893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_EQ((unsigned)CHAR_VERT_WS, InfoTable[(unsigned)'\r']);
259893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_EQ((unsigned)CHAR_UNDER,   InfoTable[(unsigned)'_']);
269893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_EQ((unsigned)CHAR_PERIOD,  InfoTable[(unsigned)'.']);
279893902eceba7f01dd1521349d33866f77254d78Jordan Rose
289893902eceba7f01dd1521349d33866f77254d78Jordan Rose  for (unsigned i = 'a'; i <= 'f'; ++i) {
299893902eceba7f01dd1521349d33866f77254d78Jordan Rose    EXPECT_EQ((unsigned)CHAR_XLOWER, InfoTable[i]);
309893902eceba7f01dd1521349d33866f77254d78Jordan Rose    EXPECT_EQ((unsigned)CHAR_XUPPER, InfoTable[i+'A'-'a']);
319893902eceba7f01dd1521349d33866f77254d78Jordan Rose  }
329893902eceba7f01dd1521349d33866f77254d78Jordan Rose
339893902eceba7f01dd1521349d33866f77254d78Jordan Rose  for (unsigned i = 'g'; i <= 'z'; ++i) {
349893902eceba7f01dd1521349d33866f77254d78Jordan Rose    EXPECT_EQ((unsigned)CHAR_LOWER, InfoTable[i]);
359893902eceba7f01dd1521349d33866f77254d78Jordan Rose    EXPECT_EQ((unsigned)CHAR_UPPER, InfoTable[i+'A'-'a']);
369893902eceba7f01dd1521349d33866f77254d78Jordan Rose  }
379893902eceba7f01dd1521349d33866f77254d78Jordan Rose
389893902eceba7f01dd1521349d33866f77254d78Jordan Rose  for (unsigned i = '0'; i <= '9'; ++i)
399893902eceba7f01dd1521349d33866f77254d78Jordan Rose    EXPECT_EQ((unsigned)CHAR_DIGIT, InfoTable[i]);
409893902eceba7f01dd1521349d33866f77254d78Jordan Rose}
419893902eceba7f01dd1521349d33866f77254d78Jordan Rose
429893902eceba7f01dd1521349d33866f77254d78Jordan Rose// Check various predicates.
439893902eceba7f01dd1521349d33866f77254d78Jordan RoseTEST(CharInfoTest, isASCII) {
449893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_TRUE(isASCII('\0'));
459893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_TRUE(isASCII('\n'));
469893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_TRUE(isASCII(' '));
479893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_TRUE(isASCII('a'));
489893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_TRUE(isASCII('\x7f'));
499893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isASCII('\x80'));
509893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isASCII('\xc2'));
519893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isASCII('\xff'));
529893902eceba7f01dd1521349d33866f77254d78Jordan Rose}
539893902eceba7f01dd1521349d33866f77254d78Jordan Rose
549893902eceba7f01dd1521349d33866f77254d78Jordan RoseTEST(CharInfoTest, isIdentifierHead) {
559893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_TRUE(isIdentifierHead('a'));
569893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_TRUE(isIdentifierHead('A'));
579893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_TRUE(isIdentifierHead('z'));
589893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_TRUE(isIdentifierHead('Z'));
599893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_TRUE(isIdentifierHead('_'));
609893902eceba7f01dd1521349d33866f77254d78Jordan Rose
619893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isIdentifierHead('0'));
629893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isIdentifierHead('.'));
639893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isIdentifierHead('`'));
649893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isIdentifierHead('\0'));
659893902eceba7f01dd1521349d33866f77254d78Jordan Rose
669893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isIdentifierHead('$'));
679893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_TRUE(isIdentifierHead('$', /*AllowDollar=*/true));
689893902eceba7f01dd1521349d33866f77254d78Jordan Rose
699893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isIdentifierHead('\x80'));
709893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isIdentifierHead('\xc2'));
719893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isIdentifierHead('\xff'));
729893902eceba7f01dd1521349d33866f77254d78Jordan Rose}
739893902eceba7f01dd1521349d33866f77254d78Jordan Rose
749893902eceba7f01dd1521349d33866f77254d78Jordan RoseTEST(CharInfoTest, isIdentifierBody) {
759893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_TRUE(isIdentifierBody('a'));
769893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_TRUE(isIdentifierBody('A'));
779893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_TRUE(isIdentifierBody('z'));
789893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_TRUE(isIdentifierBody('Z'));
799893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_TRUE(isIdentifierBody('_'));
809893902eceba7f01dd1521349d33866f77254d78Jordan Rose
819893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_TRUE(isIdentifierBody('0'));
829893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isIdentifierBody('.'));
839893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isIdentifierBody('`'));
849893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isIdentifierBody('\0'));
859893902eceba7f01dd1521349d33866f77254d78Jordan Rose
869893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isIdentifierBody('$'));
879893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_TRUE(isIdentifierBody('$', /*AllowDollar=*/true));
889893902eceba7f01dd1521349d33866f77254d78Jordan Rose
899893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isIdentifierBody('\x80'));
909893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isIdentifierBody('\xc2'));
919893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isIdentifierBody('\xff'));
929893902eceba7f01dd1521349d33866f77254d78Jordan Rose}
939893902eceba7f01dd1521349d33866f77254d78Jordan Rose
949893902eceba7f01dd1521349d33866f77254d78Jordan RoseTEST(CharInfoTest, isHorizontalWhitespace) {
959893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isHorizontalWhitespace('a'));
969893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isHorizontalWhitespace('_'));
979893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isHorizontalWhitespace('0'));
989893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isHorizontalWhitespace('.'));
999893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isHorizontalWhitespace('`'));
1009893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isHorizontalWhitespace('\0'));
1019893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isHorizontalWhitespace('\x7f'));
1029893902eceba7f01dd1521349d33866f77254d78Jordan Rose
1039893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_TRUE(isHorizontalWhitespace(' '));
1049893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_TRUE(isHorizontalWhitespace('\t'));
1059893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_TRUE(isHorizontalWhitespace('\f')); // ??
1069893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_TRUE(isHorizontalWhitespace('\v')); // ??
1079893902eceba7f01dd1521349d33866f77254d78Jordan Rose
1089893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isHorizontalWhitespace('\n'));
1099893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isHorizontalWhitespace('\r'));
1109893902eceba7f01dd1521349d33866f77254d78Jordan Rose
1119893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isHorizontalWhitespace('\x80'));
1129893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isHorizontalWhitespace('\xc2'));
1139893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isHorizontalWhitespace('\xff'));
1149893902eceba7f01dd1521349d33866f77254d78Jordan Rose}
1159893902eceba7f01dd1521349d33866f77254d78Jordan Rose
1169893902eceba7f01dd1521349d33866f77254d78Jordan RoseTEST(CharInfoTest, isVerticalWhitespace) {
1179893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isVerticalWhitespace('a'));
1189893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isVerticalWhitespace('_'));
1199893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isVerticalWhitespace('0'));
1209893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isVerticalWhitespace('.'));
1219893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isVerticalWhitespace('`'));
1229893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isVerticalWhitespace('\0'));
1239893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isVerticalWhitespace('\x7f'));
1249893902eceba7f01dd1521349d33866f77254d78Jordan Rose
1259893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isVerticalWhitespace(' '));
1269893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isVerticalWhitespace('\t'));
1279893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isVerticalWhitespace('\f')); // ??
1289893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isVerticalWhitespace('\v')); // ??
1299893902eceba7f01dd1521349d33866f77254d78Jordan Rose
1309893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_TRUE(isVerticalWhitespace('\n'));
1319893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_TRUE(isVerticalWhitespace('\r'));
1329893902eceba7f01dd1521349d33866f77254d78Jordan Rose
1339893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isVerticalWhitespace('\x80'));
1349893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isVerticalWhitespace('\xc2'));
1359893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isVerticalWhitespace('\xff'));
1369893902eceba7f01dd1521349d33866f77254d78Jordan Rose}
1379893902eceba7f01dd1521349d33866f77254d78Jordan Rose
1389893902eceba7f01dd1521349d33866f77254d78Jordan RoseTEST(CharInfoTest, isWhitespace) {
1399893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isWhitespace('a'));
1409893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isWhitespace('_'));
1419893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isWhitespace('0'));
1429893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isWhitespace('.'));
1439893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isWhitespace('`'));
1449893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isWhitespace('\0'));
1459893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isWhitespace('\x7f'));
1469893902eceba7f01dd1521349d33866f77254d78Jordan Rose
1479893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_TRUE(isWhitespace(' '));
1489893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_TRUE(isWhitespace('\t'));
1499893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_TRUE(isWhitespace('\f'));
1509893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_TRUE(isWhitespace('\v'));
1519893902eceba7f01dd1521349d33866f77254d78Jordan Rose
1529893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_TRUE(isWhitespace('\n'));
1539893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_TRUE(isWhitespace('\r'));
1549893902eceba7f01dd1521349d33866f77254d78Jordan Rose
1559893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isWhitespace('\x80'));
1569893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isWhitespace('\xc2'));
1579893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isWhitespace('\xff'));
1589893902eceba7f01dd1521349d33866f77254d78Jordan Rose}
1599893902eceba7f01dd1521349d33866f77254d78Jordan Rose
1609893902eceba7f01dd1521349d33866f77254d78Jordan RoseTEST(CharInfoTest, isDigit) {
1619893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_TRUE(isDigit('0'));
1629893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_TRUE(isDigit('9'));
1639893902eceba7f01dd1521349d33866f77254d78Jordan Rose
1649893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isDigit('a'));
1659893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isDigit('A'));
1669893902eceba7f01dd1521349d33866f77254d78Jordan Rose
1679893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isDigit('z'));
1689893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isDigit('Z'));
1699893902eceba7f01dd1521349d33866f77254d78Jordan Rose
1709893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isDigit('.'));
1719893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isDigit('_'));
1729893902eceba7f01dd1521349d33866f77254d78Jordan Rose
1739893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isDigit('/'));
1749893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isDigit('\0'));
1759893902eceba7f01dd1521349d33866f77254d78Jordan Rose
1769893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isDigit('\x80'));
1779893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isDigit('\xc2'));
1789893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isDigit('\xff'));
1799893902eceba7f01dd1521349d33866f77254d78Jordan Rose}
1809893902eceba7f01dd1521349d33866f77254d78Jordan Rose
1819893902eceba7f01dd1521349d33866f77254d78Jordan RoseTEST(CharInfoTest, isHexDigit) {
1829893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_TRUE(isHexDigit('0'));
1839893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_TRUE(isHexDigit('9'));
1849893902eceba7f01dd1521349d33866f77254d78Jordan Rose
1859893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_TRUE(isHexDigit('a'));
1869893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_TRUE(isHexDigit('A'));
1879893902eceba7f01dd1521349d33866f77254d78Jordan Rose
1889893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isHexDigit('z'));
1899893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isHexDigit('Z'));
1909893902eceba7f01dd1521349d33866f77254d78Jordan Rose
1919893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isHexDigit('.'));
1929893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isHexDigit('_'));
1939893902eceba7f01dd1521349d33866f77254d78Jordan Rose
1949893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isHexDigit('/'));
1959893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isHexDigit('\0'));
1969893902eceba7f01dd1521349d33866f77254d78Jordan Rose
1979893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isHexDigit('\x80'));
1989893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isHexDigit('\xc2'));
1999893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isHexDigit('\xff'));
2009893902eceba7f01dd1521349d33866f77254d78Jordan Rose}
2019893902eceba7f01dd1521349d33866f77254d78Jordan Rose
2029893902eceba7f01dd1521349d33866f77254d78Jordan RoseTEST(CharInfoTest, isLetter) {
2039893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isLetter('0'));
2049893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isLetter('9'));
2059893902eceba7f01dd1521349d33866f77254d78Jordan Rose
2069893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_TRUE(isLetter('a'));
2079893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_TRUE(isLetter('A'));
2089893902eceba7f01dd1521349d33866f77254d78Jordan Rose
2099893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_TRUE(isLetter('z'));
2109893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_TRUE(isLetter('Z'));
2119893902eceba7f01dd1521349d33866f77254d78Jordan Rose
2129893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isLetter('.'));
2139893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isLetter('_'));
2149893902eceba7f01dd1521349d33866f77254d78Jordan Rose
2159893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isLetter('/'));
2169893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isLetter('('));
2179893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isLetter('\0'));
2189893902eceba7f01dd1521349d33866f77254d78Jordan Rose
2199893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isLetter('\x80'));
2209893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isLetter('\xc2'));
2219893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isLetter('\xff'));
2229893902eceba7f01dd1521349d33866f77254d78Jordan Rose}
2239893902eceba7f01dd1521349d33866f77254d78Jordan Rose
2249893902eceba7f01dd1521349d33866f77254d78Jordan RoseTEST(CharInfoTest, isLowercase) {
2259893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isLowercase('0'));
2269893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isLowercase('9'));
2279893902eceba7f01dd1521349d33866f77254d78Jordan Rose
2289893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_TRUE(isLowercase('a'));
2299893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isLowercase('A'));
2309893902eceba7f01dd1521349d33866f77254d78Jordan Rose
2319893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_TRUE(isLowercase('z'));
2329893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isLowercase('Z'));
2339893902eceba7f01dd1521349d33866f77254d78Jordan Rose
2349893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isLowercase('.'));
2359893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isLowercase('_'));
2369893902eceba7f01dd1521349d33866f77254d78Jordan Rose
2379893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isLowercase('/'));
2389893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isLowercase('('));
2399893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isLowercase('\0'));
2409893902eceba7f01dd1521349d33866f77254d78Jordan Rose
2419893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isLowercase('\x80'));
2429893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isLowercase('\xc2'));
2439893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isLowercase('\xff'));
2449893902eceba7f01dd1521349d33866f77254d78Jordan Rose}
2459893902eceba7f01dd1521349d33866f77254d78Jordan Rose
2469893902eceba7f01dd1521349d33866f77254d78Jordan RoseTEST(CharInfoTest, isUppercase) {
2479893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isUppercase('0'));
2489893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isUppercase('9'));
2499893902eceba7f01dd1521349d33866f77254d78Jordan Rose
2509893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isUppercase('a'));
2519893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_TRUE(isUppercase('A'));
2529893902eceba7f01dd1521349d33866f77254d78Jordan Rose
2539893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isUppercase('z'));
2549893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_TRUE(isUppercase('Z'));
2559893902eceba7f01dd1521349d33866f77254d78Jordan Rose
2569893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isUppercase('.'));
2579893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isUppercase('_'));
2589893902eceba7f01dd1521349d33866f77254d78Jordan Rose
2599893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isUppercase('/'));
2609893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isUppercase('('));
2619893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isUppercase('\0'));
2629893902eceba7f01dd1521349d33866f77254d78Jordan Rose
2639893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isUppercase('\x80'));
2649893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isUppercase('\xc2'));
2659893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isUppercase('\xff'));
2669893902eceba7f01dd1521349d33866f77254d78Jordan Rose}
2679893902eceba7f01dd1521349d33866f77254d78Jordan Rose
2689893902eceba7f01dd1521349d33866f77254d78Jordan RoseTEST(CharInfoTest, isAlphanumeric) {
2699893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_TRUE(isAlphanumeric('0'));
2709893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_TRUE(isAlphanumeric('9'));
2719893902eceba7f01dd1521349d33866f77254d78Jordan Rose
2729893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_TRUE(isAlphanumeric('a'));
2739893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_TRUE(isAlphanumeric('A'));
2749893902eceba7f01dd1521349d33866f77254d78Jordan Rose
2759893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_TRUE(isAlphanumeric('z'));
2769893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_TRUE(isAlphanumeric('Z'));
2779893902eceba7f01dd1521349d33866f77254d78Jordan Rose
2789893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isAlphanumeric('.'));
2799893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isAlphanumeric('_'));
2809893902eceba7f01dd1521349d33866f77254d78Jordan Rose
2819893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isAlphanumeric('/'));
2829893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isAlphanumeric('('));
2839893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isAlphanumeric('\0'));
2849893902eceba7f01dd1521349d33866f77254d78Jordan Rose
2859893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isAlphanumeric('\x80'));
2869893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isAlphanumeric('\xc2'));
2879893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isAlphanumeric('\xff'));
2889893902eceba7f01dd1521349d33866f77254d78Jordan Rose}
2899893902eceba7f01dd1521349d33866f77254d78Jordan Rose
2909893902eceba7f01dd1521349d33866f77254d78Jordan RoseTEST(CharInfoTest, isPunctuation) {
2919893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isPunctuation('0'));
2929893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isPunctuation('9'));
2939893902eceba7f01dd1521349d33866f77254d78Jordan Rose
2949893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isPunctuation('a'));
2959893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isPunctuation('A'));
2969893902eceba7f01dd1521349d33866f77254d78Jordan Rose
2979893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isPunctuation('z'));
2989893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isPunctuation('Z'));
2999893902eceba7f01dd1521349d33866f77254d78Jordan Rose
3009893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_TRUE(isPunctuation('.'));
3019893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_TRUE(isPunctuation('_'));
3029893902eceba7f01dd1521349d33866f77254d78Jordan Rose
3039893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_TRUE(isPunctuation('/'));
3049893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_TRUE(isPunctuation('('));
3059893902eceba7f01dd1521349d33866f77254d78Jordan Rose
3069893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isPunctuation(' '));
3079893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isPunctuation('\n'));
3089893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isPunctuation('\0'));
3099893902eceba7f01dd1521349d33866f77254d78Jordan Rose
3109893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isPunctuation('\x80'));
3119893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isPunctuation('\xc2'));
3129893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isPunctuation('\xff'));
3139893902eceba7f01dd1521349d33866f77254d78Jordan Rose}
3149893902eceba7f01dd1521349d33866f77254d78Jordan Rose
3159893902eceba7f01dd1521349d33866f77254d78Jordan RoseTEST(CharInfoTest, isPrintable) {
3169893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_TRUE(isPrintable('0'));
3179893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_TRUE(isPrintable('9'));
3189893902eceba7f01dd1521349d33866f77254d78Jordan Rose
3199893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_TRUE(isPrintable('a'));
3209893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_TRUE(isPrintable('A'));
3219893902eceba7f01dd1521349d33866f77254d78Jordan Rose
3229893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_TRUE(isPrintable('z'));
3239893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_TRUE(isPrintable('Z'));
3249893902eceba7f01dd1521349d33866f77254d78Jordan Rose
3259893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_TRUE(isPrintable('.'));
3269893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_TRUE(isPrintable('_'));
3279893902eceba7f01dd1521349d33866f77254d78Jordan Rose
3289893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_TRUE(isPrintable('/'));
3299893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_TRUE(isPrintable('('));
3309893902eceba7f01dd1521349d33866f77254d78Jordan Rose
3319893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_TRUE(isPrintable(' '));
3329893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isPrintable('\t'));
3339893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isPrintable('\n'));
3349893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isPrintable('\0'));
3359893902eceba7f01dd1521349d33866f77254d78Jordan Rose
3369893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isPrintable('\x80'));
3379893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isPrintable('\xc2'));
3389893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isPrintable('\xff'));
3399893902eceba7f01dd1521349d33866f77254d78Jordan Rose}
3409893902eceba7f01dd1521349d33866f77254d78Jordan Rose
3419893902eceba7f01dd1521349d33866f77254d78Jordan RoseTEST(CharInfoTest, isPreprocessingNumberBody) {
3429893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_TRUE(isPreprocessingNumberBody('0'));
3439893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_TRUE(isPreprocessingNumberBody('9'));
3449893902eceba7f01dd1521349d33866f77254d78Jordan Rose
3459893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_TRUE(isPreprocessingNumberBody('a'));
3469893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_TRUE(isPreprocessingNumberBody('A'));
3479893902eceba7f01dd1521349d33866f77254d78Jordan Rose
3489893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_TRUE(isPreprocessingNumberBody('z'));
3499893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_TRUE(isPreprocessingNumberBody('Z'));
3509893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_TRUE(isPreprocessingNumberBody('.'));
3519893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_TRUE(isPreprocessingNumberBody('_'));
3529893902eceba7f01dd1521349d33866f77254d78Jordan Rose
3539893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isPreprocessingNumberBody('/'));
3549893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isPreprocessingNumberBody('('));
3559893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isPreprocessingNumberBody('\0'));
3569893902eceba7f01dd1521349d33866f77254d78Jordan Rose
3579893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isPreprocessingNumberBody('\x80'));
3589893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isPreprocessingNumberBody('\xc2'));
3599893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isPreprocessingNumberBody('\xff'));
3609893902eceba7f01dd1521349d33866f77254d78Jordan Rose}
3619893902eceba7f01dd1521349d33866f77254d78Jordan Rose
3629893902eceba7f01dd1521349d33866f77254d78Jordan RoseTEST(CharInfoTest, isRawStringDelimBody) {
3639893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_TRUE(isRawStringDelimBody('0'));
3649893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_TRUE(isRawStringDelimBody('9'));
3659893902eceba7f01dd1521349d33866f77254d78Jordan Rose
3669893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_TRUE(isRawStringDelimBody('a'));
3679893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_TRUE(isRawStringDelimBody('A'));
3689893902eceba7f01dd1521349d33866f77254d78Jordan Rose
3699893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_TRUE(isRawStringDelimBody('z'));
3709893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_TRUE(isRawStringDelimBody('Z'));
3719893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_TRUE(isRawStringDelimBody('.'));
3729893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_TRUE(isRawStringDelimBody('_'));
3739893902eceba7f01dd1521349d33866f77254d78Jordan Rose
3749893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_TRUE(isRawStringDelimBody('/'));
3759893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isRawStringDelimBody('('));
3769893902eceba7f01dd1521349d33866f77254d78Jordan Rose  EXPECT_FALSE(isRawStringDelimBody('\0'));
3773f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan Rose
3783f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan Rose  EXPECT_FALSE(isRawStringDelimBody('\x80'));
3793f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan Rose  EXPECT_FALSE(isRawStringDelimBody('\xc2'));
3803f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan Rose  EXPECT_FALSE(isRawStringDelimBody('\xff'));
3813f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan Rose}
3823f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan Rose
3833f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan RoseTEST(CharInfoTest, toLowercase) {
3843f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan Rose  EXPECT_EQ('0', toLowercase('0'));
3853f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan Rose  EXPECT_EQ('9', toLowercase('9'));
3863f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan Rose
3873f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan Rose  EXPECT_EQ('a', toLowercase('a'));
3883f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan Rose  EXPECT_EQ('a', toLowercase('A'));
3893f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan Rose
3903f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan Rose  EXPECT_EQ('z', toLowercase('z'));
3913f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan Rose  EXPECT_EQ('z', toLowercase('Z'));
3923f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan Rose
3933f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan Rose  EXPECT_EQ('.', toLowercase('.'));
3943f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan Rose  EXPECT_EQ('_', toLowercase('_'));
3953f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan Rose
3963f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan Rose  EXPECT_EQ('/', toLowercase('/'));
3973f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan Rose  EXPECT_EQ('\0', toLowercase('\0'));
3983f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan Rose}
3993f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan Rose
4003f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan RoseTEST(CharInfoTest, toUppercase) {
4013f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan Rose  EXPECT_EQ('0', toUppercase('0'));
4023f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan Rose  EXPECT_EQ('9', toUppercase('9'));
4033f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan Rose
4043f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan Rose  EXPECT_EQ('A', toUppercase('a'));
4053f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan Rose  EXPECT_EQ('A', toUppercase('A'));
4063f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan Rose
4073f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan Rose  EXPECT_EQ('Z', toUppercase('z'));
4083f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan Rose  EXPECT_EQ('Z', toUppercase('Z'));
4093f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan Rose
4103f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan Rose  EXPECT_EQ('.', toUppercase('.'));
4113f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan Rose  EXPECT_EQ('_', toUppercase('_'));
4123f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan Rose
4133f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan Rose  EXPECT_EQ('/', toUppercase('/'));
4143f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan Rose  EXPECT_EQ('\0', toUppercase('\0'));
4153f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan Rose}
4163f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan Rose
4173f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan RoseTEST(CharInfoTest, isValidIdentifier) {
4183f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan Rose  EXPECT_FALSE(isValidIdentifier(""));
4193f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan Rose
4203f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan Rose  // 1 character
4213f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan Rose  EXPECT_FALSE(isValidIdentifier("."));
4223f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan Rose  EXPECT_FALSE(isValidIdentifier("\n"));
4233f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan Rose  EXPECT_FALSE(isValidIdentifier(" "));
4243f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan Rose  EXPECT_FALSE(isValidIdentifier("\x80"));
4253f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan Rose  EXPECT_FALSE(isValidIdentifier("\xc2"));
4263f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan Rose  EXPECT_FALSE(isValidIdentifier("\xff"));
4273f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan Rose  EXPECT_FALSE(isValidIdentifier("$"));
4283f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan Rose  EXPECT_FALSE(isValidIdentifier("1"));
4293f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan Rose
4303f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan Rose  EXPECT_TRUE(isValidIdentifier("_"));
4313f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan Rose  EXPECT_TRUE(isValidIdentifier("a"));
4323f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan Rose  EXPECT_TRUE(isValidIdentifier("z"));
4333f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan Rose  EXPECT_TRUE(isValidIdentifier("A"));
4343f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan Rose  EXPECT_TRUE(isValidIdentifier("Z"));
4353f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan Rose
4363f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan Rose  // 2 characters, '_' suffix
4373f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan Rose  EXPECT_FALSE(isValidIdentifier("._"));
4383f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan Rose  EXPECT_FALSE(isValidIdentifier("\n_"));
4393f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan Rose  EXPECT_FALSE(isValidIdentifier(" _"));
4403f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan Rose  EXPECT_FALSE(isValidIdentifier("\x80_"));
4413f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan Rose  EXPECT_FALSE(isValidIdentifier("\xc2_"));
4423f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan Rose  EXPECT_FALSE(isValidIdentifier("\xff_"));
4433f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan Rose  EXPECT_FALSE(isValidIdentifier("$_"));
4443f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan Rose  EXPECT_FALSE(isValidIdentifier("1_"));
4453f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan Rose
4463f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan Rose  EXPECT_TRUE(isValidIdentifier("__"));
4473f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan Rose  EXPECT_TRUE(isValidIdentifier("a_"));
4483f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan Rose  EXPECT_TRUE(isValidIdentifier("z_"));
4493f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan Rose  EXPECT_TRUE(isValidIdentifier("A_"));
4503f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan Rose  EXPECT_TRUE(isValidIdentifier("Z_"));
4513f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan Rose
4523f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan Rose  // 2 characters, '_' prefix
4533f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan Rose  EXPECT_FALSE(isValidIdentifier("_."));
4543f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan Rose  EXPECT_FALSE(isValidIdentifier("_\n"));
4553f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan Rose  EXPECT_FALSE(isValidIdentifier("_ "));
4563f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan Rose  EXPECT_FALSE(isValidIdentifier("_\x80"));
4573f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan Rose  EXPECT_FALSE(isValidIdentifier("_\xc2"));
4583f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan Rose  EXPECT_FALSE(isValidIdentifier("_\xff"));
4593f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan Rose  EXPECT_FALSE(isValidIdentifier("_$"));
4603f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan Rose  EXPECT_TRUE(isValidIdentifier("_1"));
4613f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan Rose
4623f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan Rose  EXPECT_TRUE(isValidIdentifier("__"));
4633f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan Rose  EXPECT_TRUE(isValidIdentifier("_a"));
4643f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan Rose  EXPECT_TRUE(isValidIdentifier("_z"));
4653f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan Rose  EXPECT_TRUE(isValidIdentifier("_A"));
4663f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan Rose  EXPECT_TRUE(isValidIdentifier("_Z"));
4673f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan Rose
4683f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan Rose  // 3 characters, '__' prefix
4693f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan Rose  EXPECT_FALSE(isValidIdentifier("__."));
4703f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan Rose  EXPECT_FALSE(isValidIdentifier("__\n"));
4713f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan Rose  EXPECT_FALSE(isValidIdentifier("__ "));
4723f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan Rose  EXPECT_FALSE(isValidIdentifier("__\x80"));
4733f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan Rose  EXPECT_FALSE(isValidIdentifier("__\xc2"));
4743f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan Rose  EXPECT_FALSE(isValidIdentifier("__\xff"));
4753f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan Rose  EXPECT_FALSE(isValidIdentifier("__$"));
4763f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan Rose  EXPECT_TRUE(isValidIdentifier("__1"));
4773f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan Rose
4783f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan Rose  EXPECT_TRUE(isValidIdentifier("___"));
4793f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan Rose  EXPECT_TRUE(isValidIdentifier("__a"));
4803f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan Rose  EXPECT_TRUE(isValidIdentifier("__z"));
4813f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan Rose  EXPECT_TRUE(isValidIdentifier("__A"));
4823f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan Rose  EXPECT_TRUE(isValidIdentifier("__Z"));
4833f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan Rose
4843f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan Rose  // 3 characters, '_' prefix and suffix
4853f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan Rose  EXPECT_FALSE(isValidIdentifier("_._"));
4863f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan Rose  EXPECT_FALSE(isValidIdentifier("_\n_"));
4873f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan Rose  EXPECT_FALSE(isValidIdentifier("_ _"));
4883f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan Rose  EXPECT_FALSE(isValidIdentifier("_\x80_"));
4893f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan Rose  EXPECT_FALSE(isValidIdentifier("_\xc2_"));
4903f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan Rose  EXPECT_FALSE(isValidIdentifier("_\xff_"));
4913f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan Rose  EXPECT_FALSE(isValidIdentifier("_$_"));
4923f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan Rose  EXPECT_TRUE(isValidIdentifier("_1_"));
4933f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan Rose
4943f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan Rose  EXPECT_TRUE(isValidIdentifier("___"));
4953f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan Rose  EXPECT_TRUE(isValidIdentifier("_a_"));
4963f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan Rose  EXPECT_TRUE(isValidIdentifier("_z_"));
4973f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan Rose  EXPECT_TRUE(isValidIdentifier("_A_"));
4983f6f51e28231f65de9c2dd150a2d757b2162cfa3Jordan Rose  EXPECT_TRUE(isValidIdentifier("_Z_"));
4999893902eceba7f01dd1521349d33866f77254d78Jordan Rose}
500