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

50 lines
2.8 KiB
C#

namespace HSchool.Content.Tests;
public class VanillaCoreTests
{
[Fact]
public void CoreDefaultMap_PassesValidation()
{
var root = Path.Combine(AppContext.BaseDirectory, "vanilla");
Assert.True(Directory.Exists(root), $"Vanilla core pack was not copied to {root}.");
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);
MapValidator.Validate(map, catalog);
Assert.Equal("SchoolYard", catalog.Territories["SchoolYard"].DefName);
Assert.True(catalog.Rooms["Corridor"].Slots.Count == 0);
Assert.Equal(["Principal"], catalog.PositionsFor(DefKind.Room, "PrincipalsOffice"));
Assert.Equal("Кабинет директора", catalog.Label("ru", catalog.Rooms["PrincipalsOffice"]));
Assert.Equal("Principal's office", catalog.Label("en", catalog.Rooms["PrincipalsOffice"]));
Assert.Equal(["Sit"], catalog.Things["DirectorsChair"].Actions);
Assert.True(catalog.Buildings.ContainsKey("GymBuilding"));
Assert.True(catalog.Rooms.ContainsKey("Classroom"));
Assert.True(catalog.Rooms["Classroom"].Homeroom);
Assert.False(catalog.Rooms["ComputerLab"].Homeroom);
Assert.Equal("Класс", catalog.Label("ru", catalog.Rooms["Classroom"]));
Assert.Equal(["Teacher"], catalog.PositionsFor(DefKind.Room, "Classroom"));
Assert.Equal(1, catalog.Things["StudentDesk"].PupilSlots);
Assert.Equal(1, catalog.Things["Computer"].PupilSlots);
Assert.Equal(0, catalog.Things["Desk"].PupilSlots);
Assert.Equal(0, catalog.Things["Chair"].PupilSlots);
Assert.Contains(catalog.Rooms["Classroom"].Slots, slot => slot.Key == "teacherChair" && slot.Thing == "Chair");
Assert.Equal(16, catalog.Rooms["Classroom"].Slots.Single(slot => slot.Key == "studentDesks").Count);
Assert.Equal(2, map.Buildings.Count);
var homerooms = map.Rooms.Where(room => room.Def == "Classroom").ToList();
Assert.Equal(11, homerooms.Count);
Assert.Contains(map.Rooms, room => room.Id == "classroom-101" && room.Label == "101");
Assert.Contains(map.Rooms, room => room.Id == "classroom-207" && room.Label == "207");
Assert.DoesNotContain(map.Rooms, room => room.Label is "1A" or "1B" or "2A" or "2B");
Assert.Equal(
16,
map.Rooms.Single(room => room.Id == "classroom-101").Slots.Single(slot => slot.Key == "studentDesks").Count);
Assert.Contains(
map.Rooms.Single(room => room.Id == "classroom-101").Slots,
slot => slot.Key == "teacherChair" && slot.Thing == "Chair");
}
}