using SantaClausInc.Core; namespace SantaClausInc.Test; public sealed class GoodAndNaughtyListTests { [Theory] [InlineData(-10, 0, "very naughty")] [InlineData(0, 0, "boring child")] [InlineData(1.4D, 2, "floored to next whole number")] [InlineData(0.65D, 0, "not good enough to get a present")] [InlineData(0.7D, 1, "good enough for a single present")] [InlineData(5.4D, 8, "best child ever")] public void CalcParcels(double goodOrNaughty, int expected, string reason) { GoodAndNaughtyList.CalcParcels(goodOrNaughty) .Should().Be(expected, reason); } [Fact] public void GetAllCities_Simple() { var list = new GoodAndNaughtyList(SampleData.CreateMinimalSampleChildren()); var cities = list.GetAllCities(); cities.Count.Should().Be(2, "two cities"); (cities[0], cities[1]).Should().Be(("Linz", "Leonding")); } [Fact] public void GetAllCities_DistinctResults() { var list = new GoodAndNaughtyList(SampleData.CreateSampleChildren()); var cities = list.GetAllCities(); cities.Count.Should().Be(3, "three distinct cities, skip duplicates"); (cities[0], cities[1], cities[2]).Should().Be(("Linz", "Leonding", "Steyr")); } [Fact] public void GetAllCities_Empty() { var list = new GoodAndNaughtyList(new List()); var cities = list.GetAllCities(); cities.Count.Should().Be(0, "empty list of children"); } [Fact] public void GetChildrenByCity_Simple() { var list = new GoodAndNaughtyList(SampleData.CreateSampleChildren()); var children = list.GetChildrenByCity("Linz"); children.Count.Should().Be(5, "five kids live in Linz"); } [Fact] public void GetChildrenByCity_None() { var list = new GoodAndNaughtyList(SampleData.CreateSampleChildren()); var children = list.GetChildrenByCity("Hintertupfing"); children.Should().NotBeNull(); children.Count.Should().Be(0, "five kids live in Linz"); } }