blob: 8c7007ce29178f43b8cc65614b11f968937af606 [file] [log] [blame]
Alexander Kornienko33fc3db2014-09-22 10:41:39 +00001#include "ClangTidyTest.h"
Alexander Kornienko37f80452015-03-02 11:55:04 +00002#include "readability/BracesAroundStatementsCheck.h"
Alexander Kornienko33fc3db2014-09-22 10:41:39 +00003#include "readability/NamespaceCommentCheck.h"
4#include "gtest/gtest.h"
5
6namespace clang {
7namespace tidy {
8namespace test {
9
Alexander Kornienko37f80452015-03-02 11:55:04 +000010using readability::BracesAroundStatementsCheck;
Alexander Kornienko33fc3db2014-09-22 10:41:39 +000011using readability::NamespaceCommentCheck;
12
13TEST(NamespaceCommentCheckTest, Basic) {
14 EXPECT_EQ("namespace i {\n} // namespace i",
15 runCheckOnCode<NamespaceCommentCheck>("namespace i {\n}"));
16 EXPECT_EQ("namespace {\n} // namespace",
17 runCheckOnCode<NamespaceCommentCheck>("namespace {\n}"));
18 EXPECT_EQ(
19 "namespace i { namespace j {\n} // namespace j\n } // namespace i",
20 runCheckOnCode<NamespaceCommentCheck>("namespace i { namespace j {\n} }"));
21}
22
23TEST(NamespaceCommentCheckTest, SingleLineNamespaces) {
24 EXPECT_EQ(
25 "namespace i { namespace j { } }",
26 runCheckOnCode<NamespaceCommentCheck>("namespace i { namespace j { } }"));
27}
28
29TEST(NamespaceCommentCheckTest, CheckExistingComments) {
30 EXPECT_EQ("namespace i { namespace j {\n"
31 "} /* namespace j */ } // namespace i\n"
32 " /* random comment */",
33 runCheckOnCode<NamespaceCommentCheck>(
34 "namespace i { namespace j {\n"
35 "} /* namespace j */ } /* random comment */"));
36 EXPECT_EQ("namespace {\n"
37 "} // namespace",
38 runCheckOnCode<NamespaceCommentCheck>("namespace {\n"
39 "} // namespace"));
40 EXPECT_EQ("namespace {\n"
41 "} //namespace",
42 runCheckOnCode<NamespaceCommentCheck>("namespace {\n"
43 "} //namespace"));
44 EXPECT_EQ("namespace {\n"
45 "} // anonymous namespace",
46 runCheckOnCode<NamespaceCommentCheck>("namespace {\n"
47 "} // anonymous namespace"));
Alexander Kornienko27f126b2014-10-16 15:11:54 +000048 EXPECT_EQ("namespace {\n"
49 "} // Anonymous namespace.",
50 runCheckOnCode<NamespaceCommentCheck>("namespace {\n"
51 "} // Anonymous namespace."));
52 EXPECT_EQ("namespace q {\n"
53 "} // namespace q",
54 runCheckOnCode<NamespaceCommentCheck>("namespace q {\n"
55 "} // anonymous namespace q"));
Alexander Kornienko33fc3db2014-09-22 10:41:39 +000056 EXPECT_EQ(
57 "namespace My_NameSpace123 {\n"
58 "} // namespace My_NameSpace123",
59 runCheckOnCode<NamespaceCommentCheck>("namespace My_NameSpace123 {\n"
60 "} // namespace My_NameSpace123"));
61 EXPECT_EQ(
62 "namespace My_NameSpace123 {\n"
63 "} //namespace My_NameSpace123",
64 runCheckOnCode<NamespaceCommentCheck>("namespace My_NameSpace123 {\n"
65 "} //namespace My_NameSpace123"));
66 EXPECT_EQ("namespace My_NameSpace123 {\n"
67 "} // end namespace My_NameSpace123",
68 runCheckOnCode<NamespaceCommentCheck>(
69 "namespace My_NameSpace123 {\n"
70 "} // end namespace My_NameSpace123"));
71 // Understand comments only on the same line.
72 EXPECT_EQ("namespace {\n"
73 "} // namespace\n"
74 "// namespace",
75 runCheckOnCode<NamespaceCommentCheck>("namespace {\n"
76 "}\n"
77 "// namespace"));
78 // Leave unknown comments.
79 EXPECT_EQ("namespace {\n"
80 "} // namespace // random text",
81 runCheckOnCode<NamespaceCommentCheck>("namespace {\n"
82 "} // random text"));
83}
84
85TEST(NamespaceCommentCheckTest, FixWrongComments) {
86 EXPECT_EQ("namespace i { namespace jJ0_ {\n"
87 "} // namespace jJ0_\n"
88 " } // namespace i\n"
89 " /* random comment */",
90 runCheckOnCode<NamespaceCommentCheck>(
91 "namespace i { namespace jJ0_ {\n"
92 "} /* namespace qqq */ } /* random comment */"));
93 EXPECT_EQ("namespace {\n"
94 "} // namespace",
95 runCheckOnCode<NamespaceCommentCheck>("namespace {\n"
96 "} // namespace asdf"));
97}
98
Alexander Kornienko37f80452015-03-02 11:55:04 +000099TEST(BracesAroundStatementsCheck, IfWithComments) {
100 EXPECT_EQ("int main() {\n"
101 " if (false /*dummy token*/) {\n"
102 " // comment\n"
103 " return -1; /**/\n"
104 "}\n"
105 " if (false) {\n"
106 " return -1; // comment\n"
107 "}\n"
108 " if (false) {\n"
109 " return -1; \n"
110 "}/* multi-line \n comment */\n"
111 "}",
112 runCheckOnCode<BracesAroundStatementsCheck>(
113 "int main() {\n"
114 " if (false /*dummy token*/)\n"
115 " // comment\n"
116 " return -1; /**/\n"
117 " if (false)\n"
118 " return -1; // comment\n"
119 " if (false)\n"
120 " return -1; /* multi-line \n comment */\n"
121 "}"));
122 EXPECT_EQ("int main() {\n"
123 " if (false /*dummy token*/) {\n"
124 " // comment\n"
125 " return -1 /**/ ;\n"
126 "}\n"
127 "}",
128 runCheckOnCode<BracesAroundStatementsCheck>(
129 "int main() {\n"
130 " if (false /*dummy token*/)\n"
131 " // comment\n"
132 " return -1 /**/ ;\n"
133 "}"));
134}
135
136TEST(BracesAroundStatementsCheck, If) {
137 EXPECT_NO_CHANGES(BracesAroundStatementsCheck, "int main() {\n"
138 " if (false) {\n"
139 " return -1;\n"
140 " }\n"
141 "}");
142 EXPECT_NO_CHANGES(BracesAroundStatementsCheck, "int main() {\n"
143 " if (auto Cond = false) {\n"
144 " return -1;\n"
145 " }\n"
146 "}");
147 EXPECT_NO_CHANGES(BracesAroundStatementsCheck, "int main() {\n"
148 " if (false) {\n"
149 " return -1;\n"
150 " } else {\n"
151 " return -2;\n"
152 " }\n"
153 "}");
154 EXPECT_EQ("int main() {\n"
155 " if (false) {\n"
156 " return -1;\n"
157 "}\n"
158 "}",
159 runCheckOnCode<BracesAroundStatementsCheck>("int main() {\n"
160 " if (false)\n"
161 " return -1;\n"
162 "}"));
163 EXPECT_EQ("int main() {\n"
164 " if (auto Cond = false /**/ ) {\n"
165 " return -1;\n"
166 "}\n"
167 "}",
168 runCheckOnCode<BracesAroundStatementsCheck>(
169 "int main() {\n"
170 " if (auto Cond = false /**/ )\n"
171 " return -1;\n"
172 "}"));
173 // FIXME: Consider adding braces before EMPTY_MACRO and after the statement.
174 EXPECT_NO_CHANGES(BracesAroundStatementsCheck,
175 "#define EMPTY_MACRO\n"
176 "int main() {\n"
177 " if (auto Cond = false EMPTY_MACRO /**/ ) EMPTY_MACRO\n"
178 " return -1;\n"
179 "}");
180 EXPECT_EQ("int main() {\n"
181 " if (true) { return -1/**/ ;\n"
182 "}\n"
183 "}",
184 runCheckOnCode<BracesAroundStatementsCheck>(
185 "int main() {\n"
186 " if (true) return -1/**/ ;\n"
187 "}"));
188 EXPECT_EQ("int main() {\n"
189 " if (false) {\n"
190 " return -1;\n"
191 " } else {\n"
192 " return -2;\n"
193 "}\n"
194 "}",
195 runCheckOnCode<BracesAroundStatementsCheck>("int main() {\n"
196 " if (false)\n"
197 " return -1;\n"
198 " else\n"
199 " return -2;\n"
200 "}"));
201 EXPECT_EQ("int main() {\n"
202 " if (false) {\n"
203 " return -1;\n"
204 " } else if (1 == 2) {\n"
205 " return -2;\n"
206 " } else {\n"
207 " return -3;\n"
208 "}\n"
209 "}",
210 runCheckOnCode<BracesAroundStatementsCheck>("int main() {\n"
211 " if (false)\n"
212 " return -1;\n"
213 " else if (1 == 2)\n"
214 " return -2;\n"
215 " else\n"
216 " return -3;\n"
217 "}"));
218 EXPECT_EQ("int main() {\n"
219 " if (false) {\n"
220 " return -1;\n"
221 " } else if (1 == 2) {\n"
222 " return -2;\n"
223 " } else {\n"
224 " return -3;\n"
225 "}\n"
226 "}",
227 runCheckOnCode<BracesAroundStatementsCheck>("int main() {\n"
228 " if (false)\n"
229 " return -1;\n"
230 " else if (1 == 2) {\n"
231 " return -2;\n"
232 " } else\n"
233 " return -3;\n"
234 "}"));
235}
236
237TEST(BracesAroundStatementsCheck, For) {
238 EXPECT_NO_CHANGES(BracesAroundStatementsCheck, "int main() {\n"
239 " for (;;) {\n"
240 " ;\n"
241 " }\n"
242 "}");
243 EXPECT_EQ("int main() {\n"
244 " for (;;) {\n"
245 " ;\n"
246 "}\n"
247 "}",
248 runCheckOnCode<BracesAroundStatementsCheck>("int main() {\n"
249 " for (;;)\n"
250 " ;\n"
251 "}"));
252 EXPECT_EQ("int main() {\n"
253 " for (;;) {\n"
254 " /**/ ;\n"
255 "}\n"
256 "}",
257 runCheckOnCode<BracesAroundStatementsCheck>("int main() {\n"
258 " for (;;)\n"
259 " /**/ ;\n"
260 "}"));
261 EXPECT_EQ("int main() {\n"
262 " for (;;) {\n"
263 " return -1 /**/ ;\n"
264 "}\n"
265 "}",
266 runCheckOnCode<BracesAroundStatementsCheck>("int main() {\n"
267 " for (;;)\n"
268 " return -1 /**/ ;\n"
269 "}"));
270}
271
272TEST(BracesAroundStatementsCheck, ForRange) {
273 EXPECT_NO_CHANGES(BracesAroundStatementsCheck, "int main() {\n"
274 " int arr[4];\n"
275 " for (int i : arr) {\n"
276 " ;\n"
277 " }\n"
278 "}");
279 EXPECT_EQ("int main() {\n"
280 " int arr[4];\n"
281 " for (int i : arr) {\n"
282 " ;\n"
283 "}\n"
284 " for (int i : arr) {\n"
285 " return -1 ;\n"
286 "}\n"
287 "}",
288 runCheckOnCode<BracesAroundStatementsCheck>("int main() {\n"
289 " int arr[4];\n"
290 " for (int i : arr)\n"
291 " ;\n"
292 " for (int i : arr)\n"
293 " return -1 ;\n"
294 "}"));
295}
296
297TEST(BracesAroundStatementsCheck, DoWhile) {
298 EXPECT_NO_CHANGES(BracesAroundStatementsCheck, "int main() {\n"
299 " do {\n"
300 " ;\n"
301 " } while (false);\n"
302 "}");
303 EXPECT_EQ("int main() {\n"
304 " do {\n"
305 " ;\n"
306 " } while (false);\n"
307 "}",
308 runCheckOnCode<BracesAroundStatementsCheck>("int main() {\n"
309 " do\n"
310 " ;\n"
311 " while (false);\n"
312 "}"));
313}
314
315TEST(BracesAroundStatementsCheck, While) {
316 EXPECT_NO_CHANGES(BracesAroundStatementsCheck, "int main() {\n"
317 " while (false) {\n"
318 " ;\n"
319 " }\n"
320 "}");
321 EXPECT_EQ("int main() {\n"
322 " while (false) {\n"
323 " ;\n"
324 "}\n"
325 "}",
326 runCheckOnCode<BracesAroundStatementsCheck>("int main() {\n"
327 " while (false)\n"
328 " ;\n"
329 "}"));
330 EXPECT_EQ("int main() {\n"
331 " while (auto Cond = false) {\n"
332 " ;\n"
333 "}\n"
334 "}",
335 runCheckOnCode<BracesAroundStatementsCheck>(
336 "int main() {\n"
337 " while (auto Cond = false)\n"
338 " ;\n"
339 "}"));
340 EXPECT_EQ("int main() {\n"
341 " while (false /*dummy token*/) {\n"
342 " ;\n"
343 "}\n"
344 "}",
345 runCheckOnCode<BracesAroundStatementsCheck>(
346 "int main() {\n"
347 " while (false /*dummy token*/)\n"
348 " ;\n"
349 "}"));
350 EXPECT_EQ("int main() {\n"
351 " while (false) {\n"
352 " break;\n"
353 "}\n"
354 "}",
355 runCheckOnCode<BracesAroundStatementsCheck>("int main() {\n"
356 " while (false)\n"
357 " break;\n"
358 "}"));
359 EXPECT_EQ("int main() {\n"
360 " while (false) {\n"
361 " break /**/;\n"
362 "}\n"
363 "}",
364 runCheckOnCode<BracesAroundStatementsCheck>("int main() {\n"
365 " while (false)\n"
366 " break /**/;\n"
367 "}"));
368 EXPECT_EQ("int main() {\n"
369 " while (false) {\n"
370 " /**/;\n"
371 "}\n"
372 "}",
373 runCheckOnCode<BracesAroundStatementsCheck>("int main() {\n"
374 " while (false)\n"
375 " /**/;\n"
376 "}"));
377}
378
379TEST(BracesAroundStatementsCheck, Nested) {
380 EXPECT_EQ("int main() {\n"
381 " do { if (true) {}} while (false);\n"
382 "}",
383 runCheckOnCode<BracesAroundStatementsCheck>(
384 "int main() {\n"
385 " do if (true) {}while (false);\n"
386 "}"));
387 EXPECT_EQ("int main() {\n"
388 " do { if (true) {}} while (false);\n"
389 "}",
390 runCheckOnCode<BracesAroundStatementsCheck>(
391 "int main() {\n"
392 " do if (true) {}while (false);\n"
393 "}"));
394 EXPECT_EQ(
395 "int main() {\n"
396 " if (true) {\n"
397 " // comment\n"
398 " if (false) {\n"
399 " // comment\n"
400 " /**/ ; // comment\n"
401 " }\n"
402 "}\n"
403 "}",
404 runCheckOnCode<BracesAroundStatementsCheck>("int main() {\n"
405 " if (true)\n"
406 " // comment\n"
407 " if (false) {\n"
408 " // comment\n"
409 " /**/ ; // comment\n"
410 " }\n"
411 "}"));
412}
413
414TEST(BracesAroundStatementsCheck, Macros) {
415 EXPECT_NO_CHANGES(BracesAroundStatementsCheck,
416 "#define IF(COND) if (COND) return -1;\n"
417 "int main() {\n"
418 " IF(false)\n"
419 "}");
420 EXPECT_NO_CHANGES(BracesAroundStatementsCheck,
421 "#define FOR(COND) for (COND) return -1;\n"
422 "int main() {\n"
423 " FOR(;;)\n"
424 "}");
425}
426
Alexander Kornienko33fc3db2014-09-22 10:41:39 +0000427} // namespace test
428} // namespace tidy
429} // namespace clang