LMCassette // Fix an issue of adding invalid contents to dictionary.

This commit is contained in:
ShikiSuen 2022-10-18 18:23:07 +08:00
parent dfcb99eebe
commit da891266f5
2 changed files with 21 additions and 21 deletions

View File

@ -71,10 +71,10 @@ extension vChewingLM {
if loadingCharDefinitions, strLine.contains("%chardef end") { loadingCharDefinitions = false } if loadingCharDefinitions, strLine.contains("%chardef end") { loadingCharDefinitions = false }
let cells = strLine.split(separator: " ") let cells = strLine.split(separator: " ")
guard cells.count == 2 else { continue } guard cells.count == 2 else { continue }
if loadingKeys { if loadingKeys, !cells[0].contains("%keyname") {
keyNameMap[String(cells[0])] = String(cells[1]) keyNameMap[String(cells[0])] = String(cells[1])
} else if loadingCharDefinitions { } else if loadingCharDefinitions, !strLine.contains("%chardef") {
if !strLine.contains("%chardef") { theMaxKeyLength = max(theMaxKeyLength, cells[0].count) } theMaxKeyLength = max(theMaxKeyLength, cells[0].count)
charDefMap[String(cells[0]), default: []].append(String(cells[1])) charDefMap[String(cells[0]), default: []].append(String(cells[1]))
} }
guard !loadingKeys, !loadingCharDefinitions else { continue } guard !loadingKeys, !loadingCharDefinitions else { continue }

View File

@ -23,29 +23,29 @@ final class LMCassetteTests: XCTestCase {
let pathCINFile = testDataPath + "wubi98.cin" let pathCINFile = testDataPath + "wubi98.cin"
var lmCassette = vChewingLM.LMCassette() var lmCassette = vChewingLM.LMCassette()
NSLog("LMCassette: Start loading CIN.") NSLog("LMCassette: Start loading CIN.")
lmCassette.open(pathCINFile) lmCassette98.open(pathCINFile)
NSLog("LMCassette: Finished loading CIN. Entries: \(lmCassette.count)") NSLog("LMCassette: Finished loading CIN. Entries: \(lmCassette98.count)")
XCTAssertEqual(lmCassette.charDefMap.count, 21492) XCTAssertEqual(lmCassette98.charDefMap.count, 21491)
XCTAssertEqual(lmCassette.keyNameMap.count, 26) XCTAssertEqual(lmCassette98.keyNameMap.count, 26)
XCTAssertEqual(lmCassette.nameENG, "Wubi98") XCTAssertEqual(lmCassette98.nameENG, "Wubi98")
XCTAssertEqual(lmCassette.nameCJK, "五笔98") XCTAssertEqual(lmCassette98.nameCJK, "五笔98")
XCTAssertEqual(lmCassette.maxKeyLength, 4) XCTAssertEqual(lmCassette98.maxKeyLength, 4)
XCTAssertEqual(lmCassette.endKeys.count, 0) XCTAssertEqual(lmCassette98.endKeys.count, 0)
XCTAssertEqual(lmCassette.selectionKeys.count, 10) XCTAssertEqual(lmCassette98.selectionKeys.count, 10)
} }
func testCassetteLoadWubi86() throws { func testCassetteLoadWubi86() throws {
let pathCINFile = testDataPath + "wubi86.cin" let pathCINFile = testDataPath + "wubi86.cin"
var lmCassette = vChewingLM.LMCassette() var lmCassette = vChewingLM.LMCassette()
NSLog("LMCassette: Start loading CIN.") NSLog("LMCassette: Start loading CIN.")
lmCassette.open(pathCINFile) lmCassette86.open(pathCINFile)
NSLog("LMCassette: Finished loading CIN. Entries: \(lmCassette.count)") NSLog("LMCassette: Finished loading CIN. Entries: \(lmCassette86.count)")
XCTAssertEqual(lmCassette.charDefMap.count, 10691) XCTAssertEqual(lmCassette86.charDefMap.count, 10690)
XCTAssertEqual(lmCassette.keyNameMap.count, 26) XCTAssertEqual(lmCassette86.keyNameMap.count, 26)
XCTAssertEqual(lmCassette.nameENG, "Wubi86") XCTAssertEqual(lmCassette86.nameENG, "Wubi86")
XCTAssertEqual(lmCassette.nameCJK, "五笔86") XCTAssertEqual(lmCassette86.nameCJK, "五笔86")
XCTAssertEqual(lmCassette.maxKeyLength, 4) XCTAssertEqual(lmCassette86.maxKeyLength, 4)
XCTAssertEqual(lmCassette.endKeys.count, 0) XCTAssertEqual(lmCassette86.endKeys.count, 0)
XCTAssertEqual(lmCassette.selectionKeys.count, 10) XCTAssertEqual(lmCassette86.selectionKeys.count, 10)
} }
} }