Skip to content

Commit 3853b34

Browse files
Add tests for ensuring to reset content size after reloading
1 parent 2ab6514 commit 3853b34

File tree

4 files changed

+33
-8
lines changed

4 files changed

+33
-8
lines changed

Framework/Tests/HelperFunctions.swift

+2-2
Original file line numberDiff line numberDiff line change
@@ -102,11 +102,11 @@ func numberOfVisibleRows(in view: SpreadsheetView, contentOffset: CGPoint = CGPo
102102
}
103103

104104
func calculateWidth(range: CountableRange<Int>, parameters: Parameters) -> CGFloat {
105-
return range.map { return parameters.columns[$0] }.reduce(0) { $0 + $1 + parameters.intercellSpacing.width }
105+
return range.map { return parameters.columns[$0] }.reduce(0) { $0 + $1 + parameters.intercellSpacing.width } + (range.count > 0 ? parameters.intercellSpacing.width : 0)
106106
}
107107

108108
func calculateHeight(range: CountableRange<Int>, parameters: Parameters) -> CGFloat {
109-
return range.map { return parameters.rows[$0] }.reduce(0) { $0 + $1 + parameters.intercellSpacing.height }
109+
return range.map { return parameters.rows[$0] }.reduce(0) { $0 + $1 + parameters.intercellSpacing.height } + (range.count > 0 ? parameters.intercellSpacing.height : 0)
110110
}
111111

