Clean up repository structure and release docs
This commit is contained in:
122
tests/app/ReaderAdaptiveLayoutTests.swift
Normal file
122
tests/app/ReaderAdaptiveLayoutTests.swift
Normal file
@@ -0,0 +1,122 @@
|
||||
import XCTest
|
||||
@testable import IHatePDFs
|
||||
|
||||
final class ReaderAdaptiveLayoutTests: XCTestCase {
|
||||
func testSizeClassBreakpointsMatchMacWindowProfiles() {
|
||||
XCTAssertEqual(ReaderAdaptiveLayout(width: 759).sizeClass, .compact)
|
||||
XCTAssertEqual(ReaderAdaptiveLayout(width: 959).sizeClass, .compact)
|
||||
XCTAssertEqual(ReaderAdaptiveLayout(width: 960).sizeClass, .regular)
|
||||
XCTAssertEqual(ReaderAdaptiveLayout(width: 1_279).sizeClass, .regular)
|
||||
XCTAssertEqual(ReaderAdaptiveLayout(width: 1_280).sizeClass, .wide)
|
||||
}
|
||||
|
||||
func testCompactProfileKeepsSingleSidebarAndDocumentReadableAtMinimumWidth() {
|
||||
let layout = ReaderAdaptiveLayout(width: ReaderAdaptiveLayout.minimumWindowWidth)
|
||||
XCTAssertEqual(layout.sizeClass, .compact)
|
||||
XCTAssertFalse(layout.allowsDualSidebars)
|
||||
XCTAssertTrue(layout.usesCompactToolbar)
|
||||
|
||||
assertDocumentWidthIsPreserved(
|
||||
layout: layout,
|
||||
availableWidth: ReaderAdaptiveLayout.minimumWindowWidth,
|
||||
requestedLeft: layout.leftSidebarMaxWidth,
|
||||
requestedRight: 0,
|
||||
showLeft: true,
|
||||
showRight: false
|
||||
)
|
||||
|
||||
assertDocumentWidthIsPreserved(
|
||||
layout: layout,
|
||||
availableWidth: ReaderAdaptiveLayout.minimumWindowWidth,
|
||||
requestedLeft: 0,
|
||||
requestedRight: layout.rightSidebarMaxWidth,
|
||||
showLeft: false,
|
||||
showRight: true
|
||||
)
|
||||
}
|
||||
|
||||
func testRegularProfilePreservesDocumentWidthWithBothSidebarsAtBreakpoint() {
|
||||
let layout = ReaderAdaptiveLayout(width: 960)
|
||||
XCTAssertEqual(layout.sizeClass, .regular)
|
||||
XCTAssertTrue(layout.allowsDualSidebars)
|
||||
XCTAssertFalse(layout.usesCompactToolbar)
|
||||
|
||||
assertDocumentWidthIsPreserved(
|
||||
layout: layout,
|
||||
availableWidth: 960,
|
||||
requestedLeft: layout.leftSidebarIdealWidth,
|
||||
requestedRight: layout.rightSidebarIdealWidth,
|
||||
showLeft: true,
|
||||
showRight: true
|
||||
)
|
||||
}
|
||||
|
||||
func testExpandedRegularSidebarsShrinkBeforeTheDocumentDoes() {
|
||||
let layout = ReaderAdaptiveLayout(width: 960)
|
||||
|
||||
let widths = layout.resolvedSidebarWidths(
|
||||
availableWidth: 960,
|
||||
requestedLeft: layout.leftSidebarMaxWidth,
|
||||
requestedRight: layout.rightSidebarMaxWidth,
|
||||
showLeft: true,
|
||||
showRight: true
|
||||
)
|
||||
|
||||
XCTAssertGreaterThanOrEqual(widths.left, layout.leftSidebarMinWidth - 0.001)
|
||||
XCTAssertGreaterThanOrEqual(widths.right, layout.rightSidebarMinWidth - 0.001)
|
||||
XCTAssertLessThanOrEqual(widths.left, layout.leftSidebarMaxWidth + 0.001)
|
||||
XCTAssertLessThanOrEqual(widths.right, layout.rightSidebarMaxWidth + 0.001)
|
||||
assertDocumentWidthIsPreserved(
|
||||
layout: layout,
|
||||
availableWidth: 960,
|
||||
requestedLeft: layout.leftSidebarMaxWidth,
|
||||
requestedRight: layout.rightSidebarMaxWidth,
|
||||
showLeft: true,
|
||||
showRight: true
|
||||
)
|
||||
}
|
||||
|
||||
func testWideProfileUsesRoomierSidebarsWhilePreservingDocumentWidth() {
|
||||
let layout = ReaderAdaptiveLayout(width: 1_280)
|
||||
XCTAssertEqual(layout.sizeClass, .wide)
|
||||
XCTAssertGreaterThan(layout.rightSidebarIdealWidth, ReaderAdaptiveLayout(width: 960).rightSidebarIdealWidth)
|
||||
XCTAssertGreaterThan(layout.documentMinWidth, ReaderAdaptiveLayout(width: 960).documentMinWidth)
|
||||
|
||||
assertDocumentWidthIsPreserved(
|
||||
layout: layout,
|
||||
availableWidth: 1_280,
|
||||
requestedLeft: layout.leftSidebarIdealWidth,
|
||||
requestedRight: layout.rightSidebarIdealWidth,
|
||||
showLeft: true,
|
||||
showRight: true
|
||||
)
|
||||
}
|
||||
|
||||
private func assertDocumentWidthIsPreserved(
|
||||
layout: ReaderAdaptiveLayout,
|
||||
availableWidth: CGFloat,
|
||||
requestedLeft: CGFloat,
|
||||
requestedRight: CGFloat,
|
||||
showLeft: Bool,
|
||||
showRight: Bool,
|
||||
file: StaticString = #filePath,
|
||||
line: UInt = #line
|
||||
) {
|
||||
let widths = layout.resolvedSidebarWidths(
|
||||
availableWidth: availableWidth,
|
||||
requestedLeft: requestedLeft,
|
||||
requestedRight: requestedRight,
|
||||
showLeft: showLeft,
|
||||
showRight: showRight
|
||||
)
|
||||
let documentWidth = layout.visibleContentWidth(
|
||||
availableWidth: availableWidth,
|
||||
leftWidth: widths.left,
|
||||
rightWidth: widths.right,
|
||||
showLeft: showLeft,
|
||||
showRight: showRight
|
||||
)
|
||||
|
||||
XCTAssertGreaterThanOrEqual(documentWidth, layout.documentMinWidth - 0.001, file: file, line: line)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user