native macOS codings agent orchestrator prowl.onev.cat
Something went wrong. Try again.
2.1 kB · 52 lines
Swift
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253import AppKitimport Testing
@testable import supacode
/// Window and responder guards for the no-terminal undo key (docs-ai 069.002).@MainActorstruct TerminalCloseUndoKeyMonitorTests { @Test func eventsFromAnotherWindowAreNotDispatched() { let owner = NSWindow(contentRect: .zero, styleMask: .titled, backing: .buffered, defer: false) let other = NSWindow(contentRect: .zero, styleMask: .titled, backing: .buffered, defer: false) let event = keyEvent("z", [.command], windowNumber: other.windowNumber) #expect(event.window === other)
#expect(!TerminalCloseUndoKeyMonitor.shouldDispatch(event, ownerWindow: owner)) #expect(!TerminalCloseUndoKeyMonitor.shouldDispatch(event, ownerWindow: nil)) #expect(TerminalCloseUndoKeyMonitor.shouldDispatch(event, ownerWindow: other)) }
@Test func aTextFieldFirstResponderKeepsItsOwnUndo() { let owner = NSWindow(contentRect: .zero, styleMask: .titled, backing: .buffered, defer: false) let event = keyEvent("z", [.command], windowNumber: owner.windowNumber) #expect(TerminalCloseUndoKeyMonitor.shouldDispatch(event, ownerWindow: owner))
let field = NSTextView(frame: .zero) owner.contentView?.addSubview(field) owner.makeFirstResponder(field) #expect(owner.firstResponder === field) #expect(!TerminalCloseUndoKeyMonitor.shouldDispatch(event, ownerWindow: owner)) }
@Test func firstResponderKindsThatOwnUndo() { #expect(TerminalCloseUndoKeyMonitor.firstResponderOwnsUndo(NSTextView())) #expect(!TerminalCloseUndoKeyMonitor.firstResponderOwnsUndo(NSView())) #expect(!TerminalCloseUndoKeyMonitor.firstResponderOwnsUndo(nil)) }
private func keyEvent(_ characters: String, _ flags: NSEvent.ModifierFlags, windowNumber: Int) -> NSEvent { NSEvent.keyEvent( with: .keyDown, location: .zero, modifierFlags: flags, timestamp: 0, windowNumber: windowNumber, context: nil, characters: characters, charactersIgnoringModifiers: characters, isARepeat: false, keyCode: 6 )! }}