Signal-iOS/Signal/test/ViewControllers/ConversationViewControllerTest.swift
2020-10-30 09:20:51 -03:00

105 lines
6.7 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)]]
)
}
func testCVCBottomViewType() {
XCTAssertEqual(CVCBottomViewType.none, CVCBottomViewType.none)
XCTAssertNotEqual(CVCBottomViewType.none, CVCBottomViewType.inputToolbar)
XCTAssertEqual(CVCBottomViewType.inputToolbar, CVCBottomViewType.inputToolbar)
XCTAssertNotEqual(CVCBottomViewType.none, CVCBottomViewType.memberRequestView)
XCTAssertNotEqual(CVCBottomViewType.memberRequestView,
CVCBottomViewType.messageRequestView(messageRequestType: MessageRequestType(isGroupV1Thread: true,
isGroupV2Thread: true,
isThreadBlocked: true,
hasSentMessages: true)))
XCTAssertEqual(CVCBottomViewType.messageRequestView(messageRequestType: MessageRequestType(isGroupV1Thread: true,
isGroupV2Thread: true,
isThreadBlocked: true,
hasSentMessages: true)),
CVCBottomViewType.messageRequestView(messageRequestType: MessageRequestType(isGroupV1Thread: true,
isGroupV2Thread: true,
isThreadBlocked: true,
hasSentMessages: true)))
XCTAssertNotEqual(CVCBottomViewType.messageRequestView(messageRequestType: MessageRequestType(isGroupV1Thread: true,
isGroupV2Thread: true,
isThreadBlocked: true,
hasSentMessages: true)),
CVCBottomViewType.messageRequestView(messageRequestType: MessageRequestType(isGroupV1Thread: true,
isGroupV2Thread: false,
isThreadBlocked: true,
hasSentMessages: true)))
XCTAssertEqual(CVCBottomViewType.messageRequestView(messageRequestType: MessageRequestType(isGroupV1Thread: true,
isGroupV2Thread: false,
isThreadBlocked: true,
hasSentMessages: true)),
CVCBottomViewType.messageRequestView(messageRequestType: MessageRequestType(isGroupV1Thread: true,
isGroupV2Thread: false,
isThreadBlocked: true,
hasSentMessages: true)))
XCTAssertNotEqual(CVCBottomViewType.messageRequestView(messageRequestType: MessageRequestType(isGroupV1Thread: true,
isGroupV2Thread: true,
isThreadBlocked: true,
hasSentMessages: false)),
CVCBottomViewType.messageRequestView(messageRequestType: MessageRequestType(isGroupV1Thread: true,
isGroupV2Thread: false,
isThreadBlocked: true,
hasSentMessages: true)))
}
}