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

Commit 6703c95

Browse files
committed
Merge pull request #543 from victormayorov/master
Implemented test for crash in ASCollectionView on reloadData
2 parents 4272164 + 01771f7 commit 6703c95

2 files changed

Lines changed: 97 additions & 0 deletions

File tree

AsyncDisplayKit.xcodeproj/project.pbxproj

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -186,6 +186,7 @@
186186
509E68651B3AEDC5009B9150 /* CGRect+ASConvenience.h in Headers */ = {isa = PBXBuildFile; fileRef = 205F0E1F1B376416007741D0 /* CGRect+ASConvenience.h */; };
187187
509E68661B3AEDD7009B9150 /* CGRect+ASConvenience.m in Sources */ = {isa = PBXBuildFile; fileRef = 205F0E201B376416007741D0 /* CGRect+ASConvenience.m */; };
188188
6BDC61F61979037800E50D21 /* AsyncDisplayKit.h in Headers */ = {isa = PBXBuildFile; fileRef = 6BDC61F51978FEA400E50D21 /* AsyncDisplayKit.h */; settings = {ATTRIBUTES = (Public, ); }; };
189+
9F06E5CD1B4CAF4200F015D8 /* ASCollectionViewTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 9F06E5CC1B4CAF4200F015D8 /* ASCollectionViewTests.m */; };
189190
AC21EC101B3D0BF600C8B19A /* ASStackLayoutChild.h in Headers */ = {isa = PBXBuildFile; fileRef = AC21EC0F1B3D0BF600C8B19A /* ASStackLayoutChild.h */; settings = {ATTRIBUTES = (Public, ); }; };
190191
AC3C4A511A1139C100143C57 /* ASCollectionView.h in Headers */ = {isa = PBXBuildFile; fileRef = AC3C4A4F1A1139C100143C57 /* ASCollectionView.h */; settings = {ATTRIBUTES = (Public, ); }; };
191192
AC3C4A521A1139C100143C57 /* ASCollectionView.mm in Sources */ = {isa = PBXBuildFile; fileRef = AC3C4A501A1139C100143C57 /* ASCollectionView.mm */; };
@@ -524,6 +525,7 @@
524525
4640521E1A3F83C40061C0BA /* ASMultidimensionalArrayUtils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ASMultidimensionalArrayUtils.h; sourceTree = "<group>"; };
525526
4640521F1A3F83C40061C0BA /* ASMultidimensionalArrayUtils.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ASMultidimensionalArrayUtils.mm; sourceTree = "<group>"; };
526527
6BDC61F51978FEA400E50D21 /* AsyncDisplayKit.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AsyncDisplayKit.h; sourceTree = "<group>"; };
528+
9F06E5CC1B4CAF4200F015D8 /* ASCollectionViewTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ASCollectionViewTests.m; sourceTree = "<group>"; };
527529
AC21EC0F1B3D0BF600C8B19A /* ASStackLayoutChild.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ASStackLayoutChild.h; path = AsyncDisplayKit/Layout/ASStackLayoutChild.h; sourceTree = "<group>"; };
528530
AC3C4A4F1A1139C100143C57 /* ASCollectionView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ASCollectionView.h; sourceTree = "<group>"; };
529531
AC3C4A501A1139C100143C57 /* ASCollectionView.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ASCollectionView.mm; sourceTree = "<group>"; };
@@ -746,6 +748,7 @@
746748
242995D21B29743C00090100 /* ASBasicImageDownloaderTests.m */,
747749
29CDC2E11AAE70D000833CA4 /* ASBasicImageDownloaderContextTests.m */,
748750
296A0A341A951ABF005ACEAA /* ASBatchFetchingTests.m */,
751+
9F06E5CC1B4CAF4200F015D8 /* ASCollectionViewTests.m */,
749752
2911485B1A77147A005D0878 /* ASControlNodeTests.m */,
750753
ACF6ED541B178DC700DA7C62 /* ASDimensionTests.mm */,
751754
058D0A2D195D057000B7D73C /* ASDisplayLayerTests.m */,
@@ -1444,6 +1447,7 @@
14441447
058D0A39195D057000B7D73C /* ASDisplayNodeAppearanceTests.m in Sources */,
14451448
058D0A41195D057000B7D73C /* ASTextNodeWordKernerTests.mm in Sources */,
14461449
ACF6ED5C1B178DC700DA7C62 /* ASCenterLayoutSpecSnapshotTests.mm in Sources */,
1450+
9F06E5CD1B4CAF4200F015D8 /* ASCollectionViewTests.m in Sources */,
14471451
058D0A40195D057000B7D73C /* ASTextNodeTests.m in Sources */,
14481452
3C9C128519E616EF00E942A0 /* ASTableViewTests.m in Sources */,
14491453
058D0A38195D057000B7D73C /* ASDisplayLayerTests.m in Sources */,
Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
//
2+
// ASCollectionViewTests.m
3+
// AsyncDisplayKit
4+
//
5+
// Copyright (c) 2015 Facebook. All rights reserved.
6+
//
7+
8+
#import <XCTest/XCTest.h>
9+
#import <AsyncDisplayKit/ASCollectionView.h>
10+
11+
@interface ASCollectionViewTestDelegate : NSObject <ASCollectionViewDataSource, ASCollectionViewDelegate>
12+
13+
@property (nonatomic, assign) NSInteger numberOfSections;
14+
@property (nonatomic, assign) NSInteger numberOfItemsInSection;
15+
16+
@end
17+
18+
@implementation ASCollectionViewTestDelegate
19+
20+
- (id)initWithNumberOfSections:(NSInteger)numberOfSections numberOfItemsInSection:(NSInteger)numberOfItemsInSection {
21+
if (self = [super init]) {
22+
_numberOfSections = numberOfSections;
23+
_numberOfItemsInSection = numberOfItemsInSection;
24+
}
25+
26+
return self;
27+
}
28+
29+
- (ASCellNode *)collectionView:(ASCollectionView *)collectionView nodeForItemAtIndexPath:(NSIndexPath *)indexPath {
30+
ASTextCellNode *textCellNode = [ASTextCellNode new];
31+
textCellNode.text = indexPath.description;
32+
33+
return textCellNode;
34+
}
35+
36+
- (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView {
37+
return self.numberOfSections;
38+
}
39+
40+
- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section {
41+
return self.numberOfItemsInSection;
42+
}
43+
44+
@end
45+
46+
@interface ASCollectionViewTestController: UIViewController
47+
48+
@property (nonatomic, strong) ASCollectionViewTestDelegate *asyncDelegate;
49+
@property (nonatomic, strong) ASCollectionView *collectionView;
50+
51+
@end
52+
53+
@implementation ASCollectionViewTestController
54+
55+
- (void)viewDidLoad {
56+
[super viewDidLoad];
57+
58+
self.asyncDelegate = [[ASCollectionViewTestDelegate alloc] initWithNumberOfSections:10 numberOfItemsInSection:10];
59+
60+
self.collectionView = [[ASCollectionView alloc] initWithFrame:self.view.bounds
61+
collectionViewLayout:[UICollectionViewFlowLayout new]];
62+
self.collectionView.asyncDataSource = self.asyncDelegate;
63+
self.collectionView.asyncDelegate = self.asyncDelegate;
64+
65+
[self.view addSubview:self.collectionView];
66+
}
67+
68+
- (void)viewWillLayoutSubviews {
69+
[super viewWillLayoutSubviews];
70+
71+
self.collectionView.frame = self.view.bounds;
72+
}
73+
74+
@end
75+
76+
@interface ASCollectionViewTests : XCTestCase
77+
78+
@end
79+
80+
@implementation ASCollectionViewTests
81+
82+
- (void)DISABLED_testCollectionViewController {
83+
ASCollectionViewTestController *testController = [[ASCollectionViewTestController alloc] initWithNibName:nil bundle:nil];
84+
85+
UIView *containerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)];
86+
[containerView addSubview:testController.view];
87+
88+
[testController.collectionView reloadData];
89+
90+
[[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:1.0]];
91+
}
92+
93+
@end

0 commit comments

Comments
 (0)