| | |
| | | let record = makeWindowRecord( |
| | | title: "Closed Document.md", |
| | | hasAXBacking: false, |
| | | isOnscreen: false, |
| | | spaceIDs: [5] |
| | | isOnscreen: false |
| | | ) |
| | | |
| | | XCTAssertFalse(WindowEnumerationPolicy.shouldInclude(record)) |
| | | XCTAssertNil(WindowEnumerationPolicy.window(from: record)) |
| | | } |
| | | |
| | | func testWindowEnumerationPolicyKeepsCGOnlyOffscreenWindowsWithKnownSpaceIDs() { |
| | | let record = makeWindowRecord( |
| | | title: "Other Space Document.md", |
| | | hasAXBacking: false, |
| | | isOnscreen: false, |
| | | spaceIDs: [5] |
| | | ) |
| | | |
| | | let window = WindowEnumerationPolicy.window(from: record) |
| | | |
| | | XCTAssertEqual(window?.title, "Other Space Document.md") |
| | | XCTAssertEqual(window?.spaceIDs, [5]) |
| | | } |
| | | |
| | | func testWindowEnumerationPolicyKeepsAXBackedOffscreenWindows() { |
| | |
| | | XCTAssertNil(WindowEnumerationPolicy.window(from: tinyRecord)) |
| | | } |
| | | |
| | | func testWindowEnumerationPolicyKeepsShottrCGOnlyAnnotationWindow() { |
| | | func testWindowEnumerationPolicyExcludesClosedShottrCGPlaceholderButKeepsVisibleWindow() { |
| | | let shottrApp = AlignerApp( |
| | | bundleIdentifier: "cc.ffitch.shottr", |
| | | name: "Shottr", |
| | | category: .generic |
| | | ) |
| | | let annotationRecord = WindowEnumerationRecord( |
| | | let closedPlaceholderRecord = WindowEnumerationRecord( |
| | | id: 78, |
| | | app: shottrApp, |
| | | activationPolicy: .accessory, |
| | |
| | | subrole: .standard, |
| | | hasAXBacking: false, |
| | | isOnscreen: false |
| | | ) |
| | | let visibleRecord = WindowEnumerationRecord( |
| | | id: 79, |
| | | app: shottrApp, |
| | | activationPolicy: .accessory, |
| | | title: "Shottr", |
| | | size: CGSize(width: 1710, height: 997), |
| | | subrole: .standard, |
| | | hasAXBacking: false, |
| | | isOnscreen: true |
| | | ) |
| | | let utilityRecord = WindowEnumerationRecord( |
| | | id: 102, |
| | |
| | | isOnscreen: false |
| | | ) |
| | | |
| | | XCTAssertEqual(WindowEnumerationPolicy.window(from: annotationRecord)?.title, "Shottr") |
| | | XCTAssertNil(WindowEnumerationPolicy.window(from: closedPlaceholderRecord)) |
| | | XCTAssertEqual(WindowEnumerationPolicy.window(from: visibleRecord)?.title, "Shottr") |
| | | XCTAssertNil(WindowEnumerationPolicy.window(from: utilityRecord)) |
| | | } |
| | | |
| | |
| | | XCTAssertEqual(snapshot.appGroups.single?.windows.map(\.primarySpaceID), [10, 11, 12, 12, nil]) |
| | | } |
| | | |
| | | func testWindowSpaceMappingFillsUnresolvedWindowsFromSpaceInverseMap() { |
| | | let mapping = WindowSpaceMappingPolicy.mergedSpaceIDsByWindowID( |
| | | requestedWindowIDs: [10, 20, 30], |
| | | directSpaceIDsByWindowID: [10: [100]], |
| | | windowIDsBySpaceID: [ |
| | | 100: [10, 20], |
| | | 101: [30] |
| | | ], |
| | | orderedSpaceIDs: [100, 101] |
| | | ) |
| | | |
| | | XCTAssertEqual(mapping[10], [100]) |
| | | XCTAssertEqual(mapping[20], [100]) |
| | | XCTAssertEqual(mapping[30], [101]) |
| | | } |
| | | |
| | | func testWindowSpaceMappingDoesNotOverwriteDirectSpaceAssignments() { |
| | | let mapping = WindowSpaceMappingPolicy.mergedSpaceIDsByWindowID( |
| | | requestedWindowIDs: [10], |
| | | directSpaceIDsByWindowID: [10: [101]], |
| | | windowIDsBySpaceID: [ |
| | | 100: [10] |
| | | ], |
| | | orderedSpaceIDs: [100, 101] |
| | | ) |
| | | |
| | | XCTAssertEqual(mapping[10], [101]) |
| | | } |
| | | |
| | | func testWindowSpaceMappingLeavesAmbiguousNoSpaceWindowsUnassigned() { |
| | | let mapping = WindowSpaceMappingPolicy.mergedSpaceIDsByWindowID( |
| | | requestedWindowIDs: [10, 20], |
| | | directSpaceIDsByWindowID: [:], |
| | | windowIDsBySpaceID: [ |
| | | 100: [10, 99] |
| | | ], |
| | | orderedSpaceIDs: [100] |
| | | ) |
| | | |
| | | XCTAssertEqual(mapping[10], [100]) |
| | | XCTAssertNil(mapping[20]) |
| | | XCTAssertNil(mapping[99]) |
| | | } |
| | | |
| | | func testQuickSwitchSnapshotKeepsMinimizedAndFullscreenWindows() { |
| | | let app = makeApp() |
| | | let snapshot = QuickSwitchSnapshotBuilder.snapshot( |