forked from kiwi-bdd/Kiwi
-
Notifications
You must be signed in to change notification settings - Fork 55
/
KWContextNodeTest.m
114 lines (95 loc) · 5.69 KB
/
KWContextNodeTest.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 "TestClasses.h"
#import "KWLetNode.h"
#if KW_TESTS_ENABLED
@interface KWContextNodeTest : SenTestCase
@end
@implementation KWContextNodeTest
- (void)testItShouldAllowOnlyOneBeforeEachBlock {
KWContextNode *node = [KWContextNode contextNodeWithCallSite:nil parentContext:nil description:nil];
__block NSUInteger tag = 0;
void (^block)(void) = ^{ ++tag; };
[node setBeforeEachNode:[KWBeforeEachNode beforeEachNodeWithCallSite:nil block:block]];
STAssertThrows([node setBeforeEachNode:[KWBeforeEachNode beforeEachNodeWithCallSite:nil block:block]], @"expected exception");
}
- (void)testItShouldAllowOnlyOneAfterEachBlock {
KWContextNode *node = [KWContextNode contextNodeWithCallSite:nil parentContext:nil description:nil];
__block NSUInteger tag = 0;
void (^block)(void) = ^{ ++tag; };
[node setAfterEachNode:[KWAfterEachNode afterEachNodeWithCallSite:nil block:block]];
STAssertThrows([node setAfterEachNode:[KWAfterEachNode afterEachNodeWithCallSite:nil block:block]], @"expected exception");
}
#pragma mark - Context registerMatchers nodes
- (void)testItAddsNewRegisterMatchersNodesToAnArray {
KWRegisterMatchersNode *nodeAbc = [[KWRegisterMatchersNode alloc] initWithCallSite:nil
namespacePrefix:@"ABC"];
KWRegisterMatchersNode *nodeXyz = [[KWRegisterMatchersNode alloc] initWithCallSite:nil
namespacePrefix:@"XYZ"];
KWContextNode *context = [KWContextNode contextNodeWithCallSite:nil
parentContext:nil
description:nil];
[context addRegisterMatchersNode:nodeAbc];
[context addRegisterMatchersNode:nodeXyz];
NSArray *expectedRegisterMatchersNodes = @[nodeAbc, nodeXyz];
STAssertEqualObjects(context.registerMatchersNodes,
expectedRegisterMatchersNodes,
@"register matchers nodes not stored in the order they were added");
}
#pragma mark - Context let nodes
- (void)testItAddsNewLetNodesToAnArray {
KWLetNode *letNode1 = [KWLetNode letNodeWithSymbolName:nil objectRef:nil block:nil];
KWLetNode *letNode2 = [KWLetNode letNodeWithSymbolName:nil objectRef:nil block:nil];
KWContextNode *context = [KWContextNode contextNodeWithCallSite:nil parentContext:nil description:nil];
[context addLetNode:letNode1];
[context addLetNode:letNode2];
NSArray *expectedLetNodes = [NSArray arrayWithObjects:letNode1, letNode2, nil];
STAssertEqualObjects(context.letNodes, expectedLetNodes, @"expected an array of let nodes in the order they were added");
}
- (void)testNewLetNodesHaveNoRelationships {
KWLetNode *letNode1 = [KWLetNode letNodeWithSymbolName:@"symbol" objectRef:nil block:nil];
KWLetNode *letNode2 = [KWLetNode letNodeWithSymbolName:@"symbol" objectRef:nil block:nil];
KWContextNode *context = [KWContextNode contextNodeWithCallSite:nil parentContext:nil description:nil];
[context addLetNode:letNode1];
[context addLetNode:letNode2];
STAssertNil(letNode1.child, @"expected first let node to have no child");
STAssertNil(letNode1.next, @"expected first let node to have no next node");
STAssertNil(letNode1.parent, @"expected first let node to have no parent");
STAssertNil(letNode1.previous, @"expected first let node to have no previous node");
STAssertNil(letNode2.child, @"expected second let node to have no child");
STAssertNil(letNode2.next, @"expected second let node to have no next node");
STAssertNil(letNode2.parent, @"expected second let node to have no parent");
STAssertNil(letNode2.previous, @"expected second let node to have no previous node");
}
- (void)testItBuildsATreeOfItsLetNodesWithoutAParentContext {
KWLetNode *letNode1 = [KWLetNode letNodeWithSymbolName:@"symbol1" objectRef:nil block:nil];
KWLetNode *letNode2 = [KWLetNode letNodeWithSymbolName:@"symbol2" objectRef:nil block:nil];
KWContextNode *context = [KWContextNode contextNodeWithCallSite:nil parentContext:nil description:nil];
[context addLetNode:letNode1];
[context addLetNode:letNode2];
KWLetNode *tree = [context letNodeTree];
STAssertEqualObjects(tree, letNode1, @"expected the root of the tree to be the first let node");
STAssertEqualObjects(tree.next, letNode2, @"expected the root's next node to be the second let node");
}
- (void)testItBuildsATreeBasedOnItsParentsTreeWithAParentContext {
KWLetNode *letNode1 = [KWLetNode letNodeWithSymbolName:@"symbol1" objectRef:nil block:nil];
KWLetNode *letNode2 = [KWLetNode letNodeWithSymbolName:@"symbol2" objectRef:nil block:nil];
KWContextNode *context1 = [KWContextNode contextNodeWithCallSite:nil parentContext:nil description:@"context1"];
[context1 addLetNode:letNode1];
[context1 addLetNode:letNode2];
KWLetNode *letNode3 = [KWLetNode letNodeWithSymbolName:@"symbol1" objectRef:nil block:nil];
KWContextNode *context2 = [KWContextNode contextNodeWithCallSite:nil parentContext:context1 description:@"context2"];
[context2 addLetNode:letNode3];
[context1 addContextNode:context2];
KWLetNode *tree = [context2 letNodeTree];
STAssertEqualObjects(tree, letNode1, @"expected the root of the tree to be the first let node");
STAssertEqualObjects(tree.next, letNode2, @"expected the root's next node to be the second let node");
STAssertEqualObjects(tree.child, letNode3, @"expected the root's child node to be the third let node");
}
@end
#endif // #if KW_TESTS_ENABLED