12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- //
- // KWContainStringMatcher.m
- // Kiwi
- //
- // Created by Kristopher Johnson on 4/28/13.
- // Copyright (c) 2013 Allen Ding. All rights reserved.
- //
- #import "KWContainStringMatcher.h"
- #import "KWFormatter.h"
- @interface KWContainStringMatcher ()
- @property (nonatomic, copy) NSString *substring;
- @property (nonatomic) NSStringCompareOptions options;
- @end
- @implementation KWContainStringMatcher
- #pragma mark - Getting Matcher Strings
- + (NSArray *)matcherStrings {
- return @[@"containString:",
- @"containString:options:",
- @"startWithString:",
- @"endWithString:"];
- }
- #pragma mark - Matching
- - (BOOL)evaluate {
- NSString *subjectString = (NSString *)self.subject;
- if (![subjectString isKindOfClass:[NSString class]]) {
- [NSException raise:@"KWMatcherException" format:@"subject is not a string"];
- return NO;
- }
-
- NSRange range = [subjectString rangeOfString:self.substring options:self.options];
- return (range.location != NSNotFound);
- }
- #pragma mark - Getting Failure Messages
- - (NSString *)failureMessageForShould {
- return [NSString stringWithFormat:@"%@ did not contain string \"%@\"",
- [KWFormatter formatObject:self.subject],
- self.substring];
- }
- - (NSString *)failureMessageForShouldNot {
- return [NSString stringWithFormat:@"expected subject not to contain string \"%@\"",
- self.substring];
- }
- - (NSString *)description {
- return [NSString stringWithFormat:@"contain substring \"%@\"", self.substring];
- }
- #pragma mark - Configuring matchers
- - (void)containString:(NSString *)substring {
- self.substring = substring;
- self.options = 0;
- }
- - (void)containString:(NSString *)substring options:(NSStringCompareOptions)options {
- self.substring = substring;
- self.options = options;
- }
- - (void)startWithString:(NSString *)prefix {
- self.substring = prefix;
- self.options = NSAnchoredSearch;
- }
- - (void)endWithString:(NSString *)suffix {
- self.substring = suffix;
- self.options = NSAnchoredSearch | NSBackwardsSearch;
- }
- @end
|