mirror of
https://github.com/MaSzyna-EU07/StarterNG.git
synced 2026-10-16 23:49:19 +02: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:
41
StarterNG.Tests/LoadWeightsTests.cs
Normal file
41
StarterNG.Tests/LoadWeightsTests.cs
Normal file
@@ -0,0 +1,41 @@
|
||||
using StarterNG.Classes;
|
||||
using StarterNG.Domain.Vehicles;
|
||||
using StarterNG.Infrastructure.Vehicles;
|
||||
using StarterNG.Tests.Fakes;
|
||||
|
||||
namespace StarterNG.Tests;
|
||||
|
||||
public class LoadWeightsTests
|
||||
{
|
||||
private static LoadWeightsRepository Repository(InMemoryFileSystem files)
|
||||
{
|
||||
var installation = new TestInstallation(files);
|
||||
return new LoadWeightsRepository(files, installation.Paths, installation.Log);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Weights_are_read_from_the_pairs_in_the_file()
|
||||
{
|
||||
var files = new InMemoryFileSystem()
|
||||
.WithFile(TestInstallation.At("data", "load_weights.txt"),
|
||||
"{\n coal : 850 # węgiel\n sand : 1600\n}");
|
||||
|
||||
var table = Repository(files).Table;
|
||||
|
||||
Assert.Equal(850, table.WeightOf("coal"));
|
||||
Assert.Equal(1600, table.WeightOf("SAND"));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void An_unknown_cargo_falls_back_to_the_default_weight()
|
||||
{
|
||||
Assert.Equal(LoadWeightsTable.DefaultWeight,
|
||||
Repository(new InMemoryFileSystem()).Table.WeightOf("nieznany"));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void The_pantograph_pseudo_load_weighs_nothing()
|
||||
{
|
||||
Assert.Equal(0, new LoadWeightsTable().WeightOf(Dynamic.PantState));
|
||||
}
|
||||
}
|
||||
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