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