Files
h-school/tests/HSchool.Content.Tests/MapViewTests.cs
T

75 lines
3.2 KiB
C#

namespace HSchool.Content.Tests;
public class MapViewTests
{
[Fact]
public void VanillaMap_LabelsTheTreeInTheRequestedLocale()
{
var root = Path.Combine(AppContext.BaseDirectory, "vanilla");
var documents = PackDocuments.FromDirectory(CatalogLoader.CorePackId, root);
var catalog = new CatalogLoader().Load([CatalogLoader.CorePackId], documents);
var map = CatalogLoader.LastDefaultMap([CatalogLoader.CorePackId], documents);
Assert.NotNull(map);
var ru = MapView.Build(catalog, map, "ru");
var en = MapView.Build(catalog, map, "en");
Assert.Equal(["yard", "main", "floor-1", "corridor-1", "principals-office"], ru.Select(node => node.Id));
Assert.Equal(string.Empty, ru[0].ParentId);
Assert.Equal("yard", ru.Single(node => node.Id == "main").ParentId);
Assert.Equal("floor-1", ru.Single(node => node.Id == "principals-office").ParentId);
var officeRu = ru.Single(node => node.Id == "principals-office");
Assert.Equal("Кабинет директора", officeRu.Name);
Assert.Equal(["Кресло директора", "Стол", "Стул"], officeRu.Items);
Assert.Equal(["Директор"], officeRu.Positions);
var officeEn = en.Single(node => node.Id == "principals-office");
Assert.Equal("Principal's office", officeEn.Name);
Assert.Equal(["Principal's chair", "Desk", "Chair"], officeEn.Items);
Assert.Equal(["Principal"], officeEn.Positions);
var corridor = ru.Single(node => node.Id == "corridor-1");
Assert.Empty(corridor.Items);
Assert.Empty(corridor.Positions);
}
[Fact]
public void FloorLabel_FollowsTheDefLabelInsteadOfReplacingIt()
{
var catalog = new CatalogLoader().Load(
[CatalogLoader.CorePackId],
[
new ContentDocument(
CatalogLoader.CorePackId,
"defs/floors/standard.jsonc",
"""{ "defName": "StandardFloor" }"""),
new ContentDocument(
CatalogLoader.CorePackId,
"defs/territories/yard.jsonc",
"""{ "defName": "Yard" }"""),
new ContentDocument(
CatalogLoader.CorePackId,
"localizations/ru.jsonc",
"""{ "StandardFloor": "Этаж", "Yard": "Двор" }"""),
]);
var map = new MapLayout
{
Territory = new TerritoryNode { Id = "yard", Def = "Yard" },
Buildings = [new BuildingNode { Id = "main", Def = "Main" }],
Floors =
[
new FloorNode { Id = "floor-1", Def = "StandardFloor", Building = "main", Label = "1" },
new FloorNode { Id = "floor-2", Def = "StandardFloor", Building = "main" },
],
};
var nodes = MapView.Build(catalog, map, "ru");
// A bare "1" in the tree is the label on its own; the def label carries the noun.
Assert.Equal("Этаж 1", nodes.Single(node => node.Id == "floor-1").Name);
Assert.Equal("Этаж", nodes.Single(node => node.Id == "floor-2").Name);
}
}