39 lines
1.7 KiB
Objective-C
39 lines
1.7 KiB
Objective-C
#import "EXPMatchers+equal.h"
|
|
#import "EXPMatcherHelpers.h"
|
|
|
|
EXPMatcherImplementationBegin(_equal, (id expected)) {
|
|
match(^BOOL{
|
|
if((actual == expected) || [actual isEqual:expected]) {
|
|
return YES;
|
|
} else if([actual isKindOfClass:[NSNumber class]] && [expected isKindOfClass:[NSNumber class]]) {
|
|
if([actual isKindOfClass:[NSDecimalNumber class]] || [expected isKindOfClass:[NSDecimalNumber class]]) {
|
|
NSDecimalNumber *actualDecimalNumber = [NSDecimalNumber decimalNumberWithDecimal:[(NSNumber *) actual decimalValue]];
|
|
NSDecimalNumber *expectedDecimalNumber = [NSDecimalNumber decimalNumberWithDecimal:[(NSNumber *) expected decimalValue]];
|
|
return [actualDecimalNumber isEqualToNumber:expectedDecimalNumber];
|
|
}
|
|
else {
|
|
if(EXPIsNumberFloat((NSNumber *)actual) || EXPIsNumberFloat((NSNumber *)expected)) {
|
|
return [(NSNumber *)actual floatValue] == [(NSNumber *)expected floatValue];
|
|
}
|
|
}
|
|
}
|
|
return NO;
|
|
});
|
|
|
|
failureMessageForTo(^NSString *{
|
|
NSString *expectedDescription = EXPDescribeObject(expected);
|
|
NSString *actualDescription = EXPDescribeObject(actual);
|
|
|
|
if (![expectedDescription isEqualToString:actualDescription]) {
|
|
return [NSString stringWithFormat:@"expected: %@, got: %@", EXPDescribeObject(expected), EXPDescribeObject(actual)];
|
|
} else {
|
|
return [NSString stringWithFormat:@"expected (%@): %@, got (%@): %@", NSStringFromClass([expected class]), EXPDescribeObject(expected), NSStringFromClass([actual class]), EXPDescribeObject(actual)];
|
|
}
|
|
});
|
|
|
|
failureMessageForNotTo(^NSString *{
|
|
return [NSString stringWithFormat:@"expected: not %@, got: %@", EXPDescribeObject(expected), EXPDescribeObject(actual)];
|
|
});
|
|
}
|
|
EXPMatcherImplementationEnd
|