1 //===---- ObjCModuleTest.cpp - clang-tidy ---------------------------------===// 2 // 3 // The LLVM Compiler Infrastructure 4 // 5 // This file is distributed under the University of Illinois Open Source 6 // License. See LICENSE.TXT for details. 7 // 8 //===----------------------------------------------------------------------===// 9 10 #include "ClangTidyTest.h" 11 #include "gtest/gtest.h" 12 #include "objc/ForbiddenSubclassingCheck.h" 13 14 using namespace clang::tidy::objc; 15 16 namespace clang { 17 namespace tidy { 18 namespace test { 19 20 TEST(ObjCForbiddenSubclassing, AllowedSubclass) { 21 std::vector<ClangTidyError> Errors; 22 runCheckOnCode<ForbiddenSubclassingCheck>( 23 "@interface Foo\n" 24 "@end\n" 25 "@interface Bar : Foo\n" 26 "@end\n", 27 &Errors, 28 "input.m"); 29 EXPECT_EQ(0ul, Errors.size()); 30 } 31 32 TEST(ObjCForbiddenSubclassing, ForbiddenSubclass) { 33 std::vector<ClangTidyError> Errors; 34 runCheckOnCode<ForbiddenSubclassingCheck>( 35 "@interface UIImagePickerController\n" 36 "@end\n" 37 "@interface Foo : UIImagePickerController\n" 38 "@end\n", 39 &Errors, 40 "input.m"); 41 EXPECT_EQ(1ul, Errors.size()); 42 EXPECT_EQ( 43 "Objective-C interface 'Foo' subclasses 'UIImagePickerController', which is not intended to be subclassed", 44 Errors[0].Message.Message); 45 } 46 47 } // namespace test 48 } // namespace tidy 49 } // namespace clang 50