diff options
Diffstat (limited to 'clang-tools-extra/unittests/clang-tidy/ObjCModuleTest.cpp')
-rw-r--r-- | clang-tools-extra/unittests/clang-tidy/ObjCModuleTest.cpp | 30 |
1 files changed, 29 insertions, 1 deletions
diff --git a/clang-tools-extra/unittests/clang-tidy/ObjCModuleTest.cpp b/clang-tools-extra/unittests/clang-tidy/ObjCModuleTest.cpp index c50480a65fc..92ae8e1038f 100644 --- a/clang-tools-extra/unittests/clang-tidy/ObjCModuleTest.cpp +++ b/clang-tools-extra/unittests/clang-tidy/ObjCModuleTest.cpp @@ -9,12 +9,40 @@ #include "ClangTidyTest.h" #include "gtest/gtest.h" +#include "objc/ForbiddenSubclassingCheck.h" + +using namespace clang::tidy::objc; namespace clang { namespace tidy { namespace test { -// TODO(D39142) Add unit tests for the ObjC module here once a check lands. +TEST(ObjCForbiddenSubclassing, AllowedSubclass) { + std::vector<ClangTidyError> Errors; + runCheckOnCode<ForbiddenSubclassingCheck>( + "@interface Foo\n" + "@end\n" + "@interface Bar : Foo\n" + "@end\n", + &Errors, + "input.m"); + EXPECT_EQ(0ul, Errors.size()); +} + +TEST(ObjCForbiddenSubclassing, ForbiddenSubclass) { + std::vector<ClangTidyError> Errors; + runCheckOnCode<ForbiddenSubclassingCheck>( + "@interface UIImagePickerController\n" + "@end\n" + "@interface Foo : UIImagePickerController\n" + "@end\n", + &Errors, + "input.m"); + EXPECT_EQ(1ul, Errors.size()); + EXPECT_EQ( + "Objective-C interface 'Foo' subclasses 'UIImagePickerController', which is not intended to be subclassed", + Errors[0].Message.Message); +} } // namespace test } // namespace tidy |