using SantaClausInc.Core; namespace SantaClausInc.Test; public sealed class PreparationTests { public PreparationTests() { RandomProvider.Random = new Random(54321); } [Fact] public void PrepareTours() { var list = new GoodAndNaughtyList(SampleData.CreateMinimalSampleChildren(false)); var sleighs = Preparation.PrepareTours(list); sleighs.Count.Should().Be(2, "one sleigh for each city"); CheckSleigh(sleighs[0], "Linz", [ "#01: Travelling to city Linz", " #02: Moving to house with ID 1", " #03: Putting into chimney: Book for Sepp (age 6)", " #04: Putting into chimney: Model Car for Sepp (age 6)", "#05: Tour done, returning to Northpole HQ" ], "No pile loaded for naughty child => only 1, not 2"); CheckSleigh(sleighs[1], "Leonding", [ "#01: Travelling to city Leonding", " #02: Moving to house with ID 2", " #03: Putting into chimney: Toy Blocks for Lisa (age 12)", " #04: Putting into chimney: Book for Lisa (age 12)", " #05: Putting into chimney: Doll for Lisa (age 12)", " #06: Putting into chimney: Watercolors for Lisa (age 12)", " #07: Putting into chimney: Model Car for Lisa (age 12)", "#08: Tour done, returning to Northpole HQ" ]); } private static void CheckSleigh(Sleigh? sleigh, string expectedCity, string[] expectedTourPlan, string pileReason = "") { if (sleigh is null) { Assert.Fail("Sleigh is null"); } sleigh.TargetCity.Should().Be(expectedCity); var tourPlan = sleigh.ExecuteTour(); tourPlan.Count.Should().Be(expectedTourPlan.Length, pileReason); for (var i = 0; i < tourPlan.Count; i++) { tourPlan[i].Should().Be(expectedTourPlan[i]); } } }