Files
MonsterCards/iOS/Pods/OCHamcrest/Source/Library/Number/HCOrderingComparison.m
Tom Hicks c3031fbc39 Adds cocoapods for libraries.
Adds OCMockito and OCHamcrest libs.
2020-09-05 22:06:51 -07:00

98 lines
3.0 KiB
Objective-C

// OCHamcrest by Jon Reid, https://qualitycoding.org/
// Copyright 2019 hamcrest.org. See LICENSE.txt
#import "HCOrderingComparison.h"
@interface HCOrderingComparison ()
@property (nonatomic, strong, readonly) id expected;
@property (nonatomic, assign, readonly) NSComparisonResult minCompare;
@property (nonatomic, assign, readonly) NSComparisonResult maxCompare;
@property (nonatomic, copy, readonly) NSString *comparisonDescription;
@end
@implementation HCOrderingComparison
- (instancetype)initComparing:(id)expectedValue
minCompare:(NSComparisonResult)min
maxCompare:(NSComparisonResult)max
comparisonDescription:(NSString *)description
{
if (![expectedValue respondsToSelector:@selector(compare:)])
{
@throw [NSException exceptionWithName: @"UncomparableObject"
reason: @"Object must respond to compare:"
userInfo: nil];
}
self = [super init];
if (self)
{
_expected = expectedValue;
_minCompare = min;
_maxCompare = max;
_comparisonDescription = [description copy];
}
return self;
}
- (BOOL)matches:(nullable id)item
{
if (item == nil)
return NO;
NSComparisonResult compare;
@try
{
compare = [self.expected compare:item];
}
@catch (NSException *e)
{
return NO;
}
return self.minCompare <= compare && compare <= self.maxCompare;
}
- (void)describeTo:(id <HCDescription>)description
{
[[[[description appendText:@"a value "]
appendText:self.comparisonDescription]
appendText:@" "]
appendDescriptionOf:self.expected];
}
@end
id HC_greaterThan(id value)
{
return [[HCOrderingComparison alloc] initComparing:value
minCompare:NSOrderedAscending
maxCompare:NSOrderedAscending
comparisonDescription:@"greater than"];
}
id HC_greaterThanOrEqualTo(id value)
{
return [[HCOrderingComparison alloc] initComparing:value
minCompare:NSOrderedAscending
maxCompare:NSOrderedSame
comparisonDescription:@"greater than or equal to"];
}
id HC_lessThan(id value)
{
return [[HCOrderingComparison alloc] initComparing:value
minCompare:NSOrderedDescending
maxCompare:NSOrderedDescending
comparisonDescription:@"less than"];
}
id HC_lessThanOrEqualTo(id value)
{
return [[HCOrderingComparison alloc] initComparing:value
minCompare:NSOrderedSame
maxCompare:NSOrderedDescending
comparisonDescription:@"less than or equal to"];
}