diff options
| author | levlam <levlam@telegram.org> | 2025-11-14 13:22:41 +0300 |
|---|---|---|
| committer | levlam <levlam@telegram.org> | 2025-11-14 13:22:41 +0300 |
| commit | f5fdaa14fa815a8aca26181f658145e8df7f9111 (patch) | |
| tree | f72d722c15651e0aff8e22071c162f490058f594 /tdutils | |
| parent | 15c3e708e0268ea8b7c21e71b78d670cea86b33e (diff) | |
Add check_utf8 test.
Diffstat (limited to 'tdutils')
| -rw-r--r-- | tdutils/test/misc.cpp | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/tdutils/test/misc.cpp b/tdutils/test/misc.cpp index 6a3c2bd2a..0367a3e92 100644 --- a/tdutils/test/misc.cpp +++ b/tdutils/test/misc.cpp @@ -713,6 +713,60 @@ TEST(Misc, to_wstring) { } #endif +static void test_check_utf8(td::CSlice str, bool result) { + ASSERT_EQ(result, td::check_utf8(str)); +} + +TEST(Misc, check_utf8) { + test_check_utf8("", true); + test_check_utf8("\xe0", false); + test_check_utf8("\xf0", false); + test_check_utf8("\xff", false); + for (int i = 0; i <= 255; i++) { + test_check_utf8(td::string(1, static_cast<char>(i)), i <= 0x7F); + test_check_utf8(td::string(2, static_cast<char>(i)), i <= 0x7F); + test_check_utf8(td::string(10, static_cast<char>(i)), i <= 0x7F); + } + test_check_utf8("artem", true); + test_check_utf8("артем", true); + test_check_utf8("\xAF", false); + test_check_utf8("\xAF\xAF", false); + test_check_utf8("\xB0\x00", false); + test_check_utf8("\xB0\x80", false); + test_check_utf8("\xB1\x7F", false); + test_check_utf8("\xB1\x80", false); + test_check_utf8("\xB1\x8F", false); + test_check_utf8("\xC2\x80", true); + test_check_utf8("\xC2\x8F", true); + test_check_utf8("\xCF\xAF", true); + test_check_utf8("\xDF\xBF", true); + test_check_utf8("\xDF\xC0", false); + test_check_utf8("\xE0\xBF", false); + test_check_utf8("\xE0\x90\x80", false); + test_check_utf8("\xE0\x9F\x80", false); + test_check_utf8("\xE0\xA0\x80", true); + test_check_utf8("\xED\x9F\xBF", true); + test_check_utf8("\xED\x9F\xC0", false); + test_check_utf8("\xED\xA0\x80", false); + test_check_utf8("\xED\xA0\xBF", false); + test_check_utf8("\xED\xBF\xBF", false); + test_check_utf8("\xEE\x80\x80", true); + test_check_utf8("\xEF\xBF\xBF", true); + test_check_utf8("\xEF\xBF\xC0", false); + test_check_utf8("\xEF\xC0\xBF", false); + test_check_utf8("\xF0\xBF\xBF", false); + test_check_utf8("\xEF\x90\x80\x80", false); + test_check_utf8("\xF0\x8F\x80\x80", false); + test_check_utf8("\xF0\x90\x80\x80", true); + test_check_utf8("\xF4\x8F\xBF\xBF", true); + test_check_utf8("\xF5\x8F\xBF\xBF", false); + test_check_utf8("\xF4\x90\x80\x80", false); + test_check_utf8("\xF4\x90\xBF\xBF", false); + test_check_utf8("\xF4\x8F\xC0\x80", false); + test_check_utf8("\xF4\x8F\xC0\xBF", false); + test_check_utf8("\xF4\x8F\xBF\xC0", false); +} + static void test_translit(const td::string &word, const td::vector<td::string> &result, bool allow_partial = true) { ASSERT_EQ(result, td::get_word_transliterations(word, allow_partial)); } |
