Files
GradientButton/Example/Pods/Expecta/Expecta/Matchers/EXPMatchers+raiseWithReason.m
T
2016-01-11 19:34:39 +01:00

36 lines
1.6 KiB
Objective-C

#import "EXPMatchers+raiseWithReason.h"
#import "EXPDefines.h"
EXPMatcherImplementationBegin(raiseWithReason, (NSString *expectedExceptionName, NSString *expectedReason)) {
__block NSException *exceptionCaught = nil;
match(^BOOL{
BOOL expectedExceptionCaught = NO;
@try {
((EXPBasicBlock)actual)();
} @catch(NSException *e) {
exceptionCaught = e;
expectedExceptionCaught = (((expectedExceptionName == nil) || [[exceptionCaught name] isEqualToString:expectedExceptionName]) &&
((expectedReason == nil) || ([[exceptionCaught reason] isEqualToString:expectedReason])));
}
return expectedExceptionCaught;
});
failureMessageForTo(^NSString *{
return [NSString stringWithFormat:@"expected: %@ (%@), got: %@ (%@)",
expectedExceptionName ?: @"any exception",
expectedReason ?: @"any reason",
exceptionCaught ? [exceptionCaught name] : @"no exception",
exceptionCaught ? [exceptionCaught reason] : @""];
});
failureMessageForNotTo(^NSString *{
return [NSString stringWithFormat:@"expected: %@ (%@), got: %@ (%@)",
expectedExceptionName ? [NSString stringWithFormat:@"not %@", expectedExceptionName] : @"no exception",
expectedReason ? [NSString stringWithFormat:@"not '%@'", expectedReason] : @"no reason",
exceptionCaught ? [exceptionCaught name] : @"no exception",
exceptionCaught ? [exceptionCaught reason] : @"no reason"];
});
}
EXPMatcherImplementationEnd