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