AK: Allow comparing UTF-16 strings to UTF-8 strings

Before now, you could compare a Utf16View to a StringView, but it would
only be valid if the StringView were ASCII. When porting code to UTF-16,
it will be handy to have a code point-aware implementation for non-ASCII
StringViews.
This commit is contained in:
Timothy Flynn 2025-08-02 19:12:16 -04:00 β€’ committed by Tim Flynn
parent 319e7aa03b
commit 0bf565b97f
Notes: github-actions[bot] 2025-08-05 11:08:55 +00:00
3 changed files with 35 additions and 2 deletions

View file

@ -1070,7 +1070,7 @@ TEST_CASE(equals_ascii)
test("ababababab"sv, "πŸ˜€πŸ˜€πŸ˜€πŸ˜€πŸ˜€"_utf16);
// Non-ASCII string comparison.
EXPECT_NE("πŸ˜€"sv, "πŸ˜€"_utf16);
EXPECT_EQ("πŸ˜€"sv, "πŸ˜€"_utf16);
}
TEST_CASE(equals_ignoring_ascii_case)

View file

@ -442,6 +442,24 @@ TEST_CASE(to_ascii_titlecase)
EXPECT_EQ(u"foo πŸ˜€ bar"sv.to_ascii_titlecase(), u"Foo πŸ˜€ Bar"sv);
}
TEST_CASE(equals_utf8)
{
EXPECT_EQ(u""sv, ""sv);
EXPECT_EQ(u"foo bar"sv, "foo bar"sv);
EXPECT_NE(u"foo bar"sv, "foo ba"sv);
EXPECT_NE(u"foo bar"sv, "foo"sv);
EXPECT_NE(u"foo bar"sv, ""sv);
EXPECT_EQ(u"foo πŸ˜€ bar"sv, "foo πŸ˜€ bar"sv);
EXPECT_NE(u"foo πŸ˜€ bar"sv, "foo πŸ˜€"sv);
EXPECT_NE(u"foo πŸ˜€ bar"sv, "foo"sv);
EXPECT_NE(u"foo πŸ˜€ bar"sv, ""sv);
EXPECT_NE(u"foo πŸ˜€ bar"sv, "foo πŸ˜‚ bar"sv);
EXPECT_NE(u"foo πŸ˜‚ bar"sv, "foo πŸ˜€ bar"sv);
}
TEST_CASE(equals_ignoring_case)
{
auto string1 = Utf16String::from_utf8("foobar"sv);