|
@@ -11,7 +11,7 @@
|
|
|
|
|
|
TEST_CASE(decode_ascii)
|
|
|
{
|
|
|
- Utf8View utf8 { "Hello World!11" };
|
|
|
+ Utf8View utf8 { "Hello World!11"sv };
|
|
|
EXPECT(utf8.validate());
|
|
|
|
|
|
u32 expected[] = { 72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33, 49, 49 };
|
|
@@ -28,7 +28,7 @@ TEST_CASE(decode_ascii)
|
|
|
|
|
|
TEST_CASE(decode_utf8)
|
|
|
{
|
|
|
- Utf8View utf8 { "Привет, мир! 😀 γειά σου κόσμος こんにちは世界" };
|
|
|
+ Utf8View utf8 { "Привет, мир! 😀 γειά σου κόσμος こんにちは世界"sv };
|
|
|
size_t valid_bytes;
|
|
|
EXPECT(utf8.validate(valid_bytes));
|
|
|
EXPECT(valid_bytes == (size_t)utf8.byte_length());
|
|
@@ -52,29 +52,29 @@ TEST_CASE(validate_invalid_ut8)
|
|
|
{
|
|
|
size_t valid_bytes;
|
|
|
char invalid_utf8_1[] = { 42, 35, (char)182, 9, 0 };
|
|
|
- Utf8View utf8_1 { invalid_utf8_1 };
|
|
|
+ Utf8View utf8_1 { StringView { invalid_utf8_1 } };
|
|
|
EXPECT(!utf8_1.validate(valid_bytes));
|
|
|
EXPECT(valid_bytes == 2);
|
|
|
|
|
|
char invalid_utf8_2[] = { 42, 35, (char)208, (char)208, 0 };
|
|
|
- Utf8View utf8_2 { invalid_utf8_2 };
|
|
|
+ Utf8View utf8_2 { StringView { invalid_utf8_2 } };
|
|
|
EXPECT(!utf8_2.validate(valid_bytes));
|
|
|
EXPECT(valid_bytes == 2);
|
|
|
|
|
|
char invalid_utf8_3[] = { (char)208, 0 };
|
|
|
- Utf8View utf8_3 { invalid_utf8_3 };
|
|
|
+ Utf8View utf8_3 { StringView { invalid_utf8_3 } };
|
|
|
EXPECT(!utf8_3.validate(valid_bytes));
|
|
|
EXPECT(valid_bytes == 0);
|
|
|
|
|
|
char invalid_utf8_4[] = { (char)208, 35, 0 };
|
|
|
- Utf8View utf8_4 { invalid_utf8_4 };
|
|
|
+ Utf8View utf8_4 { StringView { invalid_utf8_4 } };
|
|
|
EXPECT(!utf8_4.validate(valid_bytes));
|
|
|
EXPECT(valid_bytes == 0);
|
|
|
}
|
|
|
|
|
|
TEST_CASE(iterate_utf8)
|
|
|
{
|
|
|
- Utf8View view("Some weird characters \u00A9\u266A\uA755");
|
|
|
+ Utf8View view("Some weird characters \u00A9\u266A\uA755"sv);
|
|
|
Utf8CodePointIterator iterator = view.begin();
|
|
|
|
|
|
EXPECT(*iterator == 'S');
|
|
@@ -113,7 +113,7 @@ TEST_CASE(decode_invalid_ut8)
|
|
|
// Test case 1 : Getting an extension byte as first byte of the code point
|
|
|
{
|
|
|
char raw_data[] = { 'a', 'b', (char)0xA0, 'd', 0 };
|
|
|
- Utf8View view { raw_data };
|
|
|
+ Utf8View view { StringView { raw_data } };
|
|
|
u32 expected_characters[] = { 'a', 'b', 0xFFFD, 'd' };
|
|
|
String expected_underlying_bytes[] = { "a", "b", "\xA0", "d" };
|
|
|
size_t expected_size = sizeof(expected_characters) / sizeof(expected_characters[0]);
|
|
@@ -131,7 +131,7 @@ TEST_CASE(decode_invalid_ut8)
|
|
|
// Test case 2 : Getting a non-extension byte when an extension byte is expected
|
|
|
{
|
|
|
char raw_data[] = { 'a', 'b', (char)0xC0, 'd', 'e', 0 };
|
|
|
- Utf8View view { raw_data };
|
|
|
+ Utf8View view { StringView { raw_data } };
|
|
|
u32 expected_characters[] = { 'a', 'b', 0xFFFD, 'd', 'e' };
|
|
|
String expected_underlying_bytes[] = { "a", "b", "\xC0", "d", "e" };
|
|
|
size_t expected_size = sizeof(expected_characters) / sizeof(expected_characters[0]);
|
|
@@ -149,7 +149,7 @@ TEST_CASE(decode_invalid_ut8)
|
|
|
// Test case 3 : Not enough bytes before the end of the string
|
|
|
{
|
|
|
char raw_data[] = { 'a', 'b', (char)0x90, 'd', 0 };
|
|
|
- Utf8View view { raw_data };
|
|
|
+ Utf8View view { StringView { raw_data } };
|
|
|
u32 expected_characters[] = { 'a', 'b', 0xFFFD, 'd' };
|
|
|
String expected_underlying_bytes[] = { "a", "b", "\x90", "d" };
|
|
|
size_t expected_size = sizeof(expected_characters) / sizeof(expected_characters[0]);
|
|
@@ -167,7 +167,7 @@ TEST_CASE(decode_invalid_ut8)
|
|
|
// Test case 4 : Not enough bytes at the end of the string
|
|
|
{
|
|
|
char raw_data[] = { 'a', 'b', 'c', (char)0x90, 0 };
|
|
|
- Utf8View view { raw_data };
|
|
|
+ Utf8View view { StringView { raw_data } };
|
|
|
u32 expected_characters[] = { 'a', 'b', 'c', 0xFFFD };
|
|
|
String expected_underlying_bytes[] = { "a", "b", "c", "\x90" };
|
|
|
size_t expected_size = sizeof(expected_characters) / sizeof(expected_characters[0]);
|
|
@@ -185,33 +185,33 @@ TEST_CASE(decode_invalid_ut8)
|
|
|
|
|
|
TEST_CASE(trim)
|
|
|
{
|
|
|
- Utf8View whitespace { " " };
|
|
|
+ Utf8View whitespace { " "sv };
|
|
|
{
|
|
|
- Utf8View view { "word" };
|
|
|
+ Utf8View view { "word"sv };
|
|
|
EXPECT_EQ(view.trim(whitespace, TrimMode::Both).as_string(), "word");
|
|
|
EXPECT_EQ(view.trim(whitespace, TrimMode::Left).as_string(), "word");
|
|
|
EXPECT_EQ(view.trim(whitespace, TrimMode::Right).as_string(), "word");
|
|
|
}
|
|
|
{
|
|
|
- Utf8View view { " word" };
|
|
|
+ Utf8View view { " word"sv };
|
|
|
EXPECT_EQ(view.trim(whitespace, TrimMode::Both).as_string(), "word");
|
|
|
EXPECT_EQ(view.trim(whitespace, TrimMode::Left).as_string(), "word");
|
|
|
EXPECT_EQ(view.trim(whitespace, TrimMode::Right).as_string(), " word");
|
|
|
}
|
|
|
{
|
|
|
- Utf8View view { "word " };
|
|
|
+ Utf8View view { "word "sv };
|
|
|
EXPECT_EQ(view.trim(whitespace, TrimMode::Both).as_string(), "word");
|
|
|
EXPECT_EQ(view.trim(whitespace, TrimMode::Left).as_string(), "word ");
|
|
|
EXPECT_EQ(view.trim(whitespace, TrimMode::Right).as_string(), "word");
|
|
|
}
|
|
|
{
|
|
|
- Utf8View view { " word " };
|
|
|
+ Utf8View view { " word "sv };
|
|
|
EXPECT_EQ(view.trim(whitespace, TrimMode::Both).as_string(), "word");
|
|
|
EXPECT_EQ(view.trim(whitespace, TrimMode::Left).as_string(), "word ");
|
|
|
EXPECT_EQ(view.trim(whitespace, TrimMode::Right).as_string(), " word");
|
|
|
}
|
|
|
{
|
|
|
- Utf8View view { "\u180E" };
|
|
|
+ Utf8View view { "\u180E"sv };
|
|
|
EXPECT_EQ(view.trim(whitespace, TrimMode::Both).as_string(), "\u180E");
|
|
|
EXPECT_EQ(view.trim(whitespace, TrimMode::Left).as_string(), "\u180E");
|
|
|
EXPECT_EQ(view.trim(whitespace, TrimMode::Right).as_string(), "\u180E");
|