feat: work on day 11 part 1
This commit is contained in:
@@ -0,0 +1,25 @@
|
||||
namespace PlutonianPebbles.Tests;
|
||||
|
||||
public class ObserverTests
|
||||
{
|
||||
private static readonly string[] ExampleInput = ["125", "17"];
|
||||
|
||||
[Test]
|
||||
[MethodDataSource(nameof(BlinkTestCases))]
|
||||
public async Task Blink_WhenCalled_ItShouldReturnExpectedValue(BlinkTestCase testCase)
|
||||
{
|
||||
var stones = testCase.Stones.Select(Stone.From).ToList();
|
||||
var observer = Observer.Of(stones);
|
||||
|
||||
var result = observer.Blink(testCase.NumberOfBlinks);
|
||||
|
||||
await Assert.That(result).IsEqualTo(testCase.ExpectedLineOfStones);
|
||||
}
|
||||
|
||||
public static IEnumerable<Func<BlinkTestCase>> BlinkTestCases()
|
||||
{
|
||||
yield return () => new(ExampleInput, 0, "125 17");
|
||||
}
|
||||
|
||||
public record BlinkTestCase(string[] Stones, int NumberOfBlinks, string ExpectedLineOfStones);
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
namespace PlutonianPebbles.Tests;
|
||||
|
||||
public class StoneTests
|
||||
{
|
||||
[Test]
|
||||
public async Task ToString_WhenCalled_ItShouldReturnEngravedValue()
|
||||
{
|
||||
var engravedValue = "0";
|
||||
|
||||
var result = Stone.From(engravedValue).ToString();
|
||||
|
||||
await Assert.That(result).IsEqualTo(engravedValue);
|
||||
}
|
||||
|
||||
[Test]
|
||||
[MethodDataSource(nameof(TransformTestCases))]
|
||||
public async Task Transform_WhenCalled_ItShouldReturnStonedWithExpectedEngraving(TransformTestCase testCase)
|
||||
{
|
||||
var expected = testCase.TransformedValues.Select(Stone.From).ToList();
|
||||
|
||||
var result = Stone.From(testCase.EngravedValue).Transform();
|
||||
|
||||
await Assert.That(result).IsEquivalentTo(expected);
|
||||
}
|
||||
|
||||
public static IEnumerable<Func<TransformTestCase>> TransformTestCases()
|
||||
{
|
||||
yield return () => new("0", ["1"]);
|
||||
yield return () => new("1", ["2024"]);
|
||||
yield return () => new("10", ["1", "0"]);
|
||||
yield return () => new("99", ["9", "9"]);
|
||||
yield return () => new("999", ["2021976"]);
|
||||
}
|
||||
|
||||
public record TransformTestCase(string EngravedValue, List<string> TransformedValues);
|
||||
}
|
||||
Reference in New Issue
Block a user