From d717904e464893155f1333cd63151024dff8ff39 Mon Sep 17 00:00:00 2001 From: Kishikawa Katsumi Date: Sun, 25 Aug 2019 18:12:01 +0900 Subject: [PATCH] Make `DiffableDataSourceSnapshot` struct In the latest Xcode 11 (beta 6), DiffableDataSourceSnapshot class changed to a struct. This PR adopt the API to the latest UIKit's API. --- Sources/DiffableDataSourceSnapshot.swift | 34 ++++---- Sources/Internal/DiffableDataSourceCore.swift | 2 +- Sources/Internal/SnapshotStructure.swift | 36 ++++---- ...ollectionViewDiffableDataSourceTests.swift | 49 +++++------ ...ollectionViewDiffableDataSourceTests.swift | 49 +++++------ Tests/DiffableDataSourceTests.swift | 82 +++++++++---------- Tests/TableViewDiffableDataSourceTests.swift | 49 +++++------ 7 files changed, 155 insertions(+), 146 deletions(-) diff --git a/Sources/DiffableDataSourceSnapshot.swift b/Sources/DiffableDataSourceSnapshot.swift index 37f5ad1..6bae6cb 100644 --- a/Sources/DiffableDataSourceSnapshot.swift +++ b/Sources/DiffableDataSourceSnapshot.swift @@ -1,7 +1,7 @@ /// A class for backporting `NSDiffableDataSourceSnapshot` introduced in iOS 13.0+, macOS 10.15+, tvOS 13.0+. /// Represents the mutable state of diffable data source of UI. -public class DiffableDataSourceSnapshot { - internal let structure = SnapshotStructure() +public struct DiffableDataSourceSnapshot where SectionIdentifierType : Hashable, ItemIdentifierType : Hashable { + internal var structure = SnapshotStructure() /// Creates a new empty snapshot object. public init() {} @@ -81,7 +81,7 @@ public class DiffableDataSourceSnapshot DiffableDataSourceSnapshot { - let snapshot = DiffableDataSourceSnapshot() + var snapshot = DiffableDataSourceSnapshot() snapshot.structure.sections = currentSnapshot.structure.sections return snapshot } diff --git a/Sources/Internal/SnapshotStructure.swift b/Sources/Internal/SnapshotStructure.swift index 4a6ee61..8e6cbe9 100644 --- a/Sources/Internal/SnapshotStructure.swift +++ b/Sources/Internal/SnapshotStructure.swift @@ -1,7 +1,7 @@ import Foundation import DifferenceKit -final class SnapshotStructure { +struct SnapshotStructure { struct Item: Differentiable, Equatable { var differenceIdentifier: ItemID var isReloaded: Bool @@ -68,7 +68,7 @@ final class SnapshotStructure { return itemPositionMap()[itemID]?.section.differenceIdentifier } - func append(itemIDs: [ItemID], to sectionID: SectionID? = nil, file: StaticString = #file, line: UInt = #line) { + mutating func append(itemIDs: [ItemID], to sectionID: SectionID? = nil, file: StaticString = #file, line: UInt = #line) { let index: Array
.Index if let sectionID = sectionID { @@ -90,7 +90,7 @@ final class SnapshotStructure { sections[index].elements.append(contentsOf: items) } - func insert(itemIDs: [ItemID], before beforeItemID: ItemID, file: StaticString = #file, line: UInt = #line) { + mutating func insert(itemIDs: [ItemID], before beforeItemID: ItemID, file: StaticString = #file, line: UInt = #line) { guard let itemPosition = itemPositionMap()[beforeItemID] else { specifiedItemIsNotFound(beforeItemID, file: file, line: line) } @@ -99,7 +99,7 @@ final class SnapshotStructure { sections[itemPosition.sectionIndex].elements.insert(contentsOf: items, at: itemPosition.itemRelativeIndex) } - func insert(itemIDs: [ItemID], after afterItemID: ItemID, file: StaticString = #file, line: UInt = #line) { + mutating func insert(itemIDs: [ItemID], after afterItemID: ItemID, file: StaticString = #file, line: UInt = #line) { guard let itemPosition = itemPositionMap()[afterItemID] else { specifiedItemIsNotFound(afterItemID, file: file, line: line) } @@ -109,7 +109,7 @@ final class SnapshotStructure { sections[itemPosition.sectionIndex].elements.insert(contentsOf: items, at: itemIndex) } - func remove(itemIDs: [ItemID]) { + mutating func remove(itemIDs: [ItemID]) { let itemPositionMap = self.itemPositionMap() var removeIndexSetMap = [Int: IndexSet]() @@ -128,13 +128,13 @@ final class SnapshotStructure { } } - func removeAllItems() { + mutating func removeAllItems() { for sectionIndex in sections.indices { sections[sectionIndex].elements.removeAll() } } - func move(itemID: ItemID, before beforeItemID: ItemID, file: StaticString = #file, line: UInt = #line) { + mutating func move(itemID: ItemID, before beforeItemID: ItemID, file: StaticString = #file, line: UInt = #line) { guard let removed = remove(itemID: itemID) else { specifiedItemIsNotFound(itemID, file: file, line: line) } @@ -146,7 +146,7 @@ final class SnapshotStructure { sections[itemPosition.sectionIndex].elements.insert(removed, at: itemPosition.itemRelativeIndex) } - func move(itemID: ItemID, after afterItemID: ItemID, file: StaticString = #file, line: UInt = #line) { + mutating func move(itemID: ItemID, after afterItemID: ItemID, file: StaticString = #file, line: UInt = #line) { guard let removed = remove(itemID: itemID) else { specifiedItemIsNotFound(itemID, file: file, line: line) } @@ -159,7 +159,7 @@ final class SnapshotStructure { sections[itemPosition.sectionIndex].elements.insert(removed, at: itemIndex) } - func update(itemIDs: [ItemID], file: StaticString = #file, line: UInt = #line) { + mutating func update(itemIDs: [ItemID], file: StaticString = #file, line: UInt = #line) { let itemPositionMap = self.itemPositionMap() for itemID in itemIDs { @@ -171,12 +171,12 @@ final class SnapshotStructure { } } - func append(sectionIDs: [SectionID]) { + mutating func append(sectionIDs: [SectionID]) { let newSections = sectionIDs.lazy.map(Section.init) sections.append(contentsOf: newSections) } - func insert(sectionIDs: [SectionID], before beforeSectionID: SectionID, file: StaticString = #file, line: UInt = #line) { + mutating func insert(sectionIDs: [SectionID], before beforeSectionID: SectionID, file: StaticString = #file, line: UInt = #line) { guard let sectionIndex = sectionIndex(of: beforeSectionID) else { specifiedSectionIsNotFound(beforeSectionID, file: file, line: line) } @@ -185,7 +185,7 @@ final class SnapshotStructure { sections.insert(contentsOf: newSections, at: sectionIndex) } - func insert(sectionIDs: [SectionID], after afterSectionID: SectionID, file: StaticString = #file, line: UInt = #line) { + mutating func insert(sectionIDs: [SectionID], after afterSectionID: SectionID, file: StaticString = #file, line: UInt = #line) { guard let beforeIndex = sectionIndex(of: afterSectionID) else { specifiedSectionIsNotFound(afterSectionID, file: file, line: line) } @@ -195,13 +195,13 @@ final class SnapshotStructure { sections.insert(contentsOf: newSections, at: sectionIndex) } - func remove(sectionIDs: [SectionID]) { + mutating func remove(sectionIDs: [SectionID]) { for sectionID in sectionIDs { remove(sectionID: sectionID) } } - func move(sectionID: SectionID, before beforeSectionID: SectionID, file: StaticString = #file, line: UInt = #line) { + mutating func move(sectionID: SectionID, before beforeSectionID: SectionID, file: StaticString = #file, line: UInt = #line) { guard let removed = remove(sectionID: sectionID) else { specifiedSectionIsNotFound(sectionID, file: file, line: line) } @@ -213,7 +213,7 @@ final class SnapshotStructure { sections.insert(removed, at: sectionIndex) } - func move(sectionID: SectionID, after afterSectionID: SectionID, file: StaticString = #file, line: UInt = #line) { + mutating func move(sectionID: SectionID, after afterSectionID: SectionID, file: StaticString = #file, line: UInt = #line) { guard let removed = remove(sectionID: sectionID) else { specifiedSectionIsNotFound(sectionID, file: file, line: line) } @@ -226,7 +226,7 @@ final class SnapshotStructure { sections.insert(removed, at: sectionIndex) } - func update(sectionIDs: [SectionID]) { + mutating func update(sectionIDs: [SectionID]) { for sectionID in sectionIDs { guard let sectionIndex = sectionIndex(of: sectionID) else { continue @@ -250,7 +250,7 @@ private extension SnapshotStructure { } @discardableResult - func remove(itemID: ItemID) -> Item? { + mutating func remove(itemID: ItemID) -> Item? { guard let itemPosition = itemPositionMap()[itemID] else { return nil } @@ -259,7 +259,7 @@ private extension SnapshotStructure { } @discardableResult - func remove(sectionID: SectionID) -> Section? { + mutating func remove(sectionID: SectionID) -> Section? { guard let sectionIndex = sectionIndex(of: sectionID) else { return nil } diff --git a/Tests/CocoaCollectionViewDiffableDataSourceTests.swift b/Tests/CocoaCollectionViewDiffableDataSourceTests.swift index 438a7eb..ca54824 100644 --- a/Tests/CocoaCollectionViewDiffableDataSourceTests.swift +++ b/Tests/CocoaCollectionViewDiffableDataSourceTests.swift @@ -20,7 +20,7 @@ final class CocoaCollectionViewDiffableDataSourceTests: XCTestCase { NSCollectionViewItem() } - let snapshot = DiffableDataSourceSnapshot() + var snapshot = DiffableDataSourceSnapshot() dataSource.apply(snapshot) XCTAssertEqual(collectionView.isPerformBatchUpdatesCalledCount, 0) @@ -50,33 +50,36 @@ final class CocoaCollectionViewDiffableDataSourceTests: XCTestCase { XCTAssertEqual(snapshot1.sectionIdentifiers, []) XCTAssertEqual(snapshot1.itemIdentifiers, []) - dataSource.snapshot().appendSections([0, 1, 2]) - let snapshot2 = dataSource.snapshot() - XCTAssertEqual(snapshot2.sectionIdentifiers, []) - XCTAssertEqual(snapshot2.itemIdentifiers, []) + var snapshot2 = dataSource.snapshot() + snapshot2.appendSections([0, 1, 2]) - let snapshotToApply = DiffableDataSourceSnapshot() + let snapshot3 = dataSource.snapshot() + XCTAssertEqual(snapshot3.sectionIdentifiers, []) + XCTAssertEqual(snapshot3.itemIdentifiers, []) + + var snapshotToApply = DiffableDataSourceSnapshot() snapshotToApply.appendSections([0, 1, 2]) snapshotToApply.appendItems([0, 1, 2]) dataSource.apply(snapshotToApply) - let snapshot3 = dataSource.snapshot() - XCTAssertEqual(snapshot3.sectionIdentifiers, [0, 1, 2]) - XCTAssertEqual(snapshot3.itemIdentifiers, [0, 1, 2]) - - dataSource.snapshot().appendSections([3, 4, 5]) - let snapshot4 = dataSource.snapshot() XCTAssertEqual(snapshot4.sectionIdentifiers, [0, 1, 2]) XCTAssertEqual(snapshot4.itemIdentifiers, [0, 1, 2]) - snapshot4.appendSections([3, 4, 5]) - snapshot4.appendItems([3, 4, 5]) - dataSource.apply(snapshot4) + var snapshot5 = dataSource.snapshot() + snapshot5.appendSections([3, 4, 5]) - let snapshot5 = dataSource.snapshot() - XCTAssertEqual(snapshot5.sectionIdentifiers, [0, 1, 2, 3, 4, 5]) - XCTAssertEqual(snapshot5.itemIdentifiers, [0, 1, 2, 3, 4, 5]) + var snapshot6 = dataSource.snapshot() + XCTAssertEqual(snapshot6.sectionIdentifiers, [0, 1, 2]) + XCTAssertEqual(snapshot6.itemIdentifiers, [0, 1, 2]) + + snapshot6.appendSections([3, 4, 5]) + snapshot6.appendItems([3, 4, 5]) + dataSource.apply(snapshot6) + + let snapshot7 = dataSource.snapshot() + XCTAssertEqual(snapshot7.sectionIdentifiers, [0, 1, 2, 3, 4, 5]) + XCTAssertEqual(snapshot7.itemIdentifiers, [0, 1, 2, 3, 4, 5]) } func testItemIdentifier() { @@ -85,7 +88,7 @@ final class CocoaCollectionViewDiffableDataSourceTests: XCTestCase { NSCollectionViewItem() } - let snapshot = DiffableDataSourceSnapshot() + var snapshot = DiffableDataSourceSnapshot() snapshot.appendSections([0, 1, 2]) snapshot.appendItems([0, 1, 2], toSection: 0) dataSource.apply(snapshot) @@ -100,7 +103,7 @@ final class CocoaCollectionViewDiffableDataSourceTests: XCTestCase { NSCollectionViewItem() } - let snapshot = DiffableDataSourceSnapshot() + var snapshot = DiffableDataSourceSnapshot() snapshot.appendSections([0, 1, 2]) snapshot.appendItems([0, 1, 2], toSection: 0) dataSource.apply(snapshot) @@ -117,7 +120,7 @@ final class CocoaCollectionViewDiffableDataSourceTests: XCTestCase { XCTAssertEqual(dataSource.numberOfSections(in: collectionView), 0) - let snapshot = DiffableDataSourceSnapshot() + var snapshot = DiffableDataSourceSnapshot() snapshot.appendSections([0, 1, 2]) snapshot.appendItems([0, 1, 2], toSection: 0) dataSource.apply(snapshot) @@ -131,7 +134,7 @@ final class CocoaCollectionViewDiffableDataSourceTests: XCTestCase { NSCollectionViewItem() } - let snapshot = DiffableDataSourceSnapshot() + var snapshot = DiffableDataSourceSnapshot() snapshot.appendSections([0, 1, 2]) snapshot.appendItems([0, 1, 2], toSection: 0) dataSource.apply(snapshot) @@ -146,7 +149,7 @@ final class CocoaCollectionViewDiffableDataSourceTests: XCTestCase { item } - let snapshot = DiffableDataSourceSnapshot() + var snapshot = DiffableDataSourceSnapshot() snapshot.appendSections([0, 1, 2]) snapshot.appendItems([0, 1, 2], toSection: 0) dataSource.apply(snapshot) diff --git a/Tests/CollectionViewDiffableDataSourceTests.swift b/Tests/CollectionViewDiffableDataSourceTests.swift index c0a17e0..e419a54 100644 --- a/Tests/CollectionViewDiffableDataSourceTests.swift +++ b/Tests/CollectionViewDiffableDataSourceTests.swift @@ -20,7 +20,7 @@ final class CollectionViewDiffableDataSourceTests: XCTestCase { UICollectionViewCell() } - let snapshot = DiffableDataSourceSnapshot() + var snapshot = DiffableDataSourceSnapshot() dataSource.apply(snapshot) XCTAssertEqual(collectionView.isPerformBatchUpdatesCalledCount, 0) @@ -50,33 +50,36 @@ final class CollectionViewDiffableDataSourceTests: XCTestCase { XCTAssertEqual(snapshot1.sectionIdentifiers, []) XCTAssertEqual(snapshot1.itemIdentifiers, []) - dataSource.snapshot().appendSections([0, 1, 2]) - let snapshot2 = dataSource.snapshot() - XCTAssertEqual(snapshot2.sectionIdentifiers, []) - XCTAssertEqual(snapshot2.itemIdentifiers, []) + var snapshot2 = dataSource.snapshot() + snapshot2.appendSections([0, 1, 2]) - let snapshotToApply = DiffableDataSourceSnapshot() + let snapshot3 = dataSource.snapshot() + XCTAssertEqual(snapshot3.sectionIdentifiers, []) + XCTAssertEqual(snapshot3.itemIdentifiers, []) + + var snapshotToApply = DiffableDataSourceSnapshot() snapshotToApply.appendSections([0, 1, 2]) snapshotToApply.appendItems([0, 1, 2]) dataSource.apply(snapshotToApply) - let snapshot3 = dataSource.snapshot() - XCTAssertEqual(snapshot3.sectionIdentifiers, [0, 1, 2]) - XCTAssertEqual(snapshot3.itemIdentifiers, [0, 1, 2]) - - dataSource.snapshot().appendSections([3, 4, 5]) - let snapshot4 = dataSource.snapshot() XCTAssertEqual(snapshot4.sectionIdentifiers, [0, 1, 2]) XCTAssertEqual(snapshot4.itemIdentifiers, [0, 1, 2]) - snapshot4.appendSections([3, 4, 5]) - snapshot4.appendItems([3, 4, 5]) - dataSource.apply(snapshot4) + var snapshot5 = dataSource.snapshot() + snapshot5.appendSections([3, 4, 5]) - let snapshot5 = dataSource.snapshot() - XCTAssertEqual(snapshot5.sectionIdentifiers, [0, 1, 2, 3, 4, 5]) - XCTAssertEqual(snapshot5.itemIdentifiers, [0, 1, 2, 3, 4, 5]) + var snapshot6 = dataSource.snapshot() + XCTAssertEqual(snapshot6.sectionIdentifiers, [0, 1, 2]) + XCTAssertEqual(snapshot6.itemIdentifiers, [0, 1, 2]) + + snapshot6.appendSections([3, 4, 5]) + snapshot6.appendItems([3, 4, 5]) + dataSource.apply(snapshot6) + + let snapshot7 = dataSource.snapshot() + XCTAssertEqual(snapshot7.sectionIdentifiers, [0, 1, 2, 3, 4, 5]) + XCTAssertEqual(snapshot7.itemIdentifiers, [0, 1, 2, 3, 4, 5]) } func testItemIdentifier() { @@ -85,7 +88,7 @@ final class CollectionViewDiffableDataSourceTests: XCTestCase { UICollectionViewCell() } - let snapshot = DiffableDataSourceSnapshot() + var snapshot = DiffableDataSourceSnapshot() snapshot.appendSections([0, 1, 2]) snapshot.appendItems([0, 1, 2], toSection: 0) dataSource.apply(snapshot) @@ -100,7 +103,7 @@ final class CollectionViewDiffableDataSourceTests: XCTestCase { UICollectionViewCell() } - let snapshot = DiffableDataSourceSnapshot() + var snapshot = DiffableDataSourceSnapshot() snapshot.appendSections([0, 1, 2]) snapshot.appendItems([0, 1, 2], toSection: 0) dataSource.apply(snapshot) @@ -117,7 +120,7 @@ final class CollectionViewDiffableDataSourceTests: XCTestCase { XCTAssertEqual(dataSource.numberOfSections(in: collectionView), 0) - let snapshot = DiffableDataSourceSnapshot() + var snapshot = DiffableDataSourceSnapshot() snapshot.appendSections([0, 1, 2]) snapshot.appendItems([0, 1, 2], toSection: 0) dataSource.apply(snapshot) @@ -131,7 +134,7 @@ final class CollectionViewDiffableDataSourceTests: XCTestCase { UICollectionViewCell() } - let snapshot = DiffableDataSourceSnapshot() + var snapshot = DiffableDataSourceSnapshot() snapshot.appendSections([0, 1, 2]) snapshot.appendItems([0, 1, 2], toSection: 0) dataSource.apply(snapshot) @@ -146,7 +149,7 @@ final class CollectionViewDiffableDataSourceTests: XCTestCase { cell } - let snapshot = DiffableDataSourceSnapshot() + var snapshot = DiffableDataSourceSnapshot() snapshot.appendSections([0, 1, 2]) snapshot.appendItems([0, 1, 2], toSection: 0) dataSource.apply(snapshot) diff --git a/Tests/DiffableDataSourceTests.swift b/Tests/DiffableDataSourceTests.swift index 59614a1..7adf171 100644 --- a/Tests/DiffableDataSourceTests.swift +++ b/Tests/DiffableDataSourceTests.swift @@ -16,7 +16,7 @@ final class DiffableDataSourceSnapshotTests: XCTestCase { ] for test in tests { - let snapshot = DiffableDataSourceSnapshot() + var snapshot = DiffableDataSourceSnapshot() snapshot.appendSections(test.initial) snapshot.appendSections(test.append) XCTAssertEqual(snapshot.sectionIdentifiers, test.expected) @@ -33,7 +33,7 @@ final class DiffableDataSourceSnapshotTests: XCTestCase { ] for test in tests { - let snapshot = DiffableDataSourceSnapshot() + var snapshot = DiffableDataSourceSnapshot() snapshot.appendSections(test.initial) snapshot.appendSections(test.append) XCTAssertEqual(snapshot.sectionIdentifiers, test.expected) @@ -51,7 +51,7 @@ final class DiffableDataSourceSnapshotTests: XCTestCase { ] for test in tests { - let snapshot = DiffableDataSourceSnapshot() + var snapshot = DiffableDataSourceSnapshot() snapshot.appendSections(test.initial) snapshot.insertSections(test.insert, beforeSection: test.before) XCTAssertEqual(snapshot.sectionIdentifiers, test.expected) @@ -67,7 +67,7 @@ final class DiffableDataSourceSnapshotTests: XCTestCase { ] for test in tests { - let snapshot = DiffableDataSourceSnapshot() + var snapshot = DiffableDataSourceSnapshot() snapshot.appendSections(test.initial) snapshot.insertSections(test.insert, beforeSection: test.before) XCTAssertEqual(snapshot.sectionIdentifiers, test.expected) @@ -86,7 +86,7 @@ final class DiffableDataSourceSnapshotTests: XCTestCase { ] for test in tests { - let snapshot = DiffableDataSourceSnapshot() + var snapshot = DiffableDataSourceSnapshot() snapshot.appendSections(test.initial) snapshot.insertSections(test.insert, afterSection: test.after) XCTAssertEqual(snapshot.sectionIdentifiers, test.expected) @@ -102,7 +102,7 @@ final class DiffableDataSourceSnapshotTests: XCTestCase { ] for test in tests { - let snapshot = DiffableDataSourceSnapshot() + var snapshot = DiffableDataSourceSnapshot() snapshot.appendSections(test.initial) snapshot.insertSections(test.insert, afterSection: test.after) XCTAssertEqual(snapshot.sectionIdentifiers, test.expected) @@ -122,7 +122,7 @@ final class DiffableDataSourceSnapshotTests: XCTestCase { ] for test in tests { - let snapshot = DiffableDataSourceSnapshot() + var snapshot = DiffableDataSourceSnapshot() snapshot.appendSections(test.initial) snapshot.deleteSections(test.delete) XCTAssertEqual(snapshot.sectionIdentifiers, test.expected) @@ -140,7 +140,7 @@ final class DiffableDataSourceSnapshotTests: XCTestCase { ] for test in tests { - let snapshot = DiffableDataSourceSnapshot() + var snapshot = DiffableDataSourceSnapshot() snapshot.appendSections(test.initial) snapshot.moveSection(test.move, beforeSection: test.before) XCTAssertEqual(snapshot.sectionIdentifiers, test.expected) @@ -158,7 +158,7 @@ final class DiffableDataSourceSnapshotTests: XCTestCase { ] for test in tests { - let snapshot = DiffableDataSourceSnapshot() + var snapshot = DiffableDataSourceSnapshot() snapshot.appendSections(test.initial) snapshot.moveSection(test.move, afterSection: test.after) XCTAssertEqual(snapshot.sectionIdentifiers, test.expected) @@ -194,7 +194,7 @@ final class DiffableDataSourceSnapshotTests: XCTestCase { ] for test in tests { - let snapshot = DiffableDataSourceSnapshot() + var snapshot = DiffableDataSourceSnapshot() snapshot.appendSections(test.initial) snapshot.reloadSections(test.reload) XCTAssertEqual(snapshot.sectionIdentifiers, test.initial) @@ -213,7 +213,7 @@ final class DiffableDataSourceSnapshotTests: XCTestCase { ] for test in tests { - let snapshot = DiffableDataSourceSnapshot() + var snapshot = DiffableDataSourceSnapshot() snapshot.appendSections([0, 1]) snapshot.appendItems(test.initial) snapshot.appendItems(test.append) @@ -231,7 +231,7 @@ final class DiffableDataSourceSnapshotTests: XCTestCase { ] for test in tests { - let snapshot = DiffableDataSourceSnapshot() + var snapshot = DiffableDataSourceSnapshot() snapshot.appendSections([0, 1]) snapshot.appendItems(test.initial) snapshot.appendItems(test.append) @@ -253,7 +253,7 @@ final class DiffableDataSourceSnapshotTests: XCTestCase { ] for test in tests { - let snapshot = DiffableDataSourceSnapshot() + var snapshot = DiffableDataSourceSnapshot() for (section, items) in test.initial.enumerated() { snapshot.appendSections([section]) snapshot.appendItems(items) @@ -276,7 +276,7 @@ final class DiffableDataSourceSnapshotTests: XCTestCase { ] for test in tests { - let snapshot = DiffableDataSourceSnapshot() + var snapshot = DiffableDataSourceSnapshot() for (section, items) in test.initial.enumerated() { snapshot.appendSections([section]) snapshot.appendItems(items) @@ -302,7 +302,7 @@ final class DiffableDataSourceSnapshotTests: XCTestCase { ] for test in tests { - let snapshot = DiffableDataSourceSnapshot() + var snapshot = DiffableDataSourceSnapshot() snapshot.appendSections([0, 1]) snapshot.appendItems(test.initial) snapshot.insertItems(test.insert, beforeItem: test.before) @@ -320,7 +320,7 @@ final class DiffableDataSourceSnapshotTests: XCTestCase { ] for test in tests { - let snapshot = DiffableDataSourceSnapshot() + var snapshot = DiffableDataSourceSnapshot() snapshot.appendSections([0, 1]) snapshot.appendItems(test.initial) snapshot.insertItems(test.insert, beforeItem: test.before) @@ -341,7 +341,7 @@ final class DiffableDataSourceSnapshotTests: XCTestCase { ] for test in tests { - let snapshot = DiffableDataSourceSnapshot() + var snapshot = DiffableDataSourceSnapshot() snapshot.appendSections([0, 1]) snapshot.appendItems(test.initial) snapshot.insertItems(test.insert, afterItem: test.after) @@ -359,7 +359,7 @@ final class DiffableDataSourceSnapshotTests: XCTestCase { ] for test in tests { - let snapshot = DiffableDataSourceSnapshot() + var snapshot = DiffableDataSourceSnapshot() snapshot.appendSections([0, 1]) snapshot.appendItems(test.initial) snapshot.insertItems(test.insert, afterItem: test.after) @@ -382,7 +382,7 @@ final class DiffableDataSourceSnapshotTests: XCTestCase { ] for test in tests { - let snapshot = DiffableDataSourceSnapshot() + var snapshot = DiffableDataSourceSnapshot() for (section, items) in test.initial.enumerated() { snapshot.appendSections([section]) snapshot.appendItems(items, toSection: section) @@ -409,7 +409,7 @@ final class DiffableDataSourceSnapshotTests: XCTestCase { ] for test in tests { - let snapshot = DiffableDataSourceSnapshot() + var snapshot = DiffableDataSourceSnapshot() for (section, items) in test.enumerated() { snapshot.appendSections([section]) snapshot.appendItems(items, toSection: section) @@ -435,7 +435,7 @@ final class DiffableDataSourceSnapshotTests: XCTestCase { ] for test in tests { - let snapshot = DiffableDataSourceSnapshot() + var snapshot = DiffableDataSourceSnapshot() for (section, items) in test.initial.enumerated() { snapshot.appendSections([section]) snapshot.appendItems(items, toSection: section) @@ -463,7 +463,7 @@ final class DiffableDataSourceSnapshotTests: XCTestCase { ] for test in tests { - let snapshot = DiffableDataSourceSnapshot() + var snapshot = DiffableDataSourceSnapshot() for (section, items) in test.initial.enumerated() { snapshot.appendSections([section]) snapshot.appendItems(items, toSection: section) @@ -539,7 +539,7 @@ final class DiffableDataSourceSnapshotTests: XCTestCase { ] for test in tests { - let snapshot = DiffableDataSourceSnapshot() + var snapshot = DiffableDataSourceSnapshot() for (section, items) in test.initial.enumerated() { snapshot.appendSections([section]) snapshot.appendItems(items, toSection: section) @@ -564,7 +564,7 @@ final class DiffableDataSourceSnapshotTests: XCTestCase { ] for test in tests { - let snapshot = DiffableDataSourceSnapshot() + var snapshot = DiffableDataSourceSnapshot() for (section, items) in test.initial.enumerated() { snapshot.appendSections([section]) snapshot.appendItems(items, toSection: section) @@ -583,7 +583,7 @@ final class DiffableDataSourceSnapshotTests: XCTestCase { ] for test in tests { - let snapshot = DiffableDataSourceSnapshot() + var snapshot = DiffableDataSourceSnapshot() for (section, items) in test.initial.enumerated() { snapshot.appendSections([section]) snapshot.appendItems(items, toSection: section) @@ -602,7 +602,7 @@ final class DiffableDataSourceSnapshotTests: XCTestCase { ] for test in tests { - let snapshot = DiffableDataSourceSnapshot() + var snapshot = DiffableDataSourceSnapshot() snapshot.appendSections(test.initial) XCTAssertEqual(snapshot.numberOfSections, test.expected) @@ -618,7 +618,7 @@ final class DiffableDataSourceSnapshotTests: XCTestCase { ] for test in tests { - let snapshot = DiffableDataSourceSnapshot() + var snapshot = DiffableDataSourceSnapshot() snapshot.appendSections(test.initial) XCTAssertEqual(snapshot.numberOfSections, test.expected) @@ -636,7 +636,7 @@ final class DiffableDataSourceSnapshotTests: XCTestCase { ] for test in tests { - let snapshot = DiffableDataSourceSnapshot() + var snapshot = DiffableDataSourceSnapshot() for (section, items) in test.initial.enumerated() { snapshot.appendSections([section]) snapshot.appendItems(items, toSection: section) @@ -655,7 +655,7 @@ final class DiffableDataSourceSnapshotTests: XCTestCase { ] for test in tests { - let snapshot = DiffableDataSourceSnapshot() + var snapshot = DiffableDataSourceSnapshot() for (section, items) in test.initial.enumerated() { snapshot.appendSections([section]) snapshot.appendItems(items, toSection: section) @@ -674,7 +674,7 @@ final class DiffableDataSourceSnapshotTests: XCTestCase { ] for test in tests { - let snapshot = DiffableDataSourceSnapshot() + var snapshot = DiffableDataSourceSnapshot() snapshot.appendSections(test.initial) XCTAssertEqual(snapshot.sectionIdentifiers, test.expected) @@ -690,7 +690,7 @@ final class DiffableDataSourceSnapshotTests: XCTestCase { ] for test in tests { - let snapshot = DiffableDataSourceSnapshot() + var snapshot = DiffableDataSourceSnapshot() snapshot.appendSections(test.initial) XCTAssertEqual(snapshot.sectionIdentifiers, test.expected) @@ -708,7 +708,7 @@ final class DiffableDataSourceSnapshotTests: XCTestCase { ] for test in tests { - let snapshot = DiffableDataSourceSnapshot() + var snapshot = DiffableDataSourceSnapshot() for (section, items) in test.initial.enumerated() { snapshot.appendSections([section]) snapshot.appendItems(items, toSection: section) @@ -727,7 +727,7 @@ final class DiffableDataSourceSnapshotTests: XCTestCase { ] for test in tests { - let snapshot = DiffableDataSourceSnapshot() + var snapshot = DiffableDataSourceSnapshot() for (section, items) in test.initial.enumerated() { snapshot.appendSections([section]) snapshot.appendItems(items, toSection: section) @@ -748,7 +748,7 @@ final class DiffableDataSourceSnapshotTests: XCTestCase { ] for test in tests { - let snapshot = DiffableDataSourceSnapshot() + var snapshot = DiffableDataSourceSnapshot() for (section, items) in test.initial.enumerated() { snapshot.appendSections([section]) snapshot.appendItems(items, toSection: section) @@ -767,7 +767,7 @@ final class DiffableDataSourceSnapshotTests: XCTestCase { ] for test in tests { - let snapshot = DiffableDataSourceSnapshot() + var snapshot = DiffableDataSourceSnapshot() for (section, items) in test.initial.enumerated() { snapshot.appendSections([section]) snapshot.appendItems(items, toSection: section) @@ -789,7 +789,7 @@ final class DiffableDataSourceSnapshotTests: XCTestCase { ] for test in tests { - let snapshot = DiffableDataSourceSnapshot() + var snapshot = DiffableDataSourceSnapshot() for (section, items) in test.initial.enumerated() { snapshot.appendSections([section]) snapshot.appendItems(items, toSection: section) @@ -808,7 +808,7 @@ final class DiffableDataSourceSnapshotTests: XCTestCase { ] for test in tests { - let snapshot = DiffableDataSourceSnapshot() + var snapshot = DiffableDataSourceSnapshot() for (section, items) in test.initial.enumerated() { snapshot.appendSections([section]) snapshot.appendItems(items, toSection: section) @@ -830,7 +830,7 @@ final class DiffableDataSourceSnapshotTests: XCTestCase { ] for test in tests { - let snapshot = DiffableDataSourceSnapshot() + var snapshot = DiffableDataSourceSnapshot() for (section, items) in test.initial.enumerated() { snapshot.appendSections([section]) snapshot.appendItems(items, toSection: section) @@ -849,7 +849,7 @@ final class DiffableDataSourceSnapshotTests: XCTestCase { ] for test in tests { - let snapshot = DiffableDataSourceSnapshot() + var snapshot = DiffableDataSourceSnapshot() for (section, items) in test.initial.enumerated() { snapshot.appendSections([section]) snapshot.appendItems(items, toSection: section) @@ -870,7 +870,7 @@ final class DiffableDataSourceSnapshotTests: XCTestCase { ] for test in tests { - let snapshot = DiffableDataSourceSnapshot() + var snapshot = DiffableDataSourceSnapshot() snapshot.appendSections(test.initial) XCTAssertEqual(snapshot.indexOfSection(test.section), test.expectedIndex) @@ -886,7 +886,7 @@ final class DiffableDataSourceSnapshotTests: XCTestCase { ] for test in tests { - let snapshot = DiffableDataSourceSnapshot() + var snapshot = DiffableDataSourceSnapshot() snapshot.appendSections(test.initial) XCTAssertEqual(snapshot.indexOfSection(test.section), test.expectedIndex) diff --git a/Tests/TableViewDiffableDataSourceTests.swift b/Tests/TableViewDiffableDataSourceTests.swift index 31caa27..c29cd3f 100644 --- a/Tests/TableViewDiffableDataSourceTests.swift +++ b/Tests/TableViewDiffableDataSourceTests.swift @@ -20,7 +20,7 @@ final class TableViewDiffableDataSourceTests: XCTestCase { UITableViewCell() } - let snapshot = DiffableDataSourceSnapshot() + var snapshot = DiffableDataSourceSnapshot() dataSource.apply(snapshot) XCTAssertEqual(tableView.isPerformBatchUpdatesCalledCount, 0) @@ -50,33 +50,36 @@ final class TableViewDiffableDataSourceTests: XCTestCase { XCTAssertEqual(snapshot1.sectionIdentifiers, []) XCTAssertEqual(snapshot1.itemIdentifiers, []) - dataSource.snapshot().appendSections([0, 1, 2]) - let snapshot2 = dataSource.snapshot() - XCTAssertEqual(snapshot2.sectionIdentifiers, []) - XCTAssertEqual(snapshot2.itemIdentifiers, []) + var snapshot2 = dataSource.snapshot() + snapshot2.appendSections([0, 1, 2]) - let snapshotToApply = DiffableDataSourceSnapshot() + let snapshot3 = dataSource.snapshot() + XCTAssertEqual(snapshot3.sectionIdentifiers, []) + XCTAssertEqual(snapshot3.itemIdentifiers, []) + + var snapshotToApply = DiffableDataSourceSnapshot() snapshotToApply.appendSections([0, 1, 2]) snapshotToApply.appendItems([0, 1, 2]) dataSource.apply(snapshotToApply) - let snapshot3 = dataSource.snapshot() - XCTAssertEqual(snapshot3.sectionIdentifiers, [0, 1, 2]) - XCTAssertEqual(snapshot3.itemIdentifiers, [0, 1, 2]) - - dataSource.snapshot().appendSections([3, 4, 5]) - let snapshot4 = dataSource.snapshot() XCTAssertEqual(snapshot4.sectionIdentifiers, [0, 1, 2]) XCTAssertEqual(snapshot4.itemIdentifiers, [0, 1, 2]) - snapshot4.appendSections([3, 4, 5]) - snapshot4.appendItems([3, 4, 5]) - dataSource.apply(snapshot4) + var snapshot5 = dataSource.snapshot() + snapshot5.appendSections([3, 4, 5]) - let snapshot5 = dataSource.snapshot() - XCTAssertEqual(snapshot5.sectionIdentifiers, [0, 1, 2, 3, 4, 5]) - XCTAssertEqual(snapshot5.itemIdentifiers, [0, 1, 2, 3, 4, 5]) + var snapshot6 = dataSource.snapshot() + XCTAssertEqual(snapshot6.sectionIdentifiers, [0, 1, 2]) + XCTAssertEqual(snapshot6.itemIdentifiers, [0, 1, 2]) + + snapshot6.appendSections([3, 4, 5]) + snapshot6.appendItems([3, 4, 5]) + dataSource.apply(snapshot6) + + let snapshot7 = dataSource.snapshot() + XCTAssertEqual(snapshot7.sectionIdentifiers, [0, 1, 2, 3, 4, 5]) + XCTAssertEqual(snapshot7.itemIdentifiers, [0, 1, 2, 3, 4, 5]) } func testItemIdentifier() { @@ -85,7 +88,7 @@ final class TableViewDiffableDataSourceTests: XCTestCase { UITableViewCell() } - let snapshot = DiffableDataSourceSnapshot() + var snapshot = DiffableDataSourceSnapshot() snapshot.appendSections([0, 1, 2]) snapshot.appendItems([0, 1, 2], toSection: 0) dataSource.apply(snapshot) @@ -100,7 +103,7 @@ final class TableViewDiffableDataSourceTests: XCTestCase { UITableViewCell() } - let snapshot = DiffableDataSourceSnapshot() + var snapshot = DiffableDataSourceSnapshot() snapshot.appendSections([0, 1, 2]) snapshot.appendItems([0, 1, 2], toSection: 0) dataSource.apply(snapshot) @@ -117,7 +120,7 @@ final class TableViewDiffableDataSourceTests: XCTestCase { XCTAssertEqual(dataSource.numberOfSections(in: tableView), 0) - let snapshot = DiffableDataSourceSnapshot() + var snapshot = DiffableDataSourceSnapshot() snapshot.appendSections([0, 1, 2]) snapshot.appendItems([0, 1, 2], toSection: 0) dataSource.apply(snapshot) @@ -131,7 +134,7 @@ final class TableViewDiffableDataSourceTests: XCTestCase { UITableViewCell() } - let snapshot = DiffableDataSourceSnapshot() + var snapshot = DiffableDataSourceSnapshot() snapshot.appendSections([0, 1, 2]) snapshot.appendItems([0, 1, 2], toSection: 0) dataSource.apply(snapshot) @@ -146,7 +149,7 @@ final class TableViewDiffableDataSourceTests: XCTestCase { cell } - let snapshot = DiffableDataSourceSnapshot() + var snapshot = DiffableDataSourceSnapshot() snapshot.appendSections([0, 1, 2]) snapshot.appendItems([0, 1, 2], toSection: 0) dataSource.apply(snapshot)