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 }
let cells = strLine.split(separator: " ")
guard cells.count == 2 else { continue }
if loadingKeys {
if loadingKeys, !cells[0].contains("%keyname") {
keyNameMap[String(cells[0])] = String(cells[1])
} else if loadingCharDefinitions {
if !strLine.contains("%chardef") { theMaxKeyLength = max(theMaxKeyLength, cells[0].count) }
} else if loadingCharDefinitions, !strLine.contains("%chardef") {
theMaxKeyLength = max(theMaxKeyLength, cells[0].count)
charDefMap[String(cells[0]), default: []].append(String(cells[1]))
}
guard !loadingKeys, !loadingCharDefinitions else { continue }

View File

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