| | |
| | | private let appCount: Int |
| | | private let windowsPerApp: Int |
| | | private let mode: FixtureQuickSwitchMode |
| | | private let usesMultipleDisplays: Bool |
| | | |
| | | init(appCount: Int, windowsPerApp: Int = 1, mode: FixtureQuickSwitchMode = .layout) { |
| | | init( |
| | | appCount: Int, |
| | | windowsPerApp: Int = 1, |
| | | mode: FixtureQuickSwitchMode = .layout, |
| | | usesMultipleDisplays: Bool = false |
| | | ) { |
| | | self.appCount = max(1, appCount) |
| | | self.windowsPerApp = max(1, windowsPerApp) |
| | | self.mode = mode |
| | | self.usesMultipleDisplays = usesMultipleDisplays |
| | | } |
| | | |
| | | func snapshot() throws -> QuickSwitchSnapshotLoad { |
| | |
| | | } |
| | | |
| | | private func layoutSnapshot() -> QuickSwitchSnapshotLoad { |
| | | let displayUUID = "fixture-display-a" |
| | | let displays = [ |
| | | AlignerDisplay( |
| | | uuid: displayUUID, |
| | | physical: true, |
| | | spaces: [ |
| | | AlignerSpace(id: 1, type: .user, displayUUID: displayUUID, index: 1), |
| | | AlignerSpace(id: 2, type: .fullscreen, displayUUID: displayUUID, index: 2), |
| | | AlignerSpace(id: 3, type: .user, displayUUID: displayUUID, index: 3) |
| | | ] |
| | | ) |
| | | ] |
| | | let displays = layoutDisplays() |
| | | let spaceIDs: [UInt64] = usesMultipleDisplays ? [1, 2, 3, 4, 5] : [1, 2, 3] |
| | | let windows = (0..<appCount).flatMap { index in |
| | | let app = AlignerApp( |
| | | bundleIdentifier: "com.example.fixture.\(String(format: "%03d", index))", |
| | |
| | | |
| | | return (0..<windowsPerApp).map { windowIndex in |
| | | let spaceSeed = index + windowIndex |
| | | let spaceID = spaceSeed % 5 == 0 ? UInt64(2) : UInt64(spaceSeed % 2 == 0 ? 1 : 3) |
| | | let spaceID = usesMultipleDisplays |
| | | ? spaceIDs[spaceSeed % spaceIDs.count] |
| | | : UInt64(spaceSeed % 5 == 0 ? 2 : spaceSeed % 2 == 0 ? 1 : 3) |
| | | return AlignerWindow( |
| | | id: UInt32(10_000 + index * 100 + windowIndex), |
| | | app: app, |
| | |
| | | |
| | | return QuickSwitchSnapshotLoad( |
| | | snapshot: QuickSwitchSnapshotBuilder.snapshot(displays: displays, windows: windows), |
| | | currentSpaceIDs: [2] |
| | | currentSpaceIDs: usesMultipleDisplays ? [2, 4] : [2] |
| | | ) |
| | | } |
| | | |
| | | private func layoutDisplays() -> [AlignerDisplay] { |
| | | let displayAUUID = "fixture-display-a" |
| | | guard usesMultipleDisplays else { |
| | | return [ |
| | | AlignerDisplay( |
| | | uuid: displayAUUID, |
| | | physical: true, |
| | | spaces: [ |
| | | AlignerSpace(id: 1, type: .user, displayUUID: displayAUUID, index: 1), |
| | | AlignerSpace(id: 2, type: .fullscreen, displayUUID: displayAUUID, index: 2), |
| | | AlignerSpace(id: 3, type: .user, displayUUID: displayAUUID, index: 3) |
| | | ] |
| | | ) |
| | | ] |
| | | } |
| | | |
| | | let displayBUUID = "fixture-display-b" |
| | | return [ |
| | | AlignerDisplay( |
| | | uuid: displayAUUID, |
| | | physical: true, |
| | | spaces: [ |
| | | AlignerSpace(id: 1, type: .user, displayUUID: displayAUUID, index: 1), |
| | | AlignerSpace(id: 2, type: .fullscreen, displayUUID: displayAUUID, index: 2), |
| | | AlignerSpace(id: 3, type: .user, displayUUID: displayAUUID, index: 3) |
| | | ] |
| | | ), |
| | | AlignerDisplay( |
| | | uuid: displayBUUID, |
| | | physical: true, |
| | | spaces: [ |
| | | AlignerSpace(id: 4, type: .user, displayUUID: displayBUUID, index: 1), |
| | | AlignerSpace(id: 5, type: .user, displayUUID: displayBUUID, index: 2) |
| | | ] |
| | | ) |
| | | ] |
| | | } |
| | | |
| | | private func candidateFilteringSnapshot() -> QuickSwitchSnapshotLoad { |
| | | let displayUUID = "fixture-display-a" |
| | | let displays = [ |