ComponentKitTests/CKSubclassOverridesSelectorTests.mm (70 lines of code) (raw):
/*
* Copyright (c) 2014-present, Facebook, Inc.
* All rights reserved.
*
* This source code is licensed under the BSD-style license found in the
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*
*/
#import <XCTest/XCTest.h>
#import <ComponentKit/CKInternalHelpers.h>
@interface Subclass: NSObject
- (void)method;
+ (void)classMethod;
@end
@interface CKSubclassOverridesSelectorMethodTests : XCTestCase
@end
@implementation CKSubclassOverridesSelectorMethodTests
- (void)test_InstanceMethod_WhenSuperclassIsNil_DoesNotConsiderAsOverride
{
XCTAssertFalse(CKSubclassOverridesInstanceMethod(Nil, [NSObject class], @selector(description)));
}
- (void)test_InstanceMethod_WhenSubclassIsNil_DoesNotConsiderAsOverride
{
XCTAssertFalse(CKSubclassOverridesInstanceMethod([NSObject class], Nil, @selector(description)));
}
- (void)test_InstanceMethod_IfSuperclassDoesNotImplementSelector_DoesNotConsiderAsOverride
{
XCTAssertFalse(CKSubclassOverridesInstanceMethod([NSObject class], [Subclass class], @selector(method)));
}
- (void)test_InstanceMethod_IfClassesAreNotRelated_DoesNotConsiderAsOverride
{
XCTAssertFalse(CKSubclassOverridesInstanceMethod([NSObject class], [NSProxy class], @selector(description)));
}
- (void)test_InstanceMethod_IfSubclassDoesNotOverrideMethod_DoesNotConsiderAsOverride
{
XCTAssertFalse(CKSubclassOverridesInstanceMethod([NSObject class], [Subclass class], @selector(isEqual:)));
}
- (void)test_InstanceMethod_IfSubclassOverridesMethod_DoesConsiderAsOverride
{
XCTAssertTrue(CKSubclassOverridesInstanceMethod([NSObject class], [Subclass class], @selector(description)));
}
- (void)test_ClassMethod_WhenSuperclassIsNil_DoesNotConsiderAsOverride
{
XCTAssertFalse(CKSubclassOverridesClassMethod(Nil, [NSObject class], @selector(description)));
}
- (void)test_ClassMethod_WhenSubclassIsNil_DoesNotConsiderAsOverride
{
XCTAssertFalse(CKSubclassOverridesClassMethod([NSObject class], Nil, @selector(description)));
}
- (void)test_ClassMethod_IfSuperclassDoesNotImplementSelector_DoesNotConsiderAsOverride
{
XCTAssertFalse(CKSubclassOverridesClassMethod([NSObject class], [Subclass class], @selector(classMethod)));
}
- (void)test_ClassMethod_IfClassesAreNotRelated_DoesNotConsiderAsOverride
{
XCTAssertFalse(CKSubclassOverridesClassMethod([NSObject class], [NSProxy class], @selector(description)));
}
- (void)test_ClassMethod_IfSubclassDoesNotOverrideMethod_DoesNotConsiderAsOverride
{
XCTAssertFalse(CKSubclassOverridesClassMethod([NSObject class], [Subclass class], @selector(load)));
}
- (void)test_ClassMethod_IfSubclassOverridesMethod_DoesConsiderAsOverride
{
XCTAssertTrue(CKSubclassOverridesClassMethod([NSObject class], [Subclass class], @selector(debugDescription)));
}
@end
@implementation Subclass
- (void)method {}
+ (void)classMethod {}
- (NSString *)description
{
return @"";
}
+ (NSString *)debugDescription
{
return @"";
}
@end