summaryrefslogtreecommitdiff
path: root/protocols/Telegram/tdlib/td/tdutils/test/emoji.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'protocols/Telegram/tdlib/td/tdutils/test/emoji.cpp')
-rw-r--r--protocols/Telegram/tdlib/td/tdutils/test/emoji.cpp30
1 files changed, 25 insertions, 5 deletions
diff --git a/protocols/Telegram/tdlib/td/tdutils/test/emoji.cpp b/protocols/Telegram/tdlib/td/tdutils/test/emoji.cpp
index c8e6539a99..0efb17429b 100644
--- a/protocols/Telegram/tdlib/td/tdutils/test/emoji.cpp
+++ b/protocols/Telegram/tdlib/td/tdutils/test/emoji.cpp
@@ -1,18 +1,22 @@
//
-// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2022
+// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2023
//
// 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)
//
+#include "td/utils/common.h"
#include "td/utils/emoji.h"
#include "td/utils/tests.h"
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ī¸âƒŖ"));
@@ -27,6 +31,21 @@ TEST(Emoji, 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) {
@@ -60,17 +79,18 @@ TEST(Emoji, get_fitzpatrick_modifier) {
test_get_fitzpatrick_modifier("🧑‍🎄", 0);
}
-static void test_remove_emoji_modifiers(td::string emoji, const td::string &result) {
- ASSERT_STREQ(result, td::remove_emoji_modifiers(emoji));
- td::remove_emoji_modifiers_in_place(emoji);
+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));
+ 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("👋đŸŊ", "👋");