Files
ggbond268--mactools/Plugins/Translator/Tests/ScreenshotOverlaySessionTests.swift
wehub-resource-sync 1d1286fadb
Build / Build and test (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 13:18:38 +08:00

60 lines
1.5 KiB
Swift

import XCTest
@testable import TranslatorPlugin
@MainActor
final class ScreenshotOverlaySessionTests: XCTestCase {
func testCancellationDismissesPresentedOverlayWindow() async {
let window = RecordingScreenshotOverlayWindow()
let session = ScreenshotOverlaySession(
hasAvailableScreens: { true },
activateApplication: {},
overlayWindowPresenter: { onComplete in
return [window]
}
)
let task = Task {
await session.selectRegion()
}
await waitUntil { window.showCount == 1 }
task.cancel()
await waitUntil { window.dismissCount == 1 }
let result = await task.value
XCTAssertEqual(result, .failure(.cancelled))
}
private func waitUntil(
_ condition: @MainActor () -> Bool,
file: StaticString = #filePath,
line: UInt = #line
) async {
let deadline = Date().addingTimeInterval(1)
while !condition(), Date() < deadline {
await Task.yield()
}
XCTAssertTrue(condition(), file: file, line: line)
}
}
@MainActor
private final class RecordingScreenshotOverlayWindow: ScreenshotOverlayWindowManaging {
private(set) var showCount = 0
private(set) var keyCount = 0
private(set) var dismissCount = 0
func showOverlayWindow() {
showCount += 1
}
func makeOverlayKeyWindow() {
keyCount += 1
}
func dismissOverlayWindow() {
dismissCount += 1
}
}