57 lines
1.6 KiB
Objective-C
57 lines
1.6 KiB
Objective-C
// OCHamcrest by Jon Reid, https://qualitycoding.org/
|
|
// Copyright 2019 hamcrest.org. See LICENSE.txt
|
|
|
|
#import "HCIsDictionaryContaining.h"
|
|
|
|
#import "HCRequireNonNilObject.h"
|
|
#import "HCWrapInMatcher.h"
|
|
|
|
|
|
@interface HCIsDictionaryContaining ()
|
|
@property (nonatomic, strong, readonly) id <HCMatcher> keyMatcher;
|
|
@property (nonatomic, strong, readonly) id <HCMatcher> valueMatcher;
|
|
@end
|
|
|
|
@implementation HCIsDictionaryContaining
|
|
|
|
- (instancetype)initWithKeyMatcher:(id <HCMatcher>)keyMatcher
|
|
valueMatcher:(id <HCMatcher>)valueMatcher
|
|
{
|
|
self = [super init];
|
|
if (self)
|
|
{
|
|
_keyMatcher = keyMatcher;
|
|
_valueMatcher = valueMatcher;
|
|
}
|
|
return self;
|
|
}
|
|
|
|
- (BOOL)matches:(id)dict
|
|
{
|
|
if ([dict isKindOfClass:[NSDictionary class]])
|
|
for (id oneKey in dict)
|
|
if ([self.keyMatcher matches:oneKey] && [self.valueMatcher matches:dict[oneKey]])
|
|
return YES;
|
|
return NO;
|
|
}
|
|
|
|
- (void)describeTo:(id <HCDescription>)description
|
|
{
|
|
[[[[[description appendText:@"a dictionary containing { "]
|
|
appendDescriptionOf:self.keyMatcher]
|
|
appendText:@" = "]
|
|
appendDescriptionOf:self.valueMatcher]
|
|
appendText:@"; }"];
|
|
}
|
|
|
|
@end
|
|
|
|
|
|
id HC_hasEntry(id keyMatcher, id valueMatcher)
|
|
{
|
|
HCRequireNonNilObject(keyMatcher);
|
|
HCRequireNonNilObject(valueMatcher);
|
|
return [[HCIsDictionaryContaining alloc] initWithKeyMatcher:HCWrapInMatcher(keyMatcher)
|
|
valueMatcher:HCWrapInMatcher(valueMatcher)];
|
|
}
|