feat: solve part 2
This commit is contained in:
@@ -18,23 +18,147 @@ public class DishTests
|
||||
result.Should().Be(expected);
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[MemberData(nameof(TestData.CalculateTotalLoadWithSpinCycleData), MemberType = typeof(TestData))]
|
||||
public void CalculateTotalLoad_WhenCalledWithSpinCycle_ItShouldReturnExpectedLoad(Dish dish, long expected)
|
||||
{
|
||||
var result = dish.CalculateTotalLoad(true);
|
||||
result.Should().Be(expected);
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[MemberData(nameof(TestData.TiltTestData), MemberType = typeof(TestData))]
|
||||
public void TiltDish_WhenCalled_ItShouldReturnExpectedDish(Dish dish, int times, Dish expected)
|
||||
{
|
||||
var result = dish.TiltDish(times);
|
||||
result.Should().BeEquivalentTo(expected);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void CalculateTotalLoad_WhenCalledWithExample_ItShouldReturnExpectedLoad()
|
||||
{
|
||||
var input = File.ReadAllLines("EXAMPLE.txt");
|
||||
var dish = Dish.Parse(input);
|
||||
var result = dish.CalculateTotalLoad();
|
||||
result.Should().Be(136);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void CalculateTotalLoad_WhenCalledWithInput_ItShouldReturnExpectedLoad()
|
||||
{
|
||||
var input = File.ReadAllLines("INPUT.txt");
|
||||
var dish = Dish.Parse(input);
|
||||
var result = dish.CalculateTotalLoad();
|
||||
result.Should().Be(106997);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void CalculateTotalLoad_WhenCalledWithExampleAndSpinCycle_ItShouldReturnExpectedLoad()
|
||||
{
|
||||
var input = File.ReadAllLines("EXAMPLE.txt");
|
||||
var dish = Dish.Parse(input);
|
||||
var result = dish.CalculateTotalLoad(true);
|
||||
result.Should().Be(64);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void CalculateTotalLoad_WhenCalledWithInputAndSpinCycle_ItShouldReturnExpectedLoad()
|
||||
{
|
||||
var input = File.ReadAllLines("INPUT.txt");
|
||||
var dish = Dish.Parse(input);
|
||||
var result = dish.CalculateTotalLoad(true);
|
||||
result.Should().Be(99641);
|
||||
}
|
||||
|
||||
public static class TestData
|
||||
{
|
||||
private static readonly Dish TestDish = new(
|
||||
[
|
||||
['O', 'O', 'O', 'O', '.', '#', '.', 'O', '.', '.'],
|
||||
['O', 'O', '.', '.', '#', '.', '.', '.', '.', '#'],
|
||||
['O', 'O', '.', '.', 'O', '#', '#', '.', '.', 'O'],
|
||||
['O', '.', '.', '#', '.', 'O', 'O', '.', '.', '.'],
|
||||
['.', '.', '.', '.', '.', '.', '.', '.', '#', '.'],
|
||||
['.', '.', '#', '.', '.', '.', '.', '#', '.', '#'],
|
||||
['.', '.', 'O', '.', '.', '#', '.', 'O', '.', 'O'],
|
||||
['.', '.', 'O', '.', '.', '.', '.', '.', '.', '.'],
|
||||
['O', '.', '.', '.', '.', '#', '.', '.', '.', '.'],
|
||||
['O', '.', 'O', 'O', '#', '.', '.', '.', '.', '#'],
|
||||
['.', '.', '.', '.', '.', '#', '#', '.', '.', '.'],
|
||||
['O', 'O', '.', '#', 'O', '.', '.', '.', '.', 'O'],
|
||||
['.', 'O', '.', '.', '.', '.', '.', 'O', '#', '.'],
|
||||
['O', '.', '#', '.', '.', 'O', '.', '#', '.', '#'],
|
||||
['.', '.', 'O', '.', '.', '#', 'O', '.', '.', 'O'],
|
||||
['.', '.', '.', '.', '.', '.', '.', 'O', '.', '.'],
|
||||
['#', '.', '.', '.', '.', '#', '#', '#', '.', '.'],
|
||||
['#', '.', '.', '.', '.', '#', '.', '.', '.', '.'],
|
||||
['#', 'O', 'O', '.', '.', '#', '.', '.', '.', '.'],
|
||||
]
|
||||
);
|
||||
|
||||
public static IEnumerable<object[]> TiltTestData =>
|
||||
new List<object[]>
|
||||
{
|
||||
new object[]
|
||||
{
|
||||
TestDish,
|
||||
1,
|
||||
new Dish(
|
||||
[
|
||||
['.', '.', '.', '.', '.', '#', '.', '.', '.', '.'],
|
||||
['.', '.', '.', '.', '#', '.', '.', '.', 'O', '#'],
|
||||
['.', '.', '.', 'O', 'O', '#', '#', '.', '.', '.'],
|
||||
['.', 'O', 'O', '#', '.', '.', '.', '.', '.', '.'],
|
||||
['.', '.', '.', '.', '.', 'O', 'O', 'O', '#', '.'],
|
||||
['.', 'O', '#', '.', '.', '.', 'O', '#', '.', '#'],
|
||||
['.', '.', '.', '.', 'O', '#', '.', '.', '.', '.'],
|
||||
['.', '.', '.', '.', '.', '.', 'O', 'O', 'O', 'O'],
|
||||
['#', '.', '.', '.', 'O', '#', '#', '#', '.', '.'],
|
||||
['#', '.', '.', 'O', 'O', '#', '.', '.', '.', '.'],
|
||||
]
|
||||
)
|
||||
},
|
||||
new object[]
|
||||
{
|
||||
TestDish,
|
||||
2,
|
||||
new Dish(
|
||||
[
|
||||
['.', '.', '.', '.', '.', '#', '.', '.', '.', '.'],
|
||||
['.', '.', '.', '.', '#', '.', '.', '.', 'O', '#'],
|
||||
['.', '.', '.', '.', '.', '#', '#', '.', '.', '.'],
|
||||
['.', '.', 'O', '#', '.', '.', '.', '.', '.', '.'],
|
||||
['.', '.', '.', '.', '.', 'O', 'O', 'O', '#', '.'],
|
||||
['.', 'O', '#', '.', '.', '.', 'O', '#', '.', '#'],
|
||||
['.', '.', '.', '.', 'O', '#', '.', '.', '.', 'O'],
|
||||
['.', '.', '.', '.', '.', '.', '.', 'O', 'O', 'O'],
|
||||
['#', '.', '.', 'O', 'O', '#', '#', '#', '.', '.'],
|
||||
['#', '.', 'O', 'O', 'O', '#', '.', '.', '.', 'O'],
|
||||
]
|
||||
),
|
||||
},
|
||||
new object[]
|
||||
{
|
||||
TestDish,
|
||||
3,
|
||||
new Dish(
|
||||
[
|
||||
['.', '.', '.', '.', '.', '#', '.', '.', '.', '.'],
|
||||
['.', '.', '.', '.', '#', '.', '.', '.', 'O', '#'],
|
||||
['.', '.', '.', '.', '.', '#', '#', '.', '.', '.'],
|
||||
['.', '.', 'O', '#', '.', '.', '.', '.', '.', '.'],
|
||||
['.', '.', '.', '.', '.', 'O', 'O', 'O', '#', '.'],
|
||||
['.', 'O', '#', '.', '.', '.', 'O', '#', '.', '#'],
|
||||
['.', '.', '.', '.', 'O', '#', '.', '.', '.', 'O'],
|
||||
['.', '.', '.', '.', '.', '.', '.', 'O', 'O', 'O'],
|
||||
['#', '.', '.', '.', 'O', '#', '#', '#', '.', 'O'],
|
||||
['#', '.', 'O', 'O', 'O', '#', '.', '.', '.', 'O'],
|
||||
]
|
||||
),
|
||||
}
|
||||
};
|
||||
|
||||
public static IEnumerable<object[]> CalculateTotalLoadWithSpinCycleData =>
|
||||
new List<object[]>
|
||||
{
|
||||
new object[]
|
||||
{
|
||||
TestDish,
|
||||
64,
|
||||
}
|
||||
};
|
||||
|
||||
public static IEnumerable<object[]> CalculateTotalLoadTestData =>
|
||||
new List<object[]>
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user