56 lines
2.4 KiB
Swift
56 lines
2.4 KiB
Swift
import XCTest
|
|
@testable import CapswitchCore
|
|
|
|
final class CapsInputRouterTests: XCTestCase {
|
|
func testPhysicalCapsToF19UnderContinuousTyping() {
|
|
var router = CapsInputRouter()
|
|
|
|
for _ in 0..<100 {
|
|
XCTAssertEqual(router.keyDown(code: 0, optionDown: false), .none)
|
|
XCTAssertEqual(router.keyDown(code: 80, optionDown: false), .none)
|
|
XCTAssertEqual(router.keyDown(code: 80, optionDown: false, isRepeat: true), .none)
|
|
XCTAssertEqual(router.keyUp(code: 0, optionDown: false), .none)
|
|
XCTAssertEqual(router.keyUp(code: 80, optionDown: false), .switchToNextInputSource)
|
|
}
|
|
}
|
|
|
|
func testOptionBeforeF19TogglesOnlyAfterOptionRelease() {
|
|
var router = CapsInputRouter()
|
|
|
|
XCTAssertEqual(router.flagsChanged(optionDown: true), .none)
|
|
XCTAssertEqual(router.keyDown(code: 80, optionDown: true), .none)
|
|
XCTAssertEqual(router.keyUp(code: 80, optionDown: true), .none)
|
|
XCTAssertEqual(router.flagsChanged(optionDown: false), .toggleCapsLock)
|
|
}
|
|
|
|
func testOptionDuringF19TogglesNotSwitches() {
|
|
var router = CapsInputRouter()
|
|
|
|
XCTAssertEqual(router.keyDown(code: 80, optionDown: false), .none)
|
|
XCTAssertEqual(router.flagsChanged(optionDown: true), .none)
|
|
XCTAssertEqual(router.flagsChanged(optionDown: false), .none)
|
|
XCTAssertEqual(router.keyUp(code: 80, optionDown: false), .toggleCapsLock)
|
|
}
|
|
|
|
func testOptionReleaseOnNextF19DownKeepsPendingCapsToggle() {
|
|
var router = CapsInputRouter()
|
|
|
|
XCTAssertEqual(router.flagsChanged(optionDown: true), .none)
|
|
XCTAssertEqual(router.keyDown(code: 80, optionDown: true), .none)
|
|
XCTAssertEqual(router.keyUp(code: 80, optionDown: true), .none)
|
|
|
|
// When the Option-up event is folded into the following key event,
|
|
// complete the previous toggle without losing it.
|
|
XCTAssertEqual(router.keyDown(code: 80, optionDown: false), .toggleCapsLock)
|
|
XCTAssertEqual(router.keyUp(code: 80, optionDown: false), .switchToNextInputSource)
|
|
}
|
|
|
|
func testOrphanReleaseAndResetDoNotSwitch() {
|
|
var router = CapsInputRouter()
|
|
|
|
XCTAssertEqual(router.keyUp(code: 80, optionDown: false), .none)
|
|
XCTAssertEqual(router.keyDown(code: 80, optionDown: false), .none)
|
|
router.reset()
|
|
XCTAssertEqual(router.keyUp(code: 80, optionDown: false), .none)
|
|
}
|
|
}
|