native macOS codings agent orchestrator
6
fork

Configure Feed

Select the types of activity you want to include in your feed.

test(cli-key): cover uppercase and ANSI control combos

onevcat b464296c e06eb92d

+53
+6
ProwlCLITests/ProwlCLIIntegrationTests.swift
··· 973 973 ("command-shift-k", "cmd-shift-k"), 974 974 ("alt-enter", "opt-enter"), 975 975 ("ctrl-z", "ctrl-z"), 976 + ("A", "shift-a"), 977 + ("ctrl-left-bracket", "ctrl-left-bracket"), 978 + ("ctrl-backslash", "ctrl-backslash"), 979 + ("ctrl-right-bracket", "ctrl-right-bracket"), 980 + ("ctrl-shift-6", "shift-ctrl-6"), 981 + ("ctrl-shift-minus", "shift-ctrl-minus"), 976 982 ("deleteforward", "delete-forward"), 977 983 ("f12", "f12"), 978 984 ("[", "left-bracket"),
+47
supacodeTests/CLIKeyTokenExpansionTests.swift
··· 26 26 #expect(KeyTokens.normalize("f12") == "f12") 27 27 } 28 28 29 + @Test func normalizesUppercaseLettersToShiftedPrintableCombos() { 30 + #expect(KeyTokens.normalize("A") == "shift-a") 31 + #expect(KeyTokens.normalize("cmd-A") == "cmd-shift-a") 32 + } 33 + 29 34 @Test func rejectsUnsupportedShiftedSymbolLiterals() { 30 35 #expect(KeyTokens.normalize("!") == nil) 31 36 #expect(KeyTokens.normalize("@") == nil) ··· 36 41 @Test func expandedCategoriesAreReported() { 37 42 #expect(KeyTokens.category(for: "cmd-c") == .shortcut) 38 43 #expect(KeyTokens.category(for: "ctrl-z") == .control) 44 + #expect(KeyTokens.category(for: "ctrl-shift-minus") == .control) 39 45 #expect(KeyTokens.category(for: "f12") == .function) 40 46 } 41 47 ··· 64 70 #expect(spec.modifiers == [.shift]) 65 71 #expect(spec.characters == "{") 66 72 #expect(spec.charactersIgnoringModifiers == "[") 73 + } 74 + 75 + @Test func cliKeySpecBuildsUppercasePrintableEvent() throws { 76 + let spec = try #require(CLIKeySpec.from(token: "A")) 77 + 78 + #expect(spec.keyCode == UInt16(kVK_ANSI_A)) 79 + #expect(spec.modifiers == [.shift]) 80 + #expect(spec.characters == "A") 81 + #expect(spec.charactersIgnoringModifiers == "a") 82 + } 83 + 84 + @Test func cliKeySpecBuildsAnsiControlCharactersForCommonTerminalCombos() throws { 85 + let esc = try #require(CLIKeySpec.from(token: "ctrl-left-bracket")) 86 + #expect(esc.keyCode == UInt16(kVK_ANSI_LeftBracket)) 87 + #expect(esc.modifiers == [.control]) 88 + #expect(esc.characters == String(UnicodeScalar(27)!)) 89 + #expect(esc.charactersIgnoringModifiers == "[") 90 + 91 + let fileSeparator = try #require(CLIKeySpec.from(token: "ctrl-backslash")) 92 + #expect(fileSeparator.keyCode == UInt16(kVK_ANSI_Backslash)) 93 + #expect(fileSeparator.modifiers == [.control]) 94 + #expect(fileSeparator.characters == String(UnicodeScalar(28)!)) 95 + #expect(fileSeparator.charactersIgnoringModifiers == "\\") 96 + 97 + let groupSeparator = try #require(CLIKeySpec.from(token: "ctrl-right-bracket")) 98 + #expect(groupSeparator.keyCode == UInt16(kVK_ANSI_RightBracket)) 99 + #expect(groupSeparator.modifiers == [.control]) 100 + #expect(groupSeparator.characters == String(UnicodeScalar(29)!)) 101 + #expect(groupSeparator.charactersIgnoringModifiers == "]") 102 + 103 + let caret = try #require(CLIKeySpec.from(token: "ctrl-shift-6")) 104 + #expect(caret.keyCode == UInt16(kVK_ANSI_6)) 105 + #expect(caret.modifiers == [.control, .shift]) 106 + #expect(caret.characters == String(UnicodeScalar(30)!)) 107 + #expect(caret.charactersIgnoringModifiers == "6") 108 + 109 + let underscore = try #require(CLIKeySpec.from(token: "ctrl-shift-minus")) 110 + #expect(underscore.keyCode == UInt16(kVK_ANSI_Minus)) 111 + #expect(underscore.modifiers == [.control, .shift]) 112 + #expect(underscore.characters == String(UnicodeScalar(31)!)) 113 + #expect(underscore.charactersIgnoringModifiers == "-") 67 114 } 68 115 69 116 @Test func cliKeySpecBuildsFunctionAndForwardDeleteEvents() throws {