aboutsummaryrefslogtreecommitdiffhomepage
path: root/test/message_entities.cpp
diff options
context:
space:
mode:
authorlevlam <levlam@telegram.org>2023-10-30 18:18:13 +0300
committerlevlam <levlam@telegram.org>2023-10-30 18:18:13 +0300
commitea450564b0f2aabd1e645767ed72205533014ac6 (patch)
treefd3a4c4df28fdf182ab80c511cf8a2565985831f /test/message_entities.cpp
parentbdbee0765bdc0bc3fa861d26153b3d3e31bdca89 (diff)
Add BlockQuote parsing in MarkdownV2.
Diffstat (limited to 'test/message_entities.cpp')
-rw-r--r--test/message_entities.cpp30
1 files changed, 29 insertions, 1 deletions
diff --git a/test/message_entities.cpp b/test/message_entities.cpp
index 0de6c1faf..0cc7bd8f9 100644
--- a/test/message_entities.cpp
+++ b/test/message_entities.cpp
@@ -1375,6 +1375,9 @@ TEST(MessageEntities, parse_html) {
static void check_parse_markdown(td::string text, const td::string &result,
const td::vector<td::MessageEntity> &entities) {
auto r_entities = td::parse_markdown_v2(text);
+ if (r_entities.is_error()) {
+ LOG(ERROR) << r_entities.error();
+ }
ASSERT_TRUE(r_entities.is_ok());
ASSERT_EQ(entities, r_entities.ok());
ASSERT_STREQ(result, text);
@@ -1389,7 +1392,7 @@ static void check_parse_markdown(td::string text, td::Slice error_message) {
TEST(MessageEntities, parse_markdown) {
td::Slice reserved_characters("]()>#+-=|{}.!");
- td::Slice begin_characters("_*[~`");
+ td::Slice begin_characters("_*[~`>");
for (char c = 1; c < 126; c++) {
if (begin_characters.find(c) != td::Slice::npos) {
continue;
@@ -1426,6 +1429,7 @@ TEST(MessageEntities, parse_markdown) {
check_parse_markdown("🏟 🏟__", "Can't find end of Underline entity at byte offset 9");
check_parse_markdown("🏟 🏟||test\\|", "Can't find end of Spoiler entity at byte offset 9");
check_parse_markdown("🏟 🏟!", "Character '!' is reserved and must be escaped with the preceding '\\'");
+ check_parse_markdown("🏟 🏟>", "Character '>' is reserved and must be escaped with the preceding '\\'");
check_parse_markdown("🏟 🏟![", "Can't find end of CustomEmoji entity at byte offset 9");
check_parse_markdown("🏟 🏟![👍", "Can't find end of CustomEmoji entity at byte offset 9");
check_parse_markdown("🏟 🏟![👍]", "Custom emoji entity must contain a tg://emoji URL");
@@ -1435,6 +1439,7 @@ TEST(MessageEntities, parse_markdown) {
check_parse_markdown("🏟 🏟![👍](tg://emoji#test)", "Custom emoji URL must have an emoji identifier");
check_parse_markdown("🏟 🏟![👍](tg://emoji?test=1#&id=25)", "Custom emoji URL must have an emoji identifier");
check_parse_markdown("🏟 🏟![👍](tg://emoji?test=1231&id=025)", "Invalid custom emoji identifier specified");
+ check_parse_markdown(">*b\n>ld \n>bo\nld*\nasd\ndef", "Can't find end of Bold entity at byte offset 1");
check_parse_markdown("", "", {});
check_parse_markdown("\\\\", "\\", {});
@@ -1499,6 +1504,29 @@ TEST(MessageEntities, parse_markdown) {
{{0, 12, td::UserId(static_cast<td::int64>(123456))}});
check_parse_markdown("🏟 🏟![👍](TG://EMoJI/?test=1231&id=25#id=32)a", "🏟 🏟👍a",
{{td::MessageEntity::Type::CustomEmoji, 5, 2, td::CustomEmojiId(static_cast<td::int64>(25))}});
+ check_parse_markdown("> \n> \n>", " \n \n", {{td::MessageEntity::Type::BlockQuote, 0, 4}});
+ check_parse_markdown("> \\>\n \\> \n>", " >\n > \n", {{td::MessageEntity::Type::BlockQuote, 0, 3}});
+ check_parse_markdown("abc\n> \n> \n>\ndef", "abc\n \n \n\ndef", {{td::MessageEntity::Type::BlockQuote, 4, 5}});
+ check_parse_markdown(">", "", {});
+ check_parse_markdown(">a", "a", {{td::MessageEntity::Type::BlockQuote, 0, 1}});
+ check_parse_markdown(
+ ">*bold _italic bold ~italic bold strikethrough ||italic bold strikethrough spoiler||~ __underline italic "
+ "bold___ bold*",
+ "bold italic bold italic bold strikethrough italic bold strikethrough spoiler underline italic bold bold",
+ {{td::MessageEntity::Type::BlockQuote, 0, 103},
+ {td::MessageEntity::Type::Bold, 0, 103},
+ {td::MessageEntity::Type::Italic, 5, 93},
+ {td::MessageEntity::Type::Strikethrough, 17, 59},
+ {td::MessageEntity::Type::Spoiler, 43, 33},
+ {td::MessageEntity::Type::Underline, 77, 21}});
+ check_parse_markdown(">*b\n>ld \n>bo\n>ld*\nasd\ndef", "b\nld \nbo\nld\nasd\ndef",
+ {{td::MessageEntity::Type::BlockQuote, 0, 12}, {td::MessageEntity::Type::Bold, 0, 11}});
+ check_parse_markdown("*a\n>b\n>ld \n>bo\n>ld\nasd*\ndef", "a\nb\nld \nbo\nld\nasd\ndef",
+ {{td::MessageEntity::Type::Bold, 0, 17}, {td::MessageEntity::Type::BlockQuote, 2, 12}});
+ check_parse_markdown(">`b\n>ld \n>bo\nld`\n>asd\ndef", "b\n>ld \n>bo\nld\nasd\ndef",
+ {{td::MessageEntity::Type::BlockQuote, 0, 18}, {td::MessageEntity::Type::Code, 0, 13}});
+ check_parse_markdown("`>b\n>ld \n>bo\nld`\n>asd\ndef", ">b\n>ld \n>bo\nld\nasd\ndef",
+ {{td::MessageEntity::Type::Code, 0, 14}, {td::MessageEntity::Type::BlockQuote, 15, 4}});
}
static void check_parse_markdown_v3(td::string text, td::vector<td::MessageEntity> entities,