AK+LibUnicode: Add a method to trim non-ASCII whitespace from a String

Required by WebDriver.
This commit is contained in:
Timothy Flynn 2024-11-03 17:13:56 -05:00 committed by Tim Flynn
commit cfcb29bdfd
Notes: github-actions[bot] 2024-11-04 01:43:52 +00:00
5 changed files with 118 additions and 2 deletions

View file

@ -1289,6 +1289,82 @@ TEST_CASE(trim)
}
}
TEST_CASE(trim_whitespace)
{
{
String string {};
EXPECT_EQ(MUST(string.trim_whitespace(TrimMode::Both)), String {});
EXPECT_EQ(MUST(string.trim_whitespace(TrimMode::Left)), String {});
EXPECT_EQ(MUST(string.trim_whitespace(TrimMode::Right)), String {});
}
{
auto string = " "_string;
EXPECT_EQ(MUST(string.trim_whitespace(TrimMode::Both)), String {});
EXPECT_EQ(MUST(string.trim_whitespace(TrimMode::Left)), String {});
EXPECT_EQ(MUST(string.trim_whitespace(TrimMode::Right)), String {});
}
{
auto string = " "_string;
EXPECT_EQ(MUST(string.trim_whitespace(TrimMode::Both)), String {});
EXPECT_EQ(MUST(string.trim_whitespace(TrimMode::Left)), String {});
EXPECT_EQ(MUST(string.trim_whitespace(TrimMode::Right)), String {});
}
{
auto string = " \t \n \r \u00A0 \u202F "_string;
EXPECT_EQ(MUST(string.trim_whitespace(TrimMode::Both)), String {});
EXPECT_EQ(MUST(string.trim_whitespace(TrimMode::Left)), String {});
EXPECT_EQ(MUST(string.trim_whitespace(TrimMode::Right)), String {});
}
{
auto string = "abcdef"_string;
EXPECT_EQ(MUST(string.trim_whitespace(TrimMode::Both)), "abcdef"_string);
EXPECT_EQ(MUST(string.trim_whitespace(TrimMode::Left)), "abcdef"_string);
EXPECT_EQ(MUST(string.trim_whitespace(TrimMode::Right)), "abcdef"_string);
}
{
auto string = " \u00A0 abcdef"_string;
EXPECT_EQ(MUST(string.trim_whitespace(TrimMode::Both)), "abcdef"_string);
EXPECT_EQ(MUST(string.trim_whitespace(TrimMode::Left)), "abcdef"_string);
EXPECT_EQ(MUST(string.trim_whitespace(TrimMode::Right)), " \u00A0 abcdef"_string);
}
{
auto string = "abcdef \u202F "_string;
EXPECT_EQ(MUST(string.trim_whitespace(TrimMode::Both)), "abcdef"_string);
EXPECT_EQ(MUST(string.trim_whitespace(TrimMode::Left)), "abcdef \u202F "_string);
EXPECT_EQ(MUST(string.trim_whitespace(TrimMode::Right)), "abcdef"_string);
}
{
auto string = " \u00A0 abcdef \u202F "_string;
EXPECT_EQ(MUST(string.trim_whitespace(TrimMode::Both)), "abcdef"_string);
EXPECT_EQ(MUST(string.trim_whitespace(TrimMode::Left)), "abcdef \u202F "_string);
EXPECT_EQ(MUST(string.trim_whitespace(TrimMode::Right)), " \u00A0 abcdef"_string);
}
{
auto string = "ab \t cd \n ef"_string;
EXPECT_EQ(MUST(string.trim_whitespace(TrimMode::Both)), "ab \t cd \n ef"_string);
EXPECT_EQ(MUST(string.trim_whitespace(TrimMode::Left)), "ab \t cd \n ef"_string);
EXPECT_EQ(MUST(string.trim_whitespace(TrimMode::Right)), "ab \t cd \n ef"_string);
}
{
auto string = " \u00A0 ab \t cd \n ef"_string;
EXPECT_EQ(MUST(string.trim_whitespace(TrimMode::Both)), "ab \t cd \n ef"_string);
EXPECT_EQ(MUST(string.trim_whitespace(TrimMode::Left)), "ab \t cd \n ef"_string);
EXPECT_EQ(MUST(string.trim_whitespace(TrimMode::Right)), " \u00A0 ab \t cd \n ef"_string);
}
{
auto string = "ab \t cd \n ef \u202F "_string;
EXPECT_EQ(MUST(string.trim_whitespace(TrimMode::Both)), "ab \t cd \n ef"_string);
EXPECT_EQ(MUST(string.trim_whitespace(TrimMode::Left)), "ab \t cd \n ef \u202F "_string);
EXPECT_EQ(MUST(string.trim_whitespace(TrimMode::Right)), "ab \t cd \n ef"_string);
}
{
auto string = " \u00A0 ab \t cd \n ef \u202F "_string;
EXPECT_EQ(MUST(string.trim_whitespace(TrimMode::Both)), "ab \t cd \n ef"_string);
EXPECT_EQ(MUST(string.trim_whitespace(TrimMode::Left)), "ab \t cd \n ef \u202F "_string);
EXPECT_EQ(MUST(string.trim_whitespace(TrimMode::Right)), " \u00A0 ab \t cd \n ef"_string);
}
}
TEST_CASE(contains)
{
EXPECT(!String {}.contains({}));