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