Files
ggbond268--mactools/Tests/App/AppLanguagePreferenceTests.swift
wehub-resource-sync 1d1286fadb
Build / Build and test (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 13:18:38 +08:00

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"
)
}
}