diff --git a/Tests/LibTextCodec/TestTextDecoders.cpp b/Tests/LibTextCodec/TestTextDecoders.cpp index 9558de0263..fb49ecf75c 100644 --- a/Tests/LibTextCodec/TestTextDecoders.cpp +++ b/Tests/LibTextCodec/TestTextDecoders.cpp @@ -33,16 +33,13 @@ static Vector process_code_points(TextCodec::Decoder& decoder, StringView i TEST_CASE(test_utf8_decode) { - auto decoder = TextCodec::UTF8Decoder(); + auto& decoder = decoder_for("UTF-8"sv); // Bytes for U+1F600 GRINNING FACE auto test_string = "\xf0\x9f\x98\x80"sv; EXPECT(decoder.validate(test_string)); - Vector processed_code_points; - MUST(decoder.process(test_string, [&](u32 code_point) { - return processed_code_points.try_append(code_point); - })); + auto processed_code_points = process_code_points(decoder, test_string); EXPECT(processed_code_points.size() == 1); EXPECT(processed_code_points[0] == 0x1F600); @@ -51,7 +48,7 @@ TEST_CASE(test_utf8_decode) TEST_CASE(test_utf8_process_code_points) { - auto decoder = TextCodec::UTF8Decoder(); + auto& decoder = decoder_for("UTF-8"sv); auto test_string = "A\xf0\x9f\x98\x80"sv; EXPECT_EQ(process_code_points(decoder, test_string), (Vector { 0x41, 0x1F600 })); @@ -59,7 +56,7 @@ TEST_CASE(test_utf8_process_code_points) TEST_CASE(test_utf8_process_code_points_replaces_surrogates) { - auto decoder = TextCodec::UTF8Decoder(); + auto& decoder = decoder_for("UTF-8"sv); auto utf8_encoded_surrogate_bytes = Vector { 0xed, 0xa0, 0x80 }; auto utf8_encoded_surrogate = StringView(bytes(utf8_encoded_surrogate_bytes)); @@ -70,7 +67,7 @@ TEST_CASE(test_utf8_process_code_points_replaces_surrogates) TEST_CASE(test_utf8_process_code_points_replaces_truncated_tail_as_single_error) { - auto decoder = TextCodec::UTF8Decoder(); + auto& decoder = decoder_for("UTF-8"sv); auto truncated_tail_bytes = Vector { 0xf0, 0x9f, 0x98 }; auto truncated_tail = StringView(bytes(truncated_tail_bytes)); @@ -81,7 +78,7 @@ TEST_CASE(test_utf8_process_code_points_replaces_truncated_tail_as_single_error) TEST_CASE(test_utf8_process_code_points_replaces_overlong_sequences) { - auto decoder = TextCodec::UTF8Decoder(); + auto& decoder = decoder_for("UTF-8"sv); auto overlong_null_bytes = Vector { 0xc0, 0x80 }; auto overlong_null = StringView(bytes(overlong_null_bytes)); @@ -92,7 +89,7 @@ TEST_CASE(test_utf8_process_code_points_replaces_overlong_sequences) TEST_CASE(test_utf8_process_code_points_restores_invalid_second_byte) { - auto decoder = TextCodec::UTF8Decoder(); + auto& decoder = decoder_for("UTF-8"sv); auto overlong_three_byte_sequence_bytes = Vector { 0xe0, 0x80, 0x80 }; auto overlong_three_byte_sequence = StringView(bytes(overlong_three_byte_sequence_bytes)); auto out_of_range_four_byte_sequence_bytes = Vector { 0xf4, 0x90, 0x80, 0x80 }; @@ -109,7 +106,7 @@ TEST_CASE(test_utf8_process_code_points_restores_invalid_second_byte) TEST_CASE(test_utf16be_decode) { - auto decoder = TextCodec::UTF16BEDecoder(); + auto& decoder = decoder_for("UTF-16BE"sv); // This is the output of `python3 -c "print('säk😀'.encode('utf-16be'))"`. auto test_string = "\x00s\x00\xe4\x00k\xd8=\xde\x00"sv; @@ -120,7 +117,7 @@ TEST_CASE(test_utf16be_decode) TEST_CASE(test_utf16be_process_code_points) { - auto decoder = TextCodec::UTF16BEDecoder(); + auto& decoder = decoder_for("UTF-16BE"sv); EXPECT_EQ(process_code_points(decoder, StringView(bytes({ 0xfe, 0xff, 0x00, 'A', 0xd8, 0x3d, 0xde, 0x00 }))), (Vector { 0x41, 0x1F600 })); EXPECT_EQ(process_code_points(decoder, StringView(bytes({ 0xd8, 0x3d, 0x00, 'A', 0xde, 0x00 }))), (Vector { 0xfffd, 0x41, 0xfffd })); @@ -241,7 +238,7 @@ TEST_CASE(test_streaming_decoder_shift_jis_tail) TEST_CASE(test_utf16le_decode) { - auto decoder = TextCodec::UTF16LEDecoder(); + auto& decoder = decoder_for("UTF-16LE"sv); // This is the output of `python3 -c "print('säk😀'.encode('utf-16le'))"`. auto test_string = "s\x00\xe4\x00k\x00=\xd8\x00\xde"sv; @@ -252,7 +249,7 @@ TEST_CASE(test_utf16le_decode) TEST_CASE(test_utf16le_process_code_points) { - auto decoder = TextCodec::UTF16LEDecoder(); + auto& decoder = decoder_for("UTF-16LE"sv); EXPECT_EQ(process_code_points(decoder, StringView(bytes({ 0xff, 0xfe, 'A', 0x00, 0x3d, 0xd8, 0x00, 0xde }))), (Vector { 0x41, 0x1F600 })); EXPECT_EQ(process_code_points(decoder, StringView(bytes({ 0x3d, 0xd8, 'A', 0x00, 0x00, 0xde }))), (Vector { 0xfffd, 0x41, 0xfffd })); diff --git a/Tests/LibTextCodec/TestTextEncoders.cpp b/Tests/LibTextCodec/TestTextEncoders.cpp index 499de5d2a8..11fdcfe89d 100644 --- a/Tests/LibTextCodec/TestTextEncoders.cpp +++ b/Tests/LibTextCodec/TestTextEncoders.cpp @@ -9,7 +9,7 @@ TEST_CASE(test_utf8_encode) { - TextCodec::UTF8Encoder encoder; + auto& encoder = TextCodec::encoder_for_exact_name("UTF-8"sv).value(); // Unicode character U+1F600 GRINNING FACE auto test_string = "\U0001F600"sv; @@ -27,7 +27,7 @@ TEST_CASE(test_utf8_encode) TEST_CASE(test_euc_jp_encoder) { - TextCodec::EUCJPEncoder encoder; + auto& encoder = TextCodec::encoder_for_exact_name("EUC-JP"sv).value(); // U+A5 Yen Sign // U+3088 Hiragana Letter Yo // U+30C4 Katakana Letter Tu @@ -48,7 +48,7 @@ TEST_CASE(test_euc_jp_encoder) TEST_CASE(test_iso_2022_jp_encoder) { - TextCodec::ISO2022JPEncoder encoder; + auto& encoder = TextCodec::encoder_for_exact_name("ISO-2022-JP"sv).value(); // U+A5 Yen Sign // U+3088 Hiragana Letter Yo // U+30C4 Katakana Letter Tu @@ -78,7 +78,7 @@ TEST_CASE(test_iso_2022_jp_encoder) TEST_CASE(test_shift_jis_encoder) { - TextCodec::ShiftJISEncoder encoder; + auto& encoder = TextCodec::encoder_for_exact_name("Shift_JIS"sv).value(); // U+A5 Yen Sign // U+3088 Hiragana Letter Yo // U+30C4 Katakana Letter Tu @@ -99,7 +99,7 @@ TEST_CASE(test_shift_jis_encoder) TEST_CASE(test_euc_kr_encoder) { - TextCodec::EUCKREncoder encoder; + auto& encoder = TextCodec::encoder_for_exact_name("EUC-KR"sv).value(); // U+B29F Hangul Syllable Neulh // U+7C97 CJK Unified Ideograph-7C97 auto test_string = "\U0000B29F\U00007C97"sv; @@ -118,7 +118,7 @@ TEST_CASE(test_euc_kr_encoder) TEST_CASE(test_big5_encoder) { - TextCodec::Big5Encoder encoder; + auto& encoder = TextCodec::encoder_for_exact_name("Big5"sv).value(); // U+A7 Section Sign // U+70D7 CJK Unified Ideograph-70D7 auto test_string = "\U000000A7\U000070D7"sv; @@ -137,7 +137,7 @@ TEST_CASE(test_big5_encoder) TEST_CASE(test_gb18030_encoder) { - TextCodec::GB18030Encoder encoder; + auto& encoder = TextCodec::encoder_for_exact_name("gb18030"sv).value(); // U+20AC Euro Sign // U+E4C5 Private Use Area auto test_string = "\U000020AC\U0000E4C5"sv; @@ -156,10 +156,10 @@ TEST_CASE(test_gb18030_encoder) TEST_CASE(test_windows1252_encoder) { - auto encoder = TextCodec::encoder_for_exact_name("windows-1252"sv); + auto& encoder = TextCodec::encoder_for_exact_name("windows-1252"sv).value(); auto test_string = "ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏfoo€"sv; Vector processed_bytes; - MUST(encoder.value().process( + MUST(encoder.process( Utf8View(test_string), [&](u8 byte) { dbgln("{}", processed_bytes.size()); return processed_bytes.try_append(byte); }, [&](u32) -> ErrorOr { EXPECT(false); return {}; }));