-
Notifications
You must be signed in to change notification settings - Fork 836
Expand file tree
/
Copy pathLanguageEngineTests.cs
More file actions
136 lines (120 loc) · 4.73 KB
/
Copy pathLanguageEngineTests.cs
File metadata and controls
136 lines (120 loc) · 4.73 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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
using UniGetUI.Core.Data;
using UniGetUI.PackageEngine.Enums;
namespace UniGetUI.Core.Language.Tests
{
public class LanguageEngineTests
{
[Theory]
[InlineData("ca", "Fes una còpia de seguretat dels paquets instal·lats")]
[InlineData("es", "Respaldar paquetes instalados")]
[InlineData("ua", "Резервне копіювання встановлених пакетів")]
public void TestLoadingLanguage(string language, string translation)
{
LanguageEngine engine = new();
engine.LoadLanguage(language);
Assert.Equal(translation, engine.Translate("Backup installed packages"));
}
[Fact]
public void TestLoadingLanguageForNonExistentKey()
{
//arrange
LanguageEngine engine = new();
engine.LoadLanguage("es");
//act
string NONEXISTENT_KEY = "This is a nonexistent key thay should be returned as-is";
//assert
Assert.Equal(NONEXISTENT_KEY, engine.Translate(NONEXISTENT_KEY));
}
[Theory]
[InlineData("en", "UniGetUI Log", "UniGetUI (formerly WingetUI)")]
[InlineData("ca", "Registre de l'UniGetUI", "UniGetUI (abans WingetUI)")]
public void TestUniGetUIRefactoring(
string language,
string uniGetUILogTranslation,
string uniGetUITranslation
)
{
LanguageEngine engine = new();
engine.LoadLanguage(language);
Assert.Equal(uniGetUILogTranslation, engine.Translate("WingetUI Log"));
Assert.Equal(uniGetUITranslation, engine.Translate("WingetUI"));
}
[Fact]
public void LocalFallbackTest()
{
LanguageEngine engine = new();
engine.LoadLanguage("random-nonexistent-language");
Assert.Equal("en", engine.Locale);
}
[Fact]
public void TestLoadingUkrainianSpecificTranslation()
{
LanguageEngine engine = new();
engine.LoadLanguage("ua");
Assert.Equal("Підсистема Android", engine.Translate("Android Subsystem"));
}
[Fact]
public void TestLoadingCachedLanguageWithDuplicateKeysKeepsLastValue()
{
string cachedLangFile = Path.Join(
CoreData.UniGetUICacheDirectory_Lang,
"lang_duplicate-test.json"
);
File.WriteAllText(
cachedLangFile,
"""
{
"Android Subsystem": "Android Subsystem",
"Android Subsystem": "Підсистема Android",
"Backup installed packages": "Cached duplicate test"
}
"""
);
try
{
LanguageEngine engine = new();
Dictionary<string, string> langFile = engine.LoadLanguageFile("duplicate-test");
Assert.Equal("Підсистема Android", langFile["Android Subsystem"]);
Assert.Equal("Cached duplicate test", langFile["Backup installed packages"]);
}
finally
{
if (File.Exists(cachedLangFile))
{
File.Delete(cachedLangFile);
}
}
}
[Fact]
public void TestStaticallyLoadedLanguages()
{
LanguageEngine engine = new();
engine.LoadLanguage("ca");
engine.LoadStaticTranslation();
Assert.Equal("Usuari | Local", CommonTranslations.ScopeNames[PackageScope.Local]);
Assert.Equal("Màquina | Global", CommonTranslations.ScopeNames[PackageScope.Global]);
Assert.Equal(
PackageScope.Global,
CommonTranslations.InvertedScopeNames["Màquina | Global"]
);
Assert.Equal(
PackageScope.Local,
CommonTranslations.InvertedScopeNames["Usuari | Local"]
);
}
/*
[Fact]
public async Task TestDownloadUpdatedTranslationsAsync()
{
string expected_file = Path.Join(CoreData.UniGetUICacheDirectory_Lang, "lang_ca.json");
if (File.Exists(expected_file))
File.Delete(expected_file);
LanguageEngine engine = new();
engine.LoadLanguage("ca");
await engine.DownloadUpdatedLanguageFile("ca");
Assert.True(File.Exists(expected_file), "The updated file was not created");
File.Delete(expected_file);
}
*/
}
}