Skip to content

Commit

Permalink
Merge pull request kiwi-bdd#397 from cristiankocza/id-as-default-retu…
Browse files Browse the repository at this point in the history
…rn-type

Using the objective-c default return type id instead of void for stubbed methods
  • Loading branch information
Marin Usalj committed Oct 18, 2013
2 parents 6f9ea59 + b74c61f commit ed3c084
Show file tree
Hide file tree
Showing 9 changed files with 18 additions and 6 deletions.
2 changes: 1 addition & 1 deletion Classes/Core/KWExampleSuite.m
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ - (NSArray *)invocationsForTestCase {
// Add a single dummy invocation for each example group

for (KWExample *exampleGroup in self.examples) {
NSMethodSignature *methodSignature = [NSMethodSignature signatureWithObjCTypes:[KWEncodingForVoidMethod() UTF8String]];
NSMethodSignature *methodSignature = [NSMethodSignature signatureWithObjCTypes:[KWEncodingForDefaultMethod() UTF8String]];
NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:methodSignature];
[invocations addObject:invocation];
[invocation kw_setExample:exampleGroup];
Expand Down
1 change: 1 addition & 0 deletions Classes/Core/KWStringUtilities.h
Original file line number Diff line number Diff line change
Expand Up @@ -16,3 +16,4 @@ BOOL KWStringHasWord(NSString *string, NSString *word);

NSString *KWEncodingWithObjCTypes(const char *firstType, ...) NS_REQUIRES_NIL_TERMINATION;
NSString *KWEncodingForVoidMethod(void);
NSString *KWEncodingForDefaultMethod(void);
4 changes: 4 additions & 0 deletions Classes/Core/KWStringUtilities.m
Original file line number Diff line number Diff line change
Expand Up @@ -86,3 +86,7 @@ BOOL KWStringHasWord(NSString *string, NSString *word) {
NSString *KWEncodingForVoidMethod(void) {
return KWEncodingWithObjCTypes(@encode(void), @encode(id), @encode(SEL), nil);
}

NSString *KWEncodingForDefaultMethod(void) {
return KWEncodingWithObjCTypes(@encode(id), @encode(id), @encode(SEL), nil);
}
2 changes: 1 addition & 1 deletion Classes/Matchers/KWHaveMatcher.m
Original file line number Diff line number Diff line change
Expand Up @@ -199,7 +199,7 @@ + (NSMethodSignature *)invocationCapturer:(KWInvocationCapturer *)anInvocationCa

// Arbitrary selectors are allowed as expectation expression terminals when
// the subject itself is a collection, so return a dummy method signature.
NSString *encoding = KWEncodingForVoidMethod();
NSString *encoding = KWEncodingForDefaultMethod();
return [NSMethodSignature signatureWithObjCTypes:[encoding UTF8String]];
}

Expand Down
2 changes: 1 addition & 1 deletion Classes/Matchers/KWReceiveMatcher.m
Original file line number Diff line number Diff line change
Expand Up @@ -165,7 +165,7 @@ + (NSMethodSignature *)invocationCapturer:(KWInvocationCapturer *)anInvocationCa
if ([verifier.subject respondsToSelector:aSelector])
return [verifier.subject methodSignatureForSelector:aSelector];

NSString *encoding = KWEncodingForVoidMethod();
NSString *encoding = KWEncodingForDefaultMethod();
return [NSMethodSignature signatureWithObjCTypes:[encoding UTF8String]];
}

Expand Down
2 changes: 1 addition & 1 deletion Classes/Mocking/KWMock.m
Original file line number Diff line number Diff line change
Expand Up @@ -411,7 +411,7 @@ - (NSMethodSignature *)methodSignatureForSelector:(SEL)aSelector {
if (methodSignature != nil)
return methodSignature;

NSString *encoding = KWEncodingForVoidMethod();
NSString *encoding = KWEncodingForDefaultMethod();
return [NSMethodSignature signatureWithObjCTypes:[encoding UTF8String]];
}

Expand Down
2 changes: 1 addition & 1 deletion Classes/Stubbing/NSObject+KiwiStubAdditions.m
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ - (NSMethodSignature *)invocationCapturer:(KWInvocationCapturer *)anInvocationCa
if (signature != nil)
return signature;

NSString *encoding = KWEncodingForVoidMethod();
NSString *encoding = KWEncodingForDefaultMethod();
return [NSMethodSignature signatureWithObjCTypes:[encoding UTF8String]];
}

Expand Down
2 changes: 1 addition & 1 deletion Classes/Verifiers/KWMatchVerifier.m
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,7 @@ - (NSMethodSignature *)methodSignatureForSelector:(SEL)aSelector {

// Return a dummy method signature so that problems can be handled in
// -forwardInvocation:.
NSString *encoding = KWEncodingForVoidMethod();
NSString *encoding = KWEncodingForDefaultMethod();
return [NSMethodSignature signatureWithObjCTypes:[encoding UTF8String]];
}

Expand Down
7 changes: 7 additions & 0 deletions Tests/KWStubTest.m
Original file line number Diff line number Diff line change
Expand Up @@ -153,6 +153,13 @@ - (void)testItShouldRetainValueWhenProcessingInvocationsThatContainsCopy {
STAssertEquals(retainCountAfter, retainCountBefore + 1, @"expected stub to retain value");
}

- (void)testItShouldUseIdAsDefaultReturnType{
id mock = [Cruiser mock];
SEL selector = NSSelectorFromString(@"unknownMethod");
[mock stub:selector];
STAssertEqualObjects(@([mock methodSignatureForSelector:selector].methodReturnType), @"@", @"expected id as default return type");
}

@end

#endif // #if KW_TESTS_ENABLED

0 comments on commit ed3c084

Please sign in to comment.