forked from kiwi-bdd/Kiwi
-
Notifications
You must be signed in to change notification settings - Fork 55
/
KWHaveValueMatcherTest.m
114 lines (91 loc) · 4.6 KB
/
KWHaveValueMatcherTest.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
//
// Licensed under the terms in License.txt
//
// Copyright 2010 Allen Ding. All rights reserved.
//
#import "Kiwi.h"
#import "KiwiTestConfiguration.h"
#import "NSInvocation+KiwiAdditions.h"
#import "TestClasses.h"
#if KW_TESTS_ENABLED
@interface KWHaveValueMatcherTest : SenTestCase
@end
@implementation KWHaveValueMatcherTest
- (void)testItShouldMatchValuesUsingKeyValueCoding {
id subject = [Cruiser cruiserWithCallsign:@"Alpha Bravo Zero"];
id matcher = [KWHaveValueMatcher matcherWithSubject:subject];
[matcher haveValue:@"Alpha Bravo Zero" forKey:@"callsign"];
STAssertTrue([matcher evaluate], @"expected positive match");
}
- (void)testItShouldNotMatchValuesUsingKeyValueCoding {
id subject = [Cruiser cruiserWithCallsign:@"Alpha Bravo Zero"];
id matcher = [KWHaveValueMatcher matcherWithSubject:subject];
[matcher haveValue:@"Alpha Bravo Charlie" forKey:@"callsign"];
STAssertFalse([matcher evaluate], @"expected negative match");
}
- (void)testItShouldMatchValuesUsingKeyPaths {
Cruiser *subject = [Cruiser cruiserWithCallsign:@"Alpha Bravo Zero"];
subject.engine = [Engine engineWithModel:@"Super Rocket Engine"];
id matcher = [KWHaveValueMatcher matcherWithSubject:subject];
[matcher haveValue:@"Super Rocket Engine" forKeyPath:@"engine.model"];
STAssertTrue([matcher evaluate], @"expected positive match");
}
- (void)testItShouldNotMatchValuesUsingKeyPaths {
Cruiser *subject = [Cruiser cruiserWithCallsign:@"Alpha Bravo Zero"];
subject.engine = [Engine engineWithModel:@"Super Rocket Engine"];
id matcher = [KWHaveValueMatcher matcherWithSubject:subject];
[matcher haveValue:@"Rubbish Rocket Engine" forKeyPath:@"engine.model"];
STAssertFalse([matcher evaluate], @"expected negative match");
}
- (void)testItShouldMatchValuesMatchUsingKeyValueCodingAndGenericMatcher {
id subject = [Cruiser cruiserWithCallsign:@"Alpha Bravo Zero"];
id matcher = [KWHaveValueMatcher matcherWithSubject:subject];
[matcher haveValue:hasPrefix(@"Alpha") forKey:@"callsign"];
STAssertTrue([matcher evaluate], @"expected positive match");
}
- (void)testItShouldNotMatchValuesMatchUsingKeyValueCodingAndGenericMatcher {
id subject = [Cruiser cruiserWithCallsign:@"Alpha Bravo Zero"];
id matcher = [KWHaveValueMatcher matcherWithSubject:subject];
[matcher haveValue:hasPrefix(@"Foxtrot") forKey:@"callsign"];
STAssertFalse([matcher evaluate], @"expected negative match");
}
- (void)testItShouldMatchValuesThatExistUsingKeyValueCoding {
id subject = [Cruiser cruiserWithCallsign:@"Alpha Bravo Zero"];
id matcher = [KWHaveValueMatcher matcherWithSubject:subject];
[matcher haveValueForKey:@"callsign"];
STAssertTrue([matcher evaluate], @"expected positive match");
}
- (void)testItShouldNotMatchValuesThatExistUsingKeyValueCoding {
id subject = [Cruiser cruiserWithCallsign:nil];
id matcher = [KWHaveValueMatcher matcherWithSubject:subject];
[matcher haveValueForKey:@"callsign"];
STAssertFalse([matcher evaluate], @"expected negative match");
}
- (void)testItShouldMatchValuesThatExistUsingKeyValueCodingAndKeyPaths {
Cruiser *subject = [Cruiser cruiserWithCallsign:@"Alpha Bravo Zero"];
subject.engine = [Engine engineWithModel:@"Super Rocket Engine"];
id matcher = [KWHaveValueMatcher matcherWithSubject:subject];
[matcher haveValueForKeyPath:@"engine.model"];
STAssertTrue([matcher evaluate], @"expected positive match");
}
- (void)testItShouldNotMatchValuesThatExistUsingKeyValueCodingAndKeyPaths {
id subject = [Cruiser cruiserWithCallsign:nil];
id matcher = [KWHaveValueMatcher matcherWithSubject:subject];
[matcher haveValueForKeyPath:@"engine.model"];
STAssertFalse([matcher evaluate], @"expected negative match");
}
- (void)testItShouldHaveHumanReadableDescription
{
id matcher = [KWHaveValueMatcher matcherWithSubject:nil];
[matcher haveValueForKey:@"callsign"];
STAssertEqualObjects(@"have value for key \"callsign\"", [matcher description], @"description should match");
[matcher haveValue:@"alpha" forKey:@"callsign"];
STAssertEqualObjects(@"have value \"alpha\" for key \"callsign\"", [matcher description], @"description should match");
matcher = [KWHaveValueMatcher matcherWithSubject:nil];
[matcher haveValueForKeyPath:@"engine.model"];
STAssertEqualObjects(@"have value for keypath \"engine.model\"", [matcher description], @"description should match");
[matcher haveValue:@"version-one" forKeyPath:@"engine.model"];
STAssertEqualObjects(@"have value \"version-one\" for keypath \"engine.model\"", [matcher description], @"description should match");
}
@end
#endif // #if KW_TESTS_ENABLED