Adds test cases.
This commit is contained in:
parent
ccfb97e7c5
commit
6db08b8420
|
@ -708,6 +708,39 @@ class KeyHandlerBopomofoTests: XCTestCase {
|
||||||
XCTAssertTrue(state is InputState.EmptyIgnoringPreviousState, "\(state)")
|
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() {
|
func testCursor() {
|
||||||
var state: InputState = InputState.Empty()
|
var state: InputState = InputState.Empty()
|
||||||
let keys = Array("su3cl3").map {
|
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() {
|
func testMarkingLeft() {
|
||||||
var state: InputState = InputState.Empty()
|
var state: InputState = InputState.Empty()
|
||||||
let keys = Array("su3cl3").map {
|
let keys = Array("su3cl3").map {
|
||||||
|
@ -1086,6 +1225,16 @@ class KeyHandlerBopomofoTests: XCTestCase {
|
||||||
} errorCallback: {
|
} 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)
|
let input = KeyHandlerInput(inputText: " ", keyCode: KeyCode.right.rawValue, charCode: 0, flags: .shift, isVerticalMode: false)
|
||||||
handler.handle(input: input, state: state) { newState in
|
handler.handle(input: input, state: state) { newState in
|
||||||
state = newState
|
state = newState
|
||||||
|
|
Loading…
Reference in New Issue