Buckets:
localhost1978/localhost / LOCALHOST1978 /Modules /SSK_Providers /Vendor /td /tdutils /test /emoji.cpp
| // | |
| // Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2026 | |
| // | |
| // Distributed under the Boost Software License, Version 1.0. (See accompanying | |
| // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) | |
| // | |
| TEST(Emoji, is_emoji) { | |
| ASSERT_TRUE(!td::is_emoji("")); | |
| ASSERT_TRUE(td::is_emoji("๐ฉ๐ผโโคโ๐โ๐ฉ๐ป")); | |
| ASSERT_TRUE(td::is_emoji("๐ฉ๐ผโโคโ๐โ๐ฉ๐ป๏ธ")); // not in RGI emoji ZWJ sequence set | |
| ASSERT_TRUE(td::is_emoji("๐ฉ๐ผโโค๏ธโ๐โ๐ฉ๐ป")); | |
| ASSERT_TRUE(td::is_emoji("๐ฉ๐ผโโค๏ธโ๐โ๐ฉ๐ป๏ธ")); | |
| ASSERT_TRUE(!td::is_emoji("๐ฉ๐ผโโค๏ธ๏ธโ๐โ๐ฉ๐ป")); | |
| ASSERT_TRUE(td::is_emoji("โ")); | |
| ASSERT_TRUE(td::is_emoji("โ๏ธ")); | |
| ASSERT_TRUE(td::is_emoji("โ")); | |
| ASSERT_TRUE(td::is_emoji("๐ช")); | |
| ASSERT_TRUE(td::is_emoji("2๏ธโฃ")); | |
| ASSERT_TRUE(td::is_emoji("2โฃ")); | |
| ASSERT_TRUE(!td::is_emoji(" 2โฃ")); | |
| ASSERT_TRUE(!td::is_emoji("2โฃ ")); | |
| ASSERT_TRUE(!td::is_emoji(" ")); | |
| ASSERT_TRUE(!td::is_emoji("")); | |
| ASSERT_TRUE(!td::is_emoji("1234567890123456789012345678901234567890123456789012345678901234567890")); | |
| ASSERT_TRUE(td::is_emoji("โค๏ธ")); | |
| ASSERT_TRUE(td::is_emoji("โค")); | |
| ASSERT_TRUE(td::is_emoji("โ")); | |
| ASSERT_TRUE(td::is_emoji("๐")); | |
| ASSERT_TRUE(td::is_emoji("๐งโ๐")); | |
| ASSERT_TRUE(td::is_emoji("ยฉ๏ธ")); | |
| ASSERT_TRUE(td::is_emoji("ยฉ")); | |
| ASSERT_TRUE(!td::is_emoji("ยฉ๏ธ๏ธ")); | |
| ASSERT_TRUE(td::is_emoji("๐ต๏ธโโ๏ธ")); | |
| ASSERT_TRUE(td::is_emoji("๐ตโโ๏ธ")); // not in RGI emoji ZWJ sequence set | |
| ASSERT_TRUE(td::is_emoji("๐ต๏ธโโ")); // not in RGI emoji ZWJ sequence set | |
| ASSERT_TRUE(td::is_emoji("๐ตโโ")); | |
| ASSERT_TRUE(td::is_emoji("๐๏ธโโ๏ธ")); | |
| ASSERT_TRUE(td::is_emoji("๐๏ธโโ๏ธ")); | |
| ASSERT_TRUE(td::is_emoji("๐โโ๏ธ")); // not in RGI emoji ZWJ sequence set | |
| ASSERT_TRUE(td::is_emoji("๐โโ๏ธ")); // not in RGI emoji ZWJ sequence set | |
| ASSERT_TRUE(!td::is_emoji("aโ๐คโ๐จ")); | |
| ASSERT_TRUE(!td::is_emoji("๐ฉโaโ๐จ")); | |
| ASSERT_TRUE(!td::is_emoji("๐ฉโ๐คโa")); | |
| ASSERT_TRUE(td::is_emoji("๐ฉโ๐คโ๐จ")); // not in RGI emoji ZWJ sequence set | |
| } | |
| static void test_get_fitzpatrick_modifier(td::string emoji, int result) { | |
| ASSERT_EQ(result, td::get_fitzpatrick_modifier(emoji)); | |
| } | |
| TEST(Emoji, get_fitzpatrick_modifier) { | |
| test_get_fitzpatrick_modifier("", 0); | |
| test_get_fitzpatrick_modifier("๐ฉ๐ผโโคโ๐โ๐ฉ๐ป", 2); | |
| test_get_fitzpatrick_modifier("๐ฉ๐ผโโค๏ธโ๐โ๐ฉ๐ป", 2); | |
| test_get_fitzpatrick_modifier("๐", 0); | |
| test_get_fitzpatrick_modifier("๐๐ป", 2); | |
| test_get_fitzpatrick_modifier("๐๐ผ", 3); | |
| test_get_fitzpatrick_modifier("๐๐ฝ", 4); | |
| test_get_fitzpatrick_modifier("๐๐พ", 5); | |
| test_get_fitzpatrick_modifier("๐๐ฟ", 6); | |
| test_get_fitzpatrick_modifier("๐ป", 2); | |
| test_get_fitzpatrick_modifier("๐ผ", 3); | |
| test_get_fitzpatrick_modifier("๐ฝ", 4); | |
| test_get_fitzpatrick_modifier("๐พ", 5); | |
| test_get_fitzpatrick_modifier("๐ฟ", 6); | |
| test_get_fitzpatrick_modifier("โ", 0); | |
| test_get_fitzpatrick_modifier("โ", 0); | |
| test_get_fitzpatrick_modifier("๐ช", 0); | |
| test_get_fitzpatrick_modifier("2๏ธโฃ", 0); | |
| test_get_fitzpatrick_modifier("2โฃ", 0); | |
| test_get_fitzpatrick_modifier("โค๏ธ", 0); | |
| test_get_fitzpatrick_modifier("โค", 0); | |
| test_get_fitzpatrick_modifier("โ", 0); | |
| test_get_fitzpatrick_modifier("๐", 0); | |
| test_get_fitzpatrick_modifier("๐งโ๐", 0); | |
| } | |
| static void test_remove_emoji_modifiers(td::string emoji, const td::string &result, bool remove_selectors = true) { | |
| ASSERT_STREQ(result, td::remove_emoji_modifiers(emoji, remove_selectors)); | |
| td::remove_emoji_modifiers_in_place(emoji, remove_selectors); | |
| ASSERT_STREQ(result, emoji); | |
| ASSERT_STREQ(emoji, td::remove_emoji_modifiers(emoji, remove_selectors)); | |
| } | |
| TEST(Emoji, remove_emoji_modifiers) { | |
| test_remove_emoji_modifiers("", ""); | |
| test_remove_emoji_modifiers("๐ฉ๐ผโโคโ๐โ๐ฉ๐ป", "๐ฉโโคโ๐โ๐ฉ"); | |
| test_remove_emoji_modifiers("๐ฉ๐ผโโค๏ธโ๐โ๐ฉ๐ป", "๐ฉโโคโ๐โ๐ฉ"); | |
| test_remove_emoji_modifiers("๐ฉ๐ผโโค๏ธโ๐โ๐ฉ๐ป", "๐ฉโโค๏ธโ๐โ๐ฉ", false); | |
| test_remove_emoji_modifiers("๐๐ป", "๐"); | |
| test_remove_emoji_modifiers("๐๐ผ", "๐"); | |
| test_remove_emoji_modifiers("๐๐ฝ", "๐"); | |
| test_remove_emoji_modifiers("๐๐พ", "๐"); | |
| test_remove_emoji_modifiers("๐๐ฟ", "๐"); | |
| test_remove_emoji_modifiers("๐ป", "๐ป"); | |
| test_remove_emoji_modifiers("๐ผ", "๐ผ"); | |
| test_remove_emoji_modifiers("๐ฝ", "๐ฝ"); | |
| test_remove_emoji_modifiers("๐พ", "๐พ"); | |
| test_remove_emoji_modifiers("๐ฟ", "๐ฟ"); | |
| test_remove_emoji_modifiers("โ", "โ"); | |
| test_remove_emoji_modifiers("โ", "โ"); | |
| test_remove_emoji_modifiers("๐ช", "๐ช"); | |
| test_remove_emoji_modifiers("2๏ธโฃ", "2โฃ"); | |
| test_remove_emoji_modifiers("2โฃ", "2โฃ"); | |
| test_remove_emoji_modifiers("โค๏ธ", "โค"); | |
| test_remove_emoji_modifiers("โค", "โค"); | |
| test_remove_emoji_modifiers("โ", "โ"); | |
| test_remove_emoji_modifiers("๏ธ", "๏ธ"); | |
| test_remove_emoji_modifiers("๏ธ๏ธ๏ธ๐ป", "๏ธ๏ธ๏ธ๐ป"); | |
| test_remove_emoji_modifiers("๏ธ๏ธ๏ธ๐ปa", "a"); | |
| test_remove_emoji_modifiers("๐", "๐"); | |
| test_remove_emoji_modifiers("๐งโ๐", "๐งโ๐"); | |
| } | |
| static void test_remove_emoji_selectors(td::string emoji, const td::string &result) { | |
| ASSERT_STREQ(result, td::remove_emoji_selectors(result)); | |
| ASSERT_STREQ(result, td::remove_emoji_selectors(emoji)); | |
| } | |
| TEST(Emoji, remove_emoji_selectors) { | |
| test_remove_emoji_selectors("", ""); | |
| test_remove_emoji_selectors("๐ฉ๐ผโโคโ๐โ๐ฉ๐ป", "๐ฉ๐ผโโคโ๐โ๐ฉ๐ป"); | |
| test_remove_emoji_selectors("๐ฉ๐ผโโค๏ธโ๐โ๐ฉ๐ป", "๐ฉ๐ผโโคโ๐โ๐ฉ๐ป"); | |
| test_remove_emoji_selectors("๐๐ป", "๐๐ป"); | |
| test_remove_emoji_selectors("๐๐ผ", "๐๐ผ"); | |
| test_remove_emoji_selectors("๐๐ฝ", "๐๐ฝ"); | |
| test_remove_emoji_selectors("๐๐พ", "๐๐พ"); | |
| test_remove_emoji_selectors("๐๐ฟ", "๐๐ฟ"); | |
| test_remove_emoji_selectors("๐ป", "๐ป"); | |
| test_remove_emoji_selectors("๐ผ", "๐ผ"); | |
| test_remove_emoji_selectors("๐ฝ", "๐ฝ"); | |
| test_remove_emoji_selectors("๐พ", "๐พ"); | |
| test_remove_emoji_selectors("๐ฟ", "๐ฟ"); | |
| test_remove_emoji_selectors("โ", "โ"); | |
| test_remove_emoji_selectors("โ", "โ"); | |
| test_remove_emoji_selectors("๐ช", "๐ช"); | |
| test_remove_emoji_selectors("2๏ธโฃ", "2โฃ"); | |
| test_remove_emoji_selectors("2โฃ", "2โฃ"); | |
| test_remove_emoji_selectors("โค๏ธ", "โค"); | |
| test_remove_emoji_selectors("โค", "โค"); | |
| test_remove_emoji_selectors("โ", "โ"); | |
| test_remove_emoji_selectors("๐", "๐"); | |
| test_remove_emoji_selectors("๐งโ๐", "๐งโ๐"); | |
| } | |
Xet Storage Details
- Size:
- 7.02 kB
- Xet hash:
- 401191a2e1a74417543ce4b9b58d529739ae0e2e7be4c70fff0b96abbbbe14dd
ยท
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.