mirror of
https://github.com/keymanapp/keyman.git
synced 2026-09-14 19:47:43 +00:00
72 lines
2.9 KiB
Swift
72 lines
2.9 KiB
Swift
//
|
|
// KeymanEngineTests.swift
|
|
// KeymanEngineTests
|
|
//
|
|
// Created by Joshua Horton on 2020-02-19.
|
|
// Copyright © 2020 SIL International. All rights reserved.
|
|
//
|
|
|
|
import XCTest
|
|
|
|
@testable import KeymanEngine
|
|
import DeviceKit
|
|
|
|
|
|
class FileManagementTests: XCTestCase {
|
|
override func setUp() {
|
|
TestUtils.setupAndDeinitManager()
|
|
}
|
|
|
|
override func tearDown() {
|
|
TestUtils.standardTearDown()
|
|
}
|
|
|
|
func testKeyboardInstallation() {
|
|
ResourceFileManager.shared.prepareKMPInstall(from: TestUtils.Keyboards.khmerAngkorKMP) { kmp, error in
|
|
XCTAssertNotNil(kmp, "Failed to prepare KMP for installation")
|
|
XCTAssertNil(error, "Error occurred while preparing KMP for installation")
|
|
XCTAssertNotNil(kmp as? KeyboardKeymanPackage, "KMP resource type improperly recognized - expected a keyboard package!")
|
|
|
|
ResourceFileManager.shared.finalizePackageInstall(kmp!, isCustom: true) { innerError in
|
|
XCTAssertNil(innerError, "Error occurred while finalizing KMP installation")
|
|
|
|
let installURL = Storage.active.keyboardURL(forID: "khmer_angkor", version: "1.0.6")
|
|
|
|
XCTAssertTrue(FileManager.default.fileExists(atPath: installURL.path),
|
|
"Could not find installed keyboard file")
|
|
|
|
let keyboards = Storage.active.userDefaults.userKeyboards!
|
|
|
|
XCTAssertEqual(keyboards.count, 1, "Unexpected number of keyboards were installed")
|
|
XCTAssertEqual(keyboards[0].id, "khmer_angkor", "Installed keyboard ID mismatch")
|
|
|
|
let fontURL = Storage.active.fontURL(forKeyboardID: "khmer_angkor", filename: "Mondulkiri-R.ttf")
|
|
XCTAssertTrue(FileManager.default.fileExists(atPath: fontURL.path))
|
|
}
|
|
}
|
|
}
|
|
|
|
func testLexicalModelInstallation() {
|
|
ResourceFileManager.shared.prepareKMPInstall(from: TestUtils.LexicalModels.mtntKMP) { kmp, error in
|
|
XCTAssertNotNil(kmp, "Failed to prepare KMP for installation")
|
|
XCTAssertNil(error, "Error occurred while preparing KMP for installation")
|
|
XCTAssertNotNil(kmp as? LexicalModelKeymanPackage, "KMP resource type improperly recognized - expected a lexical model package!")
|
|
|
|
ResourceFileManager.shared.finalizePackageInstall(kmp!, isCustom: true) { innerError in
|
|
XCTAssertNil(innerError, "Error occurred while finalizing KMP installation")
|
|
|
|
let installURL = Storage.active.lexicalModelURL(forID: "nrc.en.mtnt", version: "0.1.4")
|
|
|
|
XCTAssertTrue(FileManager.default.fileExists(atPath: installURL.path),
|
|
"Could not find installed lexical model file")
|
|
|
|
let models = Storage.active.userDefaults.userLexicalModels!
|
|
|
|
// Yep, the model auto-installs for all language ids, even when there's no matching keyboard.
|
|
// That's the current state of affairs in Keyman Engine for iOS.
|
|
XCTAssertEqual(models.count, 3, "Unexpected number of models were installed")
|
|
XCTAssertEqual(models[0].id, "nrc.en.mtnt", "Installed lexical model ID mismatch")
|
|
}
|
|
}
|
|
}
|
|
}
|