Skip to content
This repository was archived by the owner on Feb 2, 2023. It is now read-only.

Commit 5889c70

Browse files
committed
basic unit tests
1 parent 8a20007 commit 5889c70

File tree

1 file changed

+70
-0
lines changed

1 file changed

+70
-0
lines changed

AsyncDisplayKitTests/ASDisplayNodeTests.m

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,9 @@ @interface ASTestDisplayNode : ASDisplayNode
7171
@property (atomic, copy) CGSize(^calculateSizeBlock)(ASTestDisplayNode *node, CGSize size);
7272
@end
7373

74+
@interface ASTestResponderNode : ASTestDisplayNode
75+
@end
76+
7477
@implementation ASTestDisplayNode
7578

7679
- (CGSize)calculateSizeThatFits:(CGSize)constrainedSize
@@ -91,9 +94,57 @@ - (void)dealloc
9194
@interface UIDisplayNodeTestView : UIView
9295
@end
9396

97+
@interface UIResponderNodeTestView : _ASDisplayView
98+
@property(nonatomic) BOOL isFirstResponder;
99+
@end
100+
94101
@implementation UIDisplayNodeTestView
95102
@end
96103

104+
@interface ASTestWindow : UIWindow
105+
@end
106+
107+
@implementation ASTestWindow
108+
109+
- (id)firstResponder {
110+
return self.subviews.firstObject;
111+
}
112+
113+
@end
114+
115+
@implementation ASTestResponderNode
116+
117+
+ (Class)viewClass {
118+
return [UIResponderNodeTestView class];
119+
}
120+
121+
- (BOOL)canBecomeFirstResponder {
122+
return YES;
123+
}
124+
125+
@end
126+
127+
@implementation UIResponderNodeTestView
128+
129+
- (BOOL)becomeFirstResponder {
130+
self.isFirstResponder = YES;
131+
return YES;
132+
}
133+
134+
- (BOOL)canResignFirstResponder {
135+
return YES;
136+
}
137+
138+
- (BOOL)resignFirstResponder {
139+
if (self.isFirstResponder) {
140+
self.isFirstResponder = NO;
141+
return YES;
142+
}
143+
return NO;
144+
}
145+
146+
@end
147+
97148
@interface ASDisplayNodeTests : XCTestCase
98149
@end
99150

@@ -102,6 +153,25 @@ @implementation ASDisplayNodeTests
102153
dispatch_queue_t queue;
103154
}
104155

156+
- (void)testOverriddenFirstResponderBehavior {
157+
ASTestDisplayNode *node = [[ASTestResponderNode alloc] init];
158+
XCTAssertTrue([node canBecomeFirstResponder]);
159+
XCTAssertTrue([node becomeFirstResponder]);
160+
}
161+
162+
- (void)testDefaultFirstResponderBehavior {
163+
ASTestDisplayNode *node = [[ASTestDisplayNode alloc] init];
164+
XCTAssertFalse([node canBecomeFirstResponder]);
165+
XCTAssertFalse([node becomeFirstResponder]);
166+
}
167+
168+
- (void)testLayerBackedFirstResponderBehavior {
169+
ASTestDisplayNode *node = [[ASTestResponderNode alloc] init];
170+
node.layerBacked = YES;
171+
XCTAssertTrue([node canBecomeFirstResponder]);
172+
XCTAssertFalse([node becomeFirstResponder]);
173+
}
174+
105175
- (void)setUp
106176
{
107177
[super setUp];

0 commit comments

Comments
 (0)