From 8dcb1de91e15ff7fc66279cd9cd9ad8a70f624e0 Mon Sep 17 00:00:00 2001 From: Dominick Allen Date: Tue, 29 Oct 2024 23:16:46 -0500 Subject: u8 string literals --- test/test_utf8.cpp | 123 ++++++++++++++++++++++++++--------------------------- 1 file changed, 60 insertions(+), 63 deletions(-) (limited to 'test/test_utf8.cpp') diff --git a/test/test_utf8.cpp b/test/test_utf8.cpp index 8c3cad2..591d1a3 100644 --- a/test/test_utf8.cpp +++ b/test/test_utf8.cpp @@ -203,9 +203,6 @@ TEST(Utf8Test, Utf8MultiByte) EXPECT_EQ(character.size(), multiByteCharacters[idx].size()); EXPECT_EQ(character, multiByteCharacters[idx]); EXPECT_TRUE(multiByteCharacters[idx].valid()); - if (character != multiByteCharacters[idx]) { - printf("idx = %zu, %.*s\n", idx, static_cast(character.size()), character.data()); - } idx++; } characterOpt = utf8Iter.next(); @@ -265,14 +262,14 @@ struct SpanGenerator { TEST(Utf8Test, Utf8IsAlphanumeric) { constexpr size_t numAlphanumericChars = 26 * 2 + 10; - Array alphanumericCharLiteral{ALPHA_NUMERIC_CHARS}; - Array alphanumericChars{}; + Array alphanumericCharLiteral{ALPHA_NUMERIC_CHARS}; + Array alphanumericChars{}; copyMem(alphanumericChars, alphanumericCharLiteral); ASSERT_TRUE(allOf(alphanumericChars.span(), static_cast(isAlphanumeric))); constexpr size_t numNonAlphanumericChars = validAsciiSize - numAlphanumericChars; - Vector nonAlphanumericChars{}; + Vector nonAlphanumericChars{}; for (char idx = 0; idx < INT8_MAX; ++idx) { if (!isAlphanumeric(idx)) { ASSERT_EQ(nonAlphanumericChars.pushBack(idx), FudStatus::Success); @@ -291,11 +288,11 @@ TEST(Utf8Test, Utf8IsAlphanumeric) []() { return Array{}; }, [&]() { return iotaGenerator().map([](auto val) { return static_cast(val); }); }); - SpanGenerator alphanumericGenerator{alphanumericChars.span()}; + SpanGenerator alphanumericGenerator{alphanumericChars.span()}; auto utf8AlphanumericGenerator = [&]() { return alphanumericGenerator().map(toUtf8); }; ASSERT_TRUE(allOf(utf8AlphanumericGenerator, static_cast(isAlphanumeric))); - SpanGenerator nonAlphanumericGenerator{nonAlphanumericChars.span().takeOkay()}; + SpanGenerator nonAlphanumericGenerator{nonAlphanumericChars.span().takeOkay()}; auto utf8NonAlphanumericGenerator = [&]() { return nonAlphanumericGenerator().map(toUtf8); }; ASSERT_FALSE(anyOf(utf8NonAlphanumericGenerator, static_cast(isAlphanumeric))); } @@ -303,14 +300,14 @@ TEST(Utf8Test, Utf8IsAlphanumeric) TEST(Utf8Test, Utf8IsAlpha) { constexpr size_t numAlphaChars = sizeof(ALPHA_CHARS) - 1; - Array alphaCharLiteral{ALPHA_CHARS}; - Array alphaChars{}; + Array alphaCharLiteral{ALPHA_CHARS}; + Array alphaChars{}; copyMem(alphaChars, alphaCharLiteral); ASSERT_TRUE(allOf(alphaChars.span(), static_cast(isAlpha))); constexpr size_t numNonAlphanumericChars = validAsciiSize - numAlphaChars; - Vector nonAlphaChars{}; + Vector nonAlphaChars{}; for (char idx = 0; idx < INT8_MAX; ++idx) { if (!isAlphanumeric(idx)) { ASSERT_EQ(nonAlphaChars.pushBack(idx), FudStatus::Success); @@ -323,11 +320,11 @@ TEST(Utf8Test, Utf8IsAlpha) ASSERT_FALSE(isAlpha(FudUtf8{Ascii{invalidAscii}})); - SpanGenerator alphaGenerator{alphaChars.span()}; + SpanGenerator alphaGenerator{alphaChars.span()}; auto utf8AlphaGenerator = [&]() { return alphaGenerator().map(toUtf8); }; ASSERT_TRUE(allOf(utf8AlphaGenerator, static_cast(isAlpha))); - SpanGenerator nonAlphaGenerator{nonAlphaChars.span().takeOkay()}; + SpanGenerator nonAlphaGenerator{nonAlphaChars.span().takeOkay()}; auto utf8NonAlphaGenerator = [&]() { return nonAlphaGenerator().map(toUtf8); }; ASSERT_FALSE(anyOf(utf8NonAlphaGenerator, static_cast(isAlpha))); } @@ -335,14 +332,14 @@ TEST(Utf8Test, Utf8IsAlpha) TEST(Utf8Test, Utf8IsLower) { constexpr size_t numLowerChars = 26; - Array lowerCharLiteral{LOWERCASE_CHARS}; - Array lowerChars{}; + Array lowerCharLiteral{LOWERCASE_CHARS}; + Array lowerChars{}; copyMem(lowerChars, lowerCharLiteral); ASSERT_TRUE(allOf(lowerChars.span(), static_cast(isLowercase))); constexpr size_t numNonLowerChars = validAsciiSize - numLowerChars; - Vector nonLowerChars{}; + Vector nonLowerChars{}; for (char idx = 0; idx < INT8_MAX; ++idx) { if (!isLowercase(idx)) { ASSERT_EQ(nonLowerChars.pushBack(idx), FudStatus::Success); @@ -355,11 +352,11 @@ TEST(Utf8Test, Utf8IsLower) ASSERT_FALSE(isLowercase(FudUtf8{Ascii{invalidAscii}})); - SpanGenerator lowerGenerator{lowerChars.span()}; + SpanGenerator lowerGenerator{lowerChars.span()}; auto utf8LowerGenerator = [&]() { return lowerGenerator().map(toUtf8); }; ASSERT_TRUE(allOf(utf8LowerGenerator, static_cast(isLowercase))); - SpanGenerator nonLowerGenerator{nonLowerChars.span().takeOkay()}; + SpanGenerator nonLowerGenerator{nonLowerChars.span().takeOkay()}; auto utf8NonLowerGenerator = [&]() { return nonLowerGenerator().map(toUtf8); }; ASSERT_FALSE(anyOf(utf8NonLowerGenerator, static_cast(isLowercase))); } @@ -367,15 +364,15 @@ TEST(Utf8Test, Utf8IsLower) TEST(Utf8Test, Utf8IsUpper) { constexpr size_t numUpperChars = 26; - Array upperCharLiteral{UPPERCASE_CHARS}; - Array upperChars{}; + Array upperCharLiteral{UPPERCASE_CHARS}; + Array upperChars{}; copyMem(upperChars, upperCharLiteral); ASSERT_TRUE(allOf(upperChars.span(), static_cast(isUppercase))); constexpr size_t numNonUpperChars = validAsciiSize - numUpperChars; - Vector nonUpperChars{}; - for (char idx = 0; idx < INT8_MAX; ++idx) { + Vector nonUpperChars{}; + for (utf8 idx = 0; idx < INT8_MAX; ++idx) { if (!isUppercase(idx)) { ASSERT_EQ(nonUpperChars.pushBack(idx), FudStatus::Success); } @@ -387,11 +384,11 @@ TEST(Utf8Test, Utf8IsUpper) ASSERT_FALSE(isUppercase(FudUtf8{Ascii{invalidAscii}})); - SpanGenerator upperGenerator{upperChars.span()}; + SpanGenerator upperGenerator{upperChars.span()}; auto utf8UpperGenerator = [&]() { return upperGenerator().map(toUtf8); }; ASSERT_TRUE(allOf(utf8UpperGenerator, static_cast(isUppercase))); - SpanGenerator nonUpperGenerator{nonUpperChars.span().takeOkay()}; + SpanGenerator nonUpperGenerator{nonUpperChars.span().takeOkay()}; auto utf8NonUpperGenerator = [&]() { return nonUpperGenerator().map(toUtf8); }; ASSERT_FALSE(anyOf(utf8NonUpperGenerator, static_cast(isUppercase))); } @@ -399,14 +396,14 @@ TEST(Utf8Test, Utf8IsUpper) TEST(Utf8Test, Utf8IsDigit) { constexpr size_t numDigitChars = 10; - Array digitCharLiteral{DECIMAL_CHARS}; - Array digitChars{}; + Array digitCharLiteral{DECIMAL_CHARS}; + Array digitChars{}; copyMem(digitChars, digitCharLiteral); ASSERT_TRUE(allOf(digitChars.span(), static_cast(isDigit))); constexpr size_t numNonDigitChars = validAsciiSize - numDigitChars; - Vector nonDigitChars{}; + Vector nonDigitChars{}; for (char idx = 0; idx < INT8_MAX; ++idx) { if (!isDigit(idx)) { ASSERT_EQ(nonDigitChars.pushBack(idx), FudStatus::Success); @@ -419,11 +416,11 @@ TEST(Utf8Test, Utf8IsDigit) ASSERT_FALSE(isDigit(FudUtf8{Ascii{invalidAscii}})); - SpanGenerator digitGenerator{digitChars.span()}; + SpanGenerator digitGenerator{digitChars.span()}; auto utf8DigitGenerator = [&]() { return digitGenerator().map(toUtf8); }; ASSERT_TRUE(allOf(utf8DigitGenerator, static_cast(isDigit))); - SpanGenerator nonDigitGenerator{nonDigitChars.span().takeOkay()}; + SpanGenerator nonDigitGenerator{nonDigitChars.span().takeOkay()}; auto utf8NonDigitGenerator = [&]() { return nonDigitGenerator().map(toUtf8); }; ASSERT_FALSE(anyOf(utf8NonDigitGenerator, static_cast(isDigit))); } @@ -431,14 +428,14 @@ TEST(Utf8Test, Utf8IsDigit) TEST(Utf8Test, Utf8IsHexDigit) { constexpr size_t numHexDigitChars = 6 * 2 + 10; - Array hexDigitCharLiteral{"abcdefABCDEF0123456789"}; - Array hexDigitChars{}; + Array hexDigitCharLiteral{u8"abcdefABCDEF0123456789"}; + Array hexDigitChars{}; copyMem(hexDigitChars, hexDigitCharLiteral); ASSERT_TRUE(allOf(hexDigitChars.span(), static_cast(isHexDigit))); constexpr size_t numNonHexDigitChars = validAsciiSize - numHexDigitChars; - Vector nonHexDigitChars{}; + Vector nonHexDigitChars{}; for (char idx = 0; idx < INT8_MAX; ++idx) { if (!isHexDigit(idx)) { ASSERT_EQ(nonHexDigitChars.pushBack(idx), FudStatus::Success); @@ -451,11 +448,11 @@ TEST(Utf8Test, Utf8IsHexDigit) ASSERT_FALSE(isHexDigit(FudUtf8{Ascii{invalidAscii}})); - SpanGenerator hexDigitGenerator{hexDigitChars.span()}; + SpanGenerator hexDigitGenerator{hexDigitChars.span()}; auto utf8HexDigitGenerator = [&]() { return hexDigitGenerator().map(toUtf8); }; ASSERT_TRUE(allOf(utf8HexDigitGenerator, static_cast(isHexDigit))); - SpanGenerator nonHexDigitGenerator{nonHexDigitChars.span().takeOkay()}; + SpanGenerator nonHexDigitGenerator{nonHexDigitChars.span().takeOkay()}; auto utf8NonHexDigitGenerator = [&]() { return nonHexDigitGenerator().map(toUtf8); }; ASSERT_FALSE(anyOf(utf8NonHexDigitGenerator, static_cast(isHexDigit))); } @@ -463,14 +460,14 @@ TEST(Utf8Test, Utf8IsHexDigit) TEST(Utf8Test, Utf8IsControl) { Iota controlArrayGenerator{0, 1, numControlChars}; - auto controlChars = generate([]() { return Array{}; }, controlArrayGenerator); + auto controlChars = generate([]() { return Array{}; }, controlArrayGenerator); constexpr const char deleteChar = 0x7F; controlChars.back() = deleteChar; ASSERT_TRUE(allOf(controlChars.span(), static_cast(isControl))); constexpr size_t numNonControlChars = INT8_MAX + 1 - numControlChars; - Vector nonControlChars{}; + Vector nonControlChars{}; ASSERT_EQ(nonControlChars.reserve(numNonControlChars), FudStatus::Success); for (auto idx = numControlChars - 1; idx < deleteChar; ++idx) { ASSERT_EQ(nonControlChars.pushBack(idx), FudStatus::Success); @@ -483,11 +480,11 @@ TEST(Utf8Test, Utf8IsControl) ASSERT_FALSE(isControl(FudUtf8{Ascii{invalidAscii}})); - SpanGenerator controlGenerator{controlChars.span()}; + SpanGenerator controlGenerator{controlChars.span()}; auto utf8ControlGenerator = [&]() { return controlGenerator().map(toUtf8); }; ASSERT_TRUE(allOf(utf8ControlGenerator, static_cast(isControl))); - SpanGenerator nonControlGenerator{nonControlChars.span().takeOkay()}; + SpanGenerator nonControlGenerator{nonControlChars.span().takeOkay()}; auto utf8NonControlGenerator = [&]() { return nonControlGenerator().map(toUtf8); }; ASSERT_FALSE(anyOf(utf8NonControlGenerator, static_cast(isControl))); } @@ -495,14 +492,14 @@ TEST(Utf8Test, Utf8IsControl) TEST(Utf8Test, Utf8IsGraphical) { constexpr size_t numGraphicalChars = sizeof(GRAPHICAL_CHARS) - 1; - Array graphicalCharLiteral{GRAPHICAL_CHARS}; - Array graphicalChars{}; + Array graphicalCharLiteral{GRAPHICAL_CHARS}; + Array graphicalChars{}; copyMem(graphicalChars, graphicalCharLiteral); ASSERT_TRUE(allOf(graphicalChars.span(), static_cast(isGraphical))); constexpr size_t numNonGraphicalChars = validAsciiSize - numGraphicalChars; - Vector nonGraphicalChars{}; + Vector nonGraphicalChars{}; ASSERT_EQ(nonGraphicalChars.reserve(numNonGraphicalChars), FudStatus::Success); for (uint8_t idx = 0; idx < INT8_MAX + 1; ++idx) { if (!isGraphical(static_cast(idx))) { @@ -518,11 +515,11 @@ TEST(Utf8Test, Utf8IsGraphical) ASSERT_FALSE(isGraphical(FudUtf8{Ascii{invalidAscii}})); - SpanGenerator graphicalGenerator{graphicalChars.span()}; + SpanGenerator graphicalGenerator{graphicalChars.span()}; auto utf8GraphicalGenerator = [&]() { return graphicalGenerator().map(toUtf8); }; ASSERT_TRUE(allOf(utf8GraphicalGenerator, static_cast(isGraphical))); - SpanGenerator nonGraphicalGenerator{nonGraphicalChars.span().takeOkay()}; + SpanGenerator nonGraphicalGenerator{nonGraphicalChars.span().takeOkay()}; auto utf8NonGraphicalGenerator = [&]() { return nonGraphicalGenerator().map(toUtf8); }; ASSERT_FALSE(anyOf(utf8NonGraphicalGenerator, static_cast(isGraphical))); } @@ -530,14 +527,14 @@ TEST(Utf8Test, Utf8IsGraphical) TEST(Utf8Test, Utf8IsSpace) { constexpr size_t numSpaceChars = sizeof(SPACE_CHARS) - 1; - Array spaceCharLiteral{SPACE_CHARS}; - Array spaceChars{}; + Array spaceCharLiteral{SPACE_CHARS}; + Array spaceChars{}; copyMem(spaceChars, spaceCharLiteral); ASSERT_TRUE(allOf(spaceChars.span(), static_cast(isSpace))); constexpr size_t numNonSpaceChars = validAsciiSize - numSpaceChars; - Vector nonSpaceChars{}; + Vector nonSpaceChars{}; ASSERT_EQ(nonSpaceChars.reserve(numNonSpaceChars), FudStatus::Success); for (uint8_t idx = 0; idx < INT8_MAX + 1; ++idx) { if (!isSpace(static_cast(idx))) { @@ -553,11 +550,11 @@ TEST(Utf8Test, Utf8IsSpace) ASSERT_FALSE(isSpace(FudUtf8{Ascii{invalidAscii}})); - SpanGenerator spaceGenerator{spaceChars.span()}; + SpanGenerator spaceGenerator{spaceChars.span()}; auto utf8SpaceGenerator = [&]() { return spaceGenerator().map(toUtf8); }; ASSERT_TRUE(allOf(utf8SpaceGenerator, static_cast(isSpace))); - SpanGenerator nonSpaceGenerator{nonSpaceChars.span().takeOkay()}; + SpanGenerator nonSpaceGenerator{nonSpaceChars.span().takeOkay()}; auto utf8NonSpaceGenerator = [&]() { return nonSpaceGenerator().map(toUtf8); }; ASSERT_FALSE(anyOf(utf8NonSpaceGenerator, static_cast(isSpace))); } @@ -565,14 +562,14 @@ TEST(Utf8Test, Utf8IsSpace) TEST(Utf8Test, Utf8IsBlank) { constexpr size_t numBlankChars = sizeof(BLANK_CHARS) - 1; - Array blankCharLiteral{BLANK_CHARS}; - Array blankChars{}; + Array blankCharLiteral{BLANK_CHARS}; + Array blankChars{}; copyMem(blankChars, blankCharLiteral); ASSERT_TRUE(allOf(blankChars.span(), static_cast(isBlank))); constexpr size_t numNonBlankChars = validAsciiSize - numBlankChars; - Vector nonBlankChars{}; + Vector nonBlankChars{}; ASSERT_EQ(nonBlankChars.reserve(numNonBlankChars), FudStatus::Success); for (uint8_t idx = 0; idx < INT8_MAX + 1; ++idx) { if (!isBlank(static_cast(idx))) { @@ -588,11 +585,11 @@ TEST(Utf8Test, Utf8IsBlank) ASSERT_FALSE(isBlank(FudUtf8{Ascii{invalidAscii}})); - SpanGenerator blankGenerator{blankChars.span()}; + SpanGenerator blankGenerator{blankChars.span()}; auto utf8BlankGenerator = [&]() { return blankGenerator().map(toUtf8); }; ASSERT_TRUE(allOf(utf8BlankGenerator, static_cast(isBlank))); - SpanGenerator nonBlankGenerator{nonBlankChars.span().takeOkay()}; + SpanGenerator nonBlankGenerator{nonBlankChars.span().takeOkay()}; auto utf8NonBlankGenerator = [&]() { return nonBlankGenerator().map(toUtf8); }; ASSERT_FALSE(anyOf(utf8NonBlankGenerator, static_cast(isBlank))); } @@ -600,14 +597,14 @@ TEST(Utf8Test, Utf8IsBlank) TEST(Utf8Test, Utf8IsPrintable) { constexpr size_t numPrintableChars = sizeof(PRINTABLE_CHARS) - 1; - Array printableCharLiteral{PRINTABLE_CHARS}; - Array printableChars{}; + Array printableCharLiteral{PRINTABLE_CHARS}; + Array printableChars{}; copyMem(printableChars, printableCharLiteral); ASSERT_TRUE(allOf(printableChars.span(), static_cast(isPrintable))); constexpr size_t numNonPrintableChars = validAsciiSize - numPrintableChars; - Vector nonPrintableChars{}; + Vector nonPrintableChars{}; ASSERT_EQ(nonPrintableChars.reserve(numNonPrintableChars), FudStatus::Success); for (uint8_t idx = 0; idx < INT8_MAX + 1; ++idx) { if (!isPrintable(static_cast(idx))) { @@ -623,11 +620,11 @@ TEST(Utf8Test, Utf8IsPrintable) ASSERT_FALSE(isPrintable(FudUtf8{Ascii{invalidAscii}})); - SpanGenerator printableGenerator{printableChars.span()}; + SpanGenerator printableGenerator{printableChars.span()}; auto utf8PrintableGenerator = [&]() { return printableGenerator().map(toUtf8); }; ASSERT_TRUE(allOf(utf8PrintableGenerator, static_cast(isPrintable))); - SpanGenerator nonPrintableGenerator{nonPrintableChars.span().takeOkay()}; + SpanGenerator nonPrintableGenerator{nonPrintableChars.span().takeOkay()}; auto utf8NonPrintableGenerator = [&]() { return nonPrintableGenerator().map(toUtf8); }; ASSERT_FALSE(anyOf(utf8NonPrintableGenerator, static_cast(isPrintable))); } @@ -635,14 +632,14 @@ TEST(Utf8Test, Utf8IsPrintable) TEST(Utf8Test, Utf8IsPunctuation) { constexpr size_t numPunctuationChars = sizeof(PUNCTUATION_CHARS) - 1; - Array punctuationCharLiteral{PUNCTUATION_CHARS}; - Array punctuationChars{}; + Array punctuationCharLiteral{PUNCTUATION_CHARS}; + Array punctuationChars{}; copyMem(punctuationChars, punctuationCharLiteral); ASSERT_TRUE(allOf(punctuationChars.span(), static_cast(isPunctuation))); constexpr size_t numNonPunctuationChars = validAsciiSize - numPunctuationChars; - Vector nonPunctuationChars{}; + Vector nonPunctuationChars{}; ASSERT_EQ(nonPunctuationChars.reserve(numNonPunctuationChars), FudStatus::Success); for (uint8_t idx = 0; idx < INT8_MAX + 1; ++idx) { if (!isPunctuation(static_cast(idx))) { @@ -658,11 +655,11 @@ TEST(Utf8Test, Utf8IsPunctuation) ASSERT_FALSE(isPunctuation(FudUtf8{Ascii{invalidAscii}})); - SpanGenerator punctuationGenerator{punctuationChars.span()}; + SpanGenerator punctuationGenerator{punctuationChars.span()}; auto utf8PunctuationGenerator = [&]() { return punctuationGenerator().map(toUtf8); }; ASSERT_TRUE(allOf(utf8PunctuationGenerator, static_cast(isPunctuation))); - SpanGenerator nonPunctuationGenerator{nonPunctuationChars.span().takeOkay()}; + SpanGenerator nonPunctuationGenerator{nonPunctuationChars.span().takeOkay()}; auto utf8NonPunctuationGenerator = [&]() { return nonPunctuationGenerator().map(toUtf8); }; ASSERT_FALSE(anyOf(utf8NonPunctuationGenerator, static_cast(isPunctuation))); } -- cgit v1.2.3