mirror of
https://github.com/MaSzyna-EU07/StarterNG.git
synced 2026-11-06 21:48:35 +01:00
Take the remaining I/O out of the domain and drop AppState.Instance
Scenery translations and load weights get repositories; AppState moves to the application layer.
This commit is contained in:
52
StarterNG.Tests/SceneryTranslationsTests.cs
Normal file
52
StarterNG.Tests/SceneryTranslationsTests.cs
Normal file
@@ -0,0 +1,52 @@
|
||||
using StarterNG.Infrastructure.Sceneries;
|
||||
using StarterNG.Tests.Fakes;
|
||||
|
||||
namespace StarterNG.Tests;
|
||||
|
||||
public class SceneryTranslationsTests
|
||||
{
|
||||
private static string I18n(string file) => Path.Combine(Path.GetFullPath(TestInstallation.At("scenery")),
|
||||
"i18n", file);
|
||||
|
||||
[Fact]
|
||||
public void An_at_reference_is_resolved_against_the_sceneries_own_table()
|
||||
{
|
||||
var files = new InMemoryFileSystem()
|
||||
.WithFile(TestInstallation.At("scenery", "kato.scn"), "//$d @mission.brief")
|
||||
.WithFile(I18n("kato_en.json"), """{ "mission": { "brief": "Take the stopper to Katowice" } }""");
|
||||
var installation = new TestInstallation(files);
|
||||
var scenery = Assert.Single(installation.Sceneries.LoadAll());
|
||||
var translations = new SceneryTranslations(files, installation.Log);
|
||||
|
||||
translations.LoadFor(scenery, "en");
|
||||
|
||||
Assert.Equal("Take the stopper to Katowice", scenery.LocalizedDescription(translations));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void The_users_language_is_layered_over_english()
|
||||
{
|
||||
var files = new InMemoryFileSystem()
|
||||
.WithFile(TestInstallation.At("scenery", "kato.scn"), "//$d @brief")
|
||||
.WithFile(I18n("kato_en.json"), """{ "brief": "English" }""")
|
||||
.WithFile(I18n("kato_pl.json"), """{ "brief": "Polski" }""");
|
||||
var installation = new TestInstallation(files);
|
||||
var scenery = Assert.Single(installation.Sceneries.LoadAll());
|
||||
var translations = new SceneryTranslations(files, installation.Log);
|
||||
|
||||
translations.LoadFor(scenery, "Polski");
|
||||
|
||||
Assert.Equal("Polski", scenery.LocalizedDescription(translations));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Literal_text_and_unknown_keys_are_left_alone()
|
||||
{
|
||||
var installation = new TestInstallation();
|
||||
var translations = new SceneryTranslations(installation.Files, installation.Log);
|
||||
|
||||
Assert.Equal("zwykły opis", translations.Translate("zwykły opis"));
|
||||
Assert.Equal("@nieznany.klucz", translations.Translate("@nieznany.klucz"));
|
||||
Assert.Equal("", translations.Translate(null));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user