/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
* You can obtain one at http://mozilla.org/MPL/2.0/. */
#include "mozilla/Assertions.h"
#include "mozilla/TextUtils.h"
using mozilla::AsciiAlphanumericToNumber;
using mozilla::IsAscii;
using mozilla::IsAsciiAlpha;
using mozilla::IsAsciiAlphanumeric;
using mozilla::IsAsciiDigit;
using mozilla::IsAsciiLowercaseAlpha;
using mozilla::IsAsciiNullTerminated;
using mozilla::IsAsciiUppercaseAlpha;
static void TestIsAscii() {
// char
static_assert(!IsAscii(
char(-
1)),
"char(-1) isn't ASCII");
static_assert(IsAscii(
'\0'),
"nul is ASCII");
static_assert(IsAscii(
'A'),
"'A' is ASCII");
static_assert(IsAscii(
'B'),
"'B' is ASCII");
static_assert(IsAscii(
'M'),
"'M' is ASCII");
static_assert(IsAscii(
'Y'),
"'Y' is ASCII");
static_assert(IsAscii(
'Z'),
"'Z' is ASCII");
static_assert(IsAscii(
'['),
"'[' is ASCII");
static_assert(IsAscii(
'`'),
"'`' is ASCII");
static_assert(IsAscii(
'a'),
"'a' is ASCII");
static_assert(IsAscii(
'b'),
"'b' is ASCII");
static_assert(IsAscii(
'm'),
"'m' is ASCII");
static_assert(IsAscii(
'y'),
"'y' is ASCII");
static_assert(IsAscii(
'z'),
"'z' is ASCII");
static_assert(IsAscii(
'{'),
"'{' is ASCII");
static_assert(IsAscii(
'5'),
"'5' is ASCII");
static_assert(IsAscii(
'\x7F'),
"'\\x7F' is ASCII");
static_assert(!IsAscii(
'\x80'),
"'\\x80' isn't ASCII");
// char16_t
static_assert(!IsAscii(char16_t(-
1)),
"char16_t(-1) isn't ASCII");
static_assert(IsAscii(u
'\0'),
"nul is ASCII");
static_assert(IsAscii(u
'A'),
"u'A' is ASCII");
static_assert(IsAscii(u
'B'),
"u'B' is ASCII");
static_assert(IsAscii(u
'M'),
"u'M' is ASCII");
static_assert(IsAscii(u
'Y'),
"u'Y' is ASCII");
static_assert(IsAscii(u
'Z'),
"u'Z' is ASCII");
static_assert(IsAscii(u
'['),
"u'[' is ASCII");
static_assert(IsAscii(u
'`'),
"u'`' is ASCII");
static_assert(IsAscii(u
'a'),
"u'a' is ASCII");
static_assert(IsAscii(u
'b'),
"u'b' is ASCII");
static_assert(IsAscii(u
'm'),
"u'm' is ASCII");
static_assert(IsAscii(u
'y'),
"u'y' is ASCII");
static_assert(IsAscii(u
'z'),
"u'z' is ASCII");
static_assert(IsAscii(u
'{'),
"u'{' is ASCII");
static_assert(IsAscii(u
'5'),
"u'5' is ASCII");
static_assert(IsAscii(u
'\x7F'),
"u'\\x7F' is ASCII");
static_assert(!IsAscii(u
'\x80'),
"u'\\x80' isn't ASCII");
// char32_t
static_assert(!IsAscii(char32_t(-
1)),
"char32_t(-1) isn't ASCII");
static_assert(IsAscii(U
'\0'),
"nul is ASCII");
static_assert(IsAscii(U
'A'),
"U'A' is ASCII");
static_assert(IsAscii(U
'B'),
"U'B' is ASCII");
static_assert(IsAscii(U
'M'),
"U'M' is ASCII");
static_assert(IsAscii(U
'Y'),
"U'Y' is ASCII");
static_assert(IsAscii(U
'Z'),
"U'Z' is ASCII");
static_assert(IsAscii(U
'['),
"U'[' is ASCII");
static_assert(IsAscii(U
'`'),
"U'`' is ASCII");
static_assert(IsAscii(U
'a'),
"U'a' is ASCII");
static_assert(IsAscii(U
'b'),
"U'b' is ASCII");
static_assert(IsAscii(U
'm'),
"U'm' is ASCII");
static_assert(IsAscii(U
'y'),
"U'y' is ASCII");
static_assert(IsAscii(U
'z'),
"U'z' is ASCII");
static_assert(IsAscii(U
'{'),
"U'{' is ASCII");
static_assert(IsAscii(U
'5'),
"U'5' is ASCII");
static_assert(IsAscii(U
'\x7F'),
"U'\\x7F' is ASCII");
static_assert(!IsAscii(U
'\x80'),
"U'\\x80' isn't ASCII");
}
static void TestIsAsciiNullTerminated() {
// char
constexpr
char allChar[] =
"\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\0x0C\x0D\x0E\x0F"
"\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\0x1C\x1D\x1E\x1F"
"\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2A\x2B\0x2C\x2D\x2E\x2F"
"\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3A\x3B\0x3C\x3D\x3E\x3F"
"\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4A\x4B\0x4C\x4D\x4E\x4F"
"\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5A\x5B\0x5C\x5D\x5E\x5F"
"\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6A\x6B\0x6C\x6D\x6E\x6F"
"\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7A\x7B\0x7C\x7D\x7E\x7F";
static_assert(IsAsciiNullTerminated(allChar),
"allChar is ASCII");
constexpr
char loBadChar[] =
"\x80";
static_assert(!IsAsciiNullTerminated(loBadChar),
"loBadChar isn't ASCII");
constexpr
char hiBadChar[] =
"\xFF";
static_assert(!IsAsciiNullTerminated(hiBadChar),
"hiBadChar isn't ASCII");
// char16_t
constexpr char16_t allChar16[] =
u
"\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\0x0C\x0D\x0E\x0F"
"\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\0x1C\x1D\x1E\x1F"
"\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2A\x2B\0x2C\x2D\x2E\x2F"
"\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3A\x3B\0x3C\x3D\x3E\x3F"
"\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4A\x4B\0x4C\x4D\x4E\x4F"
"\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5A\x5B\0x5C\x5D\x5E\x5F"
"\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6A\x6B\0x6C\x6D\x6E\x6F"
"\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7A\x7B\0x7C\x7D\x7E\x7F";
static_assert(IsAsciiNullTerminated(allChar16),
"allChar16 is ASCII");
constexpr char16_t loBadChar16[] = u
"\x80";
static_assert(!IsAsciiNullTerminated(loBadChar16),
"loBadChar16 isn't ASCII");
constexpr char16_t hiBadChar16[] = u
"\xFF";
static_assert(!IsAsciiNullTerminated(hiBadChar16),
"hiBadChar16 isn't ASCII");
constexpr char16_t highestChar16[] = u
"\uFFFF";
static_assert(!IsAsciiNullTerminated(highestChar16),
"highestChar16 isn't ASCII");
// char32_t
constexpr char32_t allChar32[] =
U
"\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\0x0C\x0D\x0E\x0F"
"\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\0x1C\x1D\x1E\x1F"
"\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2A\x2B\0x2C\x2D\x2E\x2F"
"\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3A\x3B\0x3C\x3D\x3E\x3F"
"\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4A\x4B\0x4C\x4D\x4E\x4F"
"\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5A\x5B\0x5C\x5D\x5E\x5F"
"\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6A\x6B\0x6C\x6D\x6E\x6F"
"\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7A\x7B\0x7C\x7D\x7E\x7F";
static_assert(IsAsciiNullTerminated(allChar32),
"allChar32 is ASCII");
constexpr char32_t loBadChar32[] = U
"\x80";
static_assert(!IsAsciiNullTerminated(loBadChar32),
"loBadChar32 isn't ASCII");
constexpr char32_t hiBadChar32[] = U
"\xFF";
static_assert(!IsAsciiNullTerminated(hiBadChar32),
"hiBadChar32 isn't ASCII");
constexpr char32_t highestChar32[] = {
static_cast<char32_t>(-
1),
0};
static_assert(!IsAsciiNullTerminated(highestChar32),
"highestChar32 isn't ASCII");
}
static void TestIsAsciiAlpha() {
// char
static_assert(!IsAsciiAlpha(
'@'),
"'@' isn't ASCII alpha");
static_assert(
'@' ==
0x40,
"'@' has value 0x40");
static_assert(
'A' ==
0x41,
"'A' has value 0x41");
static_assert(IsAsciiAlpha(
'A'),
"'A' is ASCII alpha");
static_assert(IsAsciiAlpha(
'B'),
"'B' is ASCII alpha");
static_assert(IsAsciiAlpha(
'M'),
"'M' is ASCII alpha");
static_assert(IsAsciiAlpha(
'Y'),
"'Y' is ASCII alpha");
static_assert(IsAsciiAlpha(
'Z'),
"'Z' is ASCII alpha");
static_assert(
'Z' ==
0x5A,
"'Z' has value 0x5A");
static_assert(
'[' ==
0x5B,
"'[' has value 0x5B");
static_assert(!IsAsciiAlpha(
'['),
"'[' isn't ASCII alpha");
static_assert(!IsAsciiAlpha(
'`'),
"'`' isn't ASCII alpha");
static_assert(
'`' ==
0x60,
"'`' has value 0x60");
static_assert(
'a' ==
0x61,
"'a' has value 0x61");
static_assert(IsAsciiAlpha(
'a'),
"'a' is ASCII alpha");
static_assert(IsAsciiAlpha(
'b'),
"'b' is ASCII alpha");
static_assert(IsAsciiAlpha(
'm'),
"'m' is ASCII alpha");
static_assert(IsAsciiAlpha(
'y'),
"'y' is ASCII alpha");
static_assert(IsAsciiAlpha(
'z'),
"'z' is ASCII alpha");
static_assert(
'z' ==
0x7A,
"'z' has value 0x7A");
static_assert(
'{' ==
0x7B,
"'{' has value 0x7B");
static_assert(!IsAsciiAlpha(
'{'),
"'{' isn't ASCII alpha");
static_assert(!IsAsciiAlpha(
'5'),
"'5' isn't ASCII alpha");
// char16_t
static_assert(!IsAsciiAlpha(u
'@'),
"u'@' isn't ASCII alpha");
static_assert(u
'@' ==
0x40,
"u'@' has value 0x40");
static_assert(u
'A' ==
0x41,
"u'A' has value 0x41");
static_assert(IsAsciiAlpha(u
'A'),
"u'A' is ASCII alpha");
static_assert(IsAsciiAlpha(u
'B'),
"u'B' is ASCII alpha");
static_assert(IsAsciiAlpha(u
'M'),
"u'M' is ASCII alpha");
static_assert(IsAsciiAlpha(u
'Y'),
"u'Y' is ASCII alpha");
static_assert(IsAsciiAlpha(u
'Z'),
"u'Z' is ASCII alpha");
static_assert(u
'Z' ==
0x5A,
"u'Z' has value 0x5A");
static_assert(u
'[' ==
0x5B,
"u'[' has value 0x5B");
static_assert(!IsAsciiAlpha(u
'['),
"u'[' isn't ASCII alpha");
static_assert(!IsAsciiAlpha(u
'`'),
"u'`' isn't ASCII alpha");
static_assert(u
'`' ==
0x60,
"u'`' has value 0x60");
static_assert(u
'a' ==
0x61,
"u'a' has value 0x61");
static_assert(IsAsciiAlpha(u
'a'),
"u'a' is ASCII alpha");
static_assert(IsAsciiAlpha(u
'b'),
"u'b' is ASCII alpha");
static_assert(IsAsciiAlpha(u
'm'),
"u'm' is ASCII alpha");
static_assert(IsAsciiAlpha(u
'y'),
"u'y' is ASCII alpha");
static_assert(IsAsciiAlpha(u
'z'),
"u'z' is ASCII alpha");
static_assert(u
'z' ==
0x7A,
"u'z' has value 0x7A");
static_assert(u
'{' ==
0x7B,
"u'{' has value 0x7B");
static_assert(!IsAsciiAlpha(u
'{'),
"u'{' isn't ASCII alpha");
static_assert(!IsAsciiAlpha(u
'5'),
"u'5' isn't ASCII alpha");
// char32_t
static_assert(!IsAsciiAlpha(U
'@'),
"U'@' isn't ASCII alpha");
static_assert(U
'@' ==
0x40,
"U'@' has value 0x40");
static_assert(U
'A' ==
0x41,
"U'A' has value 0x41");
static_assert(IsAsciiAlpha(U
'A'),
"U'A' is ASCII alpha");
static_assert(IsAsciiAlpha(U
'B'),
"U'B' is ASCII alpha");
static_assert(IsAsciiAlpha(U
'M'),
"U'M' is ASCII alpha");
static_assert(IsAsciiAlpha(U
'Y'),
"U'Y' is ASCII alpha");
static_assert(IsAsciiAlpha(U
'Z'),
"U'Z' is ASCII alpha");
static_assert(U
'Z' ==
0x5A,
"U'Z' has value 0x5A");
static_assert(U
'[' ==
0x5B,
"U'[' has value 0x5B");
static_assert(!IsAsciiAlpha(U
'['),
"U'[' isn't ASCII alpha");
static_assert(!IsAsciiAlpha(U
'`'),
"U'`' isn't ASCII alpha");
static_assert(U
'`' ==
0x60,
"U'`' has value 0x60");
static_assert(U
'a' ==
0x61,
"U'a' has value 0x61");
static_assert(IsAsciiAlpha(U
'a'),
"U'a' is ASCII alpha");
static_assert(IsAsciiAlpha(U
'b'),
"U'b' is ASCII alpha");
static_assert(IsAsciiAlpha(U
'm'),
"U'm' is ASCII alpha");
static_assert(IsAsciiAlpha(U
'y'),
"U'y' is ASCII alpha");
static_assert(IsAsciiAlpha(U
'z'),
"U'z' is ASCII alpha");
static_assert(U
'z' ==
0x7A,
"U'z' has value 0x7A");
static_assert(U
'{' ==
0x7B,
"U'{' has value 0x7B");
static_assert(!IsAsciiAlpha(U
'{'),
"U'{' isn't ASCII alpha");
static_assert(!IsAsciiAlpha(U
'5'),
"U'5' isn't ASCII alpha");
}
static void TestIsAsciiUppercaseAlpha() {
// char
static_assert(!IsAsciiUppercaseAlpha(
'@'),
"'@' isn't ASCII alpha uppercase");
static_assert(
'@' ==
0x40,
"'@' has value 0x40");
static_assert(
'A' ==
0x41,
"'A' has value 0x41");
static_assert(IsAsciiUppercaseAlpha(
'A'),
"'A' is ASCII alpha uppercase");
static_assert(IsAsciiUppercaseAlpha(
'B'),
"'B' is ASCII alpha uppercase");
static_assert(IsAsciiUppercaseAlpha(
'M'),
"'M' is ASCII alpha uppercase");
static_assert(IsAsciiUppercaseAlpha(
'Y'),
"'Y' is ASCII alpha uppercase");
static_assert(IsAsciiUppercaseAlpha(
'Z'),
"'Z' is ASCII alpha uppercase");
static_assert(
'Z' ==
0x5A,
"'Z' has value 0x5A");
static_assert(
'[' ==
0x5B,
"'[' has value 0x5B");
static_assert(!IsAsciiUppercaseAlpha(
'['),
"'[' isn't ASCII alpha uppercase");
static_assert(!IsAsciiUppercaseAlpha(
'`'),
"'`' isn't ASCII alpha uppercase");
static_assert(!IsAsciiUppercaseAlpha(
'a'),
"'a' is ASCII alpha uppercase");
static_assert(!IsAsciiUppercaseAlpha(
'b'),
"'b' is ASCII alpha uppercase");
static_assert(!IsAsciiUppercaseAlpha(
'm'),
"'m' is ASCII alpha uppercase");
static_assert(!IsAsciiUppercaseAlpha(
'y'),
"'y' is ASCII alpha uppercase");
static_assert(!IsAsciiUppercaseAlpha(
'z'),
"'z' is ASCII alpha uppercase");
static_assert(!IsAsciiUppercaseAlpha(
'{'),
"'{' isn't ASCII alpha uppercase");
// char16_t
static_assert(!IsAsciiUppercaseAlpha(u
'@'),
"u'@' isn't ASCII alpha uppercase");
static_assert(u
'@' ==
0x40,
"u'@' has value 0x40");
static_assert(u
'A' ==
0x41,
"u'A' has value 0x41");
static_assert(IsAsciiUppercaseAlpha(u
'A'),
"u'A' is ASCII alpha uppercase");
static_assert(IsAsciiUppercaseAlpha(u
'B'),
"u'B' is ASCII alpha uppercase");
static_assert(IsAsciiUppercaseAlpha(u
'M'),
"u'M' is ASCII alpha uppercase");
static_assert(IsAsciiUppercaseAlpha(u
'Y'),
"u'Y' is ASCII alpha uppercase");
static_assert(IsAsciiUppercaseAlpha(u
'Z'),
"u'Z' is ASCII alpha uppercase");
static_assert(u
'Z' ==
0x5A,
"u'Z' has value 0x5A");
static_assert(u
'[' ==
0x5B,
"u'[' has value 0x5B");
static_assert(!IsAsciiUppercaseAlpha(u
'['),
"u'[' isn't ASCII alpha uppercase");
static_assert(!IsAsciiUppercaseAlpha(u
'`'),
"u'`' isn't ASCII alpha uppercase");
static_assert(!IsAsciiUppercaseAlpha(u
'a'),
"u'a' is ASCII alpha uppercase");
static_assert(!IsAsciiUppercaseAlpha(u
'b'),
"u'b' is ASCII alpha uppercase");
static_assert(!IsAsciiUppercaseAlpha(u
'm'),
"u'm' is ASCII alpha uppercase");
static_assert(!IsAsciiUppercaseAlpha(u
'y'),
"u'y' is ASCII alpha uppercase");
static_assert(!IsAsciiUppercaseAlpha(u
'z'),
"u'z' is ASCII alpha uppercase");
static_assert(!IsAsciiUppercaseAlpha(u
'{'),
"u'{' isn't ASCII alpha uppercase");
// char32_t
static_assert(!IsAsciiUppercaseAlpha(U
'@'),
"U'@' isn't ASCII alpha uppercase");
static_assert(U
'@' ==
0x40,
"U'@' has value 0x40");
static_assert(U
'A' ==
0x41,
"U'A' has value 0x41");
static_assert(IsAsciiUppercaseAlpha(U
'A'),
"U'A' is ASCII alpha uppercase");
static_assert(IsAsciiUppercaseAlpha(U
'B'),
"U'B' is ASCII alpha uppercase");
static_assert(IsAsciiUppercaseAlpha(U
'M'),
"U'M' is ASCII alpha uppercase");
static_assert(IsAsciiUppercaseAlpha(U
'Y'),
"U'Y' is ASCII alpha uppercase");
static_assert(IsAsciiUppercaseAlpha(U
'Z'),
"U'Z' is ASCII alpha uppercase");
static_assert(U
'Z' ==
0x5A,
"U'Z' has value 0x5A");
static_assert(U
'[' ==
0x5B,
"U'[' has value 0x5B");
static_assert(!IsAsciiUppercaseAlpha(U
'['),
"U'[' isn't ASCII alpha uppercase");
static_assert(!IsAsciiUppercaseAlpha(U
'`'),
"U'`' isn't ASCII alpha uppercase");
static_assert(!IsAsciiUppercaseAlpha(U
'a'),
"U'a' is ASCII alpha uppercase");
static_assert(!IsAsciiUppercaseAlpha(U
'b'),
"U'b' is ASCII alpha uppercase");
static_assert(!IsAsciiUppercaseAlpha(U
'm'),
"U'm' is ASCII alpha uppercase");
static_assert(!IsAsciiUppercaseAlpha(U
'y'),
"U'y' is ASCII alpha uppercase");
static_assert(!IsAsciiUppercaseAlpha(U
'z'),
"U'z' is ASCII alpha uppercase");
static_assert(!IsAsciiUppercaseAlpha(U
'{'),
"U'{' isn't ASCII alpha uppercase");
}
static void TestIsAsciiLowercaseAlpha() {
// char
static_assert(!IsAsciiLowercaseAlpha(
'`'),
"'`' isn't ASCII alpha lowercase");
static_assert(
'`' ==
0x60,
"'`' has value 0x60");
static_assert(
'a' ==
0x61,
"'a' has value 0x61");
static_assert(IsAsciiLowercaseAlpha(
'a'),
"'a' is ASCII alpha lowercase");
static_assert(IsAsciiLowercaseAlpha(
'b'),
"'b' is ASCII alpha lowercase");
static_assert(IsAsciiLowercaseAlpha(
'm'),
"'m' is ASCII alpha lowercase");
static_assert(IsAsciiLowercaseAlpha(
'y'),
"'y' is ASCII alpha lowercase");
static_assert(IsAsciiLowercaseAlpha(
'z'),
"'z' is ASCII alpha lowercase");
static_assert(
'z' ==
0x7A,
"'z' has value 0x7A");
static_assert(
'{' ==
0x7B,
"'{' has value 0x7B");
static_assert(!IsAsciiLowercaseAlpha(
'{'),
"'{' isn't ASCII alpha lowercase");
static_assert(!IsAsciiLowercaseAlpha(
'@'),
"'@' isn't ASCII alpha lowercase");
static_assert(!IsAsciiLowercaseAlpha(
'A'),
"'A' is ASCII alpha lowercase");
static_assert(!IsAsciiLowercaseAlpha(
'B'),
"'B' is ASCII alpha lowercase");
static_assert(!IsAsciiLowercaseAlpha(
'M'),
"'M' is ASCII alpha lowercase");
static_assert(!IsAsciiLowercaseAlpha(
'Y'),
"'Y' is ASCII alpha lowercase");
static_assert(!IsAsciiLowercaseAlpha(
'Z'),
"'Z' is ASCII alpha lowercase");
static_assert(!IsAsciiLowercaseAlpha(
'['),
"'[' isn't ASCII alpha lowercase");
// char16_t
static_assert(!IsAsciiLowercaseAlpha(u
'`'),
"u'`' isn't ASCII alpha lowercase");
static_assert(u
'`' ==
0x60,
"u'`' has value 0x60");
static_assert(u
'a' ==
0x61,
"u'a' has value 0x61");
static_assert(IsAsciiLowercaseAlpha(u
'a'),
"u'a' is ASCII alpha lowercase");
static_assert(IsAsciiLowercaseAlpha(u
'b'),
"u'b' is ASCII alpha lowercase");
static_assert(IsAsciiLowercaseAlpha(u
'm'),
"u'm' is ASCII alpha lowercase");
static_assert(IsAsciiLowercaseAlpha(u
'y'),
"u'y' is ASCII alpha lowercase");
static_assert(IsAsciiLowercaseAlpha(u
'z'),
"u'z' is ASCII alpha lowercase");
static_assert(u
'z' ==
0x7A,
"u'z' has value 0x7A");
static_assert(u
'{' ==
0x7B,
"u'{' has value 0x7B");
static_assert(!IsAsciiLowercaseAlpha(u
'{'),
"u'{' isn't ASCII alpha lowercase");
static_assert(!IsAsciiLowercaseAlpha(u
'@'),
"u'@' isn't ASCII alpha lowercase");
static_assert(!IsAsciiLowercaseAlpha(u
'A'),
"u'A' is ASCII alpha lowercase");
static_assert(!IsAsciiLowercaseAlpha(u
'B'),
"u'B' is ASCII alpha lowercase");
static_assert(!IsAsciiLowercaseAlpha(u
'M'),
"u'M' is ASCII alpha lowercase");
static_assert(!IsAsciiLowercaseAlpha(u
'Y'),
"u'Y' is ASCII alpha lowercase");
static_assert(!IsAsciiLowercaseAlpha(u
'Z'),
"u'Z' is ASCII alpha lowercase");
static_assert(!IsAsciiLowercaseAlpha(u
'['),
"u'[' isn't ASCII alpha lowercase");
// char32_t
static_assert(!IsAsciiLowercaseAlpha(U
'`'),
"U'`' isn't ASCII alpha lowercase");
static_assert(U
'`' ==
0x60,
"U'`' has value 0x60");
static_assert(U
'a' ==
0x61,
"U'a' has value 0x61");
static_assert(IsAsciiLowercaseAlpha(U
'a'),
"U'a' is ASCII alpha lowercase");
static_assert(IsAsciiLowercaseAlpha(U
'b'),
"U'b' is ASCII alpha lowercase");
static_assert(IsAsciiLowercaseAlpha(U
'm'),
"U'm' is ASCII alpha lowercase");
static_assert(IsAsciiLowercaseAlpha(U
'y'),
"U'y' is ASCII alpha lowercase");
static_assert(IsAsciiLowercaseAlpha(U
'z'),
"U'z' is ASCII alpha lowercase");
static_assert(U
'z' ==
0x7A,
"U'z' has value 0x7A");
static_assert(U
'{' ==
0x7B,
"U'{' has value 0x7B");
static_assert(!IsAsciiLowercaseAlpha(U
'{'),
"U'{' isn't ASCII alpha lowercase");
static_assert(!IsAsciiLowercaseAlpha(U
'@'),
"U'@' isn't ASCII alpha lowercase");
static_assert(!IsAsciiLowercaseAlpha(U
'A'),
"U'A' is ASCII alpha lowercase");
static_assert(!IsAsciiLowercaseAlpha(U
'B'),
"U'B' is ASCII alpha lowercase");
static_assert(!IsAsciiLowercaseAlpha(U
'M'),
"U'M' is ASCII alpha lowercase");
static_assert(!IsAsciiLowercaseAlpha(U
'Y'),
"U'Y' is ASCII alpha lowercase");
static_assert(!IsAsciiLowercaseAlpha(U
'Z'),
"U'Z' is ASCII alpha lowercase");
static_assert(!IsAsciiLowercaseAlpha(U
'['),
"U'[' isn't ASCII alpha lowercase");
}
static void TestIsAsciiAlphanumeric() {
// char
static_assert(!IsAsciiAlphanumeric(
'/'),
"'/' isn't ASCII alphanumeric");
static_assert(
'/' ==
0x2F,
"'/' has value 0x2F");
static_assert(
'0' ==
0x30,
"'0' has value 0x30");
static_assert(IsAsciiAlphanumeric(
'0'),
"'0' is ASCII alphanumeric");
static_assert(IsAsciiAlphanumeric(
'1'),
"'1' is ASCII alphanumeric");
static_assert(IsAsciiAlphanumeric(
'5'),
"'5' is ASCII alphanumeric");
static_assert(IsAsciiAlphanumeric(
'8'),
"'8' is ASCII alphanumeric");
static_assert(IsAsciiAlphanumeric(
'9'),
"'9' is ASCII alphanumeric");
static_assert(
'9' ==
0x39,
"'9' has value 0x39");
static_assert(
':' ==
0x3A,
"':' has value 0x3A");
static_assert(!IsAsciiAlphanumeric(
':'),
"':' isn't ASCII alphanumeric");
static_assert(!IsAsciiAlphanumeric(
'@'),
"'@' isn't ASCII alphanumeric");
static_assert(
'@' ==
0x40,
"'@' has value 0x40");
static_assert(
'A' ==
0x41,
"'A' has value 0x41");
static_assert(IsAsciiAlphanumeric(
'A'),
"'A' is ASCII alphanumeric");
static_assert(IsAsciiAlphanumeric(
'B'),
"'B' is ASCII alphanumeric");
static_assert(IsAsciiAlphanumeric(
'M'),
"'M' is ASCII alphanumeric");
static_assert(IsAsciiAlphanumeric(
'Y'),
"'Y' is ASCII alphanumeric");
static_assert(IsAsciiAlphanumeric(
'Z'),
"'Z' is ASCII alphanumeric");
static_assert(
'Z' ==
0x5A,
"'Z' has value 0x5A");
static_assert(
'[' ==
0x5B,
"'[' has value 0x5B");
static_assert(!IsAsciiAlphanumeric(
'['),
"'[' isn't ASCII alphanumeric");
static_assert(!IsAsciiAlphanumeric(
'`'),
"'`' isn't ASCII alphanumeric");
static_assert(
'`' ==
0x60,
"'`' has value 0x60");
static_assert(
'a' ==
0x61,
"'a' has value 0x61");
static_assert(IsAsciiAlphanumeric(
'a'),
"'a' is ASCII alphanumeric");
static_assert(IsAsciiAlphanumeric(
'b'),
"'b' is ASCII alphanumeric");
static_assert(IsAsciiAlphanumeric(
'm'),
"'m' is ASCII alphanumeric");
static_assert(IsAsciiAlphanumeric(
'y'),
"'y' is ASCII alphanumeric");
static_assert(IsAsciiAlphanumeric(
'z'),
"'z' is ASCII alphanumeric");
static_assert(
'z' ==
0x7A,
"'z' has value 0x7A");
static_assert(
'{' ==
0x7B,
"'{' has value 0x7B");
static_assert(!IsAsciiAlphanumeric(
'{'),
"'{' isn't ASCII alphanumeric");
// char16_t
static_assert(!IsAsciiAlphanumeric(u
'/'),
"u'/' isn't ASCII alphanumeric");
static_assert(u
'/' ==
0x2F,
"u'/' has value 0x2F");
static_assert(u
'0' ==
0x30,
"u'0' has value 0x30");
static_assert(IsAsciiAlphanumeric(u
'0'),
"u'0' is ASCII alphanumeric");
static_assert(IsAsciiAlphanumeric(u
'1'),
"u'1' is ASCII alphanumeric");
static_assert(IsAsciiAlphanumeric(u
'5'),
"u'5' is ASCII alphanumeric");
static_assert(IsAsciiAlphanumeric(u
'8'),
"u'8' is ASCII alphanumeric");
static_assert(IsAsciiAlphanumeric(u
'9'),
"u'9' is ASCII alphanumeric");
static_assert(u
'9' ==
0x39,
"u'9' has value 0x39");
static_assert(u
':' ==
0x3A,
"u':' has value 0x3A");
static_assert(!IsAsciiAlphanumeric(u
':'),
"u':' isn't ASCII alphanumeric");
static_assert(!IsAsciiAlphanumeric(u
'@'),
"u'@' isn't ASCII alphanumeric");
static_assert(u
'@' ==
0x40,
"u'@' has value 0x40");
static_assert(u
'A' ==
0x41,
"u'A' has value 0x41");
static_assert(IsAsciiAlphanumeric(u
'A'),
"u'A' is ASCII alphanumeric");
static_assert(IsAsciiAlphanumeric(u
'B'),
"u'B' is ASCII alphanumeric");
static_assert(IsAsciiAlphanumeric(u
'M'),
"u'M' is ASCII alphanumeric");
static_assert(IsAsciiAlphanumeric(u
'Y'),
"u'Y' is ASCII alphanumeric");
static_assert(IsAsciiAlphanumeric(u
'Z'),
"u'Z' is ASCII alphanumeric");
static_assert(u
'Z' ==
0x5A,
"u'Z' has value 0x5A");
static_assert(u
'[' ==
0x5B,
"u'[' has value 0x5B");
static_assert(!IsAsciiAlphanumeric(u
'['),
"u'[' isn't ASCII alphanumeric");
static_assert(!IsAsciiAlphanumeric(u
'`'),
"u'`' isn't ASCII alphanumeric");
static_assert(u
'`' ==
0x60,
"u'`' has value 0x60");
static_assert(u
'a' ==
0x61,
"u'a' has value 0x61");
static_assert(IsAsciiAlphanumeric(u
'a'),
"u'a' is ASCII alphanumeric");
static_assert(IsAsciiAlphanumeric(u
'b'),
"u'b' is ASCII alphanumeric");
static_assert(IsAsciiAlphanumeric(u
'm'),
"u'm' is ASCII alphanumeric");
static_assert(IsAsciiAlphanumeric(u
'y'),
"u'y' is ASCII alphanumeric");
static_assert(IsAsciiAlphanumeric(u
'z'),
"u'z' is ASCII alphanumeric");
static_assert(u
'z' ==
0x7A,
"u'z' has value 0x7A");
static_assert(u
'{' ==
0x7B,
"u'{' has value 0x7B");
static_assert(!IsAsciiAlphanumeric(u
'{'),
"u'{' isn't ASCII alphanumeric");
// char32_t
static_assert(!IsAsciiAlphanumeric(U
'/'),
"U'/' isn't ASCII alphanumeric");
static_assert(U
'/' ==
0x2F,
"U'/' has value 0x2F");
static_assert(U
'0' ==
0x30,
"U'0' has value 0x30");
static_assert(IsAsciiAlphanumeric(U
'0'),
"U'0' is ASCII alphanumeric");
static_assert(IsAsciiAlphanumeric(U
'1'),
"U'1' is ASCII alphanumeric");
static_assert(IsAsciiAlphanumeric(U
'5'),
"U'5' is ASCII alphanumeric");
static_assert(IsAsciiAlphanumeric(U
'8'),
"U'8' is ASCII alphanumeric");
static_assert(IsAsciiAlphanumeric(U
'9'),
"U'9' is ASCII alphanumeric");
static_assert(U
'9' ==
0x39,
"U'9' has value 0x39");
static_assert(U
':' ==
0x3A,
"U':' has value 0x3A");
static_assert(!IsAsciiAlphanumeric(U
':'),
"U':' isn't ASCII alphanumeric");
static_assert(!IsAsciiAlphanumeric(U
'@'),
"U'@' isn't ASCII alphanumeric");
static_assert(U
'@' ==
0x40,
"U'@' has value 0x40");
static_assert(U
'A' ==
0x41,
"U'A' has value 0x41");
static_assert(IsAsciiAlphanumeric(U
'A'),
"U'A' is ASCII alphanumeric");
static_assert(IsAsciiAlphanumeric(U
'B'),
"U'B' is ASCII alphanumeric");
static_assert(IsAsciiAlphanumeric(U
'M'),
"U'M' is ASCII alphanumeric");
static_assert(IsAsciiAlphanumeric(U
'Y'),
"U'Y' is ASCII alphanumeric");
static_assert(IsAsciiAlphanumeric(U
'Z'),
"U'Z' is ASCII alphanumeric");
static_assert(U
'Z' ==
0x5A,
"U'Z' has value 0x5A");
static_assert(U
'[' ==
0x5B,
"U'[' has value 0x5B");
static_assert(!IsAsciiAlphanumeric(U
'['),
"U'[' isn't ASCII alphanumeric");
static_assert(!IsAsciiAlphanumeric(U
'`'),
"U'`' isn't ASCII alphanumeric");
static_assert(U
'`' ==
0x60,
"U'`' has value 0x60");
static_assert(U
'a' ==
0x61,
"U'a' has value 0x61");
static_assert(IsAsciiAlphanumeric(U
'a'),
"U'a' is ASCII alphanumeric");
static_assert(IsAsciiAlphanumeric(U
'b'),
"U'b' is ASCII alphanumeric");
static_assert(IsAsciiAlphanumeric(U
'm'),
"U'm' is ASCII alphanumeric");
static_assert(IsAsciiAlphanumeric(U
'y'),
"U'y' is ASCII alphanumeric");
static_assert(IsAsciiAlphanumeric(U
'z'),
"U'z' is ASCII alphanumeric");
static_assert(U
'z' ==
0x7A,
"U'z' has value 0x7A");
static_assert(U
'{' ==
0x7B,
"U'{' has value 0x7B");
static_assert(!IsAsciiAlphanumeric(U
'{'),
"U'{' isn't ASCII alphanumeric");
}
static void TestAsciiAlphanumericToNumber() {
// When AsciiAlphanumericToNumber becomes constexpr, make sure to convert all
// these to just static_assert.
// char
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(
'0') ==
0,
"'0' converts to 0");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(
'1') ==
1,
"'1' converts to 1");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(
'2') ==
2,
"'2' converts to 2");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(
'3') ==
3,
"'3' converts to 3");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(
'4') ==
4,
"'4' converts to 4");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(
'5') ==
5,
"'5' converts to 5");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(
'6') ==
6,
"'6' converts to 6");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(
'7') ==
7,
"'7' converts to 7");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(
'8') ==
8,
"'8' converts to 8");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(
'9') ==
9,
"'9' converts to 9");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(
'A') ==
10,
"'A' converts to 10");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(
'B') ==
11,
"'B' converts to 11");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(
'C') ==
12,
"'C' converts to 12");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(
'D') ==
13,
"'D' converts to 13");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(
'E') ==
14,
"'E' converts to 14");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(
'F') ==
15,
"'F' converts to 15");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(
'G') ==
16,
"'G' converts to 16");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(
'H') ==
17,
"'H' converts to 17");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(
'I') ==
18,
"'I' converts to 18");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(
'J') ==
19,
"'J' converts to 19");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(
'K') ==
20,
"'K' converts to 20");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(
'L') ==
21,
"'L' converts to 21");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(
'M') ==
22,
"'M' converts to 22");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(
'N') ==
23,
"'N' converts to 23");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(
'O') ==
24,
"'O' converts to 24");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(
'P') ==
25,
"'P' converts to 25");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(
'Q') ==
26,
"'Q' converts to 26");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(
'R') ==
27,
"'R' converts to 27");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(
'S') ==
28,
"'S' converts to 28");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(
'T') ==
29,
"'T' converts to 29");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(
'U') ==
30,
"'U' converts to 30");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(
'V') ==
31,
"'V' converts to 31");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(
'W') ==
32,
"'W' converts to 32");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(
'X') ==
33,
"'X' converts to 33");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(
'Y') ==
34,
"'Y' converts to 34");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(
'Z') ==
35,
"'Z' converts to 35");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(
'a') ==
10,
"'a' converts to 10");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(
'b') ==
11,
"'b' converts to 11");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(
'c') ==
12,
"'c' converts to 12");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(
'd') ==
13,
"'d' converts to 13");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(
'e') ==
14,
"'e' converts to 14");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(
'f') ==
15,
"'f' converts to 15");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(
'g') ==
16,
"'g' converts to 16");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(
'h') ==
17,
"'h' converts to 17");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(
'i') ==
18,
"'i' converts to 18");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(
'j') ==
19,
"'j' converts to 19");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(
'k') ==
20,
"'k' converts to 20");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(
'l') ==
21,
"'l' converts to 21");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(
'm') ==
22,
"'m' converts to 22");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(
'n') ==
23,
"'n' converts to 23");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(
'o') ==
24,
"'o' converts to 24");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(
'p') ==
25,
"'p' converts to 25");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(
'q') ==
26,
"'q' converts to 26");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(
'r') ==
27,
"'r' converts to 27");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(
's') ==
28,
"'s' converts to 28");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(
't') ==
29,
"'t' converts to 29");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(
'u') ==
30,
"'u' converts to 30");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(
'v') ==
31,
"'v' converts to 31");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(
'w') ==
32,
"'w' converts to 32");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(
'x') ==
33,
"'x' converts to 33");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(
'y') ==
34,
"'y' converts to 34");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(
'z') ==
35,
"'z' converts to 35");
// char16_t
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(u
'0') ==
0,
"u'0' converts to 0");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(u
'1') ==
1,
"u'1' converts to 1");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(u
'2') ==
2,
"u'2' converts to 2");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(u
'3') ==
3,
"u'3' converts to 3");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(u
'4') ==
4,
"u'4' converts to 4");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(u
'5') ==
5,
"u'5' converts to 5");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(u
'6') ==
6,
"u'6' converts to 6");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(u
'7') ==
7,
"u'7' converts to 7");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(u
'8') ==
8,
"u'8' converts to 8");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(u
'9') ==
9,
"u'9' converts to 9");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(u
'A') ==
10,
"u'A' converts to 10");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(u
'B') ==
11,
"u'B' converts to 11");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(u
'C') ==
12,
"u'C' converts to 12");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(u
'D') ==
13,
"u'D' converts to 13");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(u
'E') ==
14,
"u'E' converts to 14");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(u
'F') ==
15,
"u'F' converts to 15");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(u
'G') ==
16,
"u'G' converts to 16");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(u
'H') ==
17,
"u'H' converts to 17");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(u
'I') ==
18,
"u'I' converts to 18");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(u
'J') ==
19,
"u'J' converts to 19");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(u
'K') ==
20,
"u'K' converts to 20");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(u
'L') ==
21,
"u'L' converts to 21");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(u
'M') ==
22,
"u'M' converts to 22");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(u
'N') ==
23,
"u'N' converts to 23");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(u
'O') ==
24,
"u'O' converts to 24");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(u
'P') ==
25,
"u'P' converts to 25");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(u
'Q') ==
26,
"u'Q' converts to 26");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(u
'R') ==
27,
"u'R' converts to 27");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(u
'S') ==
28,
"u'S' converts to 28");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(u
'T') ==
29,
"u'T' converts to 29");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(u
'U') ==
30,
"u'U' converts to 30");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(u
'V') ==
31,
"u'V' converts to 31");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(u
'W') ==
32,
"u'W' converts to 32");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(u
'X') ==
33,
"u'X' converts to 33");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(u
'Y') ==
34,
"u'Y' converts to 34");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(u
'Z') ==
35,
"u'Z' converts to 35");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(u
'a') ==
10,
"u'a' converts to 10");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(u
'b') ==
11,
"u'b' converts to 11");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(u
'c') ==
12,
"u'c' converts to 12");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(u
'd') ==
13,
"u'd' converts to 13");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(u
'e') ==
14,
"u'e' converts to 14");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(u
'f') ==
15,
"u'f' converts to 15");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(u
'g') ==
16,
"u'g' converts to 16");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(u
'h') ==
17,
"u'h' converts to 17");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(u
'i') ==
18,
"u'i' converts to 18");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(u
'j') ==
19,
"u'j' converts to 19");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(u
'k') ==
20,
"u'k' converts to 20");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(u
'l') ==
21,
"u'l' converts to 21");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(u
'm') ==
22,
"u'm' converts to 22");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(u
'n') ==
23,
"u'n' converts to 23");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(u
'o') ==
24,
"u'o' converts to 24");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(u
'p') ==
25,
"u'p' converts to 25");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(u
'q') ==
26,
"u'q' converts to 26");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(u
'r') ==
27,
"u'r' converts to 27");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(u
's') ==
28,
"u's' converts to 28");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(u
't') ==
29,
"u't' converts to 29");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(u
'u') ==
30,
"u'u' converts to 30");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(u
'v') ==
31,
"u'v' converts to 31");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(u
'w') ==
32,
"u'w' converts to 32");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(u
'x') ==
33,
"u'x' converts to 33");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(u
'y') ==
34,
"u'y' converts to 34");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(u
'z') ==
35,
"u'z' converts to 35");
// char32_t
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(U
'0') ==
0,
"U'0' converts to 0");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(U
'1') ==
1,
"U'1' converts to 1");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(U
'2') ==
2,
"U'2' converts to 2");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(U
'3') ==
3,
"U'3' converts to 3");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(U
'4') ==
4,
"U'4' converts to 4");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(U
'5') ==
5,
"U'5' converts to 5");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(U
'6') ==
6,
"U'6' converts to 6");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(U
'7') ==
7,
"U'7' converts to 7");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(U
'8') ==
8,
"U'8' converts to 8");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(U
'9') ==
9,
"U'9' converts to 9");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(U
'A') ==
10,
"U'A' converts to 10");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(U
'B') ==
11,
"U'B' converts to 11");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(U
'C') ==
12,
"U'C' converts to 12");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(U
'D') ==
13,
"U'D' converts to 13");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(U
'E') ==
14,
"U'E' converts to 14");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(U
'F') ==
15,
"U'F' converts to 15");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(U
'G') ==
16,
"U'G' converts to 16");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(U
'H') ==
17,
"U'H' converts to 17");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(U
'I') ==
18,
"U'I' converts to 18");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(U
'J') ==
19,
"U'J' converts to 19");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(U
'K') ==
20,
"U'K' converts to 20");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(U
'L') ==
21,
"U'L' converts to 21");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(U
'M') ==
22,
"U'M' converts to 22");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(U
'N') ==
23,
"U'N' converts to 23");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(U
'O') ==
24,
"U'O' converts to 24");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(U
'P') ==
25,
"U'P' converts to 25");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(U
'Q') ==
26,
"U'Q' converts to 26");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(U
'R') ==
27,
"U'R' converts to 27");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(U
'S') ==
28,
"U'S' converts to 28");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(U
'T') ==
29,
"U'T' converts to 29");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(U
'U') ==
30,
"U'U' converts to 30");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(U
'V') ==
31,
"U'V' converts to 31");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(U
'W') ==
32,
"U'W' converts to 32");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(U
'X') ==
33,
"U'X' converts to 33");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(U
'Y') ==
34,
"U'Y' converts to 34");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(U
'Z') ==
35,
"U'Z' converts to 35");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(U
'a') ==
10,
"U'a' converts to 10");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(U
'b') ==
11,
"U'b' converts to 11");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(U
'c') ==
12,
"U'c' converts to 12");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(U
'd') ==
13,
"U'd' converts to 13");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(U
'e') ==
14,
"U'e' converts to 14");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(U
'f') ==
15,
"U'f' converts to 15");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(U
'g') ==
16,
"U'g' converts to 16");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(U
'h') ==
17,
"U'h' converts to 17");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(U
'i') ==
18,
"U'i' converts to 18");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(U
'j') ==
19,
"U'j' converts to 19");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(U
'k') ==
20,
"U'k' converts to 20");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(U
'l') ==
21,
"U'l' converts to 21");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(U
'm') ==
22,
"U'm' converts to 22");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(U
'n') ==
23,
"U'n' converts to 23");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(U
'o') ==
24,
"U'o' converts to 24");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(U
'p') ==
25,
"U'p' converts to 25");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(U
'q') ==
26,
"U'q' converts to 26");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(U
'r') ==
27,
"U'r' converts to 27");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(U
's') ==
28,
"U's' converts to 28");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(U
't') ==
29,
"U't' converts to 29");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(U
'u') ==
30,
"U'u' converts to 30");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(U
'v') ==
31,
"U'v' converts to 31");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(U
'w') ==
32,
"U'w' converts to 32");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(U
'x') ==
33,
"U'x' converts to 33");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(U
'y') ==
34,
"U'y' converts to 34");
MOZ_RELEASE_ASSERT(AsciiAlphanumericToNumber(U
'z') ==
35,
"U'z' converts to 35");
}
static void TestIsAsciiDigit() {
// char
static_assert(!IsAsciiDigit(
'/'),
"'/' isn't an ASCII digit");
static_assert(
'/' ==
0x2F,
"'/' has value 0x2F");
static_assert(
'0' ==
0x30,
"'0' has value 0x30");
static_assert(IsAsciiDigit(
'0'),
"'0' is an ASCII digit");
static_assert(IsAsciiDigit(
'1'),
"'1' is an ASCII digit");
static_assert(IsAsciiDigit(
'5'),
"'5' is an ASCII digit");
static_assert(IsAsciiDigit(
'8'),
"'8' is an ASCII digit");
static_assert(IsAsciiDigit(
'9'),
"'9' is an ASCII digit");
static_assert(
'9' ==
0x39,
"'9' has value 0x39");
static_assert(
':' ==
0x3A,
"':' has value 0x3A");
static_assert(!IsAsciiDigit(
':'),
"':' isn't an ASCII digit");
static_assert(!IsAsciiDigit(
'@'),
"'@' isn't an ASCII digit");
static_assert(!IsAsciiDigit(
'A'),
"'A' isn't an ASCII digit");
static_assert(!IsAsciiDigit(
'B'),
"'B' isn't an ASCII digit");
static_assert(!IsAsciiDigit(
'M'),
"'M' isn't an ASCII digit");
static_assert(!IsAsciiDigit(
'Y'),
"'Y' isn't an ASCII digit");
static_assert(!IsAsciiDigit(
'Z'),
"'Z' isn't an ASCII digit");
static_assert(!IsAsciiDigit(
'['),
"'[' isn't an ASCII digit");
static_assert(!IsAsciiDigit(
'`'),
"'`' isn't an ASCII digit");
static_assert(!IsAsciiDigit(
'a'),
"'a' isn't an ASCII digit");
static_assert(!IsAsciiDigit(
'b'),
"'b' isn't an ASCII digit");
static_assert(!IsAsciiDigit(
'm'),
"'m' isn't an ASCII digit");
static_assert(!IsAsciiDigit(
'y'),
"'y' isn't an ASCII digit");
static_assert(!IsAsciiDigit(
'z'),
"'z' isn't an ASCII digit");
static_assert(!IsAsciiDigit(
'{'),
"'{' isn't an ASCII digit");
// char16_t
static_assert(!IsAsciiDigit(u
'/'),
"u'/' isn't an ASCII digit");
static_assert(u
'/' ==
0x2F,
"u'/' has value 0x2F");
static_assert(u
'0' ==
0x30,
"u'0' has value 0x30");
static_assert(IsAsciiDigit(u
'0'),
"u'0' is an ASCII digit");
static_assert(IsAsciiDigit(u
'1'),
"u'1' is an ASCII digit");
static_assert(IsAsciiDigit(u
'5'),
"u'5' is an ASCII digit");
static_assert(IsAsciiDigit(u
'8'),
"u'8' is an ASCII digit");
static_assert(IsAsciiDigit(u
'9'),
"u'9' is an ASCII digit");
static_assert(u
'9' ==
0x39,
"u'9' has value 0x39");
static_assert(u
':' ==
0x3A,
"u':' has value 0x3A");
static_assert(!IsAsciiDigit(u
':'),
"u':' isn't an ASCII digit");
static_assert(!IsAsciiDigit(u
'@'),
"u'@' isn't an ASCII digit");
static_assert(!IsAsciiDigit(u
'A'),
"u'A' isn't an ASCII digit");
static_assert(!IsAsciiDigit(u
'B'),
"u'B' isn't an ASCII digit");
static_assert(!IsAsciiDigit(u
'M'),
"u'M' isn't an ASCII digit");
static_assert(!IsAsciiDigit(u
'Y'),
"u'Y' isn't an ASCII digit");
static_assert(!IsAsciiDigit(u
'Z'),
"u'Z' isn't an ASCII digit");
static_assert(!IsAsciiDigit(u
'['),
"u'[' isn't an ASCII digit");
static_assert(!IsAsciiDigit(u
'`'),
"u'`' isn't an ASCII digit");
static_assert(!IsAsciiDigit(u
'a'),
"u'a' isn't an ASCII digit");
static_assert(!IsAsciiDigit(u
'b'),
"u'b' isn't an ASCII digit");
static_assert(!IsAsciiDigit(u
'm'),
"u'm' isn't an ASCII digit");
static_assert(!IsAsciiDigit(u
'y'),
"u'y' isn't an ASCII digit");
static_assert(!IsAsciiDigit(u
'z'),
"u'z' isn't an ASCII digit");
static_assert(!IsAsciiDigit(u
'{'),
"u'{' isn't an ASCII digit");
// char32_t
static_assert(!IsAsciiDigit(U
'/'),
"U'/' isn't an ASCII digit");
static_assert(U
'/' ==
0x2F,
"U'/' has value 0x2F");
static_assert(U
'0' ==
0x30,
"U'0' has value 0x30");
static_assert(IsAsciiDigit(U
'0'),
"U'0' is an ASCII digit");
static_assert(IsAsciiDigit(U
'1'),
"U'1' is an ASCII digit");
static_assert(IsAsciiDigit(U
'5'),
"U'5' is an ASCII digit");
static_assert(IsAsciiDigit(U
'8'),
"U'8' is an ASCII digit");
static_assert(IsAsciiDigit(U
'9'),
"U'9' is an ASCII digit");
static_assert(U
'9' ==
0x39,
"U'9' has value 0x39");
static_assert(U
':' ==
0x3A,
"U':' has value 0x3A");
static_assert(!IsAsciiDigit(U
':'),
"U':' isn't an ASCII digit");
static_assert(!IsAsciiDigit(U
'@'),
"U'@' isn't an ASCII digit");
static_assert(!IsAsciiDigit(U
'A'),
"U'A' isn't an ASCII digit");
static_assert(!IsAsciiDigit(U
'B'),
"U'B' isn't an ASCII digit");
static_assert(!IsAsciiDigit(U
'M'),
"U'M' isn't an ASCII digit");
static_assert(!IsAsciiDigit(U
'Y'),
"U'Y' isn't an ASCII digit");
static_assert(!IsAsciiDigit(U
'Z'),
"U'Z' isn't an ASCII digit");
static_assert(!IsAsciiDigit(U
'['),
"U'[' isn't an ASCII digit");
static_assert(!IsAsciiDigit(U
'`'),
"U'`' isn't an ASCII digit");
static_assert(!IsAsciiDigit(U
'a'),
"U'a' isn't an ASCII digit");
static_assert(!IsAsciiDigit(U
'b'),
"U'b' isn't an ASCII digit");
static_assert(!IsAsciiDigit(U
'm'),
"U'm' isn't an ASCII digit");
static_assert(!IsAsciiDigit(U
'y'),
"U'y' isn't an ASCII digit");
static_assert(!IsAsciiDigit(U
'z'),
"U'z' isn't an ASCII digit");
static_assert(!IsAsciiDigit(U
'{'),
"U'{' isn't an ASCII digit");
}
int main() {
TestIsAscii();
TestIsAsciiNullTerminated();
TestIsAsciiAlpha();
TestIsAsciiUppercaseAlpha();
TestIsAsciiLowercaseAlpha();
TestIsAsciiAlphanumeric();
TestAsciiAlphanumericToNumber();
TestIsAsciiDigit();
}