Skip to content

Commit 1b4dc30

Browse files
committed
Add ⌘ modifier tests
1 parent 53e9e6c commit 1b4dc30

File tree

1 file changed

+30
-7
lines changed

1 file changed

+30
-7
lines changed

Lib/SauceTests/KeyboardLayoutTests.swift

Lines changed: 30 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -37,17 +37,18 @@ final class KeyboardLayoutTests: XCTestCase {
3737
private let QWERTYVKeyCode = 9
3838
private let DvorakVKeyCode = 47 // swiftlint:disable:this identifier_name
3939

40-
private var selectedInputSource: InputSource?
40+
private static var selectedInputSource: InputSource?
4141

42-
override func setUp() {
42+
override static func setUp() {
4343
super.setUp()
4444
selectedInputSource = InputSource(source: TISCopyCurrentKeyboardLayoutInputSource().takeUnretainedValue())
4545
}
4646

47-
override func tearDown() {
47+
override static func tearDown() {
4848
super.tearDown()
4949
guard let selectedInputSource else { return }
50-
selectInputSource(id: selectedInputSource.id)
50+
TISEnableInputSource(selectedInputSource.source)
51+
TISSelectInputSource(selectedInputSource.source)
5152
}
5253

5354
// MARK: - Tests
@@ -73,6 +74,28 @@ final class KeyboardLayoutTests: XCTestCase {
7374
uninstallInputSource(id: ABCKeyboardID)
7475
}
7576

77+
func testKeyCodesForABCKeyboardWithCommandModifier() {
78+
let isInstalledABCKeyboard = isInstalledInputSource(id: ABCKeyboardID)
79+
XCTAssertTrue(installInputSource(id: ABCKeyboardID))
80+
XCTAssertTrue(selectInputSource(id: ABCKeyboardID))
81+
let notificationCenter = NotificationCenter()
82+
let keyboardLayout = KeyboardLayout(notificationCenter: notificationCenter)
83+
let vKeyCode = keyboardLayout.currentKeyCode(for: .v, carbonModifiers: cmdKey)
84+
XCTAssertEqual(vKeyCode, CGKeyCode(QWERTYVKeyCode))
85+
let vKey = keyboardLayout.currentKey(for: QWERTYVKeyCode, carbonModifiers: cmdKey)
86+
XCTAssertEqual(vKey, .v)
87+
let vCharacter = keyboardLayout.currentCharacter(for: QWERTYVKeyCode, carbonModifiers: cmdKey)
88+
XCTAssertEqual(vCharacter, "v")
89+
let vShiftCharacter = keyboardLayout.currentCharacter(for: QWERTYVKeyCode, carbonModifiers: modifierTransformer.carbonFlags(from: [.shift, .command]))
90+
XCTAssertEqual(vShiftCharacter, "V")
91+
let vOptionCharacter = keyboardLayout.currentCharacter(for: QWERTYVKeyCode, carbonModifiers: modifierTransformer.carbonFlags(from: [.option, .command]))
92+
XCTAssertEqual(vOptionCharacter, "")
93+
let vShiftOptionCharacter = keyboardLayout.currentCharacter(for: QWERTYVKeyCode, carbonModifiers: modifierTransformer.carbonFlags(from: [.shift, .option, .command]))
94+
XCTAssertEqual(vShiftOptionCharacter, "")
95+
guard !isInstalledABCKeyboard else { return }
96+
uninstallInputSource(id: ABCKeyboardID)
97+
}
98+
7699
func testKeyCodesForDvorakKeyboard() {
77100
let isInstalledDvorakKeyboard = isInstalledInputSource(id: dvorakKeyboardID)
78101
XCTAssertTrue(installInputSource(id: dvorakKeyboardID))
@@ -85,11 +108,11 @@ final class KeyboardLayoutTests: XCTestCase {
85108
XCTAssertEqual(vKey, .v)
86109
let vCharacter = keyboardLayout.currentCharacter(for: DvorakVKeyCode, carbonModifiers: 0)
87110
XCTAssertEqual(vCharacter, "v")
88-
let vShiftCharacter = keyboardLayout.currentCharacter(for: DvorakVKeyCode, carbonModifiers: modifierTransformer.carbonFlags(from: [.shift, .command]))
111+
let vShiftCharacter = keyboardLayout.currentCharacter(for: DvorakVKeyCode, carbonModifiers: modifierTransformer.carbonFlags(from: .shift))
89112
XCTAssertEqual(vShiftCharacter, "V")
90-
let vOptionCharacter = keyboardLayout.currentCharacter(for: DvorakVKeyCode, carbonModifiers: modifierTransformer.carbonFlags(from: [.option, .command]))
113+
let vOptionCharacter = keyboardLayout.currentCharacter(for: DvorakVKeyCode, carbonModifiers: modifierTransformer.carbonFlags(from: [.option]))
91114
XCTAssertEqual(vOptionCharacter, "")
92-
let vShiftOptionCharacter = keyboardLayout.currentCharacter(for: DvorakVKeyCode, carbonModifiers: modifierTransformer.carbonFlags(from: [.shift, .option, .command]))
115+
let vShiftOptionCharacter = keyboardLayout.currentCharacter(for: DvorakVKeyCode, carbonModifiers: modifierTransformer.carbonFlags(from: [.shift, .option]))
93116
XCTAssertEqual(vShiftOptionCharacter, "")
94117
guard !isInstalledDvorakKeyboard else { return }
95118
uninstallInputSource(id: dvorakKeyboardID)

0 commit comments

Comments
 (0)