From 02f58bc481fa889341f88a152d0caeb6f988ffa7 Mon Sep 17 00:00:00 2001 From: jahorton Date: Wed, 18 Nov 2020 10:00:43 +0700 Subject: [PATCH] feat(ios/engine): adds unit test for prior commit --- .../AssociatingPackageInstallerTests.swift | 31 +++++++++++++++++++ .../TestUtils/Keyboards.swift | 11 +++++++ 2 files changed, 42 insertions(+) diff --git a/ios/engine/KMEI/KeymanEngineTests/AssociatingPackageInstallerTests.swift b/ios/engine/KMEI/KeymanEngineTests/AssociatingPackageInstallerTests.swift index 3ac03b6077..3ca58e6056 100644 --- a/ios/engine/KMEI/KeymanEngineTests/AssociatingPackageInstallerTests.swift +++ b/ios/engine/KMEI/KeymanEngineTests/AssociatingPackageInstallerTests.swift @@ -325,4 +325,35 @@ class AssociatingPackageInstallerTests: XCTestCase { XCTAssertNil(Storage.active.userDefaults.userKeyboards) XCTAssertNil(Storage.active.userDefaults.userLexicalModels) } + + func testPackageLanguageMismatch() throws { + guard let strPackage = try ResourceFileManager.shared.prepareKMPInstall(from: TestUtils.Keyboards.fvSencotenKMP) as? KeyboardKeymanPackage else { + XCTFail() + return + } + + guard let eurolatinPackage = try ResourceFileManager.shared.prepareKMPInstall(from: TestUtils.Keyboards.silEuroLatinKMP) as? KeyboardKeymanPackage else { + XCTFail() + return + } + + let strInstaller = AssociatingPackageInstaller(for: strPackage, + defaultLanguageCode: "str", // correct code: str-latn + downloadManager: downloadManager) { _ in + } + + // Package does not contain "str", but does contain "str-latn" + XCTAssertEqual(strInstaller.defaultLgCode, "str-latn") + + let eurolatinInstaller = AssociatingPackageInstaller(for: eurolatinPackage, + defaultLanguageCode: "en-fake-bcp", // correct code: "en" + downloadManager: downloadManager) { _ in + } + + // Package does not contain "en-fake-bcp", but does contain "en". + XCTAssertEqual(eurolatinInstaller.defaultLgCode, "en") + + // Note: the current naive approach isn't exactly BCP-47 subtag aware - it relies on one tag + // containing the entire other tag as a substring. + } } diff --git a/ios/engine/KMEI/KeymanEngineTests/TestUtils/Keyboards.swift b/ios/engine/KMEI/KeymanEngineTests/TestUtils/Keyboards.swift index 041cd8b7a1..065b8fd476 100644 --- a/ios/engine/KMEI/KeymanEngineTests/TestUtils/Keyboards.swift +++ b/ios/engine/KMEI/KeymanEngineTests/TestUtils/Keyboards.swift @@ -13,6 +13,7 @@ extension TestUtils { enum Keyboards { static let khmerAngkorKMP = TestUtils.keyboardsBundle.url(forResource: "khmer_angkor", withExtension: "kmp")! static let silEuroLatinKMP = TestUtils.keyboardsBundle.url(forResource: "sil_euro_latin", withExtension: "kmp")! + static let fvSencotenKMP = TestUtils.keyboardsBundle.url(forResource: "fv_sencoten", withExtension: "kmp")! static let khmer_angkor = InstallableKeyboard(id: "khmer_angkor", name: "Khmer Angkor", @@ -43,5 +44,15 @@ extension TestUtils { font: Font(family: "LatinWeb", source: ["DejaVuSans.ttf"], size: nil), oskFont: nil, isCustom: false) + + static let fv_sencoten = InstallableKeyboard(id: "fv_sencoten", + name: "SENĆOŦEN", + languageID: "str-latn", + languageName: "Salish, Straits (Latin)", + version: "9.1", + isRTL: false, + font: nil, + oskFont: nil, + isCustom: false) } }