-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathAPDynamicGridTests.swift
66 lines (51 loc) · 1.9 KB
/
APDynamicGridTests.swift
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
import XCTest
@testable import APDynamicGrid
final class APDynamicGridTests: XCTestCase {
private var sut: DynamicGridViewModel<MockEntity>!
override func setUp() {
sut = DynamicGridViewModel()
super.setUp()
}
override func tearDown() {
super.tearDown()
sut = nil
}
private func mockValues(size: Int) -> [MockEntity] { (0..<size).map {_ in MockEntity() } }
func testEmptyValues() {
let grid = sut.getGrid(values: mockValues(size: 0), columns: 1)
XCTAssertEqual(0, grid.keys.count)
}
func testEmptyColumns() {
let grid = sut.getGrid(values: mockValues(size: 10), columns: 0)
XCTAssertEqual(0, grid.keys.count)
}
func testEmptyValuesAndColumns() {
let grid = sut.getGrid(values: mockValues(size: 0), columns: 0)
XCTAssertEqual(0, grid.keys.count)
}
func testOneColumn() {
let grid = sut.getGrid(values: mockValues(size: 10), columns: 1)
XCTAssertEqual(10, grid.keys.count)
}
func testTwoColumns_evenValues() {
let grid = sut.getGrid(values: mockValues(size: 10), columns: 2)
XCTAssertEqual(5, grid.keys.count)
}
func testTwoColumns_oddValues() {
let grid = sut.getGrid(values: mockValues(size: 11), columns: 2)
XCTAssertEqual(6, grid.keys.count)
}
func testTwoColumns_oddValues_last() throws {
let grid = sut.getGrid(values: mockValues(size: 11), columns: 2)
let lastColumn = try XCTUnwrap(grid.keys.sorted().last)
XCTAssertEqual(1, grid[lastColumn]?.count)
XCTAssertEqual(2, grid[lastColumn - 1]?.count)
}
func testThreeColumns() {
let grid = sut.getGrid(values: mockValues(size: 11), columns: 3)
XCTAssertEqual(4, grid.keys.count)
}
}
fileprivate struct MockEntity: Identifiable & Hashable {
let id = UUID()
}