mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-06-08 05:27:14 +09:00

Implements the corresponding encoders, selects the appropriate one when encoding URL search params. If an encoder for the given encoding could not be found, fallback to utf-8.
45 lines
1.3 KiB
C++
45 lines
1.3 KiB
C++
/*
|
|
* Copyright (c) 2024, Ben Jilks <benjyjilks@gmail.com>
|
|
*
|
|
* SPDX-License-Identifier: BSD-2-Clause
|
|
*/
|
|
|
|
#include <LibTest/TestCase.h>
|
|
#include <LibTextCodec/Encoder.h>
|
|
|
|
TEST_CASE(test_utf8_encode)
|
|
{
|
|
TextCodec::UTF8Encoder encoder;
|
|
// Unicode character U+1F600 GRINNING FACE
|
|
auto test_string = "\U0001F600"sv;
|
|
|
|
Vector<u8> processed_bytes;
|
|
MUST(encoder.process(Utf8View(test_string), [&](u8 byte) {
|
|
return processed_bytes.try_append(byte);
|
|
}));
|
|
EXPECT(processed_bytes.size() == 4);
|
|
EXPECT(processed_bytes[0] == 0xF0);
|
|
EXPECT(processed_bytes[1] == 0x9F);
|
|
EXPECT(processed_bytes[2] == 0x98);
|
|
EXPECT(processed_bytes[3] == 0x80);
|
|
}
|
|
|
|
TEST_CASE(test_euc_jp_encoder)
|
|
{
|
|
TextCodec::EUCJPEncoder encoder;
|
|
// U+A5 Yen Sign
|
|
// U+3088 Hiragana Letter Yo
|
|
// U+30C4 Katakana Letter Tu
|
|
auto test_string = "\U000000A5\U00003088\U000030C4"sv;
|
|
|
|
Vector<u8> processed_bytes;
|
|
MUST(encoder.process(Utf8View(test_string), [&](u8 byte) {
|
|
return processed_bytes.try_append(byte);
|
|
}));
|
|
EXPECT(processed_bytes.size() == 5);
|
|
EXPECT(processed_bytes[0] == 0x5C);
|
|
EXPECT(processed_bytes[1] == 0xA4);
|
|
EXPECT(processed_bytes[2] == 0xE8);
|
|
EXPECT(processed_bytes[3] == 0xA5);
|
|
EXPECT(processed_bytes[4] == 0xC4);
|
|
}
|