@@ -28,19 +28,19 @@ TEST_CASE("default BB codes")
2828 // Currently, the BBCodeParser has no way to directly get the added codes.
2929 // So we just check whether they are actually applied to texts instead.
3030
31- SECTION (" check that [b], [i], [s] and [u] codes get applied" )
31+ SECTION (" [b], [i], [s] and [u] codes get applied" )
3232 {
3333 BBCodeParser parser;
3434 bbcode_default::addDefaultCodes (parser);
3535
36- const std::string input = " [b]bold[/b] [i]italics[/i] [s]strike throug [/s] [u]underlined[/u]" ;
37- const std::string expected = " <b>bold</b> <i>italics</i> <span style=\" text-decoration:line-through;\" >strike throug </span> <u>underlined</u>" ;
36+ const std::string input = " [b]bold[/b] [i]italics[/i] [s]strike through [/s] [u]underlined[/u]" ;
37+ const std::string expected = " <b>bold</b> <i>italics</i> <span style=\" text-decoration:line-through;\" >strike through </span> <u>underlined</u>" ;
3838 const auto parsed = parser.parse (input, forum_url, HTMLStandard::HTML4_01, true );
3939
4040 REQUIRE ( parsed == expected );
4141 }
4242
43- SECTION (" check that [sub] code gets applied" )
43+ SECTION (" [sub] code gets applied" )
4444 {
4545 BBCodeParser parser;
4646 bbcode_default::addDefaultCodes (parser);
@@ -52,7 +52,7 @@ TEST_CASE("default BB codes")
5252 REQUIRE ( parsed == expected );
5353 }
5454
55- SECTION (" check that [sup] code gets applied" )
55+ SECTION (" [sup] code gets applied" )
5656 {
5757 BBCodeParser parser;
5858 bbcode_default::addDefaultCodes (parser);
@@ -64,7 +64,7 @@ TEST_CASE("default BB codes")
6464 REQUIRE ( parsed == expected );
6565 }
6666
67- SECTION (" check that alignment codes get applied" )
67+ SECTION (" alignment codes get applied" )
6868 {
6969 BBCodeParser parser;
7070 bbcode_default::addDefaultCodes (parser);
@@ -76,7 +76,24 @@ TEST_CASE("default BB codes")
7676 REQUIRE ( parsed == expected );
7777 }
7878
79- SECTION (" check that [tt] code gets applied" )
79+ SECTION (" [code]" )
80+ {
81+ BBCodeParser parser;
82+ bbcode_default::addDefaultCodes (parser);
83+
84+ const std::string input = " [code]Hello, world![/code]" ;
85+ const std::string expected = std::string (" <div style=\" margin:20px; margin-top:5px\" >\n " )
86+ + " <div class=\" smallfont\" style=\" margin-bottom:2px; font: 10px verdana,"
87+ + " geneva, lucida, 'lucida grande', arial, helvetica, sans-serif;\n "
88+ + " font-size:7pt;\" >Code:</div>\n "
89+ + " <pre dir=\" ltr\" style=\" margin: 0px; padding: 6px; border: 1px inset;"
90+ + " width: 620px; text-align: left; overflow: auto\" >Hello, world!</pre></div>" ;
91+ const auto parsed = parser.parse (input, forum_url, HTMLStandard::HTML4_01, true );
92+
93+ REQUIRE ( parsed == expected );
94+ }
95+
96+ SECTION (" [tt] code gets applied" )
8097 {
8198 BBCodeParser parser;
8299 bbcode_default::addDefaultCodes (parser);
@@ -88,7 +105,7 @@ TEST_CASE("default BB codes")
88105 REQUIRE ( parsed == expected );
89106 }
90107
91- SECTION (" check that simple [url] code gets applied" )
108+ SECTION (" simple [url] code gets applied" )
92109 {
93110 BBCodeParser parser;
94111 bbcode_default::addDefaultCodes (parser);
@@ -100,5 +117,99 @@ TEST_CASE("default BB codes")
100117 REQUIRE ( parsed == expected );
101118 }
102119
103- // TODO: Add more checks for the other default codes.
120+ SECTION (" advanced [url] code" )
121+ {
122+ BBCodeParser parser;
123+ bbcode_default::addDefaultCodes (parser);
124+
125+ const std::string input = " some [url=https://example.com/?foo=bar&baz=1]link[/url] text" ;
126+ const std::string expected = " some <a href=\" https://example.com/?foo=bar&baz=1\" target=\" _blank\" >link</a> text" ;
127+ const auto parsed = parser.parse (input, forum_url, HTMLStandard::HTML4_01, true );
128+
129+ REQUIRE ( parsed == expected );
130+ }
131+
132+ SECTION (" advanced [url] code with quoted URL" )
133+ {
134+ BBCodeParser parser;
135+ bbcode_default::addDefaultCodes (parser);
136+
137+ const std::string input = " some [url=\" https://example.com/?foo=bar&baz=1\" ]link[/url] text" ;
138+ const std::string expected = " some <a href=\" https://example.com/?foo=bar&baz=1\" target=\" _blank\" >link</a> text" ;
139+ const auto parsed = parser.parse (input, forum_url, HTMLStandard::HTML4_01, true );
140+
141+ REQUIRE ( parsed == expected );
142+ }
143+
144+ SECTION (" [color] code" )
145+ {
146+ BBCodeParser parser;
147+ bbcode_default::addDefaultCodes (parser);
148+
149+ const std::string input = " some [color=green]red[/color] and [color=#FFFFFF]yellow[/color] text" ;
150+ const std::string expected = " some <font color=\" green\" >red</font> and <font color=\" #FFFFFF\" >yellow</font> text" ;
151+ const auto parsed = parser.parse (input, forum_url, HTMLStandard::HTML4_01, true );
152+
153+ REQUIRE ( parsed == expected );
154+ }
155+
156+ SECTION (" [color] code with quoted colour name" )
157+ {
158+ BBCodeParser parser;
159+ bbcode_default::addDefaultCodes (parser);
160+
161+ const std::string input = " some [color=\" blue\" ]red[/color] and [color=#00FFFF]yellow[/color] text" ;
162+ const std::string expected = " some <font color=\" blue\" >red</font> and <font color=\" #00FFFF\" >yellow</font> text" ;
163+ const auto parsed = parser.parse (input, forum_url, HTMLStandard::HTML4_01, true );
164+
165+ REQUIRE ( parsed == expected );
166+ }
167+
168+ SECTION (" [size] code" )
169+ {
170+ BBCodeParser parser;
171+ bbcode_default::addDefaultCodes (parser);
172+
173+ const std::string input = " some [size=5]big[/size] and [size=\" 1\" ]small[/size] text" ;
174+ const std::string expected = " some <font size=\" 5\" >big</font> and <font size=\" 1\" >small</font> text" ;
175+ const auto parsed = parser.parse (input, forum_url, HTMLStandard::HTML4_01, true );
176+
177+ REQUIRE ( parsed == expected );
178+ }
179+
180+ SECTION (" [font] code" )
181+ {
182+ BBCodeParser parser;
183+ bbcode_default::addDefaultCodes (parser);
184+
185+ const std::string input = " some [font=Century Gothic]different[/font] text" ;
186+ const std::string expected = " some <span style=\" font-family: Century Gothic\" >different</span> text" ;
187+ const auto parsed = parser.parse (input, forum_url, HTMLStandard::HTML4_01, true );
188+
189+ REQUIRE ( parsed == expected );
190+ }
191+
192+ SECTION (" [font] code with quoted font name" )
193+ {
194+ BBCodeParser parser;
195+ bbcode_default::addDefaultCodes (parser);
196+
197+ const std::string input = " some [font=\" Century Gothic\" ]different[/font] text" ;
198+ const std::string expected = " some <span style=\" font-family: Century Gothic\" >different</span> text" ;
199+ const auto parsed = parser.parse (input, forum_url, HTMLStandard::HTML4_01, true );
200+
201+ REQUIRE ( parsed == expected );
202+ }
203+
204+ SECTION (" [highlight] code" )
205+ {
206+ BBCodeParser parser;
207+ bbcode_default::addDefaultCodes (parser);
208+
209+ const std::string input = " some [highlight]important[/highlight] text" ;
210+ const std::string expected = " some <span style=\" color: red; font-weight: bold;\" >important</span> text" ;
211+ const auto parsed = parser.parse (input, forum_url, HTMLStandard::HTML4_01, true );
212+
213+ REQUIRE ( parsed == expected );
214+ }
104215}
0 commit comments