Files
Termind/FrameworkTests/TerminalCommandDraftControllerTests.swift

55 lines
1.7 KiB
Swift

// SPDX-FileCopyrightText: 2026 Kaede Akino
// SPDX-License-Identifier: GPL-3.0-only
import Foundation
import TermindApplication
import Testing
@Suite @MainActor
struct TerminalCommandDraftControllerTests {
@Test
func readsOneDraftAndRejectsConcurrentRequests() async throws {
let controller = TerminalCommandDraftController()
var writes: [Data] = []
let first = Task {
try await controller.read(isAvailable: true) { data in
writes.append(data)
}
}
while !controller.hasPendingRequest { await Task.yield() }
await #expect(throws: TerminalDraftError.self) {
try await controller.read(isAvailable: true) { _ in }
}
controller.receive("list files")
#expect(try await first.value == "list files")
#expect(writes == [TerminalCommandDraftController.requestPayload])
}
@Test
func replacementUsesBracketedPasteWithoutSubmitting() {
let payload = TerminalCommandDraftController().replacementPayload(for: "ls -la")
#expect(payload == Data("\u{1B}[777;2~\u{1B}[200~ls -la\u{1B}[201~".utf8))
#expect(!payload.contains(0x0A))
#expect(!payload.contains(0x0D))
}
@Test
func cancellationResumesThePendingReader() async {
let controller = TerminalCommandDraftController()
let read = Task {
try await controller.read(isAvailable: true) { _ in }
}
while !controller.hasPendingRequest { await Task.yield() }
controller.cancel(CancellationError())
await #expect(throws: CancellationError.self) {
try await read.value
}
#expect(!controller.hasPendingRequest)
}
}