Adds test cases.

This commit is contained in:
zonble 2022-02-02 21:25:51 +08:00
parent 44ecf223d7
commit 56ced2dd0f
2 changed files with 69 additions and 6 deletions

View File

@ -129,7 +129,7 @@ class KeyHandlerBopomofoTests: XCTestCase {
} }
func testIgnoreCommand() { func testIgnoreCommand() {
let input = KeyHandlerInput(inputText: "A", keyCode: 0, charCode: 0, flags: [.command], isVerticalMode: false) let input = KeyHandlerInput(inputText: "A", keyCode: 0, charCode: 0, flags: .command, isVerticalMode: false)
var state: InputState = InputState.Empty() var state: InputState = InputState.Empty()
let result = handler.handle(input: input, state: state) { newState in let result = handler.handle(input: input, state: state) { newState in
state = newState state = newState
@ -139,7 +139,7 @@ class KeyHandlerBopomofoTests: XCTestCase {
} }
func testIgnoreOption() { func testIgnoreOption() {
let input = KeyHandlerInput(inputText: "A", keyCode: 0, charCode: 0, flags: [.option], isVerticalMode: false) let input = KeyHandlerInput(inputText: "A", keyCode: 0, charCode: 0, flags: .option, isVerticalMode: false)
var state: InputState = InputState.Empty() var state: InputState = InputState.Empty()
let result = handler.handle(input: input, state: state) { newState in let result = handler.handle(input: input, state: state) { newState in
state = newState state = newState
@ -149,7 +149,7 @@ class KeyHandlerBopomofoTests: XCTestCase {
} }
func testIgnoreNumericPad() { func testIgnoreNumericPad() {
let input = KeyHandlerInput(inputText: "A", keyCode: 0, charCode: 0, flags: [.numericPad], isVerticalMode: false) let input = KeyHandlerInput(inputText: "A", keyCode: 0, charCode: 0, flags: .numericPad, isVerticalMode: false)
var state: InputState = InputState.Empty() var state: InputState = InputState.Empty()
let result = handler.handle(input: input, state: state) { newState in let result = handler.handle(input: input, state: state) { newState in
state = newState state = newState
@ -159,7 +159,7 @@ class KeyHandlerBopomofoTests: XCTestCase {
} }
func testIgnoreCapslock() { func testIgnoreCapslock() {
let input = KeyHandlerInput(inputText: "A", keyCode: 0, charCode: 0, flags: [.capsLock], isVerticalMode: false) let input = KeyHandlerInput(inputText: "A", keyCode: 0, charCode: 0, flags: .capsLock, isVerticalMode: false)
var state: InputState = InputState.Empty() var state: InputState = InputState.Empty()
let result = handler.handle(input: input, state: state) { newState in let result = handler.handle(input: input, state: state) { newState in
state = newState state = newState
@ -168,6 +168,46 @@ class KeyHandlerBopomofoTests: XCTestCase {
XCTAssertFalse(result) XCTAssertFalse(result)
} }
func testCapslock() {
var input = KeyHandlerInput(inputText: "b", keyCode: 0, charCode: charCode("b"), flags: [], isVerticalMode: false)
var state: InputState = InputState.Empty()
handler.handle(input: input, state: state) { newState in
state = newState
} errorCallback: {
}
var count = 0
input = KeyHandlerInput(inputText: "a", keyCode: 0, charCode: charCode("a"), flags: .capsLock, isVerticalMode: false)
handler.handle(input: input, state: state) { newState in
if count == 1 {
state = newState
}
count += 1
} errorCallback: {
}
XCTAssertTrue(state is InputState.Committing, "\(state)")
if let state = state as? InputState.Committing {
XCTAssertEqual(state.poppedText, "a")
}
}
func testCapslockShift() {
var input = KeyHandlerInput(inputText: "b", keyCode: 0, charCode: charCode("b"), flags: [], isVerticalMode: false)
var state: InputState = InputState.Empty()
handler.handle(input: input, state: state) { newState in
state = newState
} errorCallback: {
}
input = KeyHandlerInput(inputText: "a", keyCode: 0, charCode: charCode("a"), flags: [.capsLock, .shift], isVerticalMode: false)
handler.handle(input: input, state: state) { newState in
state = newState
} errorCallback: {
}
XCTAssertTrue(state is InputState.Empty, "\(state)")
}
func testisNumericPad() { func testisNumericPad() {
var input = KeyHandlerInput(inputText: "b", keyCode: 0, charCode: charCode("b"), flags: [], isVerticalMode: false) var input = KeyHandlerInput(inputText: "b", keyCode: 0, charCode: charCode("b"), flags: [], isVerticalMode: false)
var state: InputState = InputState.Empty() var state: InputState = InputState.Empty()
@ -234,6 +274,30 @@ class KeyHandlerBopomofoTests: XCTestCase {
Preferences.halfWidthPunctuationEnabled = enabled Preferences.halfWidthPunctuationEnabled = enabled
} }
func testIgnorePunctuationTable() {
let enabled = Preferences.halfWidthPunctuationEnabled
Preferences.halfWidthPunctuationEnabled = false
var state: InputState = InputState.Empty()
var input = KeyHandlerInput(inputText: "1", keyCode: 0, charCode: charCode("1"), flags: .shift, isVerticalMode: false)
handler.handle(input: input, state: state) { newState in
state = newState
} errorCallback: {
}
input = KeyHandlerInput(inputText: "`", keyCode: 0, charCode: charCode("`"), flags: .shift, isVerticalMode: false)
handler.handle(input: input, state: state) { newState in
state = newState
} errorCallback: {
}
XCTAssertTrue(state is InputState.Inputting, "\(state)")
if let state = state as? InputState.Inputting {
XCTAssertEqual(state.composingBuffer, "")
}
Preferences.halfWidthPunctuationEnabled = enabled
}
func testHalfPunctuationComma() { func testHalfPunctuationComma() {
let enabled = Preferences.halfWidthPunctuationEnabled let enabled = Preferences.halfWidthPunctuationEnabled
Preferences.halfWidthPunctuationEnabled = true Preferences.halfWidthPunctuationEnabled = true

View File

@ -371,8 +371,7 @@ static NSString *const kGraphVizOutputfile = @"/tmp/McBopomofo-visualization.dot
if (!Preferences.associatedPhrasesEnabled) { if (!Preferences.associatedPhrasesEnabled) {
InputStateEmpty *empty = [[InputStateEmpty alloc] init]; InputStateEmpty *empty = [[InputStateEmpty alloc] init];
stateCallback(empty); stateCallback(empty);
} } else {
else {
InputStateAssociatedPhrases *associatedPhrases = (InputStateAssociatedPhrases *)[self buildAssociatePhraseStateWithKey:text useVerticalMode:input.useVerticalMode]; InputStateAssociatedPhrases *associatedPhrases = (InputStateAssociatedPhrases *)[self buildAssociatePhraseStateWithKey:text useVerticalMode:input.useVerticalMode];
if (associatedPhrases) { if (associatedPhrases) {
stateCallback(associatedPhrases); stateCallback(associatedPhrases);