diff --git a/test/utf8_test.cpp b/test/utf8_test.cpp index 003eb3079a5..6256afeca47 100644 --- a/test/utf8_test.cpp +++ b/test/utf8_test.cpp @@ -6,6 +6,46 @@ namespace devilution { namespace { +TEST(DecodeFirstUtf8CodePointTest, OneByteCodePoint) +{ + size_t len; + char32_t cp = DecodeFirstUtf8CodePoint("a", &len); + EXPECT_EQ(cp, U'a'); + EXPECT_EQ(len, 1); +} + +TEST(DecodeFirstUtf8CodePointTest, TwoByteCodePoint) +{ + size_t len; + char32_t cp = DecodeFirstUtf8CodePoint("ΠΆ", &len); + EXPECT_EQ(cp, U'ΠΆ'); + EXPECT_EQ(len, 2); +} + +TEST(DecodeFirstUtf8CodePointTest, ThreeByteCodePoint) +{ + size_t len; + char32_t cp = DecodeFirstUtf8CodePoint("€", &len); + EXPECT_EQ(cp, U'€'); + EXPECT_EQ(len, 3); +} + +TEST(DecodeFirstUtf8CodePointTest, FourByteCodePoint) +{ + size_t len; + char32_t cp = DecodeFirstUtf8CodePoint("πŸ’‘", &len); + EXPECT_EQ(cp, U'πŸ’‘'); + EXPECT_EQ(len, 4); +} + +TEST(DecodeFirstUtf8CodePointTest, InvalidCodePoint) +{ + size_t len; + char32_t cp = DecodeFirstUtf8CodePoint("\xc3\x28", &len); + EXPECT_EQ(cp, Utf8DecodeError); + EXPECT_EQ(len, 1); +} + TEST(AppendUtf8Test, OneByteCodePoint) { std::string s = "x"; @@ -30,8 +70,8 @@ TEST(AppendUtf8Test, ThreeByteCodePoint) TEST(AppendUtf8Test, FourByteCodePoint) { std::string s; - AppendUtf8(U'あ', s); - EXPECT_EQ(s, "あ"); + AppendUtf8(U'πŸ’‘', s); + EXPECT_EQ(s, "πŸ’‘"); } TEST(Utf8CodeUnits, ValidCodePoints)