Adds test cases.

This commit is contained in:
zonble 2022-02-04 04:49:05 +08:00
parent ccfb97e7c5
commit 6db08b8420
1 changed files with 149 additions and 0 deletions

View File

@ -708,6 +708,39 @@ class KeyHandlerBopomofoTests: XCTestCase {
XCTAssertTrue(state is InputState.EmptyIgnoringPreviousState, "\(state)")
}
func testCursorWithReading() {
var state: InputState = InputState.Empty()
let keys = Array("su3cl").map {
String($0)
}
for key in keys {
let input = KeyHandlerInput(inputText: key, keyCode: 0, charCode: charCode(key), flags: [], isVerticalMode: false)
handler.handle(input: input, state: state) { newState in
state = newState
} errorCallback: {
}
}
let left = KeyHandlerInput(inputText: " ", keyCode: KeyCode.left.rawValue, charCode: 0, flags: [], isVerticalMode: false)
let right = KeyHandlerInput(inputText: " ", keyCode: KeyCode.right.rawValue, charCode: 0, flags: [], isVerticalMode: false)
var leftErrorCalled = false
var rightErrorCalled = false
handler.handle(input: left, state: state) { newState in
state = newState
} errorCallback: {
leftErrorCalled = true
}
handler.handle(input: right, state: state) { newState in
state = newState
} errorCallback: {
rightErrorCalled = true
}
XCTAssertTrue(leftErrorCalled)
XCTAssertTrue(rightErrorCalled)
}
func testCursor() {
var state: InputState = InputState.Empty()
let keys = Array("su3cl3").map {
@ -997,6 +1030,112 @@ class KeyHandlerBopomofoTests: XCTestCase {
}
}
func testHomeAndEndWithReading() {
var state: InputState = InputState.Empty()
let keys = Array("su3cl").map {
String($0)
}
for key in keys {
let input = KeyHandlerInput(inputText: key, keyCode: 0, charCode: charCode(key), flags: [], 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, "你ㄏㄠ")
XCTAssertEqual(state.cursorIndex, 3)
}
let home = KeyHandlerInput(inputText: " ", keyCode: KeyCode.home.rawValue, charCode: 0, flags: [], isVerticalMode: false)
let end = KeyHandlerInput(inputText: " ", keyCode: KeyCode.end.rawValue, charCode: 0, flags: [], isVerticalMode: false)
var homeErrorCalled = false
var endErrorCalled = false
handler.handle(input: home, state: state) { newState in
state = newState
} errorCallback: {
homeErrorCalled = true
}
XCTAssertTrue(homeErrorCalled)
XCTAssertTrue(state is InputState.Inputting, "\(state)")
if let state = state as? InputState.Inputting {
XCTAssertEqual(state.composingBuffer, "你ㄏㄠ")
XCTAssertEqual(state.cursorIndex, 3)
}
handler.handle(input: end, state: state) { newState in
state = newState
} errorCallback: {
endErrorCalled = true
}
XCTAssertTrue(endErrorCalled)
XCTAssertTrue(state is InputState.Inputting, "\(state)")
if let state = state as? InputState.Inputting {
XCTAssertEqual(state.composingBuffer, "你ㄏㄠ")
XCTAssertEqual(state.cursorIndex, 3)
}
}
func testMarkingLeftAtBegin() {
var state: InputState = InputState.Empty()
let keys = Array("su3cl3").map {
String($0)
}
for key in keys {
let input = KeyHandlerInput(inputText: key, keyCode: 0, charCode: charCode(key), flags: [], isVerticalMode: false)
handler.handle(input: input, state: state) { newState in
state = newState
} errorCallback: {
}
}
let input = KeyHandlerInput(inputText: " ", keyCode: KeyCode.left.rawValue, charCode: 0, flags: .shift, isVerticalMode: false)
var errorCalled = false
handler.handle(input: input, state: state) { newState in
state = newState
} errorCallback: {
}
handler.handle(input: input, state: state) { newState in
state = newState
} errorCallback: {
}
handler.handle(input: input, state: state) { newState in
state = newState
} errorCallback: {
errorCalled = true
}
XCTAssertTrue(errorCalled)
}
func testMarkingRightAtEnd() {
var state: InputState = InputState.Empty()
let keys = Array("su3cl3").map {
String($0)
}
for key in keys {
let input = KeyHandlerInput(inputText: key, keyCode: 0, charCode: charCode(key), flags: [], isVerticalMode: false)
handler.handle(input: input, state: state) { newState in
state = newState
} errorCallback: {
}
}
let input = KeyHandlerInput(inputText: " ", keyCode: KeyCode.right.rawValue, charCode: 0, flags: .shift, isVerticalMode: false)
var errorCalled = false
handler.handle(input: input, state: state) { newState in
state = newState
} errorCallback: {
errorCalled = true
}
XCTAssertTrue(errorCalled)
}
func testMarkingLeft() {
var state: InputState = InputState.Empty()
let keys = Array("su3cl3").map {
@ -1086,6 +1225,16 @@ class KeyHandlerBopomofoTests: XCTestCase {
} errorCallback: {
}
let errorInput = KeyHandlerInput(inputText: " ", keyCode: KeyCode.left.rawValue, charCode: 0, flags: .shift, isVerticalMode: false)
var errorCalled = false
handler.handle(input: errorInput, state: state) { newState in
state = newState
} errorCallback: {
errorCalled = true
}
XCTAssertTrue(errorCalled)
let input = KeyHandlerInput(inputText: " ", keyCode: KeyCode.right.rawValue, charCode: 0, flags: .shift, isVerticalMode: false)
handler.handle(input: input, state: state) { newState in
state = newState