From 1bc993381cfb7e280e500e805ebcf70637eefa65 Mon Sep 17 00:00:00 2001 From: Tim Oliver Date: Mon, 17 Apr 2023 20:41:49 -0700 Subject: [PATCH] Reenable some disabled tests in list adapter E2E tests Summary: There were several tests in the E2E test suite that had been deliberately disabled. I reenabled them and tested them, and they all passed correctly. I've left them reenabled in this diff, but we can disable them down the line again if they start to fail again. Differential Revision: D45004373 fbshipit-source-id: c0bc96e1d364d702d12e945059daedf2ae21cfa5 --- Tests/IGListAdapterE2ETests.m | 696 +++++++++++++++++----------------- 1 file changed, 348 insertions(+), 348 deletions(-) diff --git a/Tests/IGListAdapterE2ETests.m b/Tests/IGListAdapterE2ETests.m index ab708fe3..39f55a9e 100644 --- a/Tests/IGListAdapterE2ETests.m +++ b/Tests/IGListAdapterE2ETests.m @@ -37,9 +37,9 @@ - (void)test_whenSettingUpTest_thenCollectionViewIsLoaded { [self setupWithObjects:@[ - genTestObject(@1, @2), - genTestObject(@2, @3) - ]]; + genTestObject(@1, @2), + genTestObject(@2, @3) + ]]; XCTAssertEqual(self.collectionView.numberOfSections, 2); XCTAssertEqual([self.collectionView numberOfItemsInSection:0], 2); XCTAssertEqual([self.collectionView numberOfItemsInSection:1], 3); @@ -47,9 +47,9 @@ - (void)test_whenUsingStringValue_thenCellLabelsAreConfigured { [self setupWithObjects:@[ - genTestObject(@0, @"Foo"), - genTestObject(@1, @"Bar") - ]]; + genTestObject(@0, @"Foo"), + genTestObject(@1, @"Bar") + ]]; IGTestCell *cell = (IGTestCell*)[self.collectionView cellForItemAtIndexPath:genIndexPath(0, 0)]; XCTAssertEqualObjects(cell.label.text, @"Foo"); @@ -58,18 +58,18 @@ - (void)test_whenUpdating_withEqualObjects_thatCellConfigurationDoesntChange { [self setupWithObjects:@[ - genTestObject(@0, @"Foo"), - genTestObject(@1, @"Bar") - ]]; + genTestObject(@0, @"Foo"), + genTestObject(@1, @"Bar") + ]]; // Get the section controller before we change the data source or perform updates id c0 = [self.adapter sectionControllerForObject:self.dataSource.objects[0]]; // Set equal but new-instance objects on the data source self.dataSource.objects = @[ - genTestObject(@0, @"Foo"), - genTestObject(@1, @"Bar") - ]; + genTestObject(@0, @"Foo"), + genTestObject(@1, @"Bar") + ]; // Perform updates on the adapter and check that the cell config uses the same section controller as before the updates XCTestExpectation *expectation = genExpectation; @@ -86,9 +86,9 @@ - (void)test_whenReloadingItem_cellConfigurationChanges { [self setupWithObjects:@[ - genTestObject(@0, @"Foo"), - genTestObject(@1, @"Bar") - ]]; + genTestObject(@0, @"Foo"), + genTestObject(@1, @"Bar") + ]]; // make sure our cells are propertly configured IGTestCell *cell1 = (IGTestCell*)[self.collectionView cellForItemAtIndexPath:genIndexPath(0, 0)]; @@ -117,15 +117,15 @@ - (void)test_whenObjectEqualityChanges_thatSectionCountChanges { [self setupWithObjects:@[ - genTestObject(@1, @2), - genTestObject(@2, @2) - ]]; + genTestObject(@1, @2), + genTestObject(@2, @2) + ]]; self.dataSource.objects = @[ - genTestObject(@1, @2), - genTestObject(@2, @3), // updated to 3 items (from 2) - genTestObject(@3, @2), // insert new object - ]; + genTestObject(@1, @2), + genTestObject(@2, @3), // updated to 3 items (from 2) + genTestObject(@3, @2), // insert new object + ]; XCTestExpectation *expectation = genExpectation; [self.adapter performUpdatesAnimated:YES completion:^(BOOL finished2) { @@ -140,9 +140,9 @@ - (void)test_whenUpdatesComplete_thatCellsExist { [self setupWithObjects:@[ - genTestObject(@1, @2), - genTestObject(@2, @2), - ]]; + genTestObject(@1, @2), + genTestObject(@2, @2), + ]]; XCTestExpectation *expectation = genExpectation; [self.adapter performUpdatesAnimated:YES completion:^(BOOL finished) { XCTAssertNotNil([self.collectionView cellForItemAtIndexPath:[NSIndexPath indexPathForItem:0 inSection:0]]); @@ -156,9 +156,9 @@ - (void)test_whenReloadDataCompletes_thatCellsExist { [self setupWithObjects:@[ - genTestObject(@1, @2), - genTestObject(@2, @2) - ]]; + genTestObject(@1, @2), + genTestObject(@2, @2) + ]]; XCTestExpectation *expectation = genExpectation; [self.adapter reloadDataWithCompletion:^(BOOL finished) { XCTAssertNotNil([self.collectionView cellForItemAtIndexPath:[NSIndexPath indexPathForItem:0 inSection:0]]); @@ -172,9 +172,9 @@ - (void)test_whenSectionControllerInsertsIndexes_thatCountsAreUpdated { [self setupWithObjects:@[ - genTestObject(@1, @2), - genTestObject(@2, @2) - ]]; + genTestObject(@1, @2), + genTestObject(@2, @2) + ]]; IGTestObject *object = self.dataSource.objects[0]; IGListSectionController *sectionController = [self.adapter sectionControllerForObject:object]; @@ -194,9 +194,9 @@ - (void)test_whenSectionControllerDeletesIndexes_thatCountsAreUpdated { // 2 sections each with 2 objects [self setupWithObjects:@[ - genTestObject(@1, @2), - genTestObject(@2, @2) - ]]; + genTestObject(@1, @2), + genTestObject(@2, @2) + ]]; IGTestObject *object = self.dataSource.objects[0]; IGListSectionController *sectionController = [self.adapter sectionControllerForObject:object]; @@ -215,9 +215,9 @@ - (void)test_whenSectionControllerReloadsIndexes_thatCellConfigurationUpdates { [self setupWithObjects:@[ - genTestObject(@1, @"a"), - genTestObject(@2, @"b") - ]]; + genTestObject(@1, @"a"), + genTestObject(@2, @"b") + ]]; XCTAssertEqual([self.collectionView numberOfSections], 2); IGTestCell *cell = (IGTestCell *)[self.collectionView cellForItemAtIndexPath:[NSIndexPath indexPathForItem:0 inSection:0]]; XCTAssertEqualObjects(cell.label.text, @"a"); @@ -240,9 +240,9 @@ - (void)test_whenSectionControllerReloads_thatCountsAreUpdated { [self setupWithObjects:@[ - genTestObject(@1, @2), - genTestObject(@2, @2) - ]]; + genTestObject(@1, @2), + genTestObject(@2, @2) + ]]; IGTestObject *object = self.dataSource.objects[0]; IGListSectionController *sectionController = [self.adapter sectionControllerForObject:object]; @@ -261,9 +261,9 @@ - (void)test_whenSectionControllerReloads_withPreferItemReload_thatCountsAreUpdated { [self setupWithObjects:@[ - genTestObject(@1, @2), - genTestObject(@2, @2) - ]]; + genTestObject(@1, @2), + genTestObject(@2, @2) + ]]; IGTestObject *object = self.dataSource.objects[0]; IGListSectionController *sectionController = [self.adapter sectionControllerForObject:object]; @@ -285,18 +285,18 @@ - (void)test_whenPerformingUpdates_withSectionControllerMutations_thatCollectionCountsAreUpdated { [self setupWithObjects:@[ - genTestObject(@1, @2), - genTestObject(@2, @2) - ]]; + genTestObject(@1, @2), + genTestObject(@2, @2) + ]]; IGTestObject *object1 = self.dataSource.objects[0]; IGTestObject *object2 = self.dataSource.objects[1]; // insert a new object in front of the one we are doing an item-level insert on self.dataSource.objects = @[ - genTestObject(@3, @1), // new - object1, - object2, - ]; + genTestObject(@3, @1), // new + object1, + object2, + ]; IGListSectionController *sectionController1 = [self.adapter sectionControllerForObject:object1]; IGListSectionController *sectionController2 = [self.adapter sectionControllerForObject:object2]; @@ -323,15 +323,15 @@ - (void)test_whenSectionControllerMoves_withSectionControllerMutations_thatCollectionViewWorks { [self setupWithObjects:@[ - genTestObject(@1, @2), - genTestObject(@2, @2) - ]]; + genTestObject(@1, @2), + genTestObject(@2, @2) + ]]; IGTestObject *object = self.dataSource.objects[0]; self.dataSource.objects = @[ - genTestObject(@2, @2), - object, // moved from 0 to 1 - ]; + genTestObject(@2, @2), + object, // moved from 0 to 1 + ]; IGListSectionController *sectionController = [self.adapter sectionControllerForObject:object]; @@ -356,15 +356,15 @@ - (void)test_whenItemIsRemoved_withSectionControllerMutations_thatCollectionViewWorks { // 2 sections each with 2 objects [self setupWithObjects:@[ - genTestObject(@2, @2), - genTestObject(@1, @2) - ]]; + genTestObject(@2, @2), + genTestObject(@1, @2) + ]]; IGTestObject *object = self.dataSource.objects[1]; // object at index 1 deleted self.dataSource.objects = @[ - genTestObject(@2, @2), - ]; + genTestObject(@2, @2), + ]; IGListSectionController *sectionController = [self.adapter sectionControllerForObject:object]; @@ -384,15 +384,15 @@ - (void)test_whenPerformingUpdates_withUnequalItem_withItemMoving_thatCollectionViewCountsUpdate { [self setupWithObjects:@[ - genTestObject(@1, @2), - genTestObject(@2, @2), - ]]; + genTestObject(@1, @2), + genTestObject(@2, @2), + ]]; self.dataSource.objects = @[ - genTestObject(@3, @2), - genTestObject(@1, @3), // moved from index 0 to 1, value changed from 2 to 3 - genTestObject(@2, @2), - ]; + genTestObject(@3, @2), + genTestObject(@1, @3), // moved from index 0 to 1, value changed from 2 to 3 + genTestObject(@2, @2), + ]; XCTestExpectation *expectation = genExpectation; [self.adapter performUpdatesAnimated:YES completion:^(BOOL finished2) { @@ -405,16 +405,16 @@ - (void)test_whenPerformingUpdates_withItemMoving_withSectionControllerReloadIndexes_thatCollectionViewCountsUpdate { [self setupWithObjects:@[ - genTestObject(@1, @2), - genTestObject(@2, @3), - ]]; + genTestObject(@1, @2), + genTestObject(@2, @3), + ]]; IGListSectionController *sectionController = [self.adapter sectionControllerForObject:self.dataSource.objects[0]]; self.dataSource.objects = @[ - genTestObject(@2, @3), - genTestObject(@1, @2), // moved from index 0 to 1 - ]; + genTestObject(@2, @3), + genTestObject(@1, @2), // moved from index 0 to 1 + ]; [self.adapter performUpdatesAnimated:YES completion:nil]; @@ -432,15 +432,15 @@ - (void)test_whenPerformingUpdates_withSectionControllerReloadIndexes_withItemDeleted_thatCollectionViewCountsUpdate { [self setupWithObjects:@[ - genTestObject(@1, @2), // item that will be deleted - genTestObject(@2, @3), - ]]; + genTestObject(@1, @2), // item that will be deleted + genTestObject(@2, @3), + ]]; IGListSectionController *sectionController = [self.adapter sectionControllerForObject:self.dataSource.objects[0]]; self.dataSource.objects = @[ - genTestObject(@2, @3), - ]; + genTestObject(@2, @3), + ]; [self.adapter performUpdatesAnimated:YES completion:nil]; @@ -457,9 +457,9 @@ - (void)test_whenPerformingUpdates_withNewItemInstances_thatSectionControllersEqual { [self setupWithObjects:@[ - genTestObject(@1, @2), - genTestObject(@2, @2) - ]]; + genTestObject(@1, @2), + genTestObject(@2, @2) + ]]; // grab section controllers before updating the objects NSArray *beforeupdateObjects = self.dataSource.objects; @@ -467,9 +467,9 @@ IGListSectionController *sectionController2 = [self.adapter sectionControllerForObject:beforeupdateObjects.lastObject]; self.dataSource.objects = @[ - genTestObject(@1, @3), // new instance, value changed from 2 to 3 - genTestObject(@2, @2), // new instance but unchanged - ]; + genTestObject(@1, @3), // new instance, value changed from 2 to 3 + genTestObject(@2, @2), // new instance but unchanged + ]; XCTestExpectation *expectation = genExpectation; [self.adapter performUpdatesAnimated:YES completion:^(BOOL finished2) { @@ -490,9 +490,9 @@ - (void)test_whenPerformingMultipleUpdates_withNewItemInstances_thatSectionControllersReceiveNewInstances { [self setupWithObjects:@[ - genTestObject(@1, @2), - genTestObject(@2, @2), - ]]; + genTestObject(@1, @2), + genTestObject(@2, @2), + ]]; id object = self.dataSource.objects[0]; IGTestDelegateController *sectionController = [self.adapter sectionControllerForObject:object]; @@ -501,9 +501,9 @@ XCTAssertEqual(sectionController.updateCount, 1); self.dataSource.objects = @[ - object, // same object instance - genTestObject(@3, @2), - ]; + object, // same object instance + genTestObject(@3, @2), + ]; XCTestExpectation *expectation = genExpectation; [self.adapter performUpdatesAnimated:YES completion:^(BOOL finished2) { @@ -513,9 +513,9 @@ XCTAssertEqual(sectionController.updateCount, 1); self.dataSource.objects = @[ - genTestObject(@1, @2), // new instance but equal - genTestObject(@3, @2), - ]; + genTestObject(@1, @2), // new instance but equal + genTestObject(@3, @2), + ]; [self.adapter performUpdatesAnimated:YES completion:^(BOOL finished3) { XCTAssertEqual(sectionController, [self.adapter sectionControllerForObject:[self.adapter objects][0]]); @@ -531,19 +531,19 @@ - (void)test_whenQueryingCollectionContext_withNewItemInstances_thatSectionMatchesCurrentIndex { [self setupWithObjects:@[ - genTestObject(@1, @2), - genTestObject(@2, @2), - ]]; + genTestObject(@1, @2), + genTestObject(@2, @2), + ]]; IGTestDelegateController *sectionController = [self.adapter sectionControllerForObject:self.dataSource.objects[0]]; XCTestExpectation *expectation = genExpectation; [self.adapter performUpdatesAnimated:YES completion:^(BOOL finished2) { self.dataSource.objects = @[ - genTestObject(@2, @2), - genTestObject(@1, @2), // new instance but equal - genTestObject(@3, @2), - ]; + genTestObject(@2, @2), + genTestObject(@1, @2), // new instance but equal + genTestObject(@3, @2), + ]; __block BOOL executedUpdateBlock = NO; __weak __typeof__(sectionController) weakSectionController = sectionController; @@ -564,9 +564,9 @@ - (void)test_whenSectionControllerMutates_withReloadData_thatSectionControllerMutationIsApplied { [self setupWithObjects:@[ - genTestObject(@1, @2), - genTestObject(@2, @2), - ]]; + genTestObject(@1, @2), + genTestObject(@2, @2), + ]]; IGTestObject *object = self.dataSource.objects[0]; IGListSectionController *sectionController = [self.adapter sectionControllerForObject:object]; @@ -592,16 +592,16 @@ self.collectionView.collectionViewLayout = [IGListTestOffsettingLayout new]; [self setupWithObjects:@[ - genTestObject(@1, @2), - genTestObject(@2, @2), - genTestObject(@3, @2), - ]]; + genTestObject(@1, @2), + genTestObject(@2, @2), + genTestObject(@3, @2), + ]]; // remove the last object to check that we don't access OOB section controller when the layout changes the offset self.dataSource.objects = @[ - genTestObject(@1, @2), - genTestObject(@2, @2), - ]; + genTestObject(@1, @2), + genTestObject(@2, @2), + ]; XCTestExpectation *expectation = genExpectation; [self.adapter performUpdatesAnimated:YES completion:^(BOOL finished2) { @@ -613,18 +613,18 @@ - (void)test_whenReloadingItems_withNewItemInstances_thatSectionControllersReceiveNewInstances { [self setupWithObjects:@[ - genTestObject(@1, @2), - genTestObject(@2, @2), - genTestObject(@3, @2), - ]]; + genTestObject(@1, @2), + genTestObject(@2, @2), + genTestObject(@3, @2), + ]]; IGTestDelegateController *sectionController1 = [self.adapter sectionControllerForObject:genTestObject(@1, @2)]; IGTestDelegateController *sectionController2 = [self.adapter sectionControllerForObject:genTestObject(@2, @2)]; NSArray *newObjects = @[ - genTestObject(@1, @3), - genTestObject(@2, @3), - ]; + genTestObject(@1, @3), + genTestObject(@2, @3), + ]; [self.adapter reloadObjects:newObjects]; XCTAssertEqual(sectionController1.item, newObjects[0]); @@ -635,10 +635,10 @@ - (void)test_whenReloadingItems_withPerformUpdates_thatReloadIsApplied { [self setupWithObjects:@[ - genTestObject(@1, @1), - genTestObject(@2, @2), - genTestObject(@3, @3), - ]]; + genTestObject(@1, @1), + genTestObject(@2, @2), + genTestObject(@3, @3), + ]]; IGTestObject *object = self.dataSource.objects[0]; IGTestDelegateController *sectionController = [self.adapter sectionControllerForObject:object]; @@ -652,10 +652,10 @@ // object is moved from position 0 to 1 // it is also mutated in the previous update block AND queued for a reload self.dataSource.objects = @[ - genTestObject(@3, @3), - object, - genTestObject(@2, @2), - ]; + genTestObject(@3, @3), + object, + genTestObject(@2, @2), + ]; XCTestExpectation *expectation = genExpectation; [self.adapter performUpdatesAnimated:YES completion:^(BOOL finished2) { @@ -672,8 +672,8 @@ [self.collectionView removeFromSuperview]; [self setupWithObjects:@[ - genTestObject(@1, @8) - ]]; + genTestObject(@1, @8) + ]]; IGTestObject *object = self.dataSource.objects[0]; IGTestDelegateController *sectionController = [self.adapter sectionControllerForObject:object]; @@ -701,8 +701,8 @@ adapter.collectionView = collectionView; self.dataSource.objects = @[ - genTestObject(@1, @1) - ]; + genTestObject(@1, @1) + ]; XCTestExpectation *expectation = genExpectation; @@ -714,9 +714,9 @@ // -performUpdatesAnimated: call dispatch_async(dispatch_get_main_queue(), ^{ self.dataSource.objects = @[ - genTestObject(@1, @1), - genTestObject(@2, @2) - ]; + genTestObject(@1, @1), + genTestObject(@2, @2) + ]; [adapter performUpdatesAnimated:YES completion:^(BOOL finished2) { XCTAssertEqual([collectionView numberOfSections], 2); [expectation fulfill]; @@ -734,16 +734,16 @@ - (void)test_whenPerformingUpdates_withItemsMovingInBlocks_thatCollectionViewWorks { [self setupWithObjects:@[ - genTestObject(@1, @0), - genTestObject(@2, @7), - genTestObject(@3, @8), - genTestObject(@4, @8), - genTestObject(@5, @8), - genTestObject(@6, @5), - genTestObject(@7, @8), - genTestObject(@8, @8), - genTestObject(@9, @8), - ]]; + genTestObject(@1, @0), + genTestObject(@2, @7), + genTestObject(@3, @8), + genTestObject(@4, @8), + genTestObject(@5, @8), + genTestObject(@6, @5), + genTestObject(@7, @8), + genTestObject(@8, @8), + genTestObject(@9, @8), + ]]; UICollectionView *collectionView = [[UICollectionView alloc] initWithFrame:self.window.frame collectionViewLayout:[UICollectionViewFlowLayout new]]; [self.window addSubview:collectionView]; @@ -756,17 +756,17 @@ XCTAssertEqual([collectionView numberOfSections], 9); self.dataSource.objects = @[ - genTestObject(@1, @0), - genTestObject(@10, @5), - genTestObject(@11, @7), - genTestObject(@2, @7), - genTestObject(@3, @8), - genTestObject(@6, @5), // "moves" in front of 4, 5 but doesn't change index in array - genTestObject(@4, @8), - genTestObject(@5, @8), - genTestObject(@7, @8), - genTestObject(@8, @8), - ]; + genTestObject(@1, @0), + genTestObject(@10, @5), + genTestObject(@11, @7), + genTestObject(@2, @7), + genTestObject(@3, @8), + genTestObject(@6, @5), // "moves" in front of 4, 5 but doesn't change index in array + genTestObject(@4, @8), + genTestObject(@5, @8), + genTestObject(@7, @8), + genTestObject(@8, @8), + ]; XCTestExpectation *expectation = genExpectation; [adapter performUpdatesAnimated:YES completion:^(BOOL finished) { @@ -778,14 +778,14 @@ - (void)test_whenItemDeleted_withDisplayDelegate_thatDelegateReceivesDeletedItem { [self setupWithObjects:@[ - genTestObject(@1, @1), - genTestObject(@2, @2), - ]]; + genTestObject(@1, @1), + genTestObject(@2, @2), + ]]; IGTestObject *object = self.dataSource.objects[0]; self.dataSource.objects = @[ - genTestObject(@2, @2), - ]; + genTestObject(@2, @2), + ]; id mockDisplayHandler = [OCMockObject mockForProtocol:@protocol(IGListAdapterDelegate)]; self.adapter.delegate = mockDisplayHandler; @@ -803,20 +803,20 @@ - (void)test_whenItemReloaded_withDisplacingMutations_thatCollectionViewWorks { [self setupWithObjects:@[ - genTestObject(@1, @1), - genTestObject(@2, @1), - genTestObject(@3, @1), - genTestObject(@4, @1), - genTestObject(@5, @1), - ]]; + genTestObject(@1, @1), + genTestObject(@2, @1), + genTestObject(@3, @1), + genTestObject(@4, @1), + genTestObject(@5, @1), + ]]; self.dataSource.objects = @[ - genTestObject(@1, @1), - genTestObject(@2, @2), // reloaded - genTestObject(@5, @2), // reloaded - genTestObject(@4, @2), // reloaded - genTestObject(@3, @1), - ]; + genTestObject(@1, @1), + genTestObject(@2, @2), // reloaded + genTestObject(@5, @2), // reloaded + genTestObject(@4, @2), // reloaded + genTestObject(@3, @1), + ]; XCTestExpectation *expectation = genExpectation; [self.adapter performUpdatesAnimated:YES completion:^(BOOL finished) { @@ -828,9 +828,9 @@ - (void)test_whenCollectionViewAppears_thatWillDisplayEventsAreSent { [self setupWithObjects:@[ - genTestObject(@1, @1), - genTestObject(@2, @2), - ]]; + genTestObject(@1, @1), + genTestObject(@2, @2), + ]]; IGTestDelegateController *ic1 = [self.adapter sectionControllerForObject:self.dataSource.objects[0]]; XCTAssertEqual(ic1.willDisplayCount, 1); XCTAssertEqual(ic1.didEndDisplayCount, 0); @@ -848,16 +848,16 @@ - (void)test_whenAdapterUpdates_withItemUpdated_thatdidEndDisplayEventsAreSent { [self setupWithObjects:@[ - genTestObject(@1, @1), - genTestObject(@2, @2), - ]]; + genTestObject(@1, @1), + genTestObject(@2, @2), + ]]; IGTestDelegateController *ic1 = [self.adapter sectionControllerForObject:self.dataSource.objects[0]]; IGTestDelegateController *ic2 = [self.adapter sectionControllerForObject:self.dataSource.objects[1]]; self.dataSource.objects = @[ - genTestObject(@1, @1), - genTestObject(@2, @1), // reloaded w/ 1 cell removed - ]; + genTestObject(@1, @1), + genTestObject(@2, @1), // reloaded w/ 1 cell removed + ]; XCTestExpectation *expectation = genExpectation; [self.adapter performUpdatesAnimated:YES completion:^(BOOL finished) { @@ -877,15 +877,15 @@ - (void)test_whenAdapterUpdates_withItemRemoved_thatdidEndDisplayEventsAreSent { [self setupWithObjects:@[ - genTestObject(@1, @1), - genTestObject(@2, @2), - ]]; + genTestObject(@1, @1), + genTestObject(@2, @2), + ]]; IGTestDelegateController *ic1 = [self.adapter sectionControllerForObject:self.dataSource.objects[0]]; IGTestDelegateController *ic2 = [self.adapter sectionControllerForObject:self.dataSource.objects[1]]; self.dataSource.objects = @[ - genTestObject(@1, @1) - ]; + genTestObject(@1, @1) + ]; XCTestExpectation *expectation = genExpectation; [self.adapter performUpdatesAnimated:YES completion:^(BOOL finished) { @@ -907,9 +907,9 @@ - (void)test_whenAdapterUpdates_withEmptyItems_thatdidEndDisplayEventsAreSent { [self setupWithObjects:@[ - genTestObject(@1, @1), - genTestObject(@2, @2), - ]]; + genTestObject(@1, @1), + genTestObject(@2, @2), + ]]; IGTestDelegateController *ic1 = [self.adapter sectionControllerForObject:self.dataSource.objects[0]]; IGTestDelegateController *ic2 = [self.adapter sectionControllerForObject:self.dataSource.objects[1]]; @@ -938,19 +938,19 @@ ((IGTestDelegateDataSource *)self.dataSource).cellConfigureBlock = block; [self setupWithObjects:@[ - genTestObject(@1, @1), - genTestObject(@2, @1), - genTestObject(@3, @1), - ]]; + genTestObject(@1, @1), + genTestObject(@2, @1), + genTestObject(@3, @1), + ]]; // delete the last object from the original array self.dataSource.objects = @[ - genTestObject(@1, @1), - genTestObject(@2, @1), - genTestObject(@4, @1), - genTestObject(@5, @1), - genTestObject(@6, @1), - ]; + genTestObject(@1, @1), + genTestObject(@2, @1), + genTestObject(@4, @1), + genTestObject(@5, @1), + genTestObject(@6, @1), + ]; XCTestExpectation *expectation = genExpectation; [self.adapter performUpdatesAnimated:YES completion:^(BOOL finished) { [expectation fulfill]; @@ -960,26 +960,26 @@ - (void)test_whenPerformingUpdates_withWorkingRange_thatAccessingCellDoesntCrash { [self setupWithObjects:@[ - genTestObject(@1, @1), - genTestObject(@2, @1), - genTestObject(@3, @1), - ]]; + genTestObject(@1, @1), + genTestObject(@2, @1), + genTestObject(@3, @1), + ]]; // section controller try to access a cell in -listAdapter:sectionControllerWillEnterWorkingRange: // add items beyond the 100x100 frame so they access unavailable cells self.dataSource.objects = @[ - genTestObject(@1, @1), - genTestObject(@2, @1), - genTestObject(@3, @1), - genTestObject(@4, @1), - genTestObject(@5, @1), - genTestObject(@6, @1), - genTestObject(@7, @1), - genTestObject(@8, @1), - genTestObject(@9, @1), - genTestObject(@10, @1), - genTestObject(@11, @1), - ]; + genTestObject(@1, @1), + genTestObject(@2, @1), + genTestObject(@3, @1), + genTestObject(@4, @1), + genTestObject(@5, @1), + genTestObject(@6, @1), + genTestObject(@7, @1), + genTestObject(@8, @1), + genTestObject(@9, @1), + genTestObject(@10, @1), + genTestObject(@11, @1), + ]; XCTestExpectation *expectation = genExpectation; // this will call -collectionView:performBatchUpdates:, trigger collectionView:willDisplayCell:forItemAtIndexPath:, @@ -993,10 +993,10 @@ - (void)test_whenReloadingItems_withDeleteAndInsertCollision_thatUpdateCanBeApplied { [self setupWithObjects:@[ - genTestObject(@1, @1), - genTestObject(@2, @5), - genTestObject(@3, @1), - ]]; + genTestObject(@1, @1), + genTestObject(@2, @5), + genTestObject(@3, @1), + ]]; IGListSectionController *section = [self.adapter sectionControllerForObject:self.dataSource.objects[1]]; @@ -1014,10 +1014,10 @@ - (void)test_whenReloadingItems_withSectionInsertedInFront_thatUpdateCanBeApplied { [self setupWithObjects:@[ - genTestObject(@1, @1), - genTestObject(@2, @5), - genTestObject(@3, @1), - ]]; + genTestObject(@1, @1), + genTestObject(@2, @5), + genTestObject(@3, @1), + ]]; IGListSectionController *section = [self.adapter sectionControllerForObject:self.dataSource.objects[1]]; @@ -1029,11 +1029,11 @@ }]; self.dataSource.objects = @[ - genTestObject(@1, @1), - genTestObject(@4, @1), // insert to shift object @2 - genTestObject(@2, @5), - genTestObject(@3, @1), - ]; + genTestObject(@1, @1), + genTestObject(@4, @1), // insert to shift object @2 + genTestObject(@2, @5), + genTestObject(@3, @1), + ]; XCTestExpectation *expectation2 = genExpectation; [self.adapter performUpdatesAnimated:YES completion:^(BOOL finished) { @@ -1045,10 +1045,10 @@ - (void)test_whenReloadingItems_withSectionDeletedInFront_thatUpdateCanBeApplied { [self setupWithObjects:@[ - genTestObject(@1, @1), - genTestObject(@2, @5), - genTestObject(@3, @1), - ]]; + genTestObject(@1, @1), + genTestObject(@2, @5), + genTestObject(@3, @1), + ]]; IGListSectionController *section = [self.adapter sectionControllerForObject:self.dataSource.objects[1]]; @@ -1060,9 +1060,9 @@ }]; self.dataSource.objects = @[ - genTestObject(@2, @5), - genTestObject(@3, @1), - ]; + genTestObject(@2, @5), + genTestObject(@3, @1), + ]; XCTestExpectation *expectation2 = genExpectation; [self.adapter performUpdatesAnimated:YES completion:^(BOOL finished) { @@ -1074,10 +1074,10 @@ - (void)test_whenMovingItems_withObjectMoving_thatCollectionViewWorks { [self setupWithObjects:@[ - genTestObject(@1, @2), - genTestObject(@2, @2), - genTestObject(@3, @2), - ]]; + genTestObject(@1, @2), + genTestObject(@2, @2), + genTestObject(@3, @2), + ]]; __block BOOL executed = NO; IGListSectionController *section = [self.adapter sectionControllerForObject:self.dataSource.objects.lastObject]; @@ -1087,10 +1087,10 @@ } completion:nil]; self.dataSource.objects = @[ - genTestObject(@3, @2), - genTestObject(@1, @2), - genTestObject(@2, @2), - ]; + genTestObject(@3, @2), + genTestObject(@1, @2), + genTestObject(@2, @2), + ]; XCTestExpectation *expectation = genExpectation; [self.adapter performUpdatesAnimated:YES completion:^(BOOL finished) { @@ -1103,8 +1103,8 @@ - (void)test_whenMovingItems_withObjectReloaded_thatCollectionViewWorks { [self setupWithObjects:@[ - genTestObject(@1, @2), - ]]; + genTestObject(@1, @2), + ]]; __block BOOL executed = NO; IGListSectionController *section = [self.adapter sectionControllerForObject:self.dataSource.objects.lastObject]; @@ -1114,8 +1114,8 @@ } completion:nil]; self.dataSource.objects = @[ - genTestObject(@1, @3), - ]; + genTestObject(@1, @3), + ]; XCTestExpectation *expectation = genExpectation; [self.adapter performUpdatesAnimated:YES completion:^(BOOL finished) { @@ -1128,8 +1128,8 @@ - (void)test_whenMovingItems_withObjectDeleted_thatCollectionViewWorks { [self setupWithObjects:@[ - genTestObject(@1, @2), - ]]; + genTestObject(@1, @2), + ]]; __block BOOL executed = NO; IGListSectionController *section = [self.adapter sectionControllerForObject:self.dataSource.objects.lastObject]; @@ -1151,8 +1151,8 @@ - (void)test_whenMovingItems_withObjectInsertedBefore_thatCollectionViewWorks { [self setupWithObjects:@[ - genTestObject(@1, @2), - ]]; + genTestObject(@1, @2), + ]]; __block BOOL executed = NO; IGListSectionController *section = [self.adapter sectionControllerForObject:self.dataSource.objects.lastObject]; @@ -1162,9 +1162,9 @@ } completion:nil]; [self setupWithObjects:@[ - genTestObject(@2, @2), - genTestObject(@1, @2), - ]]; + genTestObject(@2, @2), + genTestObject(@1, @2), + ]]; XCTestExpectation *expectation = genExpectation; [self.adapter performUpdatesAnimated:YES completion:^(BOOL finished) { @@ -1177,8 +1177,8 @@ - (void)test_whenMovingItems_thatCollectionViewWorks { [self setupWithObjects:@[ - genTestObject(@1, @2), - ]]; + genTestObject(@1, @2), + ]]; IGTestCell *cell1 = (IGTestCell*)[self.collectionView cellForItemAtIndexPath:[NSIndexPath indexPathForItem:0 inSection:0]]; IGTestCell *cell2 = (IGTestCell*)[self.collectionView cellForItemAtIndexPath:[NSIndexPath indexPathForItem:1 inSection:0]]; @@ -1203,8 +1203,8 @@ - (void)test_whenInvalidatingSectionController_withSizeChange_thatCellsAreSameInstance_thatCellsFrameChanged { [self setupWithObjects:@[ - genTestObject(@1, @2), - ]]; + genTestObject(@1, @2), + ]]; NSIndexPath *path1 = [NSIndexPath indexPathForItem:0 inSection:0]; NSIndexPath *path2 = [NSIndexPath indexPathForItem:1 inSection:0]; @@ -1302,8 +1302,8 @@ - (void)test_whenDidUpdateAsyncReloads_withBatchUpdatesInProgress_thatReloadIsExecuted { [self setupWithObjects:@[ - genTestObject(@1, @1) - ]]; + genTestObject(@1, @1) + ]]; IGTestDelegateController *section = [self.adapter sectionControllerForObject:self.dataSource.objects[0]]; @@ -1324,9 +1324,9 @@ // add an object so that a batch update is triggered (diff result has changes) self.dataSource.objects = @[ - genTestObject(@1, @1), - genTestObject(@2, @1) - ]; + genTestObject(@1, @1), + genTestObject(@2, @1) + ]; XCTestExpectation *expectation2 = genExpectation; [self.adapter performUpdatesAnimated:YES completion:^(BOOL finished) { @@ -1338,10 +1338,10 @@ [self waitForExpectationsWithTimeout:30 handler:nil]; } -- (void)_test_whenInsertingItemsTwice_withDataUpdatedTwice_thatAllUpdatesAppliedWithoutException { +- (void)test_whenInsertingItemsTwice_withDataUpdatedTwice_thatAllUpdatesAppliedWithoutException { [self setupWithObjects:@[ - genTestObject(@1, @2), - ]]; + genTestObject(@1, @2), + ]]; IGTestObject *object = self.dataSource.objects[0]; IGListSectionController *sectionController = [self.adapter sectionControllerForObject:object]; @@ -1359,10 +1359,10 @@ [self waitForExpectationsWithTimeout:30 handler:nil]; } -- (void)FIXME_test_whenDeletingItemsTwice_withDataUpdatedTwice_thatAllUpdatesAppliedWithoutException { +- (void)test_whenDeletingItemsTwice_withDataUpdatedTwice_thatAllUpdatesAppliedWithoutException { [self setupWithObjects:@[ - genTestObject(@1, @4), - ]]; + genTestObject(@1, @4), + ]]; IGTestObject *object = self.dataSource.objects[0]; IGListSectionController *sectionController = [self.adapter sectionControllerForObject:object]; @@ -1382,8 +1382,8 @@ - (void)test_whenReloadingSameItemTwice_thatDeletesAndInsertsAreBalanced { [self setupWithObjects:@[ - genTestObject(@1, @4), - ]]; + genTestObject(@1, @4), + ]]; IGTestObject *object = self.dataSource.objects[0]; IGListSectionController *sectionController = [self.adapter sectionControllerForObject:object]; @@ -1402,11 +1402,11 @@ - (void)test_whenUpdateQueuedDuringBatch_thatUpdateCompletesWithoutCrashing { [self setupWithObjects:@[ - genTestObject(@1, @4), - genTestObject(@2, @4), - genTestObject(@3, @4), - genTestObject(@4, @4), - ]]; + genTestObject(@1, @4), + genTestObject(@2, @4), + genTestObject(@3, @4), + genTestObject(@4, @4), + ]]; IGTestObject *object = self.dataSource.objects[0]; IGTestDelegateController *sectionController = [self.adapter sectionControllerForObject:object]; @@ -1419,10 +1419,10 @@ [batchContext deleteInSectionController:sectionController atIndexes:[NSIndexSet indexSetWithIndex:0]]; self.dataSource.objects = @[ - genTestObject(@2, @4), - genTestObject(@4, @4), - genTestObject(@1, @3), - ]; + genTestObject(@2, @4), + genTestObject(@4, @4), + genTestObject(@1, @3), + ]; [self.adapter performUpdatesAnimated:YES completion:^(BOOL finished) { XCTAssertEqual([self.collectionView numberOfSections], 3); XCTAssertEqual([self.collectionView numberOfItemsInSection:0], 4); @@ -1462,8 +1462,8 @@ - (void)test_whenAddingMultipleUpdateListeners_withPerformUpdatesAnimated_thatEventsReceived { [self setupWithObjects:@[ - genTestObject(@1, @1) - ]]; + genTestObject(@1, @1) + ]]; IGListAdapterUpdateTester *listener1 = [IGListAdapterUpdateTester new];; IGListAdapterUpdateTester *listener2 = [IGListAdapterUpdateTester new];; @@ -1472,9 +1472,9 @@ [self.adapter addUpdateListener:listener2]; self.dataSource.objects = @[ - genTestObject(@1, @1), - genTestObject(@2, @1) - ]; + genTestObject(@1, @1), + genTestObject(@2, @1) + ]; XCTestExpectation *expectation = genExpectation; [self.adapter performUpdatesAnimated:YES completion:^(BOOL finished) { @@ -1492,8 +1492,8 @@ - (void)test_whenAddingMultipleUpdateListeners_withPerformUpdatesNotAnimated_thatEventsReceived { [self setupWithObjects:@[ - genTestObject(@1, @1) - ]]; + genTestObject(@1, @1) + ]]; IGListAdapterUpdateTester *listener1 = [IGListAdapterUpdateTester new];; IGListAdapterUpdateTester *listener2 = [IGListAdapterUpdateTester new];; @@ -1502,9 +1502,9 @@ [self.adapter addUpdateListener:listener2]; self.dataSource.objects = @[ - genTestObject(@1, @1), - genTestObject(@2, @1) - ]; + genTestObject(@1, @1), + genTestObject(@2, @1) + ]; XCTestExpectation *expectation = genExpectation; [self.adapter performUpdatesAnimated:NO completion:^(BOOL finished) { @@ -1522,8 +1522,8 @@ - (void)test_whenAddingMultipleUpdateListeners_withReloadData_thatEventsReceived { [self setupWithObjects:@[ - genTestObject(@1, @1) - ]]; + genTestObject(@1, @1) + ]]; IGListAdapterUpdateTester *listener1 = [IGListAdapterUpdateTester new];; IGListAdapterUpdateTester *listener2 = [IGListAdapterUpdateTester new];; @@ -1532,9 +1532,9 @@ [self.adapter addUpdateListener:listener2]; self.dataSource.objects = @[ - genTestObject(@1, @1), - genTestObject(@2, @1) - ]; + genTestObject(@1, @1), + genTestObject(@2, @1) + ]; XCTestExpectation *expectation = genExpectation; [self.adapter reloadDataWithCompletion:^(BOOL finished) { @@ -1552,8 +1552,8 @@ - (void)test_whenAddingMultipleUpdateListeners_withItemUpdatesAnimated_thatEventsReceived { [self setupWithObjects:@[ - genTestObject(@1, @1) - ]]; + genTestObject(@1, @1) + ]]; IGListAdapterUpdateTester *listener1 = [IGListAdapterUpdateTester new];; IGListAdapterUpdateTester *listener2 = [IGListAdapterUpdateTester new];; @@ -1562,9 +1562,9 @@ [self.adapter addUpdateListener:listener2]; self.dataSource.objects = @[ - genTestObject(@1, @1), - genTestObject(@2, @1) - ]; + genTestObject(@1, @1), + genTestObject(@2, @1) + ]; IGListSectionController *section = [self.adapter sectionControllerForObject:self.dataSource.objects.firstObject]; @@ -1586,8 +1586,8 @@ - (void)test_whenAddingMultipleUpdateListeners_withItemUpdatesNotAnimated_thatEventsReceived { [self setupWithObjects:@[ - genTestObject(@1, @1) - ]]; + genTestObject(@1, @1) + ]]; IGListAdapterUpdateTester *listener1 = [IGListAdapterUpdateTester new];; IGListAdapterUpdateTester *listener2 = [IGListAdapterUpdateTester new];; @@ -1596,9 +1596,9 @@ [self.adapter addUpdateListener:listener2]; self.dataSource.objects = @[ - genTestObject(@1, @1), - genTestObject(@2, @1) - ]; + genTestObject(@1, @1), + genTestObject(@2, @1) + ]; IGListSectionController *section = [self.adapter sectionControllerForObject:self.dataSource.objects.firstObject]; @@ -1620,8 +1620,8 @@ - (void)test_whenAddingMultipleUpdateListeners_thenRemovingListener_thatRemainingReceives { [self setupWithObjects:@[ - genTestObject(@1, @1) - ]]; + genTestObject(@1, @1) + ]]; IGListAdapterUpdateTester *listener1 = [IGListAdapterUpdateTester new];; IGListAdapterUpdateTester *listener2 = [IGListAdapterUpdateTester new];; @@ -1631,9 +1631,9 @@ [self.adapter removeUpdateListener:listener2]; self.dataSource.objects = @[ - genTestObject(@1, @1), - genTestObject(@2, @1) - ]; + genTestObject(@1, @1), + genTestObject(@2, @1) + ]; XCTestExpectation *expectation = genExpectation; [self.adapter performUpdatesAnimated:YES completion:^(BOOL finished) { @@ -1649,8 +1649,8 @@ - (void)test_whenAddingUpdateListener_thenListenerReferenceHitsZero_thatListenerReleased { [self setupWithObjects:@[ - genTestObject(@1, @1) - ]]; + genTestObject(@1, @1) + ]]; IGListAdapterUpdateTester *listener = [IGListAdapterUpdateTester new]; __weak id weakListener = listener; @@ -1658,9 +1658,9 @@ listener = nil; self.dataSource.objects = @[ - genTestObject(@1, @1), - genTestObject(@2, @1) - ]; + genTestObject(@1, @1), + genTestObject(@2, @1) + ]; XCTestExpectation *expectation = genExpectation; [self.adapter performUpdatesAnimated:YES completion:^(BOOL finished) { @@ -1709,9 +1709,9 @@ IGTestDelegateDataSource *dataSource1 = [IGTestDelegateDataSource new]; dataSource1.objects = @[ - genTestObject(@1, @1), - genTestObject(@2, @1) - ]; + genTestObject(@1, @1), + genTestObject(@2, @1) + ]; adapter1.dataSource = dataSource1; // END: setup of FIRST adapter+dataSource+collectionView @@ -1724,15 +1724,15 @@ IGTestDelegateDataSource *dataSource2 = [IGTestDelegateDataSource new]; dataSource2.objects = @[ - genTestObject(@3, @1) - ]; + genTestObject(@3, @1) + ]; adapter2.dataSource = dataSource2; // END: setup of SECOND adapter+dataSource+collectionView // delete the last-most section from the FIRST dataSource dataSource1.objects = @[ - genTestObject(@1, @1) - ]; + genTestObject(@1, @1) + ]; XCTestExpectation *expectation = genExpectation; [adapter1 performUpdatesAnimated:YES completion:^(BOOL finished) { @@ -1748,8 +1748,8 @@ - (void)test_whenCollectionViewBecomesNilDuringPerformUpdates_thatStateCleanedCorrectly { [self setupWithObjects:@[ - genTestObject(@1, @1) - ]]; + genTestObject(@1, @1) + ]]; // perform update on listAdapter XCTestExpectation *expectation1 = genExpectation; @@ -1760,9 +1760,9 @@ // update the underlying contents before performing another update self.dataSource.objects = @[ - genTestObject(@1, @1), - genTestObject(@2, @1) - ]; + genTestObject(@1, @1), + genTestObject(@2, @1) + ]; // perform update, but set the listAdapter's collectionView to nil during the update XCTestExpectation *expectation2 = genExpectation; @@ -1779,10 +1779,10 @@ // update the underlying contents before performing update self.dataSource.objects = @[ - genTestObject(@1, @1), - genTestObject(@2, @1), - genTestObject(@3, @1) - ]; + genTestObject(@1, @1), + genTestObject(@2, @1), + genTestObject(@3, @1) + ]; // perform update on listAdapter (now with a non-nil collectionView) XCTestExpectation *expectation3 = genExpectation; @@ -1794,8 +1794,8 @@ - (void)test_whenCollectionViewBecomesNilDuringReloadData_thatStateCleanedCorrectly { [self setupWithObjects:@[ - genTestObject(@1, @1) - ]]; + genTestObject(@1, @1) + ]]; // reload data on listAdapter XCTestExpectation *expectation1 = genExpectation; @@ -1806,9 +1806,9 @@ // update the underlying contents before reloading again self.dataSource.objects = @[ - genTestObject(@1, @1), - genTestObject(@2, @1) - ]; + genTestObject(@1, @1), + genTestObject(@2, @1) + ]; // reload data, but set the listAdapter's collectionView to nil during the update XCTestExpectation *expectation2 = genExpectation; @@ -1823,10 +1823,10 @@ [self.window addSubview:collectionView2]; self.adapter.collectionView = collectionView2; self.dataSource.objects = @[ - genTestObject(@1, @1), - genTestObject(@2, @1), - genTestObject(@3, @1) - ]; + genTestObject(@1, @1), + genTestObject(@2, @1), + genTestObject(@3, @1) + ]; // reload data on listAdapter (now with a non-nil collectionView) XCTestExpectation *expectation3 = genExpectation; @@ -1900,9 +1900,9 @@ [self.collectionView layoutIfNeeded]; dataSource.objects = @[ - genTestObject(@1, @1), - genTestObject(@2, @2), - ]; + genTestObject(@1, @1), + genTestObject(@2, @2), + ]; XCTestExpectation *expectation = genExpectation; [self.adapter performUpdatesAnimated:YES completion:^(BOOL finished) { @@ -1962,9 +1962,9 @@ @autoreleasepool { self.dataSource.objects = @[ - genTestObject(@1, @"Bar"), - genTestObject(@0, @"Foo") - ]; + genTestObject(@1, @"Bar"), + genTestObject(@0, @"Foo") + ]; UICollectionView *collectionView = [[UICollectionView alloc] initWithFrame:self.window.frame collectionViewLayout:[UICollectionViewFlowLayout new]]; [self.window addSubview:collectionView]; @@ -1983,9 +1983,9 @@ }; self.dataSource.objects = @[ - genTestObject(@1, @"Bar"), - genTestObject(@0, @"Foo") - ]; + genTestObject(@1, @"Bar"), + genTestObject(@0, @"Foo") + ]; [adapter performUpdatesAnimated:YES completion:^(BOOL finished) { XCTAssertNotNil(collectionView);