Tekkon // Add new auto-correction cases (with unit tests).

This commit is contained in:
ShikiSuen 2023-01-30 19:24:33 +08:00
parent e2d3287c3d
commit 0a36ed9ab1
2 changed files with 53 additions and 0 deletions

View File

@ -230,6 +230,19 @@ extension Tekkon {
if ["ㄨㄛ", "ㄨㄥ"].contains(semivowel.value + vowel.value) { semivowel.clear() }
default: break
}
if [.vowel, .intonation].contains(thePhone.type), "ㄓㄔㄕㄗㄘㄙ".contains(consonant.value) {
switch semivowel.value {
case "": semivowel.clear()
case "":
switch consonant {
case _ where "ㄓㄗ".contains(consonant.value): consonant = ""
case _ where "ㄔㄘ".contains(consonant.value): consonant = ""
case _ where "ㄕㄙ".contains(consonant.value): consonant = ""
default: break
}
default: break
}
}
}
switch thePhone.type {
case .consonant: consonant = thePhone

View File

@ -173,6 +173,46 @@ final class TekkonTestsBasic: XCTestCase {
//
XCTAssertEqual(Tekkon.cnvHanyuPinyinToPhona(targetJoined: "ㄅㄧㄢˋ-˙ㄌㄜ-ㄊㄧㄢ"), "ㄅㄧㄢˋ-˙ㄌㄜ-ㄊㄧㄢ")
}
func testPhonabetCombinationCorrection() throws {
var composer = Tekkon.Composer(arrange: .ofDachen, correction: true)
composer.receiveKey(fromPhonabet: "")
composer.receiveKey(fromPhonabet: "")
composer.receiveKey(fromPhonabet: "ˋ")
XCTAssertEqual(composer.value, "ㄓˋ")
composer.clear()
composer.receiveKey(fromPhonabet: "")
composer.receiveKey(fromPhonabet: "")
composer.receiveKey(fromPhonabet: "ˋ")
XCTAssertEqual(composer.value, "ㄐㄩˋ")
composer.clear()
composer.receiveKey(fromPhonabet: "")
composer.receiveKey(fromPhonabet: "")
composer.receiveKey(fromPhonabet: "")
XCTAssertEqual(composer.value, "ㄓㄢ")
composer.clear()
composer.receiveKey(fromPhonabet: "")
composer.receiveKey(fromPhonabet: "")
composer.receiveKey(fromPhonabet: "")
XCTAssertEqual(composer.value, "ㄐㄩㄢ")
composer.clear()
composer.receiveKey(fromPhonabet: "")
composer.receiveKey(fromPhonabet: "")
composer.receiveKey(fromPhonabet: "")
composer.receiveKey(fromPhonabet: "ˋ")
XCTAssertEqual(composer.value, "ㄓㄢˋ")
composer.clear()
composer.receiveKey(fromPhonabet: "")
composer.receiveKey(fromPhonabet: "")
composer.receiveKey(fromPhonabet: "")
composer.receiveKey(fromPhonabet: "ˋ")
XCTAssertEqual(composer.value, "ㄐㄩㄢˋ")
}
}
// MARK: Testing Pinyin Arrangements