91 lines
3.0 KiB
Swift
91 lines
3.0 KiB
Swift
import XCTest
|
|
@testable import MacTools
|
|
|
|
final class AppLanguagePreferenceTests: XCTestCase {
|
|
func testAllCasesIncludeSupportedFixedLanguages() {
|
|
XCTAssertEqual(
|
|
AppLanguagePreference.allCases.map(\.rawValue),
|
|
[
|
|
"system",
|
|
"zh-Hans",
|
|
"zh-Hant",
|
|
"en",
|
|
"es",
|
|
"fr",
|
|
"ru",
|
|
"pt",
|
|
"de",
|
|
"ja",
|
|
"ko",
|
|
"ar"
|
|
]
|
|
)
|
|
}
|
|
|
|
func testAppleLanguagesOverrideMatchesSelectedLanguage() {
|
|
let overrides = Dictionary(
|
|
uniqueKeysWithValues: AppLanguagePreference.allCases.map {
|
|
($0.rawValue, $0.appleLanguagesOverride)
|
|
}
|
|
)
|
|
|
|
XCTAssertNil(overrides["system"]!)
|
|
XCTAssertEqual(overrides["zh-Hans"]!, ["zh-Hans"])
|
|
XCTAssertEqual(overrides["zh-Hant"]!, ["zh-Hant"])
|
|
XCTAssertEqual(overrides["en"]!, ["en"])
|
|
XCTAssertEqual(overrides["es"]!, ["es"])
|
|
XCTAssertEqual(overrides["fr"]!, ["fr"])
|
|
XCTAssertEqual(overrides["ru"]!, ["ru"])
|
|
XCTAssertEqual(overrides["pt"]!, ["pt"])
|
|
XCTAssertEqual(overrides["de"]!, ["de"])
|
|
XCTAssertEqual(overrides["ja"]!, ["ja"])
|
|
XCTAssertEqual(overrides["ko"]!, ["ko"])
|
|
XCTAssertEqual(overrides["ar"]!, ["ar"])
|
|
}
|
|
|
|
func testPickerTitleIncludesSystemLanguageNameForSystemOption() {
|
|
let title = AppLanguagePreference.system.pickerTitle(systemLanguageIdentifier: "en")
|
|
|
|
XCTAssertTrue(title.contains("English"))
|
|
XCTAssertTrue(title.hasPrefix(AppLanguagePreference.system.title))
|
|
}
|
|
|
|
func testPickerTitleCombinesSystemAndNativeLanguageNames() {
|
|
let title = AppLanguagePreference.de.pickerTitle(systemLanguageIdentifier: "en")
|
|
|
|
XCTAssertTrue(title.contains("German"))
|
|
XCTAssertTrue(title.hasSuffix("/ Deutsch"))
|
|
}
|
|
|
|
func testPickerTitlesKeepTheNativeNameOfEveryFixedLanguage() {
|
|
let expectedNativeNames: [(AppLanguagePreference, String)] = [
|
|
(.zhHans, "简体中文"),
|
|
(.zhHant, "繁體中文"),
|
|
(.en, "English"),
|
|
(.es, "Español"),
|
|
(.fr, "Français"),
|
|
(.ru, "Русский"),
|
|
(.pt, "Português (Brasil)"),
|
|
(.de, "Deutsch"),
|
|
(.ja, "日本語"),
|
|
(.ko, "한국어"),
|
|
(.ar, "العربية")
|
|
]
|
|
|
|
for (preference, nativeName) in expectedNativeNames {
|
|
let title = preference.pickerTitle(systemLanguageIdentifier: "en")
|
|
XCTAssertTrue(
|
|
title == nativeName || title.hasSuffix("/ \(nativeName)"),
|
|
"Expected \(preference.rawValue) to retain \(nativeName), got \(title)"
|
|
)
|
|
}
|
|
}
|
|
|
|
func testPickerTitleKeepsNativeNameWhenItMatchesSystemLanguageName() {
|
|
XCTAssertEqual(
|
|
AppLanguagePreference.en.pickerTitle(systemLanguageIdentifier: "en"),
|
|
"English"
|
|
)
|
|
}
|
|
}
|