mirror of
https://github.com/Instagram/IGListKit
synced 2026-05-24 09:48:21 +00:00
Unit tests for -scrollToObject horizontal end position
Summary: Fixes #238 Try to finish what I started 😂 Closes https://github.com/Instagram/IGListKit/pull/247 Differential Revision: D4220011 Pulled By: rnystrom fbshipit-source-id: 9f4e1bd4f112f69f601c83d6604dc18bc27f0c68
This commit is contained in:
parent
f1a1b941d0
commit
4231235620
6 changed files with 141 additions and 6 deletions
|
|
@ -62,6 +62,10 @@
|
|||
828540461DDFF59C00118B94 /* IGListGridCollectionViewLayout.m in Sources */ = {isa = PBXBuildFile; fileRef = 828540441DDFF59C00118B94 /* IGListGridCollectionViewLayout.m */; };
|
||||
828540481DDFF5D400118B94 /* IGListGridCollectionViewLayoutTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 828540471DDFF5D400118B94 /* IGListGridCollectionViewLayoutTests.m */; };
|
||||
828540491DDFF5D400118B94 /* IGListGridCollectionViewLayoutTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 828540471DDFF5D400118B94 /* IGListGridCollectionViewLayoutTests.m */; };
|
||||
8285404C1DE40C6E00118B94 /* IGListTestHorizontalSection.m in Sources */ = {isa = PBXBuildFile; fileRef = 8285404B1DE40C6E00118B94 /* IGListTestHorizontalSection.m */; };
|
||||
8285404D1DE40C6E00118B94 /* IGListTestHorizontalSection.m in Sources */ = {isa = PBXBuildFile; fileRef = 8285404B1DE40C6E00118B94 /* IGListTestHorizontalSection.m */; };
|
||||
828540501DE40D2D00118B94 /* IGListTestAdapterHorizontalDataSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 8285404F1DE40D2D00118B94 /* IGListTestAdapterHorizontalDataSource.m */; };
|
||||
828540511DE40D2D00118B94 /* IGListTestAdapterHorizontalDataSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 8285404F1DE40D2D00118B94 /* IGListTestAdapterHorizontalDataSource.m */; };
|
||||
829D7BAA1DD1819000549816 /* IGListSectionMapTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 829D7BA81DD1816400549816 /* IGListSectionMapTests.m */; };
|
||||
88144F071D870EDC007C7F66 /* IGListAdapterE2ETests.m in Sources */ = {isa = PBXBuildFile; fileRef = 88144EE21D870EDC007C7F66 /* IGListAdapterE2ETests.m */; };
|
||||
88144F081D870EDC007C7F66 /* IGListAdapterTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 88144EE31D870EDC007C7F66 /* IGListAdapterTests.m */; };
|
||||
|
|
@ -289,6 +293,10 @@
|
|||
828540431DDFF59C00118B94 /* IGListGridCollectionViewLayout.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListGridCollectionViewLayout.h; sourceTree = "<group>"; };
|
||||
828540441DDFF59C00118B94 /* IGListGridCollectionViewLayout.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IGListGridCollectionViewLayout.m; sourceTree = "<group>"; };
|
||||
828540471DDFF5D400118B94 /* IGListGridCollectionViewLayoutTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IGListGridCollectionViewLayoutTests.m; sourceTree = "<group>"; };
|
||||
8285404A1DE40C6E00118B94 /* IGListTestHorizontalSection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListTestHorizontalSection.h; sourceTree = "<group>"; };
|
||||
8285404B1DE40C6E00118B94 /* IGListTestHorizontalSection.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IGListTestHorizontalSection.m; sourceTree = "<group>"; };
|
||||
8285404E1DE40D2D00118B94 /* IGListTestAdapterHorizontalDataSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListTestAdapterHorizontalDataSource.h; sourceTree = "<group>"; };
|
||||
8285404F1DE40D2D00118B94 /* IGListTestAdapterHorizontalDataSource.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IGListTestAdapterHorizontalDataSource.m; sourceTree = "<group>"; };
|
||||
829D7BA81DD1816400549816 /* IGListSectionMapTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IGListSectionMapTests.m; sourceTree = "<group>"; };
|
||||
841726B542A3E9A4BD48946F /* Pods-IGListKit-tvOSTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-IGListKit-tvOSTests.debug.xcconfig"; path = "Pods/Target Support Files/Pods-IGListKit-tvOSTests/Pods-IGListKit-tvOSTests.debug.xcconfig"; sourceTree = "<group>"; };
|
||||
88144EE21D870EDC007C7F66 /* IGListAdapterE2ETests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IGListAdapterE2ETests.m; sourceTree = "<group>"; };
|
||||
|
|
@ -443,12 +451,16 @@
|
|||
children = (
|
||||
88144EF11D870EDC007C7F66 /* IGListTestAdapterDataSource.h */,
|
||||
88144EF21D870EDC007C7F66 /* IGListTestAdapterDataSource.m */,
|
||||
8285404E1DE40D2D00118B94 /* IGListTestAdapterHorizontalDataSource.h */,
|
||||
8285404F1DE40D2D00118B94 /* IGListTestAdapterHorizontalDataSource.m */,
|
||||
8240C7F91DC2F6CF00B3AAE7 /* IGListTestAdapterStoryboardDataSource.h */,
|
||||
8240C7FA1DC2F6CF00B3AAE7 /* IGListTestAdapterStoryboardDataSource.m */,
|
||||
88144EF31D870EDC007C7F66 /* IGListTestOffsettingLayout.h */,
|
||||
88144EF41D870EDC007C7F66 /* IGListTestOffsettingLayout.m */,
|
||||
88144EF51D870EDC007C7F66 /* IGListTestSection.h */,
|
||||
88144EF61D870EDC007C7F66 /* IGListTestSection.m */,
|
||||
8285404A1DE40C6E00118B94 /* IGListTestHorizontalSection.h */,
|
||||
8285404B1DE40C6E00118B94 /* IGListTestHorizontalSection.m */,
|
||||
8240C7F61DC2F3FB00B3AAE7 /* IGListTestStoryboardSection.h */,
|
||||
8240C7F71DC2F3FB00B3AAE7 /* IGListTestStoryboardSection.m */,
|
||||
88144EF71D870EDC007C7F66 /* IGListTestUICollectionViewDataSource.h */,
|
||||
|
|
@ -1042,7 +1054,9 @@
|
|||
828540491DDFF5D400118B94 /* IGListGridCollectionViewLayoutTests.m in Sources */,
|
||||
885FE22F1DC51B76009CE2B4 /* IGListDiffSwiftTests.swift in Sources */,
|
||||
885FE23F1DC51B86009CE2B4 /* IGTestObject.m in Sources */,
|
||||
828540511DE40D2D00118B94 /* IGListTestAdapterHorizontalDataSource.m in Sources */,
|
||||
885FE2371DC51B76009CE2B4 /* IGListWorkingRangeHandlerTests.m in Sources */,
|
||||
8285404D1DE40C6E00118B94 /* IGListTestHorizontalSection.m in Sources */,
|
||||
885FE2381DC51B86009CE2B4 /* IGListTestAdapterDataSource.m in Sources */,
|
||||
885FE2341DC51B76009CE2B4 /* IGListSingleNibItemControllerTests.m in Sources */,
|
||||
885FE2391DC51B86009CE2B4 /* IGListTestOffsettingLayout.m in Sources */,
|
||||
|
|
@ -1114,7 +1128,9 @@
|
|||
88144F1A1D870EDC007C7F66 /* IGTestObject.m in Sources */,
|
||||
88144F0B1D870EDC007C7F66 /* IGListDiffSwiftTests.swift in Sources */,
|
||||
88144F191D870EDC007C7F66 /* IGTestDelegateDataSource.m in Sources */,
|
||||
828540501DE40D2D00118B94 /* IGListTestAdapterHorizontalDataSource.m in Sources */,
|
||||
88144F0C1D870EDC007C7F66 /* IGListDiffTests.m in Sources */,
|
||||
8285404C1DE40C6E00118B94 /* IGListTestHorizontalSection.m in Sources */,
|
||||
88144F0A1D870EDC007C7F66 /* IGListBatchUpdateDataTests.m in Sources */,
|
||||
26271C8C1DAE96740073E116 /* IGListSingleNibItemControllerTests.m in Sources */,
|
||||
829D7BAA1DD1819000549816 /* IGListSectionMapTests.m in Sources */,
|
||||
|
|
|
|||
|
|
@ -16,6 +16,7 @@
|
|||
|
||||
#import "IGListAdapterInternal.h"
|
||||
#import "IGListTestAdapterDataSource.h"
|
||||
#import "IGListTestAdapterHorizontalDataSource.h"
|
||||
#import "IGListTestSection.h"
|
||||
#import "IGTestSupplementarySource.h"
|
||||
#import "IGTestNibSupplementaryView.h"
|
||||
|
|
@ -562,23 +563,26 @@ XCTAssertEqual(CGPointEqualToPoint(point, p), YES); \
|
|||
|
||||
- (void)test_whenScrollHorizontallyToItem {
|
||||
// # of items for each object == [item integerValue], so @2 has 2 items (cells)
|
||||
self.dataSource.objects = @[@1, @2, @3, @4, @5, @6];
|
||||
IGListTestAdapterHorizontalDataSource *dataSource = [[IGListTestAdapterHorizontalDataSource alloc] init];
|
||||
self.adapter.dataSource = dataSource;
|
||||
dataSource.objects = @[@1, @2, @3, @4, @5, @6];
|
||||
self.layout.scrollDirection = UICollectionViewScrollDirectionHorizontal;
|
||||
[self.adapter reloadDataWithCompletion:nil];
|
||||
XCTAssertEqual([self.collectionView numberOfSections], 6);
|
||||
[self.adapter scrollToObject:@1 supplementaryKinds:nil scrollDirection:UICollectionViewScrollDirectionHorizontal scrollPosition:UICollectionViewScrollPositionNone animated:NO];
|
||||
IGAssertEqualPoint([self.collectionView contentOffset], 0, 0);
|
||||
[self.adapter scrollToObject:@2 supplementaryKinds:nil scrollDirection:UICollectionViewScrollDirectionHorizontal scrollPosition:UICollectionViewScrollPositionNone animated:NO];
|
||||
IGAssertEqualPoint([self.collectionView contentOffset], 100, 0);
|
||||
IGAssertEqualPoint([self.collectionView contentOffset], 10, 0);
|
||||
[self.adapter scrollToObject:@3 supplementaryKinds:nil scrollDirection:UICollectionViewScrollDirectionHorizontal scrollPosition:UICollectionViewScrollPositionNone animated:NO];
|
||||
IGAssertEqualPoint([self.collectionView contentOffset], 200, 0);
|
||||
IGAssertEqualPoint([self.collectionView contentOffset], 30, 0);
|
||||
[self.adapter scrollToObject:@6 supplementaryKinds:nil scrollDirection:UICollectionViewScrollDirectionHorizontal scrollPosition:UICollectionViewScrollPositionNone animated:NO];
|
||||
IGAssertEqualPoint([self.collectionView contentOffset], 500, 0);
|
||||
IGAssertEqualPoint([self.collectionView contentOffset], 150, 0);
|
||||
[self.adapter scrollToObject:@6 supplementaryKinds:nil scrollDirection:UICollectionViewScrollDirectionHorizontal scrollPosition:UICollectionViewScrollPositionCenteredHorizontally animated:NO];
|
||||
IGAssertEqualPoint([self.collectionView contentOffset], 500, 0);
|
||||
IGAssertEqualPoint([self.collectionView contentOffset], 105, 0);
|
||||
[self.adapter scrollToObject:@6 supplementaryKinds:nil scrollDirection:UICollectionViewScrollDirectionHorizontal scrollPosition:UICollectionViewScrollPositionRight animated:NO];
|
||||
IGAssertEqualPoint([self.collectionView contentOffset], 500, 0);
|
||||
IGAssertEqualPoint([self.collectionView contentOffset], 60, 0);
|
||||
self.layout.scrollDirection = UICollectionViewScrollDirectionVertical;
|
||||
self.adapter.dataSource = self.dataSource;
|
||||
}
|
||||
|
||||
- (void)test_whenScrollToItem_thatSupplementarySourceSupportsSingleHeader {
|
||||
|
|
|
|||
21
Tests/Objects/IGListTestAdapterHorizontalDataSource.h
Normal file
21
Tests/Objects/IGListTestAdapterHorizontalDataSource.h
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
/**
|
||||
* Copyright (c) 2016-present, Facebook, Inc.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This source code is licensed under the BSD-style license found in the
|
||||
* LICENSE file in the root directory of this source tree. An additional grant
|
||||
* of patent rights can be found in the PATENTS file in the same directory.
|
||||
*/
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
#import <IGListKit/IGListAdapterDataSource.h>
|
||||
|
||||
@interface IGListTestAdapterHorizontalDataSource : NSObject <IGListAdapterDataSource>
|
||||
|
||||
// array of numbers which is then passed to -[IGListTestSection setItems:]
|
||||
@property (nonatomic, strong) NSArray <NSNumber *> *objects;
|
||||
|
||||
@property (nonatomic, strong) UIView *backgroundView;
|
||||
|
||||
@end
|
||||
31
Tests/Objects/IGListTestAdapterHorizontalDataSource.m
Normal file
31
Tests/Objects/IGListTestAdapterHorizontalDataSource.m
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
/**
|
||||
* Copyright (c) 2016-present, Facebook, Inc.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This source code is licensed under the BSD-style license found in the
|
||||
* LICENSE file in the root directory of this source tree. An additional grant
|
||||
* of patent rights can be found in the PATENTS file in the same directory.
|
||||
*/
|
||||
|
||||
#import "IGListTestAdapterHorizontalDataSource.h"
|
||||
|
||||
#import <IGListKit/IGListAdapter.h>
|
||||
|
||||
#import "IGListTestHorizontalSection.h"
|
||||
|
||||
@implementation IGListTestAdapterHorizontalDataSource
|
||||
|
||||
- (NSArray *)objectsForListAdapter:(IGListAdapter *)listAdapter {
|
||||
return self.objects;
|
||||
}
|
||||
|
||||
- (IGListSectionController <IGListSectionType> *)listAdapter:(IGListAdapter *)listAdapter sectionControllerForObject:(id)object {
|
||||
IGListTestHorizontalSection *list = [[IGListTestHorizontalSection alloc] init];
|
||||
return list;
|
||||
}
|
||||
|
||||
- (nullable UIView *)emptyViewForListAdapter:(IGListAdapter *)listAdapter {
|
||||
return self.backgroundView;
|
||||
}
|
||||
|
||||
@end
|
||||
21
Tests/Objects/IGListTestHorizontalSection.h
Normal file
21
Tests/Objects/IGListTestHorizontalSection.h
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
/**
|
||||
* Copyright (c) 2016-present, Facebook, Inc.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This source code is licensed under the BSD-style license found in the
|
||||
* LICENSE file in the root directory of this source tree. An additional grant
|
||||
* of patent rights can be found in the PATENTS file in the same directory.
|
||||
*/
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
#import <IGListKit/IGListSectionController.h>
|
||||
#import <IGListKit/IGListSectionType.h>
|
||||
|
||||
@interface IGListTestHorizontalSection : IGListSectionController <IGListSectionType>
|
||||
|
||||
@property (nonatomic, assign) NSInteger items;
|
||||
|
||||
@property (nonatomic, assign) BOOL wasSelected;
|
||||
|
||||
@end
|
||||
42
Tests/Objects/IGListTestHorizontalSection.m
Normal file
42
Tests/Objects/IGListTestHorizontalSection.m
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
/**
|
||||
* Copyright (c) 2016-present, Facebook, Inc.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This source code is licensed under the BSD-style license found in the
|
||||
* LICENSE file in the root directory of this source tree. An additional grant
|
||||
* of patent rights can be found in the PATENTS file in the same directory.
|
||||
*/
|
||||
|
||||
#import "IGListTestHorizontalSection.h"
|
||||
|
||||
@implementation IGListTestHorizontalSection
|
||||
|
||||
- (NSArray <Class> *)cellClasses {
|
||||
return @[UICollectionViewCell.class];
|
||||
}
|
||||
|
||||
- (NSInteger)numberOfItems {
|
||||
return self.items;
|
||||
}
|
||||
|
||||
- (CGSize)sizeForItemAtIndex:(NSInteger)index {
|
||||
return CGSizeMake(10, 100);
|
||||
}
|
||||
|
||||
- (UICollectionViewCell *)cellForItemAtIndex:(NSInteger)index {
|
||||
return [self.collectionContext dequeueReusableCellOfClass:UICollectionViewCell.class
|
||||
forSectionController:self
|
||||
atIndex:index];
|
||||
}
|
||||
|
||||
- (void)didUpdateToObject:(id)object {
|
||||
if ([object isKindOfClass:[NSNumber class]]) {
|
||||
self.items = [object integerValue];
|
||||
}
|
||||
}
|
||||
|
||||
- (void)didSelectItemAtIndex:(NSInteger)index {
|
||||
self.wasSelected = YES;
|
||||
}
|
||||
|
||||
@end
|
||||
Loading…
Reference in a new issue