native macOS codings agent orchestrator prowl.onev.cat
Something went wrong. Try again.
Swift
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156import AppKitimport Testing
@testable import Prowl
struct MirroredTerminalKeyTests { @Test func enterEventNormalizes() throws { let event = NSEvent.keyEvent( with: .keyDown, location: .zero, modifierFlags: [], timestamp: 0, windowNumber: 0, context: nil, characters: "\r", charactersIgnoringModifiers: "\r", isARepeat: false, keyCode: 36 )
let key = MirroredTerminalKey(event: try #require(event))
#expect(key?.kind == .enter) #expect(key?.keyCode == 36) }
@Test func commandModifiedEventsAreFilteredOut() throws { let event = NSEvent.keyEvent( with: .keyDown, location: .zero, modifierFlags: [.command], timestamp: 0, windowNumber: 0, context: nil, characters: "c", charactersIgnoringModifiers: "c", isARepeat: false, keyCode: 8 )
#expect(MirroredTerminalKey(event: try #require(event)) == nil) }
@Test func controlCharacterEventNormalizes() throws { let event = NSEvent.keyEvent( with: .keyDown, location: .zero, modifierFlags: [.control], timestamp: 0, windowNumber: 0, context: nil, characters: "\u{03}", charactersIgnoringModifiers: "c", isARepeat: false, keyCode: 8 )
let key = MirroredTerminalKey(event: try #require(event))
#expect(key?.kind == .controlCharacter) #expect(key?.charactersIgnoringModifiers == "c") #expect(key?.modifiers == [.control]) }
@Test func commandBackspaceIsAllowed() throws { let event = NSEvent.keyEvent( with: .keyDown, location: .zero, modifierFlags: [.command], timestamp: 0, windowNumber: 0, context: nil, characters: "\u{7F}", charactersIgnoringModifiers: "\u{7F}", isARepeat: false, keyCode: 51 )
let key = MirroredTerminalKey(event: try #require(event))
#expect(key?.kind == .backspace) #expect(key?.modifiers == [.command]) }
@Test func commandArrowIsAllowed() throws { let event = NSEvent.keyEvent( with: .keyDown, location: .zero, modifierFlags: [.command], timestamp: 0, windowNumber: 0, context: nil, characters: "", charactersIgnoringModifiers: "", isARepeat: false, keyCode: 124 )
let key = MirroredTerminalKey(event: try #require(event))
#expect(key?.kind == .arrowRight) #expect(key?.modifiers == [.command]) }
@Test func plainTextEventDoesNotNormalizeAsMirroredKey() throws { let event = NSEvent.keyEvent( with: .keyDown, location: .zero, modifierFlags: [], timestamp: 0, windowNumber: 0, context: nil, characters: "a", charactersIgnoringModifiers: "a", isARepeat: false, keyCode: 0 )
#expect(MirroredTerminalKey(event: try #require(event)) == nil) }
@Test func ghosttyTextIgnoresFlagsChangedEvents() throws { let event = NSEvent.keyEvent( with: .flagsChanged, location: .zero, modifierFlags: [.command], timestamp: 0, windowNumber: 0, context: nil, characters: "", charactersIgnoringModifiers: "", isARepeat: false, keyCode: 55 )
#expect(GhosttyEventText.characters(for: try #require(event)) == nil) }
@Test func ghosttyTextReadsKeyEvents() throws { let event = NSEvent.keyEvent( with: .keyDown, location: .zero, modifierFlags: [], timestamp: 0, windowNumber: 0, context: nil, characters: "a", charactersIgnoringModifiers: "a", isARepeat: false, keyCode: 0 )
#expect(GhosttyEventText.characters(for: try #require(event)) == "a") }}