Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
91 changes: 91 additions & 0 deletions FreeRulerTests/RulerCoreTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -344,6 +344,51 @@ final class RulerCoreTests: XCTestCase {
}
}

func testMouseNumberLabelsRespectUnitsAfterZeroCornerFlip() {
withRestoredZeroCornerPreference {
let previousUnit = prefs.unit
defer { prefs.unit = previousUnit }

prefs.zeroCorner = .bottomRight
let horizontalRule = HorizontalRule(
frame: NSRect(x: 0, y: 0, width: 300, height: Ruler.thickness)
)
let verticalRule = VerticalRule(
frame: NSRect(x: 0, y: 0, width: Ruler.thickness, height: 300)
)
let horizontalNumber = horizontalRule.mouseNumber(forTickX: 260, rulerWidth: 300)
let verticalNumber = verticalRule.mouseNumber(forTickY: 40, rulerHeight: 300)
let horizontalDpmm = horizontalRule.screen?.dpmm.width ?? NSScreen.defaultDpmm
let verticalDpmm = verticalRule.screen?.dpmm.width ?? NSScreen.defaultDpmm
let horizontalDpi = horizontalRule.screen?.dpi.width ?? NSScreen.defaultDpi
let verticalDpi = verticalRule.screen?.dpi.width ?? NSScreen.defaultDpi

prefs.unit = .pixels
XCTAssertEqual(horizontalRule.getMouseNumberLabel(horizontalNumber), "40")
XCTAssertEqual(verticalRule.getMouseNumberLabel(verticalNumber), "40")

prefs.unit = .millimeters
XCTAssertEqual(
horizontalRule.getMouseNumberLabel(horizontalNumber),
String(format: "%.1f", horizontalNumber / horizontalDpmm)
)
XCTAssertEqual(
verticalRule.getMouseNumberLabel(verticalNumber),
String(format: "%.1f", verticalNumber / verticalDpmm)
)

prefs.unit = .inches
XCTAssertEqual(
horizontalRule.getMouseNumberLabel(horizontalNumber),
String(format: "%.3f", horizontalNumber / horizontalDpi)
)
XCTAssertEqual(
verticalRule.getMouseNumberLabel(verticalNumber),
String(format: "%.3f", verticalNumber / verticalDpi)
)
}
}

func testRulerColorsDefaultToOriginalFillColor() {
withRestoredRulerColorPreference {
prefs.rulerColor = Prefs.defaultRulerFillColor
Expand Down Expand Up @@ -1242,6 +1287,52 @@ final class RulerCoreTests: XCTestCase {
)
}

func testResetPositionUsesCurrentZeroCorner() {
withRestoredZeroCornerPreference {
prefs.zeroCorner = .bottomRight
let horizontalController = RulerController(
ruler: Ruler(.horizontal, frame: NSRect(x: 10, y: 20, width: 300, height: Ruler.thickness))
)
let verticalController = RulerController(
ruler: Ruler(.vertical, frame: NSRect(x: 10, y: 20, width: Ruler.thickness, height: 300))
)

horizontalController.resetPosition()
verticalController.resetPosition()

XCTAssertEqual(
horizontalController.rulerWindow.frame,
getDefaultContentRect(orientation: .horizontal, zeroCorner: .bottomRight)
)
XCTAssertEqual(
verticalController.rulerWindow.frame,
getDefaultContentRect(orientation: .vertical, zeroCorner: .bottomRight)
)
XCTAssertEqual(prefs.zeroCorner, .bottomRight)
}
}

func testResetPositionKeepsFlippedDefaultRulersOnSharedZeroPoint() {
withRestoredZeroCornerPreference {
prefs.zeroCorner = .topRight
let horizontalController = RulerController(
ruler: Ruler(.horizontal, frame: NSRect(x: 10, y: 20, width: 300, height: Ruler.thickness))
)
let verticalController = RulerController(
ruler: Ruler(.vertical, frame: NSRect(x: 10, y: 20, width: Ruler.thickness, height: 300))
)

horizontalController.resetPosition()
verticalController.resetPosition()

let geometry = ZeroCornerGeometry(zeroCorner: .topRight)
XCTAssertEqual(
geometry.zeroPoint(in: horizontalController.rulerWindow.frame, for: .horizontal),
geometry.zeroPoint(in: verticalController.rulerWindow.frame, for: .vertical)
)
}
}

private func mouseEvent(
type: NSEvent.EventType,
location: NSPoint,
Expand Down