main
1//
2// Licensed under the terms in License.txt
3//
4// Copyright 2010 Allen Ding. All rights reserved.
5//
6
7#import "KWBeEmptyMatcher.h"
8#import "KWFormatter.h"
9
10@interface KWBeEmptyMatcher()
11
12#pragma mark -
13#pragma mark Properties
14
15@property (nonatomic, readwrite) NSUInteger count;
16
17@end
18
19@implementation KWBeEmptyMatcher
20
21#pragma mark -
22#pragma mark Properties
23
24@synthesize count;
25
26#pragma mark -
27#pragma mark Getting Matcher Strings
28
29+ (NSArray *)matcherStrings {
30 return @[@"beEmpty"];
31}
32
33#pragma mark -
34#pragma mark Matching
35
36- (BOOL)evaluate {
37 if ([self.subject respondsToSelector:@selector(count)]) {
38 self.count = [self.subject count];
39 return self.count == 0;
40 }
41 else if ([self.subject respondsToSelector:@selector(length)]) {
42 self.count = [self.subject length];
43 return self.count == 0;
44 }
45
46 [NSException raise:@"KWMatcherException" format:@"subject does not respond to -count or -length"];
47 return NO;
48}
49
50#pragma mark -
51#pragma mark Getting Failure Messages
52
53- (NSString *)countPhrase {
54 if (self.count == 1)
55 return @"1 item";
56 else
57 return [NSString stringWithFormat:@"%u items", (unsigned)self.count];
58}
59
60- (NSString *)failureMessageForShould {
61 return [NSString stringWithFormat:@"expected subject to be empty, got %@", [self countPhrase]];
62}
63
64- (NSString *)failureMessageForShouldNot {
65 return @"expected subject not to be empty";
66}
67
68- (NSString *)description
69{
70 return @"be empty";
71}
72
73#pragma mark -
74#pragma mark Configuring Matchers
75
76- (void)beEmpty {
77}
78
79@end