diff --git a/Sources/Tekkon/TekkonSyllableComposer.swift b/Sources/Tekkon/TekkonSyllableComposer.swift index 4e08892..13758b4 100644 --- a/Sources/Tekkon/TekkonSyllableComposer.swift +++ b/Sources/Tekkon/TekkonSyllableComposer.swift @@ -670,7 +670,7 @@ public struct Tekkon { default: break } } - case "ㄑ": + case "ㄔ": if intonation.isEmpty { switch incomingPhonabet { case "ㄧ": consonant = "ㄑ" // ㄐㄧ @@ -718,7 +718,6 @@ public struct Tekkon { consonant.selfReplace("ㄑ", "ㄔ") consonant.selfReplace("ㄒ", "ㄕ") } - if vowel == "ㄜ", semivowel.isEmpty { consonant.selfReplace("ㄑ", "ㄔ") } if consonant == "ㄏ", semivowel.isEmpty, vowel.isEmpty { consonant = "" vowel = "ㄛ" @@ -1289,7 +1288,7 @@ public struct Tekkon { /// 這裡提前對複音按鍵做處理,然後再用程式判斷介母類型、據此判斷是否需要做複音切換。 static let mapHsuStaticKeys: [String: String] = [ "a": "ㄘ", "b": "ㄅ", "c": "ㄒ", "d": "ㄉ", "e": "ㄧ", "f": "ㄈ", "g": "ㄍ", "h": "ㄏ", "i": "ㄞ", "j": "ㄐ", "k": "ㄎ", - "l": "ㄌ", "m": "ㄇ", "n": "ㄋ", "o": "ㄡ", "p": "ㄆ", "r": "ㄖ", "s": "ㄙ", "t": "ㄊ", "u": "ㄩ", "v": "ㄑ", "w": "ㄠ", + "l": "ㄌ", "m": "ㄇ", "n": "ㄋ", "o": "ㄡ", "p": "ㄆ", "r": "ㄖ", "s": "ㄙ", "t": "ㄊ", "u": "ㄩ", "v": "ㄔ", "w": "ㄠ", "x": "ㄨ", "y": "ㄚ", "z": "ㄗ", " ": " ", ] diff --git a/Tests/TekkonTests/TekkonTests.swift b/Tests/TekkonTests/TekkonTests.swift index 0ba16b9..b8f2ec0 100644 --- a/Tests/TekkonTests/TekkonTests.swift +++ b/Tests/TekkonTests/TekkonTests.swift @@ -354,31 +354,39 @@ final class TekkonTests: XCTestCase { func testQwertyDachenKeys() throws { // Testing Dachen Traditional Mapping (QWERTY) var composer = Tekkon.Composer(arrange: .ofDachen) - XCTAssertEqual(composer.convertSequenceToRawComposition("1l3"), "ㄅㄠˇ") - XCTAssertEqual(composer.convertSequenceToRawComposition("ek "), "ㄍㄜ ") + XCTAssertEqual(composer.convertSequenceToRawComposition("18 "), "ㄅㄚ ") + XCTAssertEqual(composer.convertSequenceToRawComposition("m,4"), "ㄩㄝˋ") + XCTAssertEqual(composer.convertSequenceToRawComposition("5j/ "), "ㄓㄨㄥ ") + XCTAssertEqual(composer.convertSequenceToRawComposition("fu."), "ㄑㄧㄡ") + XCTAssertEqual(composer.convertSequenceToRawComposition("g0 "), "ㄕㄢ ") + XCTAssertEqual(composer.convertSequenceToRawComposition("xup6"), "ㄌㄧㄣˊ") + XCTAssertEqual(composer.convertSequenceToRawComposition("xu;6"), "ㄌㄧㄤˊ") + XCTAssertEqual(composer.convertSequenceToRawComposition("z/"), "ㄈㄥ") + XCTAssertEqual(composer.convertSequenceToRawComposition("tjo "), "ㄔㄨㄟ ") XCTAssertEqual(composer.convertSequenceToRawComposition("284"), "ㄉㄚˋ") - XCTAssertEqual(composer.convertSequenceToRawComposition("g83"), "ㄕㄚˇ") - XCTAssertEqual(composer.convertSequenceToRawComposition("1u "), "ㄅㄧ ") - XCTAssertEqual(composer.convertSequenceToRawComposition("ao6"), "ㄇㄟˊ") - XCTAssertEqual(composer.convertSequenceToRawComposition("u.3"), "ㄧㄡˇ") - XCTAssertEqual(composer.convertSequenceToRawComposition("vul3"), "ㄒㄧㄠˇ") - XCTAssertEqual(composer.convertSequenceToRawComposition("ru "), "ㄐㄧ ") - XCTAssertEqual(composer.convertSequenceToRawComposition("ru"), "ㄐㄧ") + XCTAssertEqual(composer.convertSequenceToRawComposition("2u4"), "ㄉㄧˋ") + XCTAssertEqual(composer.convertSequenceToRawComposition("hl3"), "ㄘㄠˇ") + XCTAssertEqual(composer.convertSequenceToRawComposition("5 "), "ㄓ ") + XCTAssertEqual(composer.convertSequenceToRawComposition("193"), "ㄅㄞˇ") } func testDachen26Keys() throws { // Testing handleDachen26() var composer = Tekkon.Composer(arrange: .ofDachen26) - XCTAssertEqual(composer.convertSequenceToRawComposition("qqlr"), "ㄅㄠˇ") - XCTAssertEqual(composer.convertSequenceToRawComposition("ek "), "ㄍㄜ ") + XCTAssertEqual(composer.convertSequenceToRawComposition("qquu "), "ㄅㄚ ") + XCTAssertEqual(composer.convertSequenceToRawComposition("mbbd"), "ㄩㄝˋ") + XCTAssertEqual(composer.convertSequenceToRawComposition("ttjnn "), "ㄓㄨㄥ ") + XCTAssertEqual(composer.convertSequenceToRawComposition("fum"), "ㄑㄧㄡ") + XCTAssertEqual(composer.convertSequenceToRawComposition("goo "), "ㄕㄢ ") + XCTAssertEqual(composer.convertSequenceToRawComposition("xupe"), "ㄌㄧㄣˊ") + XCTAssertEqual(composer.convertSequenceToRawComposition("xulle"), "ㄌㄧㄤˊ") + XCTAssertEqual(composer.convertSequenceToRawComposition("zn"), "ㄈㄥ") + XCTAssertEqual(composer.convertSequenceToRawComposition("tjo "), "ㄔㄨㄟ ") XCTAssertEqual(composer.convertSequenceToRawComposition("wwuud"), "ㄉㄚˋ") - XCTAssertEqual(composer.convertSequenceToRawComposition("guur"), "ㄕㄚˇ") - XCTAssertEqual(composer.convertSequenceToRawComposition("qqu "), "ㄅㄧ ") - XCTAssertEqual(composer.convertSequenceToRawComposition("aoe"), "ㄇㄟˊ") - XCTAssertEqual(composer.convertSequenceToRawComposition("umr"), "ㄧㄡˇ") - XCTAssertEqual(composer.convertSequenceToRawComposition("vulr"), "ㄒㄧㄠˇ") - XCTAssertEqual(composer.convertSequenceToRawComposition("ru "), "ㄐㄧ ") - XCTAssertEqual(composer.convertSequenceToRawComposition("ru"), "ㄐㄧ") + XCTAssertEqual(composer.convertSequenceToRawComposition("wwud"), "ㄉㄧˋ") + XCTAssertEqual(composer.convertSequenceToRawComposition("hlr"), "ㄘㄠˇ") + XCTAssertEqual(composer.convertSequenceToRawComposition("tt "), "ㄓ ") + XCTAssertEqual(composer.convertSequenceToRawComposition("qqiir"), "ㄅㄞˇ") } func testEten26Keys() throws {