Skip to content

Commit a1670ab

Browse files
committed
tests: add tests for remaining "default" BB codes
1 parent e787815 commit a1670ab

File tree

2 files changed

+121
-10
lines changed

2 files changed

+121
-10
lines changed

code/bbcode/DefaultCodes.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ namespace bbcode_default
4545
// indent
4646
const CustomizedSimpleBBCode indent("indent", "<blockquote>", "</blockquote>");
4747

48-
//alignment stuff
48+
// alignment stuff
4949
const SimpleBBCode center("center");
5050
const CustomizedSimpleBBCode left("left", "<div align=\"left\">", "</div>");
5151
const CustomizedSimpleBBCode right("right", "<div align=\"right\">", "</div>");

tests/components/bbcode/DefaultCodes.cpp

Lines changed: 120 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -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&amp;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&amp;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

Comments
 (0)