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