Skip to content

Commit

Permalink
Merge pull request #184 from dchohfi/master
Browse files Browse the repository at this point in the history
Making respondTo matcher also checks if instance of classes also respondsToSelector:
  • Loading branch information
orta committed Jun 24, 2016
2 parents b8b75c8 + c26c455 commit 7c048e9
Show file tree
Hide file tree
Showing 4 changed files with 9 additions and 1 deletion.
6 changes: 5 additions & 1 deletion Expecta/Matchers/EXPMatchers+respondTo.m
Expand Up @@ -4,12 +4,16 @@
EXPMatcherImplementationBegin(respondTo, (SEL expected)) {
BOOL actualIsNil = (actual == nil);
BOOL expectedIsNull = (expected == NULL);

prerequisite (^BOOL {
return !(actualIsNil || expectedIsNull);
});

match(^BOOL {
if ([actual respondsToSelector:@selector(instancesRespondToSelector:)] &&
[actual instancesRespondToSelector:expected]) {
return YES;
}
return [actual respondsToSelector:expected];
});

Expand Down
1 change: 1 addition & 0 deletions Tests/Helpers/Fixtures.h
Expand Up @@ -10,4 +10,5 @@

@interface Baz : NSObject <Protocol>
+ (void)bazClassMethod;
- (void)bazInstanceMethod;
@end
1 change: 1 addition & 0 deletions Tests/Helpers/Fixtures.m
Expand Up @@ -8,4 +8,5 @@ @implementation Bar; @end

@implementation Baz
+ (void)bazClassMethod {}
- (void)bazInstanceMethod {}
@end
2 changes: 2 additions & 0 deletions Tests/Matchers/EXPMatchers+respondToTest.m
Expand Up @@ -17,6 +17,7 @@ - (void)setUp {
- (void)test_respondTo {
assertPass(test_expect(foo).respondTo(@selector(fooMethod)));
assertPass(test_expect([Baz class]).respondTo(@selector(bazClassMethod)));
assertPass(test_expect([Baz class]).respondTo(@selector(bazInstanceMethod)));

assertFail(test_expect(baz).respondTo(@selector(fooMethod)), ([NSString stringWithFormat:@"expected: <Baz: %p> to respond to fooMethod", baz]));
assertFail(test_expect([Foo class]).respondTo(@selector(bazClassMethod)), ([NSString stringWithFormat:@"expected: Foo to respond to bazClassMethod"]));
Expand All @@ -28,6 +29,7 @@ - (void)test_respondTo {
- (void)test_toNot_respondTo {
assertPass(test_expect(baz).notTo.respondTo(@selector(fooMethod)));
assertPass(test_expect([Foo class]).notTo.respondTo(@selector(bazClassMethod)));
assertPass(test_expect([Foo class]).notTo.respondTo(@selector(bazInstanceMethod)));

assertFail(test_expect(foo).notTo.respondTo(@selector(fooMethod)), ([NSString stringWithFormat:@"expected: <Foo: %p> not to respond to fooMethod", foo]));
assertFail(test_expect([Baz class]).notTo.respondTo(@selector(bazClassMethod)), ([NSString stringWithFormat:@"expected: Baz not to respond to bazClassMethod"]));
Expand Down

0 comments on commit 7c048e9

Please sign in to comment.