Signal-iOS/Signal/test/ViewControllers/ConversationViewControllerTest.swift
2020-03-20 19:36:48 -07:00

61 lines
1.9 KiB
Swift

//
// Copyright (c) 2020 Open Whisper Systems. All rights reserved.
//
import Foundation
@testable import Signal
class ConverstationViewControllerTest: SignalBaseTest {
private func Assert(indexPaths: [(Int, Int)],
expecectedGroups: [[(Int, Int)]],
file: StaticString = #file,
line: UInt = #line) {
let indexPaths = indexPaths.map { IndexPath(row: $0.1, section: $0.0) }
let actual = ConversationViewController.consecutivelyGrouped(indexPaths: indexPaths)
let expected = expecectedGroups.map { $0.map { IndexPath(row: $0.1, section: $0.0) } }
XCTAssertEqual(actual, expected, file: file, line: line)
}
func test_consecutiveGroups_empty() {
Assert(indexPaths: [], expecectedGroups: [])
}
func test_consecutiveGroups_happyPath() {
Assert(indexPaths: [(0, 0)], expecectedGroups: [[(0, 0)]])
Assert(indexPaths: [(0, 0), (0, 1)],
expecectedGroups: [[(0, 0), (0, 1)]])
Assert(indexPaths: [(0, 0), (0, 1), (0, 3)],
expecectedGroups: [
[(0, 0), (0, 1)],
[(0, 3)]
])
Assert(indexPaths: [(0, 0), (0, 1), (0, 3), (1, 0), (1, 1), (1, 2)],
expecectedGroups: [
[(0, 0), (0, 1)],
[(0, 3)],
[(1, 0), (1, 1), (1, 2)]
])
}
func test_consecutiveGroups_differentSections() {
// different sections are not considered consecutive
// that's fine for our current use case
Assert(indexPaths: [(0, 0), (1, 0)],
expecectedGroups: [
[(0, 0)],
[(1, 0)]
])
}
func test_consecutiveGroups_outOfOrder() {
Assert(indexPaths: [(0, 3), (0, 2), (0, 0), (0, 1)],
expecectedGroups: [[(0, 0), (0, 1), (0, 2), (0, 3)]]
)
}
}