/* * Copyright (c) 2024, Ben Jilks * * SPDX-License-Identifier: BSD-2-Clause */ #include #include TEST_CASE(test_utf8_encode) { TextCodec::UTF8Encoder encoder; // Unicode character U+1F600 GRINNING FACE auto test_string = "\U0001F600"sv; Vector 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 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); }