72 lines
2.1 KiB
C#
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");
|
|
}
|
|
}
|