ex-col-03-santa/SantaClausInc.Test/GoodAndNaughtyListTests.cs
github-classroom[bot] 3768d366ff
Initial commit
2024-12-11 15:23:18 +00:00

72 lines
2.1 KiB
C#

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<ChildInfo>());
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");
}
}