112112
func randomArray<T>(seeds: [T], count: Int) -> [T] {

Framework/Tests/ScrollTests.swift

+2-2
Original file line numberDiff line numberDiff line change
@@ -338,8 +338,8 @@ class ScrollTests: XCTestCase {
338338
scrollPosition: ScrollPosition, parameters: Parameters) {
339339
print("parameters: \(parameters), scrollPosition: \(scrollPosition)")
340340

341-
let frozenWidth = calculateWidth(range: 0..<parameters.frozenColumns, parameters: parameters)
342-
let frozenHeight = calculateHeight(range: 0..<parameters.frozenRows, parameters: parameters)
341+
let frozenWidth = calculateWidth(range: 0..<parameters.frozenColumns, parameters: parameters) - (parameters.frozenColumns > 0 ? parameters.intercellSpacing.width : 0)
342+
let frozenHeight = calculateHeight(range: 0..<parameters.frozenRows, parameters: parameters) - (parameters.frozenRows > 0 ? parameters.intercellSpacing.height : 0)
343343

344344
var width = calculateWidth(range: 0..<columns.from, parameters: parameters)
345345

Framework/Tests/SelectionTests.swift

+4-4
Original file line numberDiff line numberDiff line change
@@ -285,9 +285,9 @@ class SelectionTests: XCTestCase {
285285
var offsetHeight: CGFloat = 0
286286
var leftEdgeColumn = 0
287287
for column in columns.from..<columns.to {
288-
let frozenWidth = calculateWidth(range: 0..<parameters.frozenColumns, parameters: parameters)
288+
let frozenWidth = calculateWidth(range: 0..<parameters.frozenColumns, parameters: parameters) - (parameters.frozenColumns > 0 ? parameters.intercellSpacing.width : 0)
289289
if column > parameters.frozenColumns && width + parameters.columns[column] + parameters.intercellSpacing.width >= spreadsheetView.frame.width - frozenWidth {
290-
offsetWidth = calculateWidth(range: parameters.frozenColumns..<column, parameters: parameters)
290+
offsetWidth = calculateWidth(range: parameters.frozenColumns..<column, parameters: parameters) - parameters.intercellSpacing.width
291291
if parameters.columnWidth - offsetWidth - frozenWidth < spreadsheetView.frame.width - frozenWidth {
292292
offsetWidth -= spreadsheetView.frame.width - (parameters.columnWidth - offsetWidth)
293293
}
@@ -301,9 +301,9 @@ class SelectionTests: XCTestCase {
301301
offsetHeight = 0
302302

303303
for row in rows.from..<rows.to {
304-
let frozenHeight = calculateHeight(range: 0..<parameters.frozenRows, parameters: parameters)
304+
let frozenHeight = calculateHeight(range: 0..<parameters.frozenRows, parameters: parameters) - (parameters.frozenRows > 0 ? parameters.intercellSpacing.height : 0)
305305
if row > parameters.frozenRows && height + parameters.rows[row] + parameters.intercellSpacing.height >= spreadsheetView.frame.height - frozenHeight {
306-
offsetHeight = calculateHeight(range: parameters.frozenRows..<(row), parameters: parameters)
306+
offsetHeight = calculateHeight(range: parameters.frozenRows..<(row), parameters: parameters) - parameters.intercellSpacing.height
307307
if parameters.rowHeight - offsetHeight - frozenHeight < spreadsheetView.frame.height - frozenHeight {
308308
offsetHeight -= spreadsheetView.frame.height - (parameters.rowHeight - offsetHeight)
309309
}

Framework/Tests/ViewTests.swift

+25
Original file line numberDiff line numberDiff line change
@@ -232,6 +232,11 @@ class ViewTests: XCTestCase {
232232
}
233233

234234
let spreadsheetView = viewController.spreadsheetView
235+
236+
XCTAssertEqual(spreadsheetView.contentSize, CGSize(width: calculateWidth(range: 0..<firstParameters.numberOfColumns, parameters: firstParameters),
237+
height: calculateHeight(range: 0..<firstParameters.numberOfRows, parameters: firstParameters)))
238+
XCTAssertEqual(spreadsheetView.contentSize, CGSize(width: spreadsheetView.tableView.frame.origin.x + spreadsheetView.tableView.contentSize.width,
239+
height: spreadsheetView.tableView.frame.origin.y + spreadsheetView.tableView.contentSize.height))
235240
verify(view: spreadsheetView, parameters: firstParameters)
236241

237242
let secondParameters = Parameters(numberOfColumns: 20, numberOfRows: 30, frozenColumns: 2, frozenRows: 3, intercellSpacing: CGSize(width: 2, height: 2), gridStyle: .solid(width: 2, color: .yellow))
@@ -240,6 +245,10 @@ class ViewTests: XCTestCase {
240245
spreadsheetView.reloadData()
241246
waitRunLoop()
242247

248+
XCTAssertEqual(spreadsheetView.contentSize, CGSize(width: calculateWidth(range: 0..<secondParameters.numberOfColumns, parameters: secondParameters),
249+
height: calculateHeight(range: 0..<secondParameters.numberOfRows, parameters: secondParameters)))
250+
XCTAssertEqual(spreadsheetView.contentSize, CGSize(width: spreadsheetView.tableView.frame.origin.x + spreadsheetView.tableView.contentSize.width,
251+
height: spreadsheetView.tableView.frame.origin.y + spreadsheetView.tableView.contentSize.height))
243252
verify(view: spreadsheetView, parameters: secondParameters)
244253

245254
let thirdParameters = Parameters(numberOfColumns: 3, numberOfRows: 6, frozenColumns: 0, frozenRows: 0)
@@ -248,7 +257,23 @@ class ViewTests: XCTestCase {
248257
spreadsheetView.reloadData()
249258
waitRunLoop()
250259

260+
XCTAssertEqual(spreadsheetView.contentSize, CGSize(width: calculateWidth(range: 0..<thirdParameters.numberOfColumns, parameters: thirdParameters),
261+
height: calculateHeight(range: 0..<thirdParameters.numberOfRows, parameters: thirdParameters)))
262+
XCTAssertEqual(spreadsheetView.contentSize, CGSize(width: spreadsheetView.tableView.frame.origin.x + spreadsheetView.tableView.contentSize.width,
263+
height: spreadsheetView.tableView.frame.origin.y + spreadsheetView.tableView.contentSize.height))
251264
verify(view: spreadsheetView, parameters: thirdParameters)
265+
266+
let fourthParameters = Parameters(numberOfColumns: 50, numberOfRows: 60, frozenColumns: 1, frozenRows: 1)
267+
applyNewParameters(fourthParameters, to: viewController)
268+
269+
spreadsheetView.reloadData()
270+
waitRunLoop()
271+
272+
XCTAssertEqual(spreadsheetView.contentSize, CGSize(width: calculateWidth(range: 0..<fourthParameters.numberOfColumns, parameters: fourthParameters),
273+
height: calculateHeight(range: 0..<fourthParameters.numberOfRows, parameters: fourthParameters)))
274+
XCTAssertEqual(spreadsheetView.contentSize, CGSize(width: spreadsheetView.tableView.frame.origin.x + spreadsheetView.tableView.contentSize.width,
275+
height: spreadsheetView.tableView.frame.origin.y + spreadsheetView.tableView.contentSize.height))
276+
verify(view: spreadsheetView, parameters: fourthParameters)
252277
}
253278

254279
func applyNewParameters(_ parameters: Parameters, to viewController: SpreadsheetViewController) {

0 commit comments

Comments
 (0)