TestTextUtils.cpp (45568B)
1 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ 2 /* vim: set ts=8 sts=2 et sw=2 tw=80: */ 3 /* This Source Code Form is subject to the terms of the Mozilla Public 4 * License, v. 2.0. If a copy of the MPL was not distributed with this file, 5 * You can obtain one at http://mozilla.org/MPL/2.0/. */ 6 7 #include "mozilla/TextUtils.h" 8 9 using mozilla::AsciiAlphanumericToNumber; 10 using mozilla::IsAscii; 11 using mozilla::IsAsciiAlpha; 12 using mozilla::IsAsciiAlphanumeric; 13 using mozilla::IsAsciiDigit; 14 using mozilla::IsAsciiLowercaseAlpha; 15 using mozilla::IsAsciiNullTerminated; 16 using mozilla::IsAsciiUppercaseAlpha; 17 18 static void TestIsAscii() { 19 // char 20 21 static_assert(!IsAscii(char(-1)), "char(-1) isn't ASCII"); 22 23 static_assert(IsAscii('\0'), "nul is ASCII"); 24 25 static_assert(IsAscii('A'), "'A' is ASCII"); 26 static_assert(IsAscii('B'), "'B' is ASCII"); 27 static_assert(IsAscii('M'), "'M' is ASCII"); 28 static_assert(IsAscii('Y'), "'Y' is ASCII"); 29 static_assert(IsAscii('Z'), "'Z' is ASCII"); 30 31 static_assert(IsAscii('['), "'[' is ASCII"); 32 static_assert(IsAscii('`'), "'`' is ASCII"); 33 34 static_assert(IsAscii('a'), "'a' is ASCII"); 35 static_assert(IsAscii('b'), "'b' is ASCII"); 36 static_assert(IsAscii('m'), "'m' is ASCII"); 37 static_assert(IsAscii('y'), "'y' is ASCII"); 38 static_assert(IsAscii('z'), "'z' is ASCII"); 39 40 static_assert(IsAscii('{'), "'{' is ASCII"); 41 42 static_assert(IsAscii('5'), "'5' is ASCII"); 43 44 static_assert(IsAscii('\x7F'), "'\\x7F' is ASCII"); 45 static_assert(!IsAscii('\x80'), "'\\x80' isn't ASCII"); 46 47 // char16_t 48 49 static_assert(!IsAscii(char16_t(-1)), "char16_t(-1) isn't ASCII"); 50 51 static_assert(IsAscii(u'\0'), "nul is ASCII"); 52 53 static_assert(IsAscii(u'A'), "u'A' is ASCII"); 54 static_assert(IsAscii(u'B'), "u'B' is ASCII"); 55 static_assert(IsAscii(u'M'), "u'M' is ASCII"); 56 static_assert(IsAscii(u'Y'), "u'Y' is ASCII"); 57 static_assert(IsAscii(u'Z'), "u'Z' is ASCII"); 58 59 static_assert(IsAscii(u'['), "u'[' is ASCII"); 60 static_assert(IsAscii(u'`'), "u'`' is ASCII"); 61 62 static_assert(IsAscii(u'a'), "u'a' is ASCII"); 63 static_assert(IsAscii(u'b'), "u'b' is ASCII"); 64 static_assert(IsAscii(u'm'), "u'm' is ASCII"); 65 static_assert(IsAscii(u'y'), "u'y' is ASCII"); 66 static_assert(IsAscii(u'z'), "u'z' is ASCII"); 67 68 static_assert(IsAscii(u'{'), "u'{' is ASCII"); 69 70 static_assert(IsAscii(u'5'), "u'5' is ASCII"); 71 72 static_assert(IsAscii(u'\x7F'), "u'\\x7F' is ASCII"); 73 static_assert(!IsAscii(u'\x80'), "u'\\x80' isn't ASCII"); 74 75 // char32_t 76 77 static_assert(!IsAscii(char32_t(-1)), "char32_t(-1) isn't ASCII"); 78 79 static_assert(IsAscii(U'\0'), "nul is ASCII"); 80 81 static_assert(IsAscii(U'A'), "U'A' is ASCII"); 82 static_assert(IsAscii(U'B'), "U'B' is ASCII"); 83 static_assert(IsAscii(U'M'), "U'M' is ASCII"); 84 static_assert(IsAscii(U'Y'), "U'Y' is ASCII"); 85 static_assert(IsAscii(U'Z'), "U'Z' is ASCII"); 86 87 static_assert(IsAscii(U'['), "U'[' is ASCII"); 88 static_assert(IsAscii(U'`'), "U'`' is ASCII"); 89 90 static_assert(IsAscii(U'a'), "U'a' is ASCII"); 91 static_assert(IsAscii(U'b'), "U'b' is ASCII"); 92 static_assert(IsAscii(U'm'), "U'm' is ASCII"); 93 static_assert(IsAscii(U'y'), "U'y' is ASCII"); 94 static_assert(IsAscii(U'z'), "U'z' is ASCII"); 95 96 static_assert(IsAscii(U'{'), "U'{' is ASCII"); 97 98 static_assert(IsAscii(U'5'), "U'5' is ASCII"); 99 100 static_assert(IsAscii(U'\x7F'), "U'\\x7F' is ASCII"); 101 static_assert(!IsAscii(U'\x80'), "U'\\x80' isn't ASCII"); 102 } 103 104 static void TestIsAsciiNullTerminated() { 105 // char 106 107 constexpr char allChar[] = 108 "\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\0x0C\x0D\x0E\x0F" 109 "\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\0x1C\x1D\x1E\x1F" 110 "\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2A\x2B\0x2C\x2D\x2E\x2F" 111 "\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3A\x3B\0x3C\x3D\x3E\x3F" 112 "\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4A\x4B\0x4C\x4D\x4E\x4F" 113 "\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5A\x5B\0x5C\x5D\x5E\x5F" 114 "\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6A\x6B\0x6C\x6D\x6E\x6F" 115 "\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7A\x7B\0x7C\x7D\x7E\x7F"; 116 117 static_assert(IsAsciiNullTerminated(allChar), "allChar is ASCII"); 118 119 constexpr char loBadChar[] = "\x80"; 120 121 static_assert(!IsAsciiNullTerminated(loBadChar), "loBadChar isn't ASCII"); 122 123 constexpr char hiBadChar[] = "\xFF"; 124 125 static_assert(!IsAsciiNullTerminated(hiBadChar), "hiBadChar isn't ASCII"); 126 127 // char16_t 128 129 constexpr char16_t allChar16[] = 130 u"\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\0x0C\x0D\x0E\x0F" 131 "\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\0x1C\x1D\x1E\x1F" 132 "\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2A\x2B\0x2C\x2D\x2E\x2F" 133 "\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3A\x3B\0x3C\x3D\x3E\x3F" 134 "\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4A\x4B\0x4C\x4D\x4E\x4F" 135 "\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5A\x5B\0x5C\x5D\x5E\x5F" 136 "\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6A\x6B\0x6C\x6D\x6E\x6F" 137 "\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7A\x7B\0x7C\x7D\x7E\x7F"; 138 139 static_assert(IsAsciiNullTerminated(allChar16), "allChar16 is ASCII"); 140 141 constexpr char16_t loBadChar16[] = u"\x80"; 142 143 static_assert(!IsAsciiNullTerminated(loBadChar16), "loBadChar16 isn't ASCII"); 144 145 constexpr char16_t hiBadChar16[] = u"\xFF"; 146 147 static_assert(!IsAsciiNullTerminated(hiBadChar16), "hiBadChar16 isn't ASCII"); 148 149 constexpr char16_t highestChar16[] = u"\uFFFF"; 150 151 static_assert(!IsAsciiNullTerminated(highestChar16), 152 "highestChar16 isn't ASCII"); 153 154 // char32_t 155 156 constexpr char32_t allChar32[] = 157 U"\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\0x0C\x0D\x0E\x0F" 158 "\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\0x1C\x1D\x1E\x1F" 159 "\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2A\x2B\0x2C\x2D\x2E\x2F" 160 "\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3A\x3B\0x3C\x3D\x3E\x3F" 161 "\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4A\x4B\0x4C\x4D\x4E\x4F" 162 "\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5A\x5B\0x5C\x5D\x5E\x5F" 163 "\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6A\x6B\0x6C\x6D\x6E\x6F" 164 "\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7A\x7B\0x7C\x7D\x7E\x7F"; 165 166 static_assert(IsAsciiNullTerminated(allChar32), "allChar32 is ASCII"); 167 168 constexpr char32_t loBadChar32[] = U"\x80"; 169 170 static_assert(!IsAsciiNullTerminated(loBadChar32), "loBadChar32 isn't ASCII"); 171 172 constexpr char32_t hiBadChar32[] = U"\xFF"; 173 174 static_assert(!IsAsciiNullTerminated(hiBadChar32), "hiBadChar32 isn't ASCII"); 175 176 constexpr char32_t highestChar32[] = {static_cast<char32_t>(-1), 0}; 177 178 static_assert(!IsAsciiNullTerminated(highestChar32), 179 "highestChar32 isn't ASCII"); 180 } 181 182 static void TestIsAsciiAlpha() { 183 // char 184 185 static_assert(!IsAsciiAlpha('@'), "'@' isn't ASCII alpha"); 186 static_assert('@' == 0x40, "'@' has value 0x40"); 187 188 static_assert('A' == 0x41, "'A' has value 0x41"); 189 static_assert(IsAsciiAlpha('A'), "'A' is ASCII alpha"); 190 static_assert(IsAsciiAlpha('B'), "'B' is ASCII alpha"); 191 static_assert(IsAsciiAlpha('M'), "'M' is ASCII alpha"); 192 static_assert(IsAsciiAlpha('Y'), "'Y' is ASCII alpha"); 193 static_assert(IsAsciiAlpha('Z'), "'Z' is ASCII alpha"); 194 195 static_assert('Z' == 0x5A, "'Z' has value 0x5A"); 196 static_assert('[' == 0x5B, "'[' has value 0x5B"); 197 static_assert(!IsAsciiAlpha('['), "'[' isn't ASCII alpha"); 198 199 static_assert(!IsAsciiAlpha('`'), "'`' isn't ASCII alpha"); 200 static_assert('`' == 0x60, "'`' has value 0x60"); 201 202 static_assert('a' == 0x61, "'a' has value 0x61"); 203 static_assert(IsAsciiAlpha('a'), "'a' is ASCII alpha"); 204 static_assert(IsAsciiAlpha('b'), "'b' is ASCII alpha"); 205 static_assert(IsAsciiAlpha('m'), "'m' is ASCII alpha"); 206 static_assert(IsAsciiAlpha('y'), "'y' is ASCII alpha"); 207 static_assert(IsAsciiAlpha('z'), "'z' is ASCII alpha"); 208 209 static_assert('z' == 0x7A, "'z' has value 0x7A"); 210 static_assert('{' == 0x7B, "'{' has value 0x7B"); 211 static_assert(!IsAsciiAlpha('{'), "'{' isn't ASCII alpha"); 212 213 static_assert(!IsAsciiAlpha('5'), "'5' isn't ASCII alpha"); 214 215 // char16_t 216 217 static_assert(!IsAsciiAlpha(u'@'), "u'@' isn't ASCII alpha"); 218 static_assert(u'@' == 0x40, "u'@' has value 0x40"); 219 220 static_assert(u'A' == 0x41, "u'A' has value 0x41"); 221 static_assert(IsAsciiAlpha(u'A'), "u'A' is ASCII alpha"); 222 static_assert(IsAsciiAlpha(u'B'), "u'B' is ASCII alpha"); 223 static_assert(IsAsciiAlpha(u'M'), "u'M' is ASCII alpha"); 224 static_assert(IsAsciiAlpha(u'Y'), "u'Y' is ASCII alpha"); 225 static_assert(IsAsciiAlpha(u'Z'), "u'Z' is ASCII alpha"); 226 227 static_assert(u'Z' == 0x5A, "u'Z' has value 0x5A"); 228 static_assert(u'[' == 0x5B, "u'[' has value 0x5B"); 229 static_assert(!IsAsciiAlpha(u'['), "u'[' isn't ASCII alpha"); 230 231 static_assert(!IsAsciiAlpha(u'`'), "u'`' isn't ASCII alpha"); 232 static_assert(u'`' == 0x60, "u'`' has value 0x60"); 233 234 static_assert(u'a' == 0x61, "u'a' has value 0x61"); 235 static_assert(IsAsciiAlpha(u'a'), "u'a' is ASCII alpha"); 236 static_assert(IsAsciiAlpha(u'b'), "u'b' is ASCII alpha"); 237 static_assert(IsAsciiAlpha(u'm'), "u'm' is ASCII alpha"); 238 static_assert(IsAsciiAlpha(u'y'), "u'y' is ASCII alpha"); 239 static_assert(IsAsciiAlpha(u'z'), "u'z' is ASCII alpha"); 240 241 static_assert(u'z' == 0x7A, "u'z' has value 0x7A"); 242 static_assert(u'{' == 0x7B, "u'{' has value 0x7B"); 243 static_assert(!IsAsciiAlpha(u'{'), "u'{' isn't ASCII alpha"); 244 245 static_assert(!IsAsciiAlpha(u'5'), "u'5' isn't ASCII alpha"); 246 247 // char32_t 248 249 static_assert(!IsAsciiAlpha(U'@'), "U'@' isn't ASCII alpha"); 250 static_assert(U'@' == 0x40, "U'@' has value 0x40"); 251 252 static_assert(U'A' == 0x41, "U'A' has value 0x41"); 253 static_assert(IsAsciiAlpha(U'A'), "U'A' is ASCII alpha"); 254 static_assert(IsAsciiAlpha(U'B'), "U'B' is ASCII alpha"); 255 static_assert(IsAsciiAlpha(U'M'), "U'M' is ASCII alpha"); 256 static_assert(IsAsciiAlpha(U'Y'), "U'Y' is ASCII alpha"); 257 static_assert(IsAsciiAlpha(U'Z'), "U'Z' is ASCII alpha"); 258 259 static_assert(U'Z' == 0x5A, "U'Z' has value 0x5A"); 260 static_assert(U'[' == 0x5B, "U'[' has value 0x5B"); 261 static_assert(!IsAsciiAlpha(U'['), "U'[' isn't ASCII alpha"); 262 263 static_assert(!IsAsciiAlpha(U'`'), "U'`' isn't ASCII alpha"); 264 static_assert(U'`' == 0x60, "U'`' has value 0x60"); 265 266 static_assert(U'a' == 0x61, "U'a' has value 0x61"); 267 static_assert(IsAsciiAlpha(U'a'), "U'a' is ASCII alpha"); 268 static_assert(IsAsciiAlpha(U'b'), "U'b' is ASCII alpha"); 269 static_assert(IsAsciiAlpha(U'm'), "U'm' is ASCII alpha"); 270 static_assert(IsAsciiAlpha(U'y'), "U'y' is ASCII alpha"); 271 static_assert(IsAsciiAlpha(U'z'), "U'z' is ASCII alpha"); 272 273 static_assert(U'z' == 0x7A, "U'z' has value 0x7A"); 274 static_assert(U'{' == 0x7B, "U'{' has value 0x7B"); 275 static_assert(!IsAsciiAlpha(U'{'), "U'{' isn't ASCII alpha"); 276 277 static_assert(!IsAsciiAlpha(U'5'), "U'5' isn't ASCII alpha"); 278 } 279 280 static void TestIsAsciiUppercaseAlpha() { 281 // char 282 283 static_assert(!IsAsciiUppercaseAlpha('@'), "'@' isn't ASCII alpha uppercase"); 284 static_assert('@' == 0x40, "'@' has value 0x40"); 285 286 static_assert('A' == 0x41, "'A' has value 0x41"); 287 static_assert(IsAsciiUppercaseAlpha('A'), "'A' is ASCII alpha uppercase"); 288 static_assert(IsAsciiUppercaseAlpha('B'), "'B' is ASCII alpha uppercase"); 289 static_assert(IsAsciiUppercaseAlpha('M'), "'M' is ASCII alpha uppercase"); 290 static_assert(IsAsciiUppercaseAlpha('Y'), "'Y' is ASCII alpha uppercase"); 291 static_assert(IsAsciiUppercaseAlpha('Z'), "'Z' is ASCII alpha uppercase"); 292 293 static_assert('Z' == 0x5A, "'Z' has value 0x5A"); 294 static_assert('[' == 0x5B, "'[' has value 0x5B"); 295 static_assert(!IsAsciiUppercaseAlpha('['), "'[' isn't ASCII alpha uppercase"); 296 297 static_assert(!IsAsciiUppercaseAlpha('`'), "'`' isn't ASCII alpha uppercase"); 298 static_assert(!IsAsciiUppercaseAlpha('a'), "'a' is ASCII alpha uppercase"); 299 static_assert(!IsAsciiUppercaseAlpha('b'), "'b' is ASCII alpha uppercase"); 300 static_assert(!IsAsciiUppercaseAlpha('m'), "'m' is ASCII alpha uppercase"); 301 static_assert(!IsAsciiUppercaseAlpha('y'), "'y' is ASCII alpha uppercase"); 302 static_assert(!IsAsciiUppercaseAlpha('z'), "'z' is ASCII alpha uppercase"); 303 static_assert(!IsAsciiUppercaseAlpha('{'), "'{' isn't ASCII alpha uppercase"); 304 305 // char16_t 306 307 static_assert(!IsAsciiUppercaseAlpha(u'@'), 308 "u'@' isn't ASCII alpha uppercase"); 309 static_assert(u'@' == 0x40, "u'@' has value 0x40"); 310 311 static_assert(u'A' == 0x41, "u'A' has value 0x41"); 312 static_assert(IsAsciiUppercaseAlpha(u'A'), "u'A' is ASCII alpha uppercase"); 313 static_assert(IsAsciiUppercaseAlpha(u'B'), "u'B' is ASCII alpha uppercase"); 314 static_assert(IsAsciiUppercaseAlpha(u'M'), "u'M' is ASCII alpha uppercase"); 315 static_assert(IsAsciiUppercaseAlpha(u'Y'), "u'Y' is ASCII alpha uppercase"); 316 static_assert(IsAsciiUppercaseAlpha(u'Z'), "u'Z' is ASCII alpha uppercase"); 317 318 static_assert(u'Z' == 0x5A, "u'Z' has value 0x5A"); 319 static_assert(u'[' == 0x5B, "u'[' has value 0x5B"); 320 static_assert(!IsAsciiUppercaseAlpha(u'['), 321 "u'[' isn't ASCII alpha uppercase"); 322 323 static_assert(!IsAsciiUppercaseAlpha(u'`'), 324 "u'`' isn't ASCII alpha uppercase"); 325 static_assert(!IsAsciiUppercaseAlpha(u'a'), "u'a' is ASCII alpha uppercase"); 326 static_assert(!IsAsciiUppercaseAlpha(u'b'), "u'b' is ASCII alpha uppercase"); 327 static_assert(!IsAsciiUppercaseAlpha(u'm'), "u'm' is ASCII alpha uppercase"); 328 static_assert(!IsAsciiUppercaseAlpha(u'y'), "u'y' is ASCII alpha uppercase"); 329 static_assert(!IsAsciiUppercaseAlpha(u'z'), "u'z' is ASCII alpha uppercase"); 330 static_assert(!IsAsciiUppercaseAlpha(u'{'), 331 "u'{' isn't ASCII alpha uppercase"); 332 333 // char32_t 334 335 static_assert(!IsAsciiUppercaseAlpha(U'@'), 336 "U'@' isn't ASCII alpha uppercase"); 337 static_assert(U'@' == 0x40, "U'@' has value 0x40"); 338 339 static_assert(U'A' == 0x41, "U'A' has value 0x41"); 340 static_assert(IsAsciiUppercaseAlpha(U'A'), "U'A' is ASCII alpha uppercase"); 341 static_assert(IsAsciiUppercaseAlpha(U'B'), "U'B' is ASCII alpha uppercase"); 342 static_assert(IsAsciiUppercaseAlpha(U'M'), "U'M' is ASCII alpha uppercase"); 343 static_assert(IsAsciiUppercaseAlpha(U'Y'), "U'Y' is ASCII alpha uppercase"); 344 static_assert(IsAsciiUppercaseAlpha(U'Z'), "U'Z' is ASCII alpha uppercase"); 345 346 static_assert(U'Z' == 0x5A, "U'Z' has value 0x5A"); 347 static_assert(U'[' == 0x5B, "U'[' has value 0x5B"); 348 static_assert(!IsAsciiUppercaseAlpha(U'['), 349 "U'[' isn't ASCII alpha uppercase"); 350 351 static_assert(!IsAsciiUppercaseAlpha(U'`'), 352 "U'`' isn't ASCII alpha uppercase"); 353 static_assert(!IsAsciiUppercaseAlpha(U'a'), "U'a' is ASCII alpha uppercase"); 354 static_assert(!IsAsciiUppercaseAlpha(U'b'), "U'b' is ASCII alpha uppercase"); 355 static_assert(!IsAsciiUppercaseAlpha(U'm'), "U'm' is ASCII alpha uppercase"); 356 static_assert(!IsAsciiUppercaseAlpha(U'y'), "U'y' is ASCII alpha uppercase"); 357 static_assert(!IsAsciiUppercaseAlpha(U'z'), "U'z' is ASCII alpha uppercase"); 358 static_assert(!IsAsciiUppercaseAlpha(U'{'), 359 "U'{' isn't ASCII alpha uppercase"); 360 } 361 362 static void TestIsAsciiLowercaseAlpha() { 363 // char 364 365 static_assert(!IsAsciiLowercaseAlpha('`'), "'`' isn't ASCII alpha lowercase"); 366 static_assert('`' == 0x60, "'`' has value 0x60"); 367 368 static_assert('a' == 0x61, "'a' has value 0x61"); 369 static_assert(IsAsciiLowercaseAlpha('a'), "'a' is ASCII alpha lowercase"); 370 static_assert(IsAsciiLowercaseAlpha('b'), "'b' is ASCII alpha lowercase"); 371 static_assert(IsAsciiLowercaseAlpha('m'), "'m' is ASCII alpha lowercase"); 372 static_assert(IsAsciiLowercaseAlpha('y'), "'y' is ASCII alpha lowercase"); 373 static_assert(IsAsciiLowercaseAlpha('z'), "'z' is ASCII alpha lowercase"); 374 375 static_assert('z' == 0x7A, "'z' has value 0x7A"); 376 static_assert('{' == 0x7B, "'{' has value 0x7B"); 377 static_assert(!IsAsciiLowercaseAlpha('{'), "'{' isn't ASCII alpha lowercase"); 378 379 static_assert(!IsAsciiLowercaseAlpha('@'), "'@' isn't ASCII alpha lowercase"); 380 static_assert(!IsAsciiLowercaseAlpha('A'), "'A' is ASCII alpha lowercase"); 381 static_assert(!IsAsciiLowercaseAlpha('B'), "'B' is ASCII alpha lowercase"); 382 static_assert(!IsAsciiLowercaseAlpha('M'), "'M' is ASCII alpha lowercase"); 383 static_assert(!IsAsciiLowercaseAlpha('Y'), "'Y' is ASCII alpha lowercase"); 384 static_assert(!IsAsciiLowercaseAlpha('Z'), "'Z' is ASCII alpha lowercase"); 385 static_assert(!IsAsciiLowercaseAlpha('['), "'[' isn't ASCII alpha lowercase"); 386 387 // char16_t 388 389 static_assert(!IsAsciiLowercaseAlpha(u'`'), 390 "u'`' isn't ASCII alpha lowercase"); 391 static_assert(u'`' == 0x60, "u'`' has value 0x60"); 392 393 static_assert(u'a' == 0x61, "u'a' has value 0x61"); 394 static_assert(IsAsciiLowercaseAlpha(u'a'), "u'a' is ASCII alpha lowercase"); 395 static_assert(IsAsciiLowercaseAlpha(u'b'), "u'b' is ASCII alpha lowercase"); 396 static_assert(IsAsciiLowercaseAlpha(u'm'), "u'm' is ASCII alpha lowercase"); 397 static_assert(IsAsciiLowercaseAlpha(u'y'), "u'y' is ASCII alpha lowercase"); 398 static_assert(IsAsciiLowercaseAlpha(u'z'), "u'z' is ASCII alpha lowercase"); 399 400 static_assert(u'z' == 0x7A, "u'z' has value 0x7A"); 401 static_assert(u'{' == 0x7B, "u'{' has value 0x7B"); 402 static_assert(!IsAsciiLowercaseAlpha(u'{'), 403 "u'{' isn't ASCII alpha lowercase"); 404 405 static_assert(!IsAsciiLowercaseAlpha(u'@'), 406 "u'@' isn't ASCII alpha lowercase"); 407 static_assert(!IsAsciiLowercaseAlpha(u'A'), "u'A' is ASCII alpha lowercase"); 408 static_assert(!IsAsciiLowercaseAlpha(u'B'), "u'B' is ASCII alpha lowercase"); 409 static_assert(!IsAsciiLowercaseAlpha(u'M'), "u'M' is ASCII alpha lowercase"); 410 static_assert(!IsAsciiLowercaseAlpha(u'Y'), "u'Y' is ASCII alpha lowercase"); 411 static_assert(!IsAsciiLowercaseAlpha(u'Z'), "u'Z' is ASCII alpha lowercase"); 412 static_assert(!IsAsciiLowercaseAlpha(u'['), 413 "u'[' isn't ASCII alpha lowercase"); 414 415 // char32_t 416 417 static_assert(!IsAsciiLowercaseAlpha(U'`'), 418 "U'`' isn't ASCII alpha lowercase"); 419 static_assert(U'`' == 0x60, "U'`' has value 0x60"); 420 421 static_assert(U'a' == 0x61, "U'a' has value 0x61"); 422 static_assert(IsAsciiLowercaseAlpha(U'a'), "U'a' is ASCII alpha lowercase"); 423 static_assert(IsAsciiLowercaseAlpha(U'b'), "U'b' is ASCII alpha lowercase"); 424 static_assert(IsAsciiLowercaseAlpha(U'm'), "U'm' is ASCII alpha lowercase"); 425 static_assert(IsAsciiLowercaseAlpha(U'y'), "U'y' is ASCII alpha lowercase"); 426 static_assert(IsAsciiLowercaseAlpha(U'z'), "U'z' is ASCII alpha lowercase"); 427 428 static_assert(U'z' == 0x7A, "U'z' has value 0x7A"); 429 static_assert(U'{' == 0x7B, "U'{' has value 0x7B"); 430 static_assert(!IsAsciiLowercaseAlpha(U'{'), 431 "U'{' isn't ASCII alpha lowercase"); 432 433 static_assert(!IsAsciiLowercaseAlpha(U'@'), 434 "U'@' isn't ASCII alpha lowercase"); 435 static_assert(!IsAsciiLowercaseAlpha(U'A'), "U'A' is ASCII alpha lowercase"); 436 static_assert(!IsAsciiLowercaseAlpha(U'B'), "U'B' is ASCII alpha lowercase"); 437 static_assert(!IsAsciiLowercaseAlpha(U'M'), "U'M' is ASCII alpha lowercase"); 438 static_assert(!IsAsciiLowercaseAlpha(U'Y'), "U'Y' is ASCII alpha lowercase"); 439 static_assert(!IsAsciiLowercaseAlpha(U'Z'), "U'Z' is ASCII alpha lowercase"); 440 static_assert(!IsAsciiLowercaseAlpha(U'['), 441 "U'[' isn't ASCII alpha lowercase"); 442 } 443 444 static void TestIsAsciiAlphanumeric() { 445 // char 446 447 static_assert(!IsAsciiAlphanumeric('/'), "'/' isn't ASCII alphanumeric"); 448 static_assert('/' == 0x2F, "'/' has value 0x2F"); 449 450 static_assert('0' == 0x30, "'0' has value 0x30"); 451 static_assert(IsAsciiAlphanumeric('0'), "'0' is ASCII alphanumeric"); 452 static_assert(IsAsciiAlphanumeric('1'), "'1' is ASCII alphanumeric"); 453 static_assert(IsAsciiAlphanumeric('5'), "'5' is ASCII alphanumeric"); 454 static_assert(IsAsciiAlphanumeric('8'), "'8' is ASCII alphanumeric"); 455 static_assert(IsAsciiAlphanumeric('9'), "'9' is ASCII alphanumeric"); 456 457 static_assert('9' == 0x39, "'9' has value 0x39"); 458 static_assert(':' == 0x3A, "':' has value 0x3A"); 459 static_assert(!IsAsciiAlphanumeric(':'), "':' isn't ASCII alphanumeric"); 460 461 static_assert(!IsAsciiAlphanumeric('@'), "'@' isn't ASCII alphanumeric"); 462 static_assert('@' == 0x40, "'@' has value 0x40"); 463 464 static_assert('A' == 0x41, "'A' has value 0x41"); 465 static_assert(IsAsciiAlphanumeric('A'), "'A' is ASCII alphanumeric"); 466 static_assert(IsAsciiAlphanumeric('B'), "'B' is ASCII alphanumeric"); 467 static_assert(IsAsciiAlphanumeric('M'), "'M' is ASCII alphanumeric"); 468 static_assert(IsAsciiAlphanumeric('Y'), "'Y' is ASCII alphanumeric"); 469 static_assert(IsAsciiAlphanumeric('Z'), "'Z' is ASCII alphanumeric"); 470 471 static_assert('Z' == 0x5A, "'Z' has value 0x5A"); 472 static_assert('[' == 0x5B, "'[' has value 0x5B"); 473 static_assert(!IsAsciiAlphanumeric('['), "'[' isn't ASCII alphanumeric"); 474 475 static_assert(!IsAsciiAlphanumeric('`'), "'`' isn't ASCII alphanumeric"); 476 static_assert('`' == 0x60, "'`' has value 0x60"); 477 478 static_assert('a' == 0x61, "'a' has value 0x61"); 479 static_assert(IsAsciiAlphanumeric('a'), "'a' is ASCII alphanumeric"); 480 static_assert(IsAsciiAlphanumeric('b'), "'b' is ASCII alphanumeric"); 481 static_assert(IsAsciiAlphanumeric('m'), "'m' is ASCII alphanumeric"); 482 static_assert(IsAsciiAlphanumeric('y'), "'y' is ASCII alphanumeric"); 483 static_assert(IsAsciiAlphanumeric('z'), "'z' is ASCII alphanumeric"); 484 485 static_assert('z' == 0x7A, "'z' has value 0x7A"); 486 static_assert('{' == 0x7B, "'{' has value 0x7B"); 487 static_assert(!IsAsciiAlphanumeric('{'), "'{' isn't ASCII alphanumeric"); 488 489 // char16_t 490 491 static_assert(!IsAsciiAlphanumeric(u'/'), "u'/' isn't ASCII alphanumeric"); 492 static_assert(u'/' == 0x2F, "u'/' has value 0x2F"); 493 494 static_assert(u'0' == 0x30, "u'0' has value 0x30"); 495 static_assert(IsAsciiAlphanumeric(u'0'), "u'0' is ASCII alphanumeric"); 496 static_assert(IsAsciiAlphanumeric(u'1'), "u'1' is ASCII alphanumeric"); 497 static_assert(IsAsciiAlphanumeric(u'5'), "u'5' is ASCII alphanumeric"); 498 static_assert(IsAsciiAlphanumeric(u'8'), "u'8' is ASCII alphanumeric"); 499 static_assert(IsAsciiAlphanumeric(u'9'), "u'9' is ASCII alphanumeric"); 500 501 static_assert(u'9' == 0x39, "u'9' has value 0x39"); 502 static_assert(u':' == 0x3A, "u':' has value 0x3A"); 503 static_assert(!IsAsciiAlphanumeric(u':'), "u':' isn't ASCII alphanumeric"); 504 505 static_assert(!IsAsciiAlphanumeric(u'@'), "u'@' isn't ASCII alphanumeric"); 506 static_assert(u'@' == 0x40, "u'@' has value 0x40"); 507 508 static_assert(u'A' == 0x41, "u'A' has value 0x41"); 509 static_assert(IsAsciiAlphanumeric(u'A'), "u'A' is ASCII alphanumeric"); 510 static_assert(IsAsciiAlphanumeric(u'B'), "u'B' is ASCII alphanumeric"); 511 static_assert(IsAsciiAlphanumeric(u'M'), "u'M' is ASCII alphanumeric"); 512 static_assert(IsAsciiAlphanumeric(u'Y'), "u'Y' is ASCII alphanumeric"); 513 static_assert(IsAsciiAlphanumeric(u'Z'), "u'Z' is ASCII alphanumeric"); 514 515 static_assert(u'Z' == 0x5A, "u'Z' has value 0x5A"); 516 static_assert(u'[' == 0x5B, "u'[' has value 0x5B"); 517 static_assert(!IsAsciiAlphanumeric(u'['), "u'[' isn't ASCII alphanumeric"); 518 519 static_assert(!IsAsciiAlphanumeric(u'`'), "u'`' isn't ASCII alphanumeric"); 520 static_assert(u'`' == 0x60, "u'`' has value 0x60"); 521 522 static_assert(u'a' == 0x61, "u'a' has value 0x61"); 523 static_assert(IsAsciiAlphanumeric(u'a'), "u'a' is ASCII alphanumeric"); 524 static_assert(IsAsciiAlphanumeric(u'b'), "u'b' is ASCII alphanumeric"); 525 static_assert(IsAsciiAlphanumeric(u'm'), "u'm' is ASCII alphanumeric"); 526 static_assert(IsAsciiAlphanumeric(u'y'), "u'y' is ASCII alphanumeric"); 527 static_assert(IsAsciiAlphanumeric(u'z'), "u'z' is ASCII alphanumeric"); 528 529 static_assert(u'z' == 0x7A, "u'z' has value 0x7A"); 530 static_assert(u'{' == 0x7B, "u'{' has value 0x7B"); 531 static_assert(!IsAsciiAlphanumeric(u'{'), "u'{' isn't ASCII alphanumeric"); 532 533 // char32_t 534 535 static_assert(!IsAsciiAlphanumeric(U'/'), "U'/' isn't ASCII alphanumeric"); 536 static_assert(U'/' == 0x2F, "U'/' has value 0x2F"); 537 538 static_assert(U'0' == 0x30, "U'0' has value 0x30"); 539 static_assert(IsAsciiAlphanumeric(U'0'), "U'0' is ASCII alphanumeric"); 540 static_assert(IsAsciiAlphanumeric(U'1'), "U'1' is ASCII alphanumeric"); 541 static_assert(IsAsciiAlphanumeric(U'5'), "U'5' is ASCII alphanumeric"); 542 static_assert(IsAsciiAlphanumeric(U'8'), "U'8' is ASCII alphanumeric"); 543 static_assert(IsAsciiAlphanumeric(U'9'), "U'9' is ASCII alphanumeric"); 544 545 static_assert(U'9' == 0x39, "U'9' has value 0x39"); 546 static_assert(U':' == 0x3A, "U':' has value 0x3A"); 547 static_assert(!IsAsciiAlphanumeric(U':'), "U':' isn't ASCII alphanumeric"); 548 549 static_assert(!IsAsciiAlphanumeric(U'@'), "U'@' isn't ASCII alphanumeric"); 550 static_assert(U'@' == 0x40, "U'@' has value 0x40"); 551 552 static_assert(U'A' == 0x41, "U'A' has value 0x41"); 553 static_assert(IsAsciiAlphanumeric(U'A'), "U'A' is ASCII alphanumeric"); 554 static_assert(IsAsciiAlphanumeric(U'B'), "U'B' is ASCII alphanumeric"); 555 static_assert(IsAsciiAlphanumeric(U'M'), "U'M' is ASCII alphanumeric"); 556 static_assert(IsAsciiAlphanumeric(U'Y'), "U'Y' is ASCII alphanumeric"); 557 static_assert(IsAsciiAlphanumeric(U'Z'), "U'Z' is ASCII alphanumeric"); 558 559 static_assert(U'Z' == 0x5A, "U'Z' has value 0x5A"); 560 static_assert(U'[' == 0x5B, "U'[' has value 0x5B"); 561 static_assert(!IsAsciiAlphanumeric(U'['), "U'[' isn't ASCII alphanumeric"); 562 563 static_assert(!IsAsciiAlphanumeric(U'`'), "U'`' isn't ASCII alphanumeric"); 564 static_assert(U'`' == 0x60, "U'`' has value 0x60"); 565 566 static_assert(U'a' == 0x61, "U'a' has value 0x61"); 567 static_assert(IsAsciiAlphanumeric(U'a'), "U'a' is ASCII alphanumeric"); 568 static_assert(IsAsciiAlphanumeric(U'b'), "U'b' is ASCII alphanumeric"); 569 static_assert(IsAsciiAlphanumeric(U'm'), "U'm' is ASCII alphanumeric"); 570 static_assert(IsAsciiAlphanumeric(U'y'), "U'y' is ASCII alphanumeric"); 571 static_assert(IsAsciiAlphanumeric(U'z'), "U'z' is ASCII alphanumeric"); 572 573 static_assert(U'z' == 0x7A, "U'z' has value 0x7A"); 574 static_assert(U'{' == 0x7B, "U'{' has value 0x7B"); 575 static_assert(!IsAsciiAlphanumeric(U'{'), "U'{' isn't ASCII alphanumeric"); 576 } 577 578 static void TestAsciiAlphanumericToNumber() { 579 // char 580 static_assert(AsciiAlphanumericToNumber('0') == 0, "'0' converts to 0"); 581 static_assert(AsciiAlphanumericToNumber('1') == 1, "'1' converts to 1"); 582 static_assert(AsciiAlphanumericToNumber('2') == 2, "'2' converts to 2"); 583 static_assert(AsciiAlphanumericToNumber('3') == 3, "'3' converts to 3"); 584 static_assert(AsciiAlphanumericToNumber('4') == 4, "'4' converts to 4"); 585 static_assert(AsciiAlphanumericToNumber('5') == 5, "'5' converts to 5"); 586 static_assert(AsciiAlphanumericToNumber('6') == 6, "'6' converts to 6"); 587 static_assert(AsciiAlphanumericToNumber('7') == 7, "'7' converts to 7"); 588 static_assert(AsciiAlphanumericToNumber('8') == 8, "'8' converts to 8"); 589 static_assert(AsciiAlphanumericToNumber('9') == 9, "'9' converts to 9"); 590 591 static_assert(AsciiAlphanumericToNumber('A') == 10, "'A' converts to 10"); 592 static_assert(AsciiAlphanumericToNumber('B') == 11, "'B' converts to 11"); 593 static_assert(AsciiAlphanumericToNumber('C') == 12, "'C' converts to 12"); 594 static_assert(AsciiAlphanumericToNumber('D') == 13, "'D' converts to 13"); 595 static_assert(AsciiAlphanumericToNumber('E') == 14, "'E' converts to 14"); 596 static_assert(AsciiAlphanumericToNumber('F') == 15, "'F' converts to 15"); 597 static_assert(AsciiAlphanumericToNumber('G') == 16, "'G' converts to 16"); 598 static_assert(AsciiAlphanumericToNumber('H') == 17, "'H' converts to 17"); 599 static_assert(AsciiAlphanumericToNumber('I') == 18, "'I' converts to 18"); 600 static_assert(AsciiAlphanumericToNumber('J') == 19, "'J' converts to 19"); 601 static_assert(AsciiAlphanumericToNumber('K') == 20, "'K' converts to 20"); 602 static_assert(AsciiAlphanumericToNumber('L') == 21, "'L' converts to 21"); 603 static_assert(AsciiAlphanumericToNumber('M') == 22, "'M' converts to 22"); 604 static_assert(AsciiAlphanumericToNumber('N') == 23, "'N' converts to 23"); 605 static_assert(AsciiAlphanumericToNumber('O') == 24, "'O' converts to 24"); 606 static_assert(AsciiAlphanumericToNumber('P') == 25, "'P' converts to 25"); 607 static_assert(AsciiAlphanumericToNumber('Q') == 26, "'Q' converts to 26"); 608 static_assert(AsciiAlphanumericToNumber('R') == 27, "'R' converts to 27"); 609 static_assert(AsciiAlphanumericToNumber('S') == 28, "'S' converts to 28"); 610 static_assert(AsciiAlphanumericToNumber('T') == 29, "'T' converts to 29"); 611 static_assert(AsciiAlphanumericToNumber('U') == 30, "'U' converts to 30"); 612 static_assert(AsciiAlphanumericToNumber('V') == 31, "'V' converts to 31"); 613 static_assert(AsciiAlphanumericToNumber('W') == 32, "'W' converts to 32"); 614 static_assert(AsciiAlphanumericToNumber('X') == 33, "'X' converts to 33"); 615 static_assert(AsciiAlphanumericToNumber('Y') == 34, "'Y' converts to 34"); 616 static_assert(AsciiAlphanumericToNumber('Z') == 35, "'Z' converts to 35"); 617 618 static_assert(AsciiAlphanumericToNumber('a') == 10, "'a' converts to 10"); 619 static_assert(AsciiAlphanumericToNumber('b') == 11, "'b' converts to 11"); 620 static_assert(AsciiAlphanumericToNumber('c') == 12, "'c' converts to 12"); 621 static_assert(AsciiAlphanumericToNumber('d') == 13, "'d' converts to 13"); 622 static_assert(AsciiAlphanumericToNumber('e') == 14, "'e' converts to 14"); 623 static_assert(AsciiAlphanumericToNumber('f') == 15, "'f' converts to 15"); 624 static_assert(AsciiAlphanumericToNumber('g') == 16, "'g' converts to 16"); 625 static_assert(AsciiAlphanumericToNumber('h') == 17, "'h' converts to 17"); 626 static_assert(AsciiAlphanumericToNumber('i') == 18, "'i' converts to 18"); 627 static_assert(AsciiAlphanumericToNumber('j') == 19, "'j' converts to 19"); 628 static_assert(AsciiAlphanumericToNumber('k') == 20, "'k' converts to 20"); 629 static_assert(AsciiAlphanumericToNumber('l') == 21, "'l' converts to 21"); 630 static_assert(AsciiAlphanumericToNumber('m') == 22, "'m' converts to 22"); 631 static_assert(AsciiAlphanumericToNumber('n') == 23, "'n' converts to 23"); 632 static_assert(AsciiAlphanumericToNumber('o') == 24, "'o' converts to 24"); 633 static_assert(AsciiAlphanumericToNumber('p') == 25, "'p' converts to 25"); 634 static_assert(AsciiAlphanumericToNumber('q') == 26, "'q' converts to 26"); 635 static_assert(AsciiAlphanumericToNumber('r') == 27, "'r' converts to 27"); 636 static_assert(AsciiAlphanumericToNumber('s') == 28, "'s' converts to 28"); 637 static_assert(AsciiAlphanumericToNumber('t') == 29, "'t' converts to 29"); 638 static_assert(AsciiAlphanumericToNumber('u') == 30, "'u' converts to 30"); 639 static_assert(AsciiAlphanumericToNumber('v') == 31, "'v' converts to 31"); 640 static_assert(AsciiAlphanumericToNumber('w') == 32, "'w' converts to 32"); 641 static_assert(AsciiAlphanumericToNumber('x') == 33, "'x' converts to 33"); 642 static_assert(AsciiAlphanumericToNumber('y') == 34, "'y' converts to 34"); 643 static_assert(AsciiAlphanumericToNumber('z') == 35, "'z' converts to 35"); 644 645 // char16_t 646 647 static_assert(AsciiAlphanumericToNumber(u'0') == 0, "u'0' converts to 0"); 648 static_assert(AsciiAlphanumericToNumber(u'1') == 1, "u'1' converts to 1"); 649 static_assert(AsciiAlphanumericToNumber(u'2') == 2, "u'2' converts to 2"); 650 static_assert(AsciiAlphanumericToNumber(u'3') == 3, "u'3' converts to 3"); 651 static_assert(AsciiAlphanumericToNumber(u'4') == 4, "u'4' converts to 4"); 652 static_assert(AsciiAlphanumericToNumber(u'5') == 5, "u'5' converts to 5"); 653 static_assert(AsciiAlphanumericToNumber(u'6') == 6, "u'6' converts to 6"); 654 static_assert(AsciiAlphanumericToNumber(u'7') == 7, "u'7' converts to 7"); 655 static_assert(AsciiAlphanumericToNumber(u'8') == 8, "u'8' converts to 8"); 656 static_assert(AsciiAlphanumericToNumber(u'9') == 9, "u'9' converts to 9"); 657 658 static_assert(AsciiAlphanumericToNumber(u'A') == 10, "u'A' converts to 10"); 659 static_assert(AsciiAlphanumericToNumber(u'B') == 11, "u'B' converts to 11"); 660 static_assert(AsciiAlphanumericToNumber(u'C') == 12, "u'C' converts to 12"); 661 static_assert(AsciiAlphanumericToNumber(u'D') == 13, "u'D' converts to 13"); 662 static_assert(AsciiAlphanumericToNumber(u'E') == 14, "u'E' converts to 14"); 663 static_assert(AsciiAlphanumericToNumber(u'F') == 15, "u'F' converts to 15"); 664 static_assert(AsciiAlphanumericToNumber(u'G') == 16, "u'G' converts to 16"); 665 static_assert(AsciiAlphanumericToNumber(u'H') == 17, "u'H' converts to 17"); 666 static_assert(AsciiAlphanumericToNumber(u'I') == 18, "u'I' converts to 18"); 667 static_assert(AsciiAlphanumericToNumber(u'J') == 19, "u'J' converts to 19"); 668 static_assert(AsciiAlphanumericToNumber(u'K') == 20, "u'K' converts to 20"); 669 static_assert(AsciiAlphanumericToNumber(u'L') == 21, "u'L' converts to 21"); 670 static_assert(AsciiAlphanumericToNumber(u'M') == 22, "u'M' converts to 22"); 671 static_assert(AsciiAlphanumericToNumber(u'N') == 23, "u'N' converts to 23"); 672 static_assert(AsciiAlphanumericToNumber(u'O') == 24, "u'O' converts to 24"); 673 static_assert(AsciiAlphanumericToNumber(u'P') == 25, "u'P' converts to 25"); 674 static_assert(AsciiAlphanumericToNumber(u'Q') == 26, "u'Q' converts to 26"); 675 static_assert(AsciiAlphanumericToNumber(u'R') == 27, "u'R' converts to 27"); 676 static_assert(AsciiAlphanumericToNumber(u'S') == 28, "u'S' converts to 28"); 677 static_assert(AsciiAlphanumericToNumber(u'T') == 29, "u'T' converts to 29"); 678 static_assert(AsciiAlphanumericToNumber(u'U') == 30, "u'U' converts to 30"); 679 static_assert(AsciiAlphanumericToNumber(u'V') == 31, "u'V' converts to 31"); 680 static_assert(AsciiAlphanumericToNumber(u'W') == 32, "u'W' converts to 32"); 681 static_assert(AsciiAlphanumericToNumber(u'X') == 33, "u'X' converts to 33"); 682 static_assert(AsciiAlphanumericToNumber(u'Y') == 34, "u'Y' converts to 34"); 683 static_assert(AsciiAlphanumericToNumber(u'Z') == 35, "u'Z' converts to 35"); 684 685 static_assert(AsciiAlphanumericToNumber(u'a') == 10, "u'a' converts to 10"); 686 static_assert(AsciiAlphanumericToNumber(u'b') == 11, "u'b' converts to 11"); 687 static_assert(AsciiAlphanumericToNumber(u'c') == 12, "u'c' converts to 12"); 688 static_assert(AsciiAlphanumericToNumber(u'd') == 13, "u'd' converts to 13"); 689 static_assert(AsciiAlphanumericToNumber(u'e') == 14, "u'e' converts to 14"); 690 static_assert(AsciiAlphanumericToNumber(u'f') == 15, "u'f' converts to 15"); 691 static_assert(AsciiAlphanumericToNumber(u'g') == 16, "u'g' converts to 16"); 692 static_assert(AsciiAlphanumericToNumber(u'h') == 17, "u'h' converts to 17"); 693 static_assert(AsciiAlphanumericToNumber(u'i') == 18, "u'i' converts to 18"); 694 static_assert(AsciiAlphanumericToNumber(u'j') == 19, "u'j' converts to 19"); 695 static_assert(AsciiAlphanumericToNumber(u'k') == 20, "u'k' converts to 20"); 696 static_assert(AsciiAlphanumericToNumber(u'l') == 21, "u'l' converts to 21"); 697 static_assert(AsciiAlphanumericToNumber(u'm') == 22, "u'm' converts to 22"); 698 static_assert(AsciiAlphanumericToNumber(u'n') == 23, "u'n' converts to 23"); 699 static_assert(AsciiAlphanumericToNumber(u'o') == 24, "u'o' converts to 24"); 700 static_assert(AsciiAlphanumericToNumber(u'p') == 25, "u'p' converts to 25"); 701 static_assert(AsciiAlphanumericToNumber(u'q') == 26, "u'q' converts to 26"); 702 static_assert(AsciiAlphanumericToNumber(u'r') == 27, "u'r' converts to 27"); 703 static_assert(AsciiAlphanumericToNumber(u's') == 28, "u's' converts to 28"); 704 static_assert(AsciiAlphanumericToNumber(u't') == 29, "u't' converts to 29"); 705 static_assert(AsciiAlphanumericToNumber(u'u') == 30, "u'u' converts to 30"); 706 static_assert(AsciiAlphanumericToNumber(u'v') == 31, "u'v' converts to 31"); 707 static_assert(AsciiAlphanumericToNumber(u'w') == 32, "u'w' converts to 32"); 708 static_assert(AsciiAlphanumericToNumber(u'x') == 33, "u'x' converts to 33"); 709 static_assert(AsciiAlphanumericToNumber(u'y') == 34, "u'y' converts to 34"); 710 static_assert(AsciiAlphanumericToNumber(u'z') == 35, "u'z' converts to 35"); 711 712 // char32_t 713 714 static_assert(AsciiAlphanumericToNumber(U'0') == 0, "U'0' converts to 0"); 715 static_assert(AsciiAlphanumericToNumber(U'1') == 1, "U'1' converts to 1"); 716 static_assert(AsciiAlphanumericToNumber(U'2') == 2, "U'2' converts to 2"); 717 static_assert(AsciiAlphanumericToNumber(U'3') == 3, "U'3' converts to 3"); 718 static_assert(AsciiAlphanumericToNumber(U'4') == 4, "U'4' converts to 4"); 719 static_assert(AsciiAlphanumericToNumber(U'5') == 5, "U'5' converts to 5"); 720 static_assert(AsciiAlphanumericToNumber(U'6') == 6, "U'6' converts to 6"); 721 static_assert(AsciiAlphanumericToNumber(U'7') == 7, "U'7' converts to 7"); 722 static_assert(AsciiAlphanumericToNumber(U'8') == 8, "U'8' converts to 8"); 723 static_assert(AsciiAlphanumericToNumber(U'9') == 9, "U'9' converts to 9"); 724 725 static_assert(AsciiAlphanumericToNumber(U'A') == 10, "U'A' converts to 10"); 726 static_assert(AsciiAlphanumericToNumber(U'B') == 11, "U'B' converts to 11"); 727 static_assert(AsciiAlphanumericToNumber(U'C') == 12, "U'C' converts to 12"); 728 static_assert(AsciiAlphanumericToNumber(U'D') == 13, "U'D' converts to 13"); 729 static_assert(AsciiAlphanumericToNumber(U'E') == 14, "U'E' converts to 14"); 730 static_assert(AsciiAlphanumericToNumber(U'F') == 15, "U'F' converts to 15"); 731 static_assert(AsciiAlphanumericToNumber(U'G') == 16, "U'G' converts to 16"); 732 static_assert(AsciiAlphanumericToNumber(U'H') == 17, "U'H' converts to 17"); 733 static_assert(AsciiAlphanumericToNumber(U'I') == 18, "U'I' converts to 18"); 734 static_assert(AsciiAlphanumericToNumber(U'J') == 19, "U'J' converts to 19"); 735 static_assert(AsciiAlphanumericToNumber(U'K') == 20, "U'K' converts to 20"); 736 static_assert(AsciiAlphanumericToNumber(U'L') == 21, "U'L' converts to 21"); 737 static_assert(AsciiAlphanumericToNumber(U'M') == 22, "U'M' converts to 22"); 738 static_assert(AsciiAlphanumericToNumber(U'N') == 23, "U'N' converts to 23"); 739 static_assert(AsciiAlphanumericToNumber(U'O') == 24, "U'O' converts to 24"); 740 static_assert(AsciiAlphanumericToNumber(U'P') == 25, "U'P' converts to 25"); 741 static_assert(AsciiAlphanumericToNumber(U'Q') == 26, "U'Q' converts to 26"); 742 static_assert(AsciiAlphanumericToNumber(U'R') == 27, "U'R' converts to 27"); 743 static_assert(AsciiAlphanumericToNumber(U'S') == 28, "U'S' converts to 28"); 744 static_assert(AsciiAlphanumericToNumber(U'T') == 29, "U'T' converts to 29"); 745 static_assert(AsciiAlphanumericToNumber(U'U') == 30, "U'U' converts to 30"); 746 static_assert(AsciiAlphanumericToNumber(U'V') == 31, "U'V' converts to 31"); 747 static_assert(AsciiAlphanumericToNumber(U'W') == 32, "U'W' converts to 32"); 748 static_assert(AsciiAlphanumericToNumber(U'X') == 33, "U'X' converts to 33"); 749 static_assert(AsciiAlphanumericToNumber(U'Y') == 34, "U'Y' converts to 34"); 750 static_assert(AsciiAlphanumericToNumber(U'Z') == 35, "U'Z' converts to 35"); 751 752 static_assert(AsciiAlphanumericToNumber(U'a') == 10, "U'a' converts to 10"); 753 static_assert(AsciiAlphanumericToNumber(U'b') == 11, "U'b' converts to 11"); 754 static_assert(AsciiAlphanumericToNumber(U'c') == 12, "U'c' converts to 12"); 755 static_assert(AsciiAlphanumericToNumber(U'd') == 13, "U'd' converts to 13"); 756 static_assert(AsciiAlphanumericToNumber(U'e') == 14, "U'e' converts to 14"); 757 static_assert(AsciiAlphanumericToNumber(U'f') == 15, "U'f' converts to 15"); 758 static_assert(AsciiAlphanumericToNumber(U'g') == 16, "U'g' converts to 16"); 759 static_assert(AsciiAlphanumericToNumber(U'h') == 17, "U'h' converts to 17"); 760 static_assert(AsciiAlphanumericToNumber(U'i') == 18, "U'i' converts to 18"); 761 static_assert(AsciiAlphanumericToNumber(U'j') == 19, "U'j' converts to 19"); 762 static_assert(AsciiAlphanumericToNumber(U'k') == 20, "U'k' converts to 20"); 763 static_assert(AsciiAlphanumericToNumber(U'l') == 21, "U'l' converts to 21"); 764 static_assert(AsciiAlphanumericToNumber(U'm') == 22, "U'm' converts to 22"); 765 static_assert(AsciiAlphanumericToNumber(U'n') == 23, "U'n' converts to 23"); 766 static_assert(AsciiAlphanumericToNumber(U'o') == 24, "U'o' converts to 24"); 767 static_assert(AsciiAlphanumericToNumber(U'p') == 25, "U'p' converts to 25"); 768 static_assert(AsciiAlphanumericToNumber(U'q') == 26, "U'q' converts to 26"); 769 static_assert(AsciiAlphanumericToNumber(U'r') == 27, "U'r' converts to 27"); 770 static_assert(AsciiAlphanumericToNumber(U's') == 28, "U's' converts to 28"); 771 static_assert(AsciiAlphanumericToNumber(U't') == 29, "U't' converts to 29"); 772 static_assert(AsciiAlphanumericToNumber(U'u') == 30, "U'u' converts to 30"); 773 static_assert(AsciiAlphanumericToNumber(U'v') == 31, "U'v' converts to 31"); 774 static_assert(AsciiAlphanumericToNumber(U'w') == 32, "U'w' converts to 32"); 775 static_assert(AsciiAlphanumericToNumber(U'x') == 33, "U'x' converts to 33"); 776 static_assert(AsciiAlphanumericToNumber(U'y') == 34, "U'y' converts to 34"); 777 static_assert(AsciiAlphanumericToNumber(U'z') == 35, "U'z' converts to 35"); 778 } 779 780 static void TestIsAsciiDigit() { 781 // char 782 783 static_assert(!IsAsciiDigit('/'), "'/' isn't an ASCII digit"); 784 static_assert('/' == 0x2F, "'/' has value 0x2F"); 785 786 static_assert('0' == 0x30, "'0' has value 0x30"); 787 static_assert(IsAsciiDigit('0'), "'0' is an ASCII digit"); 788 static_assert(IsAsciiDigit('1'), "'1' is an ASCII digit"); 789 static_assert(IsAsciiDigit('5'), "'5' is an ASCII digit"); 790 static_assert(IsAsciiDigit('8'), "'8' is an ASCII digit"); 791 static_assert(IsAsciiDigit('9'), "'9' is an ASCII digit"); 792 793 static_assert('9' == 0x39, "'9' has value 0x39"); 794 static_assert(':' == 0x3A, "':' has value 0x3A"); 795 static_assert(!IsAsciiDigit(':'), "':' isn't an ASCII digit"); 796 797 static_assert(!IsAsciiDigit('@'), "'@' isn't an ASCII digit"); 798 static_assert(!IsAsciiDigit('A'), "'A' isn't an ASCII digit"); 799 static_assert(!IsAsciiDigit('B'), "'B' isn't an ASCII digit"); 800 static_assert(!IsAsciiDigit('M'), "'M' isn't an ASCII digit"); 801 static_assert(!IsAsciiDigit('Y'), "'Y' isn't an ASCII digit"); 802 static_assert(!IsAsciiDigit('Z'), "'Z' isn't an ASCII digit"); 803 static_assert(!IsAsciiDigit('['), "'[' isn't an ASCII digit"); 804 static_assert(!IsAsciiDigit('`'), "'`' isn't an ASCII digit"); 805 static_assert(!IsAsciiDigit('a'), "'a' isn't an ASCII digit"); 806 static_assert(!IsAsciiDigit('b'), "'b' isn't an ASCII digit"); 807 static_assert(!IsAsciiDigit('m'), "'m' isn't an ASCII digit"); 808 static_assert(!IsAsciiDigit('y'), "'y' isn't an ASCII digit"); 809 static_assert(!IsAsciiDigit('z'), "'z' isn't an ASCII digit"); 810 static_assert(!IsAsciiDigit('{'), "'{' isn't an ASCII digit"); 811 812 // char16_t 813 814 static_assert(!IsAsciiDigit(u'/'), "u'/' isn't an ASCII digit"); 815 static_assert(u'/' == 0x2F, "u'/' has value 0x2F"); 816 static_assert(u'0' == 0x30, "u'0' has value 0x30"); 817 static_assert(IsAsciiDigit(u'0'), "u'0' is an ASCII digit"); 818 static_assert(IsAsciiDigit(u'1'), "u'1' is an ASCII digit"); 819 static_assert(IsAsciiDigit(u'5'), "u'5' is an ASCII digit"); 820 static_assert(IsAsciiDigit(u'8'), "u'8' is an ASCII digit"); 821 static_assert(IsAsciiDigit(u'9'), "u'9' is an ASCII digit"); 822 823 static_assert(u'9' == 0x39, "u'9' has value 0x39"); 824 static_assert(u':' == 0x3A, "u':' has value 0x3A"); 825 static_assert(!IsAsciiDigit(u':'), "u':' isn't an ASCII digit"); 826 827 static_assert(!IsAsciiDigit(u'@'), "u'@' isn't an ASCII digit"); 828 static_assert(!IsAsciiDigit(u'A'), "u'A' isn't an ASCII digit"); 829 static_assert(!IsAsciiDigit(u'B'), "u'B' isn't an ASCII digit"); 830 static_assert(!IsAsciiDigit(u'M'), "u'M' isn't an ASCII digit"); 831 static_assert(!IsAsciiDigit(u'Y'), "u'Y' isn't an ASCII digit"); 832 static_assert(!IsAsciiDigit(u'Z'), "u'Z' isn't an ASCII digit"); 833 static_assert(!IsAsciiDigit(u'['), "u'[' isn't an ASCII digit"); 834 static_assert(!IsAsciiDigit(u'`'), "u'`' isn't an ASCII digit"); 835 static_assert(!IsAsciiDigit(u'a'), "u'a' isn't an ASCII digit"); 836 static_assert(!IsAsciiDigit(u'b'), "u'b' isn't an ASCII digit"); 837 static_assert(!IsAsciiDigit(u'm'), "u'm' isn't an ASCII digit"); 838 static_assert(!IsAsciiDigit(u'y'), "u'y' isn't an ASCII digit"); 839 static_assert(!IsAsciiDigit(u'z'), "u'z' isn't an ASCII digit"); 840 static_assert(!IsAsciiDigit(u'{'), "u'{' isn't an ASCII digit"); 841 842 // char32_t 843 844 static_assert(!IsAsciiDigit(U'/'), "U'/' isn't an ASCII digit"); 845 static_assert(U'/' == 0x2F, "U'/' has value 0x2F"); 846 847 static_assert(U'0' == 0x30, "U'0' has value 0x30"); 848 static_assert(IsAsciiDigit(U'0'), "U'0' is an ASCII digit"); 849 static_assert(IsAsciiDigit(U'1'), "U'1' is an ASCII digit"); 850 static_assert(IsAsciiDigit(U'5'), "U'5' is an ASCII digit"); 851 static_assert(IsAsciiDigit(U'8'), "U'8' is an ASCII digit"); 852 static_assert(IsAsciiDigit(U'9'), "U'9' is an ASCII digit"); 853 854 static_assert(U'9' == 0x39, "U'9' has value 0x39"); 855 static_assert(U':' == 0x3A, "U':' has value 0x3A"); 856 static_assert(!IsAsciiDigit(U':'), "U':' isn't an ASCII digit"); 857 858 static_assert(!IsAsciiDigit(U'@'), "U'@' isn't an ASCII digit"); 859 static_assert(!IsAsciiDigit(U'A'), "U'A' isn't an ASCII digit"); 860 static_assert(!IsAsciiDigit(U'B'), "U'B' isn't an ASCII digit"); 861 static_assert(!IsAsciiDigit(U'M'), "U'M' isn't an ASCII digit"); 862 static_assert(!IsAsciiDigit(U'Y'), "U'Y' isn't an ASCII digit"); 863 static_assert(!IsAsciiDigit(U'Z'), "U'Z' isn't an ASCII digit"); 864 static_assert(!IsAsciiDigit(U'['), "U'[' isn't an ASCII digit"); 865 static_assert(!IsAsciiDigit(U'`'), "U'`' isn't an ASCII digit"); 866 static_assert(!IsAsciiDigit(U'a'), "U'a' isn't an ASCII digit"); 867 static_assert(!IsAsciiDigit(U'b'), "U'b' isn't an ASCII digit"); 868 static_assert(!IsAsciiDigit(U'm'), "U'm' isn't an ASCII digit"); 869 static_assert(!IsAsciiDigit(U'y'), "U'y' isn't an ASCII digit"); 870 static_assert(!IsAsciiDigit(U'z'), "U'z' isn't an ASCII digit"); 871 static_assert(!IsAsciiDigit(U'{'), "U'{' isn't an ASCII digit"); 872 } 873 874 int main() { 875 TestIsAscii(); 876 TestIsAsciiNullTerminated(); 877 TestIsAsciiAlpha(); 878 TestIsAsciiUppercaseAlpha(); 879 TestIsAsciiLowercaseAlpha(); 880 TestIsAsciiAlphanumeric(); 881 TestAsciiAlphanumericToNumber(); 882 TestIsAsciiDigit(); 883 }