|
@@ -21,17 +21,21 @@ TEST_CASE(construct_empty)
|
|
|
String empty;
|
|
|
EXPECT(empty.is_empty());
|
|
|
EXPECT_EQ(empty.bytes().size(), 0u);
|
|
|
+ EXPECT_EQ(empty, ""sv);
|
|
|
|
|
|
- auto empty2 = MUST(String::from_utf8(""sv));
|
|
|
+ auto empty2 = MUST(""_string);
|
|
|
EXPECT(empty2.is_empty());
|
|
|
EXPECT_EQ(empty, empty2);
|
|
|
- EXPECT_EQ(empty, ""sv);
|
|
|
+
|
|
|
+ auto empty3 = MUST(String::from_utf8(""sv));
|
|
|
+ EXPECT(empty3.is_empty());
|
|
|
+ EXPECT_EQ(empty, empty3);
|
|
|
}
|
|
|
|
|
|
TEST_CASE(move_assignment)
|
|
|
{
|
|
|
- String string1 = MUST(String::from_utf8("hello"sv));
|
|
|
- string1 = MUST(String::from_utf8("friends!"sv));
|
|
|
+ String string1 = MUST("hello"_string);
|
|
|
+ string1 = MUST("friends!"_string);
|
|
|
EXPECT_EQ(string1, "friends!"sv);
|
|
|
}
|
|
|
|
|
@@ -47,6 +51,16 @@ TEST_CASE(short_strings)
|
|
|
EXPECT_EQ(string2.is_short_string(), true);
|
|
|
EXPECT_EQ(string2.bytes().size(), 7u);
|
|
|
EXPECT_EQ(string2, string1);
|
|
|
+
|
|
|
+ auto string3 = MUST("abcdefg"_string);
|
|
|
+ EXPECT_EQ(string3.is_short_string(), true);
|
|
|
+ EXPECT_EQ(string3.bytes().size(), 7u);
|
|
|
+ EXPECT_EQ(string3, string1);
|
|
|
+
|
|
|
+ constexpr auto string4 = "abcdefg"_short_string;
|
|
|
+ EXPECT_EQ(string4.is_short_string(), true);
|
|
|
+ EXPECT_EQ(string4.bytes().size(), 7u);
|
|
|
+ EXPECT_EQ(string4, string1);
|
|
|
#else
|
|
|
auto string1 = MUST(String::from_utf8("abc"sv));
|
|
|
EXPECT_EQ(string1.is_short_string(), true);
|
|
@@ -57,6 +71,16 @@ TEST_CASE(short_strings)
|
|
|
EXPECT_EQ(string2.is_short_string(), true);
|
|
|
EXPECT_EQ(string2.bytes().size(), 3u);
|
|
|
EXPECT_EQ(string2, string1);
|
|
|
+
|
|
|
+ auto string3 = MUST("abc"_string);
|
|
|
+ EXPECT_EQ(string3.is_short_string(), true);
|
|
|
+ EXPECT_EQ(string3.bytes().size(), 3u);
|
|
|
+ EXPECT_EQ(string3, string1);
|
|
|
+
|
|
|
+ constexpr auto string4 = "abc"_short_string;
|
|
|
+ EXPECT_EQ(string4.is_short_string(), true);
|
|
|
+ EXPECT_EQ(string4.bytes().size(), 3u);
|
|
|
+ EXPECT_EQ(string4, string1);
|
|
|
#endif
|
|
|
}
|
|
|
|
|
@@ -138,7 +162,7 @@ TEST_CASE(from_code_points)
|
|
|
|
|
|
TEST_CASE(substring)
|
|
|
{
|
|
|
- auto superstring = MUST(String::from_utf8("Hello I am a long string"sv));
|
|
|
+ auto superstring = MUST("Hello I am a long string"_string);
|
|
|
auto short_substring = MUST(superstring.substring_from_byte_offset(0, 5));
|
|
|
EXPECT_EQ(short_substring, "Hello"sv);
|
|
|
|
|
@@ -148,7 +172,7 @@ TEST_CASE(substring)
|
|
|
|
|
|
TEST_CASE(substring_with_shared_superstring)
|
|
|
{
|
|
|
- auto superstring = MUST(String::from_utf8("Hello I am a long string"sv));
|
|
|
+ auto superstring = MUST("Hello I am a long string"_string);
|
|
|
|
|
|
auto substring1 = MUST(superstring.substring_from_byte_offset_with_shared_superstring(0, 5));
|
|
|
EXPECT_EQ(substring1, "Hello"sv);
|
|
@@ -159,7 +183,7 @@ TEST_CASE(substring_with_shared_superstring)
|
|
|
|
|
|
TEST_CASE(code_points)
|
|
|
{
|
|
|
- auto string = MUST(String::from_utf8("🦬🪒"sv));
|
|
|
+ auto string = MUST("🦬🪒"_string);
|
|
|
|
|
|
Vector<u32> code_points;
|
|
|
for (auto code_point : string.code_points())
|
|
@@ -182,20 +206,20 @@ TEST_CASE(string_builder)
|
|
|
|
|
|
TEST_CASE(ak_format)
|
|
|
{
|
|
|
- auto foo = MUST(String::formatted("Hello {}", MUST(String::from_utf8("friends"sv))));
|
|
|
+ auto foo = MUST(String::formatted("Hello {}", MUST("friends"_string)));
|
|
|
EXPECT_EQ(foo, "Hello friends"sv);
|
|
|
}
|
|
|
|
|
|
TEST_CASE(replace)
|
|
|
{
|
|
|
{
|
|
|
- auto haystack = MUST(String::from_utf8("Hello enemies"sv));
|
|
|
+ auto haystack = MUST("Hello enemies"_string);
|
|
|
auto result = MUST(haystack.replace("enemies"sv, "friends"sv, ReplaceMode::All));
|
|
|
EXPECT_EQ(result, "Hello friends"sv);
|
|
|
}
|
|
|
|
|
|
{
|
|
|
- auto base_title = MUST(String::from_utf8("anon@courage:~"sv));
|
|
|
+ auto base_title = MUST("anon@courage:~"_string);
|
|
|
auto result = MUST(base_title.replace("[*]"sv, "(*)"sv, ReplaceMode::FirstOnly));
|
|
|
EXPECT_EQ(result, "anon@courage:~"sv);
|
|
|
}
|
|
@@ -221,17 +245,17 @@ TEST_CASE(reverse)
|
|
|
TEST_CASE(to_lowercase)
|
|
|
{
|
|
|
{
|
|
|
- auto string = MUST(String::from_utf8("Aa"sv));
|
|
|
+ auto string = MUST("Aa"_string);
|
|
|
auto result = MUST(string.to_lowercase());
|
|
|
EXPECT_EQ(result, "aa"sv);
|
|
|
}
|
|
|
{
|
|
|
- auto string = MUST(String::from_utf8("Ωω"sv));
|
|
|
+ auto string = MUST("Ωω"_string);
|
|
|
auto result = MUST(string.to_lowercase());
|
|
|
EXPECT_EQ(result, "ωω"sv);
|
|
|
}
|
|
|
{
|
|
|
- auto string = MUST(String::from_utf8("İi̇"sv));
|
|
|
+ auto string = MUST("İi̇"_string);
|
|
|
auto result = MUST(string.to_lowercase());
|
|
|
EXPECT_EQ(result, "i̇i̇"sv);
|
|
|
}
|
|
@@ -240,17 +264,17 @@ TEST_CASE(to_lowercase)
|
|
|
TEST_CASE(to_uppercase)
|
|
|
{
|
|
|
{
|
|
|
- auto string = MUST(String::from_utf8("Aa"sv));
|
|
|
+ auto string = MUST("Aa"_string);
|
|
|
auto result = MUST(string.to_uppercase());
|
|
|
EXPECT_EQ(result, "AA"sv);
|
|
|
}
|
|
|
{
|
|
|
- auto string = MUST(String::from_utf8("Ωω"sv));
|
|
|
+ auto string = MUST("Ωω"_string);
|
|
|
auto result = MUST(string.to_uppercase());
|
|
|
EXPECT_EQ(result, "ΩΩ"sv);
|
|
|
}
|
|
|
{
|
|
|
- auto string = MUST(String::from_utf8("ʼn"sv));
|
|
|
+ auto string = MUST("ʼn"_string);
|
|
|
auto result = MUST(string.to_uppercase());
|
|
|
EXPECT_EQ(result, "ʼN"sv);
|
|
|
}
|
|
@@ -259,22 +283,22 @@ TEST_CASE(to_uppercase)
|
|
|
TEST_CASE(to_titlecase)
|
|
|
{
|
|
|
{
|
|
|
- auto string = MUST(String::from_utf8("foo bar baz"sv));
|
|
|
+ auto string = MUST("foo bar baz"_string);
|
|
|
auto result = MUST(string.to_titlecase());
|
|
|
EXPECT_EQ(result, "Foo Bar Baz"sv);
|
|
|
}
|
|
|
{
|
|
|
- auto string = MUST(String::from_utf8("foo \n \r bar \t baz"sv));
|
|
|
+ auto string = MUST("foo \n \r bar \t baz"_string);
|
|
|
auto result = MUST(string.to_titlecase());
|
|
|
EXPECT_EQ(result, "Foo \n \r Bar \t Baz"sv);
|
|
|
}
|
|
|
{
|
|
|
- auto string = MUST(String::from_utf8("f\"oo\" b'ar'"sv));
|
|
|
+ auto string = MUST("f\"oo\" b'ar'"_string);
|
|
|
auto result = MUST(string.to_titlecase());
|
|
|
EXPECT_EQ(result, "F\"Oo\" B'ar'"sv);
|
|
|
}
|
|
|
{
|
|
|
- auto string = MUST(String::from_utf8("123dollars"sv));
|
|
|
+ auto string = MUST("123dollars"_string);
|
|
|
auto result = MUST(string.to_titlecase());
|
|
|
EXPECT_EQ(result, "123Dollars"sv);
|
|
|
}
|
|
@@ -289,10 +313,10 @@ TEST_CASE(equals_ignoring_case)
|
|
|
EXPECT(MUST(string1.equals_ignoring_case(string2)));
|
|
|
}
|
|
|
{
|
|
|
- auto string1 = MUST(String::from_utf8("abcd"sv));
|
|
|
- auto string2 = MUST(String::from_utf8("ABCD"sv));
|
|
|
- auto string3 = MUST(String::from_utf8("AbCd"sv));
|
|
|
- auto string4 = MUST(String::from_utf8("dcba"sv));
|
|
|
+ auto string1 = MUST("abcd"_string);
|
|
|
+ auto string2 = MUST("ABCD"_string);
|
|
|
+ auto string3 = MUST("AbCd"_string);
|
|
|
+ auto string4 = MUST("dcba"_string);
|
|
|
|
|
|
EXPECT(MUST(string1.equals_ignoring_case(string2)));
|
|
|
EXPECT(MUST(string1.equals_ignoring_case(string3)));
|
|
@@ -307,12 +331,12 @@ TEST_CASE(equals_ignoring_case)
|
|
|
EXPECT(!MUST(string3.equals_ignoring_case(string4)));
|
|
|
}
|
|
|
{
|
|
|
- auto string1 = MUST(String::from_utf8("\u00DF"sv)); // LATIN SMALL LETTER SHARP S
|
|
|
- auto string2 = MUST(String::from_utf8("SS"sv));
|
|
|
- auto string3 = MUST(String::from_utf8("Ss"sv));
|
|
|
- auto string4 = MUST(String::from_utf8("ss"sv));
|
|
|
- auto string5 = MUST(String::from_utf8("S"sv));
|
|
|
- auto string6 = MUST(String::from_utf8("s"sv));
|
|
|
+ auto string1 = MUST("\u00DF"_string); // LATIN SMALL LETTER SHARP S
|
|
|
+ auto string2 = MUST("SS"_string);
|
|
|
+ auto string3 = MUST("Ss"_string);
|
|
|
+ auto string4 = MUST("ss"_string);
|
|
|
+ auto string5 = MUST("S"_string);
|
|
|
+ auto string6 = MUST("s"_string);
|
|
|
|
|
|
EXPECT(MUST(string1.equals_ignoring_case(string2)));
|
|
|
EXPECT(MUST(string1.equals_ignoring_case(string3)));
|
|
@@ -342,8 +366,8 @@ TEST_CASE(equals_ignoring_case)
|
|
|
|
|
|
TEST_CASE(is_one_of)
|
|
|
{
|
|
|
- auto foo = MUST(String::from_utf8("foo"sv));
|
|
|
- auto bar = MUST(String::from_utf8("bar"sv));
|
|
|
+ auto foo = MUST("foo"_string);
|
|
|
+ auto bar = MUST("bar"_string);
|
|
|
|
|
|
EXPECT(foo.is_one_of(foo));
|
|
|
EXPECT(foo.is_one_of(foo, bar));
|
|
@@ -359,7 +383,7 @@ TEST_CASE(is_one_of)
|
|
|
TEST_CASE(split)
|
|
|
{
|
|
|
{
|
|
|
- auto test = MUST(String::from_utf8("foo bar baz"sv));
|
|
|
+ auto test = MUST("foo bar baz"_string);
|
|
|
auto parts = MUST(test.split(' '));
|
|
|
EXPECT_EQ(parts.size(), 3u);
|
|
|
EXPECT_EQ(parts[0], "foo");
|
|
@@ -367,7 +391,7 @@ TEST_CASE(split)
|
|
|
EXPECT_EQ(parts[2], "baz");
|
|
|
}
|
|
|
{
|
|
|
- auto test = MUST(String::from_utf8("ωΣ2ωΣω"sv));
|
|
|
+ auto test = MUST("ωΣ2ωΣω"_string);
|
|
|
auto parts = MUST(test.split(0x03A3u));
|
|
|
EXPECT_EQ(parts.size(), 3u);
|
|
|
EXPECT_EQ(parts[0], "ω"sv);
|
|
@@ -387,7 +411,7 @@ TEST_CASE(find_byte_offset)
|
|
|
EXPECT(!index2.has_value());
|
|
|
}
|
|
|
{
|
|
|
- auto string = MUST(String::from_utf8("foo"sv));
|
|
|
+ auto string = MUST("foo"_string);
|
|
|
|
|
|
auto index1 = string.find_byte_offset('f');
|
|
|
EXPECT_EQ(index1, 0u);
|
|
@@ -402,7 +426,7 @@ TEST_CASE(find_byte_offset)
|
|
|
EXPECT(!index4.has_value());
|
|
|
}
|
|
|
{
|
|
|
- auto string = MUST(String::from_utf8("foo"sv));
|
|
|
+ auto string = MUST("foo"_string);
|
|
|
|
|
|
auto index1 = string.find_byte_offset("fo"sv);
|
|
|
EXPECT_EQ(index1, 0u);
|
|
@@ -417,7 +441,7 @@ TEST_CASE(find_byte_offset)
|
|
|
EXPECT(!index4.has_value());
|
|
|
}
|
|
|
{
|
|
|
- auto string = MUST(String::from_utf8("ωΣωΣω"sv));
|
|
|
+ auto string = MUST("ωΣωΣω"_string);
|
|
|
|
|
|
auto index1 = string.find_byte_offset(0x03C9U);
|
|
|
EXPECT_EQ(index1, 0u);
|
|
@@ -435,7 +459,7 @@ TEST_CASE(find_byte_offset)
|
|
|
EXPECT_EQ(index5, 8u);
|
|
|
}
|
|
|
{
|
|
|
- auto string = MUST(String::from_utf8("ωΣωΣω"sv));
|
|
|
+ auto string = MUST("ωΣωΣω"_string);
|
|
|
|
|
|
auto index1 = string.find_byte_offset("ω"sv);
|
|
|
EXPECT_EQ(index1, 0u);
|
|
@@ -549,7 +573,7 @@ TEST_CASE(join)
|
|
|
auto string5 = MUST(String::join(',', Array { 1, 2, 3 }, "[{}]"sv));
|
|
|
EXPECT_EQ(string5, "[1],[2],[3]"sv);
|
|
|
|
|
|
- auto string6 = MUST(String::join(String::from_utf8_short_string("!!!"sv), Array { "foo"sv, "bar"sv, "baz"sv }));
|
|
|
+ auto string6 = MUST(String::join("!!!"_short_string, Array { "foo"sv, "bar"sv, "baz"sv }));
|
|
|
EXPECT_EQ(string6, "foo!!!bar!!!baz"sv);
|
|
|
|
|
|
auto string7 = MUST(String::join(" - "sv, Array { 1, 16, 256, 4096 }, "[{:#04x}]"sv));
|
|
@@ -571,7 +595,7 @@ TEST_CASE(trim)
|
|
|
EXPECT(result.is_empty());
|
|
|
}
|
|
|
{
|
|
|
- auto string = MUST(String::from_utf8("word"sv));
|
|
|
+ auto string = MUST("word"_string);
|
|
|
|
|
|
auto result = MUST(string.trim(" "sv, TrimMode::Both));
|
|
|
EXPECT_EQ(result, "word"sv);
|
|
@@ -583,7 +607,7 @@ TEST_CASE(trim)
|
|
|
EXPECT_EQ(result, "word"sv);
|
|
|
}
|
|
|
{
|
|
|
- auto string = MUST(String::from_utf8(" word"sv));
|
|
|
+ auto string = MUST(" word"_string);
|
|
|
|
|
|
auto result = MUST(string.trim(" "sv, TrimMode::Both));
|
|
|
EXPECT_EQ(result, "word"sv);
|
|
@@ -595,7 +619,7 @@ TEST_CASE(trim)
|
|
|
EXPECT_EQ(result, " word"sv);
|
|
|
}
|
|
|
{
|
|
|
- auto string = MUST(String::from_utf8("word "sv));
|
|
|
+ auto string = MUST("word "_string);
|
|
|
|
|
|
auto result = MUST(string.trim(" "sv, TrimMode::Both));
|
|
|
EXPECT_EQ(result, "word"sv);
|
|
@@ -607,7 +631,7 @@ TEST_CASE(trim)
|
|
|
EXPECT_EQ(result, "word"sv);
|
|
|
}
|
|
|
{
|
|
|
- auto string = MUST(String::from_utf8(" word "sv));
|
|
|
+ auto string = MUST(" word "_string);
|
|
|
|
|
|
auto result = MUST(string.trim(" "sv, TrimMode::Both));
|
|
|
EXPECT_EQ(result, "word"sv);
|
|
@@ -619,7 +643,7 @@ TEST_CASE(trim)
|
|
|
EXPECT_EQ(result, " word"sv);
|
|
|
}
|
|
|
{
|
|
|
- auto string = MUST(String::from_utf8(" word "sv));
|
|
|
+ auto string = MUST(" word "_string);
|
|
|
|
|
|
auto result = MUST(string.trim("\t"sv, TrimMode::Both));
|
|
|
EXPECT_EQ(result, " word "sv);
|
|
@@ -631,7 +655,7 @@ TEST_CASE(trim)
|
|
|
EXPECT_EQ(result, " word "sv);
|
|
|
}
|
|
|
{
|
|
|
- auto string = MUST(String::from_utf8("ωΣωΣω"sv));
|
|
|
+ auto string = MUST("ωΣωΣω"_string);
|
|
|
|
|
|
auto result = MUST(string.trim("ω"sv, TrimMode::Both));
|
|
|
EXPECT_EQ(result, "ΣωΣ"sv);
|
|
@@ -643,7 +667,7 @@ TEST_CASE(trim)
|
|
|
EXPECT_EQ(result, "ωΣωΣ"sv);
|
|
|
}
|
|
|
{
|
|
|
- auto string = MUST(String::from_utf8("ωΣωΣω"sv));
|
|
|
+ auto string = MUST("ωΣωΣω"_string);
|
|
|
|
|
|
auto result = MUST(string.trim("ωΣ"sv, TrimMode::Both));
|
|
|
EXPECT(result.is_empty());
|
|
@@ -655,7 +679,7 @@ TEST_CASE(trim)
|
|
|
EXPECT(result.is_empty());
|
|
|
}
|
|
|
{
|
|
|
- auto string = MUST(String::from_utf8("ωΣωΣω"sv));
|
|
|
+ auto string = MUST("ωΣωΣω"_string);
|
|
|
|
|
|
auto result = MUST(string.trim("Σω"sv, TrimMode::Both));
|
|
|
EXPECT(result.is_empty());
|