summaryrefslogtreecommitdiffstats
path: root/clang-tools-extra/unittests/clang-tidy/ObjCModuleTest.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'clang-tools-extra/unittests/clang-tidy/ObjCModuleTest.cpp')
-rw-r--r--clang-tools-extra/unittests/clang-tidy/ObjCModuleTest.cpp30
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
OpenPOWER on IntegriCloud