@@ -54,6 +54,17 @@ TEST(ParseInlineLatexTest, Only) {
5454 auto link = p->children ().at (0 );
5555 ASSERT_EQ (link->type (), NodeType::inline_latex);
5656}
57+ TEST (ParseItalicTest, Only) {
58+ Parser parser;
59+ auto nodes = parser.parse (" *666*" );
60+ ASSERT_EQ (nodes.size (), 1 );
61+ auto node = nodes[0 ];
62+ ASSERT_EQ (node->type (), NodeType::paragraph);
63+ auto p = (Paragraph*)node;
64+ ASSERT_EQ (p->children ().size (), 1 );
65+ auto link = p->children ().at (0 );
66+ ASSERT_EQ (link->type (), NodeType::italic);
67+ }
5768TEST (ParseBoldTest, Only) {
5869 Parser parser;
5970 auto nodes = parser.parse (" **666**" );
@@ -64,4 +75,109 @@ TEST(ParseBoldTest, Only) {
6475 ASSERT_EQ (p->children ().size (), 1 );
6576 auto link = p->children ().at (0 );
6677 ASSERT_EQ (link->type (), NodeType::bold);
67- }
78+ }
79+
80+ TEST (ParseItalicBoldBoldTest, Only) {
81+ Parser parser;
82+ auto nodes = parser.parse (" ***666***" );
83+ ASSERT_EQ (nodes.size (), 1 );
84+ auto node = nodes[0 ];
85+ ASSERT_EQ (node->type (), NodeType::paragraph);
86+ auto p = (Paragraph*)node;
87+ ASSERT_EQ (p->children ().size (), 1 );
88+ auto link = p->children ().at (0 );
89+ ASSERT_EQ (link->type (), NodeType::italic_bold);
90+ }
91+
92+ TEST (ParseLinkTest, Middle) {
93+ Parser parser;
94+ auto nodes = parser.parse (" before[666](http://www.666.com)after" );
95+ ASSERT_EQ (nodes.size (), 1 );
96+ auto node = nodes[0 ];
97+ ASSERT_EQ (node->type (), NodeType::paragraph);
98+ auto p = (Paragraph*)node;
99+ ASSERT_EQ (p->children ().size (), 3 );
100+ auto before = p->children ().at (0 );
101+ ASSERT_EQ (before->type (), NodeType::text);
102+ auto link = p->children ().at (1 );
103+ ASSERT_EQ (link->type (), NodeType::link);
104+ auto after = p->children ().at (2 );
105+ ASSERT_EQ (after->type (), NodeType::text);
106+ }
107+ TEST (ParseInlineCodeTest, Middle) {
108+ Parser parser;
109+ auto nodes = parser.parse (" before`#include`after" );
110+ ASSERT_EQ (nodes.size (), 1 );
111+ auto node = nodes[0 ];
112+ ASSERT_EQ (node->type (), NodeType::paragraph);
113+ auto p = (Paragraph*)node;
114+ ASSERT_EQ (p->children ().size (), 3 );
115+ auto before = p->children ().at (0 );
116+ ASSERT_EQ (before->type (), NodeType::text);
117+ auto ic = p->children ().at (1 );
118+ ASSERT_EQ (ic->type (), NodeType::inline_code);
119+ auto after = p->children ().at (2 );
120+ ASSERT_EQ (after->type (), NodeType::text);
121+ }
122+ TEST (ParseInlineLatexTest, Middle) {
123+ Parser parser;
124+ auto nodes = parser.parse (" before$a^2$after" );
125+ ASSERT_EQ (nodes.size (), 1 );
126+ auto node = nodes[0 ];
127+ ASSERT_EQ (node->type (), NodeType::paragraph);
128+ auto p = (Paragraph*)node;
129+ ASSERT_EQ (p->children ().size (), 3 );
130+ auto before = p->children ().at (0 );
131+ ASSERT_EQ (before->type (), NodeType::text);
132+ auto il = p->children ().at (1 );
133+ ASSERT_EQ (il->type (), NodeType::inline_latex);
134+ auto after = p->children ().at (2 );
135+ ASSERT_EQ (after->type (), NodeType::text);
136+ }
137+ TEST (ParseItalicTest, Middle) {
138+ Parser parser;
139+ auto nodes = parser.parse (" before*666*after" );
140+ ASSERT_EQ (nodes.size (), 1 );
141+ auto node = nodes[0 ];
142+ ASSERT_EQ (node->type (), NodeType::paragraph);
143+ auto p = (Paragraph*)node;
144+ ASSERT_EQ (p->children ().size (), 3 );
145+ auto before = p->children ().at (0 );
146+ ASSERT_EQ (before->type (), NodeType::text);
147+ auto i = p->children ().at (1 );
148+ ASSERT_EQ (i->type (), NodeType::italic);
149+ auto after = p->children ().at (2 );
150+ ASSERT_EQ (after->type (), NodeType::text);
151+ }
152+ TEST (ParseBoldTest, Middle) {
153+ Parser parser;
154+ auto nodes = parser.parse (" before**666**after" );
155+ ASSERT_EQ (nodes.size (), 1 );
156+ auto node = nodes[0 ];
157+ ASSERT_EQ (node->type (), NodeType::paragraph);
158+ auto p = (Paragraph*)node;
159+ ASSERT_EQ (p->children ().size (), 3 );
160+ auto before = p->children ().at (0 );
161+ ASSERT_EQ (before->type (), NodeType::text);
162+ auto b = p->children ().at (1 );
163+ ASSERT_EQ (b->type (), NodeType::bold);
164+ auto after = p->children ().at (2 );
165+ ASSERT_EQ (after->type (), NodeType::text);
166+ }
167+
168+ TEST (ParseItalicBoldBoldTest, Middle) {
169+ Parser parser;
170+ auto nodes = parser.parse (" before***666***after" );
171+ ASSERT_EQ (nodes.size (), 1 );
172+ auto node = nodes[0 ];
173+ ASSERT_EQ (node->type (), NodeType::paragraph);
174+ auto p = (Paragraph*)node;
175+ ASSERT_EQ (p->children ().size (), 3 );
176+ auto before = p->children ().at (0 );
177+ ASSERT_EQ (before->type (), NodeType::text);
178+ auto it = p->children ().at (1 );
179+ ASSERT_EQ (it->type (), NodeType::italic_bold);
180+ auto after = p->children ().at (2 );
181+ ASSERT_EQ (after->type (), NodeType::text);
182+ }
183+
0 commit comments