-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathLocalizationTests.swift
More file actions
51 lines (43 loc) · 1.72 KB
/
Copy pathLocalizationTests.swift
File metadata and controls
51 lines (43 loc) · 1.72 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
import Testing
import Foundation
@testable import FuelSwitchCore
@Test func allTwelveLanguagesAreSupported() {
let supported = AppLanguage.allCases
#expect(supported.count == 12)
let codes = Set(supported.map(\.rawValue))
let expectedCodes: Set<String> = ["en", "pl", "es", "de", "fr", "ja", "zh", "pt", "ru", "ko", "hi", "ar"]
#expect(codes == expectedCodes)
}
@Test func arabicIsIdentifiedAsRTL() {
#expect(AppLanguage.arabic.isRTL == true)
#expect(AppLanguage.english.isRTL == false)
#expect(AppLanguage.polish.isRTL == false)
#expect(AppLanguage.japanese.isRTL == false)
}
@Test func languageDisplaysNativeNames() {
#expect(AppLanguage.polish.nativeName == "Polski")
#expect(AppLanguage.english.nativeName == "English")
#expect(AppLanguage.arabic.nativeName == "العربية")
#expect(AppLanguage.japanese.nativeName == "日本語")
#expect(AppLanguage.german.nativeName == "Deutsch")
}
@Test func everyTranslationKeyExistsInEverySupportedLanguage() {
for lang in AppLanguage.allCases {
#expect(
Translations.missingKeys(in: lang).isEmpty,
"Missing translations for \(lang): \(Translations.missingKeys(in: lang))"
)
}
}
@Test func localizationManagerChangesLanguage() {
let name = UUID().uuidString
let defaults = UserDefaults(suiteName: name)!
defer { defaults.removePersistentDomain(forName: name) }
let manager = LocalizationManager(defaults: defaults)
manager.setLanguage(.polish)
#expect(manager.currentLanguage == .polish)
#expect(manager.text(.allTanks) == "Wszystkie")
// Check persistence
let reloaded = LocalizationManager(defaults: defaults)
#expect(reloaded.currentLanguage == .polish)
}