xref: /llvm-project/clang-tools-extra/unittests/clang-tidy/ReadabilityModuleTest.cpp (revision 2192a8e5193716613bb9d64090a8843f7e5ca7fb)
1 #include "ClangTidyTest.h"
2 #include "readability/NamespaceCommentCheck.h"
3 #include "gtest/gtest.h"
4 
5 namespace clang {
6 namespace tidy {
7 namespace test {
8 
9 using readability::NamespaceCommentCheck;
10 
11 TEST(NamespaceCommentCheckTest, Basic) {
12   EXPECT_EQ("namespace i {\n} // namespace i",
13             runCheckOnCode<NamespaceCommentCheck>("namespace i {\n}"));
14   EXPECT_EQ("namespace {\n} // namespace",
15             runCheckOnCode<NamespaceCommentCheck>("namespace {\n}"));
16   EXPECT_EQ(
17       "namespace i { namespace j {\n} // namespace j\n } // namespace i",
18       runCheckOnCode<NamespaceCommentCheck>("namespace i { namespace j {\n} }"));
19 }
20 
21 TEST(NamespaceCommentCheckTest, SingleLineNamespaces) {
22   EXPECT_EQ(
23       "namespace i { namespace j { } }",
24       runCheckOnCode<NamespaceCommentCheck>("namespace i { namespace j { } }"));
25 }
26 
27 TEST(NamespaceCommentCheckTest, CheckExistingComments) {
28   EXPECT_EQ("namespace i { namespace j {\n"
29             "} /* namespace j */ } // namespace i\n"
30             " /* random comment */",
31             runCheckOnCode<NamespaceCommentCheck>(
32                 "namespace i { namespace j {\n"
33                 "} /* namespace j */ } /* random comment */"));
34   EXPECT_EQ("namespace {\n"
35             "} // namespace",
36             runCheckOnCode<NamespaceCommentCheck>("namespace {\n"
37                                                   "} // namespace"));
38   EXPECT_EQ("namespace {\n"
39             "} //namespace",
40             runCheckOnCode<NamespaceCommentCheck>("namespace {\n"
41                                                   "} //namespace"));
42   EXPECT_EQ("namespace {\n"
43             "} // anonymous namespace",
44             runCheckOnCode<NamespaceCommentCheck>("namespace {\n"
45                                                   "} // anonymous namespace"));
46   EXPECT_EQ("namespace {\n"
47             "} // Anonymous namespace.",
48             runCheckOnCode<NamespaceCommentCheck>("namespace {\n"
49                                                   "} // Anonymous namespace."));
50   EXPECT_EQ("namespace q {\n"
51             "} // namespace q",
52             runCheckOnCode<NamespaceCommentCheck>("namespace q {\n"
53                                                   "} // anonymous namespace q"));
54   EXPECT_EQ(
55       "namespace My_NameSpace123 {\n"
56       "} // namespace My_NameSpace123",
57       runCheckOnCode<NamespaceCommentCheck>("namespace My_NameSpace123 {\n"
58                                             "} // namespace My_NameSpace123"));
59   EXPECT_EQ(
60       "namespace My_NameSpace123 {\n"
61       "} //namespace My_NameSpace123",
62       runCheckOnCode<NamespaceCommentCheck>("namespace My_NameSpace123 {\n"
63                                             "} //namespace My_NameSpace123"));
64   EXPECT_EQ("namespace My_NameSpace123 {\n"
65             "} //  end namespace   My_NameSpace123",
66             runCheckOnCode<NamespaceCommentCheck>(
67                 "namespace My_NameSpace123 {\n"
68                 "} //  end namespace   My_NameSpace123"));
69   // Understand comments only on the same line.
70   EXPECT_EQ("namespace {\n"
71             "} // namespace\n"
72             "// namespace",
73             runCheckOnCode<NamespaceCommentCheck>("namespace {\n"
74                                                   "}\n"
75                                                   "// namespace"));
76   // Leave unknown comments.
77   EXPECT_EQ("namespace {\n"
78             "} // namespace // random text",
79             runCheckOnCode<NamespaceCommentCheck>("namespace {\n"
80                                                   "} // random text"));
81 }
82 
83 TEST(NamespaceCommentCheckTest, FixWrongComments) {
84   EXPECT_EQ("namespace i { namespace jJ0_ {\n"
85             "} // namespace jJ0_\n"
86             " } // namespace i\n"
87             " /* random comment */",
88             runCheckOnCode<NamespaceCommentCheck>(
89                 "namespace i { namespace jJ0_ {\n"
90                 "} /* namespace qqq */ } /* random comment */"));
91   EXPECT_EQ("namespace {\n"
92             "} // namespace",
93             runCheckOnCode<NamespaceCommentCheck>("namespace {\n"
94                                                   "} // namespace asdf"));
95 }
96 
97 } // namespace test
98 } // namespace tidy
99 } // namespace clang
100