Skip to content

Commit dd585f5

Browse files
committed
refactor(test): use concat instead of +
1 parent db16881 commit dd585f5

18 files changed

+140
-113
lines changed

test/test-cli-location.cpp

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
#include <gtest/gtest.h>
77
#include <quick-lint-js/characters.h>
88
#include <quick-lint-js/cli/cli-location.h>
9+
#include <quick-lint-js/container/concat.h>
910
#include <quick-lint-js/container/padded-string.h>
1011
#include <quick-lint-js/port/char8.h>
1112
#include <quick-lint-js/util/algorithm.h>
@@ -30,8 +31,8 @@ TEST(test_cli_location, ranges_on_first_line) {
3031

3132
TEST(test_cli_location, ranges_on_second_line) {
3233
for (string8_view line_terminator : line_terminators) {
33-
padded_string code(u8"let x = 2;" + string8(line_terminator) +
34-
u8"let y = 3;");
34+
padded_string code(
35+
concat(u8"let x = 2;"_sv, line_terminator, u8"let y = 3;"_sv));
3536
const char8* y = strchr(code.c_str(), u8'y');
3637
cli_locator l(&code);
3738
cli_source_range x_range = l.range(source_code_span(y, y + 1));
@@ -48,8 +49,8 @@ TEST(test_cli_location, ranges_on_second_line) {
4849

4950
TEST(test_cli_location, first_character_on_line_has_column_1) {
5051
for (string8_view line_terminator : line_terminators) {
51-
padded_string code(u8"function f() {}" + string8(line_terminator) +
52-
u8"g();");
52+
padded_string code(
53+
concat(u8"function f() {}"_sv, line_terminator, u8"g();"_sv));
5354
const char8* g = strchr(code.c_str(), u8'g');
5455
cli_locator l(&code);
5556
cli_source_position g_position = l.position(g);

test/test-concat.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,10 @@ TEST(test_concat, string_literals) {
1818
EXPECT_EQ(concat("hello", "beautiful", "world", "!"),
1919
"hellobeautifulworld!"s);
2020

21-
EXPECT_EQ(concat(u8"hello", u8"world"), u8"helloworld"s);
22-
EXPECT_EQ(concat(u8"hello", u8"beautiful", u8"world"),
21+
EXPECT_EQ(concat(u8"hello"_sv, u8"world"_sv), u8"helloworld"s);
22+
EXPECT_EQ(concat(u8"hello"_sv, u8"beautiful"_sv, u8"world"_sv),
2323
u8"hellobeautifulworld"s);
24-
EXPECT_EQ(concat(u8"hello", u8"beautiful", u8"world", u8"!"),
24+
EXPECT_EQ(concat(u8"hello"_sv, u8"beautiful"_sv, u8"world"_sv, u8"!"_sv),
2525
u8"hellobeautifulworld!"s);
2626
}
2727

test/test-lex.cpp

Lines changed: 50 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
#include <iostream>
1010
#include <quick-lint-js/assert.h>
1111
#include <quick-lint-js/characters.h>
12+
#include <quick-lint-js/container/concat.h>
1213
#include <quick-lint-js/container/linked-vector.h>
1314
#include <quick-lint-js/container/padded-string.h>
1415
#include <quick-lint-js/diag-collector.h>
@@ -248,7 +249,7 @@ TEST_F(test_lex, lex_line_comments) {
248249
EXPECT_THAT(this->lex_to_eof(u8"// hello"_sv), IsEmpty());
249250
for (string8_view line_terminator : line_terminators) {
250251
this->check_single_token(
251-
u8"// hello" + string8(line_terminator) + u8"world", u8"world"_sv);
252+
concat(u8"// hello"_sv, line_terminator, u8"world"_sv), u8"world"_sv);
252253
}
253254
EXPECT_THAT(this->lex_to_eof(u8"// hello\n// world"_sv), IsEmpty());
254255
this->check_tokens(u8"hello//*/\n \n \nworld"_sv,
@@ -267,8 +268,8 @@ TEST_F(test_lex, lex_line_comments) {
267268
TEST_F(test_lex, lex_line_comments_with_control_characters) {
268269
for (string8_view control_character :
269270
control_characters_except_line_terminators) {
270-
padded_string input(u8"// hello " + string8(control_character) +
271-
u8" world\n42.0");
271+
padded_string input(
272+
concat(u8"// hello "_sv, control_character, u8" world\n42.0"_sv));
272273
SCOPED_TRACE(input);
273274
this->check_tokens(&input, {token_type::number});
274275
}
@@ -278,16 +279,16 @@ TEST_F(test_lex, lex_html_open_comments) {
278279
EXPECT_THAT(this->lex_to_eof(u8"<!-- --> hello"_sv), IsEmpty());
279280
for (string8_view line_terminator : line_terminators) {
280281
this->check_single_token(
281-
u8"<!-- hello" + string8(line_terminator) + u8"world", u8"world"_sv);
282+
concat(u8"<!-- hello"_sv, line_terminator, u8"world"_sv), u8"world"_sv);
282283
}
283284
EXPECT_THAT(this->lex_to_eof(u8"<!-- hello\n<!-- world"_sv), IsEmpty());
284285
EXPECT_THAT(this->lex_to_eof(u8"<!--// hello"_sv), IsEmpty());
285286
this->check_tokens(u8"hello<!--->\n \n \nworld"_sv,
286287
{token_type::identifier, token_type::identifier});
287288
for (string8_view control_character :
288289
control_characters_except_line_terminators) {
289-
padded_string input(u8"<!-- hello " + string8(control_character) +
290-
u8" world\n42.0");
290+
padded_string input(
291+
concat(u8"<!-- hello "_sv, control_character, u8" world\n42.0"_sv));
291292
SCOPED_TRACE(input);
292293
this->check_tokens(&input, {token_type::number});
293294
}
@@ -310,19 +311,22 @@ TEST_F(test_lex, lex_html_close_comments) {
310311
for (string8_view line_terminator : line_terminators) {
311312
string8 eol(line_terminator);
312313

313-
this->check_single_token(u8"-->" + eol + u8"hello", u8"hello"_sv);
314-
this->check_single_token(u8"--> comment" + eol + u8"hello", u8"hello"_sv);
314+
this->check_single_token(concat(u8"-->"_sv, eol, u8"hello"_sv),
315+
u8"hello"_sv);
316+
this->check_single_token(concat(u8"--> comment"_sv, eol, u8"hello"_sv),
317+
u8"hello"_sv);
318+
this->check_single_token(concat(u8"--> comment1"_sv, eol,
319+
u8"--> comment2"_sv, eol, u8"hello"_sv),
320+
u8"hello"_sv);
321+
315322
this->check_single_token(
316-
u8"--> comment1" + eol + u8"--> comment2" + eol + u8"hello",
323+
concat(u8"/*"_sv, eol, u8"*/--> comment"_sv, eol, u8"hello"_sv),
317324
u8"hello"_sv);
318-
319-
this->check_single_token(u8"/*" + eol + u8"*/--> comment" + eol + u8"hello",
320-
u8"hello"_sv);
321325
this->check_single_token(
322-
u8"/* */ /*" + eol + u8"*/ --> comment" + eol + u8"hello",
326+
concat(u8"/* */ /*"_sv, eol, u8"*/ --> comment"_sv, eol, u8"hello"_sv),
323327
u8"hello"_sv);
324328
this->check_single_token(
325-
u8"/*" + eol + u8"*/ /* */ --> comment" + eol + u8"hello",
329+
concat(u8"/*"_sv, eol, u8"*/ /* */ --> comment"_sv, eol, u8"hello"_sv),
326330
u8"hello"_sv);
327331
}
328332

@@ -1036,18 +1040,18 @@ TEST_F(test_lex, lex_strings) {
10361040
});
10371041

10381042
for (string8_view line_terminator : line_terminators) {
1039-
for (const char8* quotation_mark : {u8"'", u8"\""}) {
1040-
padded_string input(quotation_mark +
1041-
(u8"line1\\" + string8(line_terminator) + u8"line2") +
1042-
quotation_mark);
1043+
for (string8_view quotation_mark : {u8"'"_sv, u8"\""_sv}) {
1044+
padded_string input(concat(quotation_mark, u8"line1\\"_sv,
1045+
line_terminator, u8"line2"_sv,
1046+
quotation_mark));
10431047
this->check_tokens(&input, {token_type::string});
10441048
}
10451049
}
10461050

10471051
for (string8_view line_terminator : line_terminators_except_ls_ps) {
10481052
diag_collector v;
1049-
padded_string input(u8"'unterminated" + string8(line_terminator) +
1050-
u8"hello");
1053+
padded_string input(
1054+
concat(u8"'unterminated"_sv, line_terminator, u8"hello"_sv));
10511055
lexer l(&input, &v);
10521056
EXPECT_EQ(l.peek().type, token_type::string);
10531057
l.skip();
@@ -1063,7 +1067,8 @@ TEST_F(test_lex, lex_strings) {
10631067

10641068
for (string8_view line_terminator : line_terminators_except_ls_ps) {
10651069
diag_collector v;
1066-
padded_string input(u8"'separated" + string8(line_terminator) + u8"hello'");
1070+
padded_string input(
1071+
concat(u8"'separated"_sv, line_terminator, u8"hello'"_sv));
10671072
lexer l(&input, &v);
10681073
EXPECT_EQ(l.peek().type, token_type::string);
10691074
l.skip();
@@ -1079,8 +1084,8 @@ TEST_F(test_lex, lex_strings) {
10791084

10801085
for (string8_view line_terminator : line_terminators_except_ls_ps) {
10811086
diag_collector v;
1082-
padded_string input(u8"'separated" + string8(line_terminator) +
1083-
string8(line_terminator) + u8"hello'");
1087+
padded_string input(concat(u8"'separated"_sv, line_terminator,
1088+
line_terminator, u8"hello'"_sv));
10841089
lexer l(&input, &v);
10851090
EXPECT_EQ(l.peek().type, token_type::string);
10861091
l.skip();
@@ -1104,8 +1109,8 @@ TEST_F(test_lex, lex_strings) {
11041109

11051110
for (string8_view line_terminator : line_terminators_except_ls_ps) {
11061111
diag_collector v;
1107-
padded_string input(u8"let x = 'hello" + string8(line_terminator) +
1108-
u8"let y = 'world'");
1112+
padded_string input(
1113+
concat(u8"let x = 'hello"_sv, line_terminator, u8"let y = 'world'"_sv));
11091114
lexer l(&input, &v);
11101115
EXPECT_EQ(l.peek().type, token_type::kw_let);
11111116
l.skip();
@@ -1240,14 +1245,16 @@ TEST_F(test_lex, lex_strings) {
12401245
TEST_F(test_lex, lex_string_with_ascii_control_characters) {
12411246
for (string8_view control_character :
12421247
concat(control_characters_except_line_terminators, ls_and_ps)) {
1243-
padded_string input(u8"'hello" + string8(control_character) + u8"world'");
1248+
padded_string input(
1249+
concat(u8"'hello"_sv, control_character, u8"world'"_sv));
12441250
SCOPED_TRACE(input);
12451251
this->check_tokens(&input, {token_type::string});
12461252
}
12471253

12481254
for (string8_view control_character :
12491255
control_characters_except_line_terminators) {
1250-
padded_string input(u8"'hello\\" + string8(control_character) + u8"world'");
1256+
padded_string input(
1257+
concat(u8"'hello\\"_sv, control_character, u8"world'"_sv));
12511258
SCOPED_TRACE(input);
12521259
this->check_tokens(&input, {token_type::string});
12531260
}
@@ -1598,14 +1605,16 @@ TEST_F(test_lex, templates_do_not_buffer_valid_unicode_escapes) {
15981605
TEST_F(test_lex, lex_template_literal_with_ascii_control_characters) {
15991606
for (string8_view control_character :
16001607
concat(control_characters_except_line_terminators, line_terminators)) {
1601-
padded_string input(u8"`hello" + string8(control_character) + u8"world`");
1608+
padded_string input(
1609+
concat(u8"`hello"_sv, control_character, u8"world`"_sv));
16021610
SCOPED_TRACE(input);
16031611
this->check_tokens(&input, {token_type::complete_template});
16041612
}
16051613

16061614
for (string8_view control_character :
16071615
control_characters_except_line_terminators) {
1608-
padded_string input(u8"`hello\\" + string8(control_character) + u8"world`");
1616+
padded_string input(
1617+
concat(u8"`hello\\"_sv, control_character, u8"world`"_sv));
16091618
SCOPED_TRACE(input);
16101619
this->check_tokens(&input, {token_type::complete_template});
16111620
}
@@ -1660,8 +1669,8 @@ TEST_F(test_lex, lex_regular_expression_literals) {
16601669
}
16611670

16621671
for (string8_view line_terminator : line_terminators) {
1663-
padded_string code(u8"/first_line" + string8(line_terminator) +
1664-
u8"second_line/");
1672+
padded_string code(
1673+
concat(u8"/first_line"_sv, line_terminator, u8"second_line/"_sv));
16651674
SCOPED_TRACE(code);
16661675
diag_collector v;
16671676
lexer l(&code, &v);
@@ -1683,8 +1692,8 @@ TEST_F(test_lex, lex_regular_expression_literals) {
16831692
}
16841693

16851694
for (string8_view line_terminator : line_terminators) {
1686-
padded_string code(u8"/first[line" + string8(line_terminator) +
1687-
u8"second]line/");
1695+
padded_string code(
1696+
concat(u8"/first[line"_sv, line_terminator, u8"second]line/"_sv));
16881697
SCOPED_TRACE(code);
16891698
diag_collector v;
16901699
lexer l(&code, &v);
@@ -1781,7 +1790,8 @@ TEST_F(test_lex,
17811790
TEST_F(test_lex, lex_regular_expression_literal_with_ascii_control_characters) {
17821791
for (string8_view control_character :
17831792
control_characters_except_line_terminators) {
1784-
padded_string input(u8"/hello" + string8(control_character) + u8"world/");
1793+
padded_string input(
1794+
concat(u8"/hello"_sv, control_character, u8"world/"_sv));
17851795
SCOPED_TRACE(input);
17861796
diag_collector errors;
17871797
lexer l(&input, &errors);
@@ -1796,7 +1806,8 @@ TEST_F(test_lex, lex_regular_expression_literal_with_ascii_control_characters) {
17961806

17971807
for (string8_view control_character :
17981808
control_characters_except_line_terminators) {
1799-
padded_string input(u8"/hello\\" + string8(control_character) + u8"world/");
1809+
padded_string input(
1810+
concat(u8"/hello\\"_sv, control_character, u8"world/"_sv));
18001811
SCOPED_TRACE(input);
18011812
diag_collector errors;
18021813
lexer l(&input, &errors);
@@ -2830,7 +2841,7 @@ TEST_F(test_lex, ascii_control_characters_are_disallowed) {
28302841

28312842
TEST_F(test_lex, ascii_control_characters_sorta_treated_like_whitespace) {
28322843
for (string8_view control_character : control_characters_except_whitespace) {
2833-
padded_string input(u8" " + string8(control_character) + u8" hello");
2844+
padded_string input(concat(u8" "_sv, control_character, u8" hello"_sv));
28342845
SCOPED_TRACE(input);
28352846
diag_collector v;
28362847
lexer l(&input, &v);
@@ -2843,7 +2854,7 @@ TEST_F(test_lex, ascii_control_characters_sorta_treated_like_whitespace) {
28432854

28442855
TEST_F(test_lex, lex_token_notes_leading_newline) {
28452856
for (string8_view line_terminator : line_terminators) {
2846-
padded_string code(u8"a b" + string8(line_terminator) + u8"c d");
2857+
padded_string code(concat(u8"a b"_sv, line_terminator, u8"c d"_sv));
28472858
lexer l(&code, &null_diag_reporter::instance);
28482859
EXPECT_FALSE(l.peek().has_leading_newline); // a
28492860
l.skip();
@@ -2857,7 +2868,7 @@ TEST_F(test_lex, lex_token_notes_leading_newline) {
28572868

28582869
TEST_F(test_lex, lex_token_notes_leading_newline_after_single_line_comment) {
28592870
for (string8_view line_terminator : line_terminators) {
2860-
padded_string code(u8"a // hello" + string8(line_terminator) + u8"b");
2871+
padded_string code(concat(u8"a // hello"_sv, line_terminator, u8"b"_sv));
28612872
lexer l(&code, &null_diag_reporter::instance);
28622873
EXPECT_FALSE(l.peek().has_leading_newline); // a
28632874
l.skip();
@@ -2867,7 +2878,7 @@ TEST_F(test_lex, lex_token_notes_leading_newline_after_single_line_comment) {
28672878

28682879
TEST_F(test_lex, lex_token_notes_leading_newline_after_comment_with_newline) {
28692880
for (string8_view line_terminator : line_terminators) {
2870-
padded_string code(u8"a /*" + string8(line_terminator) + u8"*/ b");
2881+
padded_string code(concat(u8"a /*"_sv, line_terminator, u8"*/ b"_sv));
28712882
lexer l(&code, &null_diag_reporter::instance);
28722883
EXPECT_FALSE(l.peek().has_leading_newline); // a
28732884
l.skip();

test/test-lsp-location.cpp

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
#include <cstring>
66
#include <gtest/gtest.h>
77
#include <quick-lint-js/characters.h>
8+
#include <quick-lint-js/container/concat.h>
89
#include <quick-lint-js/container/padded-string.h>
910
#include <quick-lint-js/lsp/lsp-location.h>
1011
#include <quick-lint-js/port/char8.h>
@@ -28,8 +29,8 @@ TEST(test_lsp_location, ranges_on_first_line) {
2829

2930
TEST(test_lsp_location, ranges_on_second_line) {
3031
for (string8_view line_terminator : line_terminators_except_ls_ps) {
31-
padded_string code(u8"let x = 2;" + string8(line_terminator) +
32-
u8"let y = 3;");
32+
padded_string code(
33+
concat(u8"let x = 2;"_sv, line_terminator, u8"let y = 3;"_sv));
3334
SCOPED_TRACE(code);
3435
const char8* y = strchr(code.c_str(), u8'y');
3536
lsp_locator l(&code);
@@ -45,8 +46,8 @@ TEST(test_lsp_location, ranges_on_second_line) {
4546

4647
TEST(test_lsp_location, first_character_on_line_is_character_0) {
4748
for (string8_view line_terminator : line_terminators_except_ls_ps) {
48-
padded_string code(u8"function f() {}" + string8(line_terminator) +
49-
u8"g();");
49+
padded_string code(
50+
concat(u8"function f() {}"_sv, line_terminator, u8"g();"_sv));
5051
SCOPED_TRACE(code);
5152
const char8* g = strchr(code.c_str(), u8'g');
5253
lsp_locator l(&code);
@@ -59,7 +60,8 @@ TEST(test_lsp_location, first_character_on_line_is_character_0) {
5960

6061
TEST(test_lsp_location, ls_and_ps_are_not_treated_as_newline_characters) {
6162
for (string8_view not_line_terminator : ls_and_ps) {
62-
padded_string code(u8"one" + string8(not_line_terminator) + u8"two\nTHREE");
63+
padded_string code(
64+
concat(u8"one"_sv, not_line_terminator, u8"two\nTHREE"_sv));
6365
SCOPED_TRACE(code);
6466
const char8* r = strchr(code.c_str(), u8'R');
6567
lsp_locator l(&code);
@@ -183,7 +185,7 @@ TEST(test_lsp_location, offset_from_empty_line) {
183185

184186
TEST(test_lsp_location, offset_from_last_character_in_line) {
185187
for (string8_view line_terminator : line_terminators_except_ls_ps) {
186-
padded_string code(u8"hello" + string8(line_terminator) + u8"world");
188+
padded_string code(concat(u8"hello"_sv, line_terminator, u8"world"_sv));
187189
SCOPED_TRACE(code);
188190
lsp_locator l(&code);
189191
const char8* o = l.from_position(lsp_position{.line = 0, .character = 4});
@@ -194,7 +196,7 @@ TEST(test_lsp_location, offset_from_last_character_in_line) {
194196
TEST(test_lsp_location,
195197
offset_from_beyond_end_of_line_refers_to_line_terminator) {
196198
for (string8_view line_terminator : line_terminators_except_ls_ps) {
197-
padded_string code(u8"hello" + string8(line_terminator) + u8"world");
199+
padded_string code(concat(u8"hello"_sv, line_terminator, u8"world"_sv));
198200
SCOPED_TRACE(code);
199201
lsp_locator l(&code);
200202
const char8* terminator =
@@ -207,8 +209,8 @@ TEST(
207209
test_lsp_location,
208210
offset_from_beyond_end_of_line_containing_non_ascii_refers_to_line_terminator) {
209211
for (string8_view line_terminator : line_terminators_except_ls_ps) {
210-
padded_string code(u8"hello \u2603!" + string8(line_terminator) +
211-
u8"world");
212+
padded_string code(
213+
concat(u8"hello \u2603!"_sv, line_terminator, u8"world"_sv));
212214
SCOPED_TRACE(code);
213215
lsp_locator l(&code);
214216
const char8* terminator =
@@ -363,8 +365,8 @@ TEST(test_lsp_location, add_newline_within_line) {
363365
for (string8_view line_terminator : line_terminators_except_ls_ps) {
364366
padded_string original_code(u8"first line\nsecond line\nlast line"_sv);
365367
SCOPED_TRACE(original_code);
366-
padded_string updated_code(u8"first line\nsecond" +
367-
string8(line_terminator) + u8" line\nlast line");
368+
padded_string updated_code(concat(
369+
u8"first line\nsecond"_sv, line_terminator, u8" line\nlast line"_sv));
368370
SCOPED_TRACE(updated_code);
369371

370372
lsp_locator locator(&original_code);
@@ -382,8 +384,8 @@ TEST(test_lsp_location, add_newline_within_line) {
382384

383385
TEST(test_lsp_location, delete_newline) {
384386
for (string8_view line_terminator : line_terminators_except_ls_ps) {
385-
padded_string original_code(u8"first line\nsecond" +
386-
string8(line_terminator) + u8"line\nlast line");
387+
padded_string original_code(concat(
388+
u8"first line\nsecond"_sv, line_terminator, u8"line\nlast line"_sv));
387389
SCOPED_TRACE(original_code);
388390
padded_string updated_code(u8"first line\nsecondline\nlast line"_sv);
389391
SCOPED_TRACE(updated_code);

0 commit comments

Comments
 (0)