AK: Implement the spaceship operator for UTF-16 strings

This commit is contained in:
Timothy Flynn 2025-08-02 19:24:20 -04:00 β€’ committed by Tim Flynn
parent 5af99f4dd0
commit 782f8c381c
Notes: github-actions[bot] 2025-08-05 11:08:44 +00:00
4 changed files with 98 additions and 0 deletions

View file

@ -460,6 +460,59 @@ TEST_CASE(equals_utf8)
EXPECT_NE(u"foo πŸ˜‚ bar"sv, "foo πŸ˜€ bar"sv);
}
TEST_CASE(comparison)
{
EXPECT(!(u""sv < u""sv));
EXPECT(!(u""sv > u""sv));
EXPECT(u""sv <= u""sv);
EXPECT(u""sv >= u""sv);
EXPECT(!(u"a"sv < u"a"sv));
EXPECT(!(u"a"sv > u"a"sv));
EXPECT(u"a"sv <= u"a"sv);
EXPECT(u"a"sv >= u"a"sv);
EXPECT(!(u"πŸ˜€"sv < u"πŸ˜€"sv));
EXPECT(!(u"πŸ˜€"sv > u"πŸ˜€"sv));
EXPECT(u"πŸ˜€"sv <= u"πŸ˜€"sv);
EXPECT(u"πŸ˜€"sv >= u"πŸ˜€"sv);
EXPECT(u"a"sv < u"b"sv);
EXPECT(!(u"a"sv > u"b"sv));
EXPECT(u"a"sv <= u"b"sv);
EXPECT(!(u"a"sv >= u"b"sv));
EXPECT(Utf16View { "a"sv } < u"b"sv);
EXPECT(!(Utf16View { "a"sv } > u"b"sv));
EXPECT(Utf16View { "a"sv } <= u"b"sv);
EXPECT(!(Utf16View { "a"sv } >= u"b"sv));
EXPECT(u"a"sv < u"aa"sv);
EXPECT(!(u"a"sv > u"aa"sv));
EXPECT(u"a"sv <= u"aa"sv);
EXPECT(!(u"a"sv >= u"aa"sv));
EXPECT(Utf16View { "a"sv } < u"aa"sv);
EXPECT(!(Utf16View { "a"sv } > u"aa"sv));
EXPECT(Utf16View { "a"sv } <= u"aa"sv);
EXPECT(!(Utf16View { "a"sv } >= u"aa"sv));
EXPECT(!(u"b"sv < u"a"sv));
EXPECT(u"b"sv > u"a"sv);
EXPECT(!(u"b"sv <= u"a"sv));
EXPECT(u"b"sv >= u"a"sv);
EXPECT(u"πŸ˜€"sv < u"πŸ˜‚"sv);
EXPECT(!(u"πŸ˜€"sv > u"πŸ˜‚"sv));
EXPECT(u"πŸ˜€"sv <= u"πŸ˜‚"sv);
EXPECT(!(u"πŸ˜€"sv >= u"πŸ˜‚"sv));
EXPECT(!(u"πŸ˜‚"sv < u"πŸ˜€"sv));
EXPECT(u"πŸ˜‚"sv > u"πŸ˜€"sv);
EXPECT(!(u"πŸ˜‚"sv <= u"πŸ˜€"sv));
EXPECT(u"πŸ˜‚"sv >= u"πŸ˜€"sv);
}
TEST_CASE(equals_ignoring_case)
{
auto string1 = Utf16String::from_utf8("foobar"sv);