|
|
|
@ -1250,67 +1250,50 @@ TEST(MessageEntities, parse_html) {
|
|
|
|
|
check_parse_html("π π<</", "Unexpected end tag at byte offset 13");
|
|
|
|
|
check_parse_html("π π<<b></b></", "Unexpected end tag at byte offset 20");
|
|
|
|
|
check_parse_html("π π<<i>a</i ", "Unclosed end tag at byte offset 17");
|
|
|
|
|
check_parse_html("π π<<i>a</em >",
|
|
|
|
|
"Unmatched end tag at byte offset 17, expected \"</i>\", found \"</em>\"");
|
|
|
|
|
check_parse_html("π π<<i>a</em >", "Unmatched end tag at byte offset 17, expected \"</i>\", found \"</em>\"");
|
|
|
|
|
|
|
|
|
|
check_parse_html("", "", {});
|
|
|
|
|
check_parse_html("β‘οΈ β‘οΈ", "β‘οΈ β‘οΈ", {});
|
|
|
|
|
check_parse_html("≥<>&"«»�", "≥<>&\"«»�", {});
|
|
|
|
|
check_parse_html("⩔", "⩔", {});
|
|
|
|
|
check_parse_html("β‘οΈ β‘οΈ<i>β‘οΈ β‘οΈ</i>", "β‘οΈ β‘οΈβ‘οΈ β‘οΈ",
|
|
|
|
|
{{td::MessageEntity::Type::Italic, 5, 5}});
|
|
|
|
|
check_parse_html("β‘οΈ β‘οΈ<em>β‘οΈ β‘οΈ</em>", "β‘οΈ β‘οΈβ‘οΈ β‘οΈ",
|
|
|
|
|
{{td::MessageEntity::Type::Italic, 5, 5}});
|
|
|
|
|
check_parse_html("β‘οΈ β‘οΈ<b>β‘οΈ β‘οΈ</b>", "β‘οΈ β‘οΈβ‘οΈ β‘οΈ",
|
|
|
|
|
{{td::MessageEntity::Type::Bold, 5, 5}});
|
|
|
|
|
check_parse_html("β‘οΈ β‘οΈ<strong>β‘οΈ β‘οΈ</strong>", "β‘οΈ β‘οΈβ‘οΈ β‘οΈ",
|
|
|
|
|
{{td::MessageEntity::Type::Bold, 5, 5}});
|
|
|
|
|
check_parse_html("β‘οΈ β‘οΈ<u>β‘οΈ β‘οΈ</u>", "β‘οΈ β‘οΈβ‘οΈ β‘οΈ",
|
|
|
|
|
{{td::MessageEntity::Type::Underline, 5, 5}});
|
|
|
|
|
check_parse_html("β‘οΈ β‘οΈ<ins>β‘οΈ β‘οΈ</ins>", "β‘οΈ β‘οΈβ‘οΈ β‘οΈ",
|
|
|
|
|
{{td::MessageEntity::Type::Underline, 5, 5}});
|
|
|
|
|
check_parse_html("β‘οΈ β‘οΈ<s>β‘οΈ β‘οΈ</s>", "β‘οΈ β‘οΈβ‘οΈ β‘οΈ",
|
|
|
|
|
{{td::MessageEntity::Type::Strikethrough, 5, 5}});
|
|
|
|
|
check_parse_html("β‘οΈ β‘οΈ<strike>β‘οΈ β‘οΈ</strike>", "β‘οΈ β‘οΈβ‘οΈ β‘οΈ",
|
|
|
|
|
{{td::MessageEntity::Type::Strikethrough, 5, 5}});
|
|
|
|
|
check_parse_html("β‘οΈ β‘οΈ<del>β‘οΈ β‘οΈ</del>", "β‘οΈ β‘οΈβ‘οΈ β‘οΈ",
|
|
|
|
|
{{td::MessageEntity::Type::Strikethrough, 5, 5}});
|
|
|
|
|
check_parse_html("β‘οΈ β‘οΈ<i>β‘οΈ β‘οΈ</i>", "β‘οΈ β‘οΈβ‘οΈ β‘οΈ", {{td::MessageEntity::Type::Italic, 5, 5}});
|
|
|
|
|
check_parse_html("β‘οΈ β‘οΈ<em>β‘οΈ β‘οΈ</em>", "β‘οΈ β‘οΈβ‘οΈ β‘οΈ", {{td::MessageEntity::Type::Italic, 5, 5}});
|
|
|
|
|
check_parse_html("β‘οΈ β‘οΈ<b>β‘οΈ β‘οΈ</b>", "β‘οΈ β‘οΈβ‘οΈ β‘οΈ", {{td::MessageEntity::Type::Bold, 5, 5}});
|
|
|
|
|
check_parse_html("β‘οΈ β‘οΈ<strong>β‘οΈ β‘οΈ</strong>", "β‘οΈ β‘οΈβ‘οΈ β‘οΈ", {{td::MessageEntity::Type::Bold, 5, 5}});
|
|
|
|
|
check_parse_html("β‘οΈ β‘οΈ<u>β‘οΈ β‘οΈ</u>", "β‘οΈ β‘οΈβ‘οΈ β‘οΈ", {{td::MessageEntity::Type::Underline, 5, 5}});
|
|
|
|
|
check_parse_html("β‘οΈ β‘οΈ<ins>β‘οΈ β‘οΈ</ins>", "β‘οΈ β‘οΈβ‘οΈ β‘οΈ", {{td::MessageEntity::Type::Underline, 5, 5}});
|
|
|
|
|
check_parse_html("β‘οΈ β‘οΈ<s>β‘οΈ β‘οΈ</s>", "β‘οΈ β‘οΈβ‘οΈ β‘οΈ", {{td::MessageEntity::Type::Strikethrough, 5, 5}});
|
|
|
|
|
check_parse_html("β‘οΈ β‘οΈ<strike>β‘οΈ β‘οΈ</strike>", "β‘οΈ β‘οΈβ‘οΈ β‘οΈ", {{td::MessageEntity::Type::Strikethrough, 5, 5}});
|
|
|
|
|
check_parse_html("β‘οΈ β‘οΈ<del>β‘οΈ β‘οΈ</del>", "β‘οΈ β‘οΈβ‘οΈ β‘οΈ", {{td::MessageEntity::Type::Strikethrough, 5, 5}});
|
|
|
|
|
check_parse_html("β‘οΈ β‘οΈ<i>β‘οΈ β‘οΈ</i><b>β‘οΈ β‘οΈ</b>", "β‘οΈ β‘οΈβ‘οΈ β‘οΈβ‘οΈ β‘οΈ",
|
|
|
|
|
{{td::MessageEntity::Type::Italic, 5, 5}, {td::MessageEntity::Type::Bold, 10, 5}});
|
|
|
|
|
check_parse_html("π π<i>π <π</i>", "π ππ <π", {{td::MessageEntity::Type::Italic, 5, 6}});
|
|
|
|
|
check_parse_html("π π<i>π ><b aba = caba><π</b></i>", "π ππ ><π",
|
|
|
|
|
{{td::MessageEntity::Type::Italic, 5, 7}, {td::MessageEntity::Type::Bold, 9, 3}});
|
|
|
|
|
check_parse_html("π π<<i aba = 190azAz-. >a</i>", "π π<a",
|
|
|
|
|
{{td::MessageEntity::Type::Italic, 6, 1}});
|
|
|
|
|
check_parse_html("π π<<i aba = 190azAz-.>a</i>", "π π<a",
|
|
|
|
|
{{td::MessageEntity::Type::Italic, 6, 1}});
|
|
|
|
|
check_parse_html("π π<<i aba = 190azAz-. >a</i>", "π π<a", {{td::MessageEntity::Type::Italic, 6, 1}});
|
|
|
|
|
check_parse_html("π π<<i aba = 190azAz-.>a</i>", "π π<a", {{td::MessageEntity::Type::Italic, 6, 1}});
|
|
|
|
|
check_parse_html("π π<<i aba = \"<>"\">a</i>", "π π<a",
|
|
|
|
|
{{td::MessageEntity::Type::Italic, 6, 1}});
|
|
|
|
|
check_parse_html("π π<<i aba = '<>"'>a</i>", "π π<a",
|
|
|
|
|
{{td::MessageEntity::Type::Italic, 6, 1}});
|
|
|
|
|
check_parse_html("π π<<i aba = '<>"'>a</>", "π π<a",
|
|
|
|
|
{{td::MessageEntity::Type::Italic, 6, 1}});
|
|
|
|
|
check_parse_html("π π<<i>π π<</>", "π π<π π<",
|
|
|
|
|
{{td::MessageEntity::Type::Italic, 6, 6}});
|
|
|
|
|
check_parse_html("π π<<i>π π<</>", "π π<π π<", {{td::MessageEntity::Type::Italic, 6, 6}});
|
|
|
|
|
check_parse_html("π π<<i>a</ >", "π π<a", {{td::MessageEntity::Type::Italic, 6, 1}});
|
|
|
|
|
check_parse_html("π π<<i>a</i >", "π π<a", {{td::MessageEntity::Type::Italic, 6, 1}});
|
|
|
|
|
check_parse_html("π π<<b></b>", "π π<", {});
|
|
|
|
|
check_parse_html("<i>\t</i>", "\t", {{td::MessageEntity::Type::Italic, 0, 1}});
|
|
|
|
|
check_parse_html("<i>\r</i>", "\r", {{td::MessageEntity::Type::Italic, 0, 1}});
|
|
|
|
|
check_parse_html("<i>\n</i>", "\n", {{td::MessageEntity::Type::Italic, 0, 1}});
|
|
|
|
|
check_parse_html("β‘οΈ β‘οΈ<span class = \"tg-spoiler\">β‘οΈ β‘οΈ</span><b>β‘οΈ β‘οΈ</b>",
|
|
|
|
|
"β‘οΈ β‘οΈβ‘οΈ β‘οΈβ‘οΈ β‘οΈ",
|
|
|
|
|
check_parse_html("β‘οΈ β‘οΈ<span class = \"tg-spoiler\">β‘οΈ β‘οΈ</span><b>β‘οΈ β‘οΈ</b>", "β‘οΈ β‘οΈβ‘οΈ β‘οΈβ‘οΈ β‘οΈ",
|
|
|
|
|
{{td::MessageEntity::Type::Spoiler, 5, 5}, {td::MessageEntity::Type::Bold, 10, 5}});
|
|
|
|
|
check_parse_html("π π<span class=\"tg-spoiler\">π <π</span>", "π ππ <π",
|
|
|
|
|
{{td::MessageEntity::Type::Spoiler, 5, 6}});
|
|
|
|
|
check_parse_html("π π<span class=\"tg-spoiler\">π ><b aba = caba><π</b></span>",
|
|
|
|
|
"π ππ ><π",
|
|
|
|
|
check_parse_html("π π<span class=\"tg-spoiler\">π ><b aba = caba><π</b></span>", "π ππ ><π",
|
|
|
|
|
{{td::MessageEntity::Type::Spoiler, 5, 7}, {td::MessageEntity::Type::Bold, 9, 3}});
|
|
|
|
|
check_parse_html("β‘οΈ β‘οΈ<tg-spoiler>β‘οΈ β‘οΈ</tg-spoiler><b>β‘οΈ β‘οΈ</b>",
|
|
|
|
|
"β‘οΈ β‘οΈβ‘οΈ β‘οΈβ‘οΈ β‘οΈ",
|
|
|
|
|
check_parse_html("β‘οΈ β‘οΈ<tg-spoiler>β‘οΈ β‘οΈ</tg-spoiler><b>β‘οΈ β‘οΈ</b>", "β‘οΈ β‘οΈβ‘οΈ β‘οΈβ‘οΈ β‘οΈ",
|
|
|
|
|
{{td::MessageEntity::Type::Spoiler, 5, 5}, {td::MessageEntity::Type::Bold, 10, 5}});
|
|
|
|
|
check_parse_html("π π<tg-spoiler>π <π</tg-spoiler>", "π ππ <π",
|
|
|
|
|
{{td::MessageEntity::Type::Spoiler, 5, 6}});
|
|
|
|
|
check_parse_html("π π<tg-spoiler>π <π</tg-spoiler>", "π ππ <π", {{td::MessageEntity::Type::Spoiler, 5, 6}});
|
|
|
|
|
check_parse_html("π π<tg-spoiler>π ><b aba = caba><π</b></tg-spoiler>", "π ππ ><π",
|
|
|
|
|
{{td::MessageEntity::Type::Spoiler, 5, 7}, {td::MessageEntity::Type::Bold, 9, 3}});
|
|
|
|
|
check_parse_html("<a href=telegram.org>\t</a>", "\t",
|
|
|
|
@ -1344,10 +1327,8 @@ TEST(MessageEntities, parse_html) {
|
|
|
|
|
{{td::MessageEntity::Type::TextUrl, 0, 12, "http://telegram.org/"}});
|
|
|
|
|
check_parse_html("<a>https://telegram.org/asdsa?asdasdwe#12e3we</a>", "https://telegram.org/asdsa?asdasdwe#12e3we",
|
|
|
|
|
{{td::MessageEntity::Type::TextUrl, 0, 42, "https://telegram.org/asdsa?asdasdwe#12e3we"}});
|
|
|
|
|
check_parse_html("π π<<pre >π π<</>", "π π<π π<",
|
|
|
|
|
{{td::MessageEntity::Type::Pre, 6, 6}});
|
|
|
|
|
check_parse_html("π π<<code >π π<</>", "π π<π π<",
|
|
|
|
|
{{td::MessageEntity::Type::Code, 6, 6}});
|
|
|
|
|
check_parse_html("π π<<pre >π π<</>", "π π<π π<", {{td::MessageEntity::Type::Pre, 6, 6}});
|
|
|
|
|
check_parse_html("π π<<code >π π<</>", "π π<π π<", {{td::MessageEntity::Type::Code, 6, 6}});
|
|
|
|
|
check_parse_html("π π<<pre><code>π π<</code></>", "π π<π π<",
|
|
|
|
|
{{td::MessageEntity::Type::Pre, 6, 6}, {td::MessageEntity::Type::Code, 6, 6}});
|
|
|
|
|
check_parse_html("π π<<pre><code class=\"language-\">π π<</code></>", "π π<π π<",
|
|
|
|
@ -1360,8 +1341,7 @@ TEST(MessageEntities, parse_html) {
|
|
|
|
|
{{td::MessageEntity::Type::Pre, 6, 7}, {td::MessageEntity::Type::Code, 6, 6}});
|
|
|
|
|
check_parse_html("π π<<pre> <code class=\"language-fift\">π π<</></>", "π π< π π<",
|
|
|
|
|
{{td::MessageEntity::Type::Pre, 6, 7}, {td::MessageEntity::Type::Code, 7, 6}});
|
|
|
|
|
check_parse_html("β‘οΈ β‘οΈ<tg-emoji emoji-id = \"12345\">β‘οΈ β‘οΈ</tg-emoji><b>β‘οΈ β‘οΈ</b>",
|
|
|
|
|
"β‘οΈ β‘οΈβ‘οΈ β‘οΈβ‘οΈ β‘οΈ",
|
|
|
|
|
check_parse_html("β‘οΈ β‘οΈ<tg-emoji emoji-id = \"12345\">β‘οΈ β‘οΈ</tg-emoji><b>β‘οΈ β‘οΈ</b>", "β‘οΈ β‘οΈβ‘οΈ β‘οΈβ‘οΈ β‘οΈ",
|
|
|
|
|
{{td::MessageEntity::Type::CustomEmoji, 5, 5, td::CustomEmojiId(static_cast<td::int64>(12345))},
|
|
|
|
|
{td::MessageEntity::Type::Bold, 10, 5}});
|
|
|
|
|
check_parse_html("π π<tg-emoji emoji-id=\"54321\">π <π</tg-emoji>", "π ππ <π",
|
|
|
|
@ -1444,8 +1424,7 @@ TEST(MessageEntities, parse_markdown) {
|
|
|
|
|
check_parse_markdown("π π_abac \\* asd _", "π πabac * asd ", {{td::MessageEntity::Type::Italic, 5, 11}});
|
|
|
|
|
check_parse_markdown("π \\.π_π\\. π_", "π .ππ. π", {{td::MessageEntity::Type::Italic, 6, 6}});
|
|
|
|
|
check_parse_markdown("\\\\\\a\\b\\c\\d\\e\\f\\1\\2\\3\\4\\β‘οΈ\\", "\\abcdef1234\\β‘οΈ\\", {});
|
|
|
|
|
check_parse_markdown("β‘οΈ β‘οΈ_β‘οΈ β‘οΈ_", "β‘οΈ β‘οΈβ‘οΈ β‘οΈ",
|
|
|
|
|
{{td::MessageEntity::Type::Italic, 5, 5}});
|
|
|
|
|
check_parse_markdown("β‘οΈ β‘οΈ_β‘οΈ β‘οΈ_", "β‘οΈ β‘οΈβ‘οΈ β‘οΈ", {{td::MessageEntity::Type::Italic, 5, 5}});
|
|
|
|
|
check_parse_markdown("β‘οΈ β‘οΈ_β‘οΈ β‘οΈ_*β‘οΈ β‘οΈ*", "β‘οΈ β‘οΈβ‘οΈ β‘οΈβ‘οΈ β‘οΈ",
|
|
|
|
|
{{td::MessageEntity::Type::Italic, 5, 5}, {td::MessageEntity::Type::Bold, 10, 5}});
|
|
|
|
|
check_parse_markdown("π π_π \\.π_", "π ππ .π", {{td::MessageEntity::Type::Italic, 5, 6}});
|
|
|
|
@ -1458,22 +1437,14 @@ TEST(MessageEntities, parse_markdown) {
|
|
|
|
|
check_parse_markdown("π π__π _π_\\___", "π ππ π_",
|
|
|
|
|
{{td::MessageEntity::Type::Underline, 5, 6}, {td::MessageEntity::Type::Italic, 8, 2}});
|
|
|
|
|
check_parse_markdown("π π`π π```", "π ππ π", {{td::MessageEntity::Type::Code, 5, 5}});
|
|
|
|
|
check_parse_markdown("π π```π π```", "π π π",
|
|
|
|
|
{{td::MessageEntity::Type::PreCode, 5, 3, "π"}});
|
|
|
|
|
check_parse_markdown("π π```π\nπ```", "π ππ",
|
|
|
|
|
{{td::MessageEntity::Type::PreCode, 5, 2, "π"}});
|
|
|
|
|
check_parse_markdown("π π```π\rπ```", "π ππ",
|
|
|
|
|
{{td::MessageEntity::Type::PreCode, 5, 2, "π"}});
|
|
|
|
|
check_parse_markdown("π π```π\n\rπ```", "π ππ",
|
|
|
|
|
{{td::MessageEntity::Type::PreCode, 5, 2, "π"}});
|
|
|
|
|
check_parse_markdown("π π```π\r\nπ```", "π ππ",
|
|
|
|
|
{{td::MessageEntity::Type::PreCode, 5, 2, "π"}});
|
|
|
|
|
check_parse_markdown("π π```π\n\nπ```", "π π\nπ",
|
|
|
|
|
{{td::MessageEntity::Type::PreCode, 5, 3, "π"}});
|
|
|
|
|
check_parse_markdown("π π```π\r\rπ```", "π π\rπ",
|
|
|
|
|
{{td::MessageEntity::Type::PreCode, 5, 3, "π"}});
|
|
|
|
|
check_parse_markdown("π π```π \\\\\\`π```", "π π \\`π",
|
|
|
|
|
{{td::MessageEntity::Type::PreCode, 5, 5, "π"}});
|
|
|
|
|
check_parse_markdown("π π```π π```", "π π π", {{td::MessageEntity::Type::PreCode, 5, 3, "π"}});
|
|
|
|
|
check_parse_markdown("π π```π\nπ```", "π ππ", {{td::MessageEntity::Type::PreCode, 5, 2, "π"}});
|
|
|
|
|
check_parse_markdown("π π```π\rπ```", "π ππ", {{td::MessageEntity::Type::PreCode, 5, 2, "π"}});
|
|
|
|
|
check_parse_markdown("π π```π\n\rπ```", "π ππ", {{td::MessageEntity::Type::PreCode, 5, 2, "π"}});
|
|
|
|
|
check_parse_markdown("π π```π\r\nπ```", "π ππ", {{td::MessageEntity::Type::PreCode, 5, 2, "π"}});
|
|
|
|
|
check_parse_markdown("π π```π\n\nπ```", "π π\nπ", {{td::MessageEntity::Type::PreCode, 5, 3, "π"}});
|
|
|
|
|
check_parse_markdown("π π```π\r\rπ```", "π π\rπ", {{td::MessageEntity::Type::PreCode, 5, 3, "π"}});
|
|
|
|
|
check_parse_markdown("π π```π \\\\\\`π```", "π π \\`π", {{td::MessageEntity::Type::PreCode, 5, 5, "π"}});
|
|
|
|
|
check_parse_markdown("π π**", "π π", {});
|
|
|
|
|
check_parse_markdown("||test||", "test", {{td::MessageEntity::Type::Spoiler, 0, 4}});
|
|
|
|
|
check_parse_markdown("π π``", "π π", {});
|
|
|
|
@ -1533,19 +1504,18 @@ TEST(MessageEntities, parse_markdown_v3) {
|
|
|
|
|
check_parse_markdown_v3("π````π``π`abaπ```cπ`abaπ dabaπ```cπ`abaπ```π `π``π```",
|
|
|
|
|
"π````π``πabaπ```cπabaπ dabaπcπ`abaππ `π``π```",
|
|
|
|
|
{{td::MessageEntity::Type::Code, 12, 11}, {td::MessageEntity::Type::Pre, 35, 9}});
|
|
|
|
|
check_parse_markdown_v3(
|
|
|
|
|
"π````π``π`abaπ```cπ`abaπ dabaπ```cπ`abaππ```π `π``π```",
|
|
|
|
|
{{td::MessageEntity::Type::Italic, 12, 1},
|
|
|
|
|
{td::MessageEntity::Type::Italic, 44, 1},
|
|
|
|
|
{td::MessageEntity::Type::Bold, 45, 1},
|
|
|
|
|
{td::MessageEntity::Type::Bold, 49, 2}},
|
|
|
|
|
"π````π``π`abaπcπ`abaπ dabaπcπ`abaπππ `π``π",
|
|
|
|
|
{{td::MessageEntity::Type::Italic, 12, 1},
|
|
|
|
|
{td::MessageEntity::Type::Pre, 18, 16},
|
|
|
|
|
{td::MessageEntity::Type::Italic, 38, 1},
|
|
|
|
|
{td::MessageEntity::Type::Bold, 39, 1},
|
|
|
|
|
{td::MessageEntity::Type::Bold, 43, 2},
|
|
|
|
|
{td::MessageEntity::Type::Pre, 45, 10}});
|
|
|
|
|
check_parse_markdown_v3("π````π``π`abaπ```cπ`abaπ dabaπ```cπ`abaππ```π `π``π```",
|
|
|
|
|
{{td::MessageEntity::Type::Italic, 12, 1},
|
|
|
|
|
{td::MessageEntity::Type::Italic, 44, 1},
|
|
|
|
|
{td::MessageEntity::Type::Bold, 45, 1},
|
|
|
|
|
{td::MessageEntity::Type::Bold, 49, 2}},
|
|
|
|
|
"π````π``π`abaπcπ`abaπ dabaπcπ`abaπππ `π``π",
|
|
|
|
|
{{td::MessageEntity::Type::Italic, 12, 1},
|
|
|
|
|
{td::MessageEntity::Type::Pre, 18, 16},
|
|
|
|
|
{td::MessageEntity::Type::Italic, 38, 1},
|
|
|
|
|
{td::MessageEntity::Type::Bold, 39, 1},
|
|
|
|
|
{td::MessageEntity::Type::Bold, 43, 2},
|
|
|
|
|
{td::MessageEntity::Type::Pre, 45, 10}});
|
|
|
|
|
check_parse_markdown_v3("` `", " ", {{td::MessageEntity::Type::Code, 0, 1}});
|
|
|
|
|
check_parse_markdown_v3("`\n`", "\n", {{td::MessageEntity::Type::Code, 0, 1}});
|
|
|
|
|
check_parse_markdown_v3("` `a", " a", {{td::MessageEntity::Type::Code, 0, 1}}, true);
|
|
|
|
|