diff --git a/aoc2021.test/DayTests.cs b/aoc2021.test/DayTests.cs index 4c8e295..3bc1d84 100644 --- a/aoc2021.test/DayTests.cs +++ b/aoc2021.test/DayTests.cs @@ -11,6 +11,8 @@ public class DayTests var day = Activator.CreateInstance(dayType) as Day; s.Stop(); Assert.IsNotNull(day, "failed to instantiate day object"); + Assert.IsTrue(File.Exists(day.FileName)); + Console.Write($"Day {day.DayNumber}: {day.PuzzleName,-15} "); Console.WriteLine($"{s.ScaleMilliseconds()} ms elapsed in constructor"); // part 1 @@ -18,7 +20,8 @@ public class DayTests s.Start(); var part1Actual = day.Part1(); s.Stop(); - Console.WriteLine($"{s.ScaleMilliseconds()} ms elapsed in part1"); + Console.Write($"Part1: {part1Actual,-15} "); + Console.WriteLine($"{s.ScaleMilliseconds()} ms elapsed"); Assert.AreEqual(part1, part1Actual, $"Incorrect answer for Day {day.DayNumber} Part1"); // part 2 @@ -26,7 +29,40 @@ public class DayTests s.Start(); var part2Actual = day.Part2(); s.Stop(); - Console.WriteLine($"{s.ScaleMilliseconds()} ms elapsed in part2"); + Console.Write($"Part2: {part2Actual,-15} "); + Console.WriteLine($"{s.ScaleMilliseconds()} ms elapsed"); + Assert.AreEqual(part2, part2Actual, $"Incorrect answer for Day {day.DayNumber} Part2"); + } + + [DataTestMethod] + [DataRow(typeof(Day01), "7", "5")] + public void CheckTestInputs(Type dayType, string part1, string part2) + { + Day.UseTestInput = true; + var s = Stopwatch.StartNew(); + var day = Activator.CreateInstance(dayType) as Day; + s.Stop(); + Assert.IsNotNull(day, "failed to instantiate day object"); + Assert.IsTrue(File.Exists(day.FileName)); + Console.Write($"Day {day.DayNumber}: {day.PuzzleName,-15} "); + Console.WriteLine($"{s.ScaleMilliseconds()} ms elapsed in constructor"); + + // part 1 + s.Reset(); + s.Start(); + var part1Actual = day.Part1(); + s.Stop(); + Console.Write($"Part1: {part1Actual,-15} "); + Console.WriteLine($"{s.ScaleMilliseconds()} ms elapsed"); + Assert.AreEqual(part1, part1Actual, $"Incorrect answer for Day {day.DayNumber} Part1"); + + // part 2 + s.Reset(); + s.Start(); + var part2Actual = day.Part2(); + s.Stop(); + Console.Write($"Part2: {part2Actual,-15} "); + Console.WriteLine($"{s.ScaleMilliseconds()} ms elapsed"); Assert.AreEqual(part2, part2Actual, $"Incorrect answer for Day {day.DayNumber} Part2"); } } diff --git a/aoc2021/Day.cs b/aoc2021/Day.cs index e7d1c69..e99eac7 100644 --- a/aoc2021/Day.cs +++ b/aoc2021/Day.cs @@ -8,14 +8,17 @@ public abstract class Day PuzzleName = puzzleName; } + public static bool UseTestInput { get; set; } + public int DayNumber { get; } public string PuzzleName { get; } protected IEnumerable Input => File.ReadLines(FileName); - protected string FileName => - Path.Combine(AppDomain.CurrentDomain.BaseDirectory, $"input/day{DayNumber,2:00}.in"); + public string FileName => + Path.Combine(AppDomain.CurrentDomain.BaseDirectory, + $"input/{(UseTestInput ? "test" : "day")}{DayNumber,2:00}.in"); public abstract string Part1(); public abstract string Part2(); diff --git a/aoc2021/Day01.cs b/aoc2021/Day01.cs index 8729404..fcd352e 100644 --- a/aoc2021/Day01.cs +++ b/aoc2021/Day01.cs @@ -27,9 +27,7 @@ public sealed class Day01 : Day var c = 0; for (var i = 0; i < _readings.Count - 3; i++) { - var prev = _readings[i] + _readings[i + 1] + _readings[i + 2]; - var curr = _readings[i + 1] + _readings[i + 2] + _readings[i + 3]; - if (curr > prev) c++; + if (_readings[i + 3] > _readings[i]) c++; } return $"{c}"; } diff --git a/aoc2021/aoc2021.csproj b/aoc2021/aoc2021.csproj index 6e7a363..395175a 100644 --- a/aoc2021/aoc2021.csproj +++ b/aoc2021/aoc2021.csproj @@ -8,7 +8,7 @@ - + PreserveNewest diff --git a/aoc2021/input/test01.in b/aoc2021/input/test01.in new file mode 100644 index 0000000..26713c4 --- /dev/null +++ b/aoc2021/input/test01.in @@ -0,0 +1,10 @@ +199 +200 +208 +210 +200 +207 +240 +269 +260 +263 \ No newline at end of file