also check test input
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
This commit is contained in:
parent
469c05f5e5
commit
f0df492eca
|
@ -11,6 +11,8 @@ public class DayTests
|
||||||
var day = Activator.CreateInstance(dayType) as Day;
|
var day = Activator.CreateInstance(dayType) as Day;
|
||||||
s.Stop();
|
s.Stop();
|
||||||
Assert.IsNotNull(day, "failed to instantiate day object");
|
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");
|
Console.WriteLine($"{s.ScaleMilliseconds()} ms elapsed in constructor");
|
||||||
|
|
||||||
// part 1
|
// part 1
|
||||||
|
@ -18,7 +20,8 @@ public class DayTests
|
||||||
s.Start();
|
s.Start();
|
||||||
var part1Actual = day.Part1();
|
var part1Actual = day.Part1();
|
||||||
s.Stop();
|
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");
|
Assert.AreEqual(part1, part1Actual, $"Incorrect answer for Day {day.DayNumber} Part1");
|
||||||
|
|
||||||
// part 2
|
// part 2
|
||||||
|
@ -26,7 +29,40 @@ public class DayTests
|
||||||
s.Start();
|
s.Start();
|
||||||
var part2Actual = day.Part2();
|
var part2Actual = day.Part2();
|
||||||
s.Stop();
|
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");
|
Assert.AreEqual(part2, part2Actual, $"Incorrect answer for Day {day.DayNumber} Part2");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,14 +8,17 @@ public abstract class Day
|
||||||
PuzzleName = puzzleName;
|
PuzzleName = puzzleName;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static bool UseTestInput { get; set; }
|
||||||
|
|
||||||
public int DayNumber { get; }
|
public int DayNumber { get; }
|
||||||
public string PuzzleName { get; }
|
public string PuzzleName { get; }
|
||||||
|
|
||||||
protected IEnumerable<string> Input =>
|
protected IEnumerable<string> Input =>
|
||||||
File.ReadLines(FileName);
|
File.ReadLines(FileName);
|
||||||
|
|
||||||
protected string FileName =>
|
public string FileName =>
|
||||||
Path.Combine(AppDomain.CurrentDomain.BaseDirectory, $"input/day{DayNumber,2:00}.in");
|
Path.Combine(AppDomain.CurrentDomain.BaseDirectory,
|
||||||
|
$"input/{(UseTestInput ? "test" : "day")}{DayNumber,2:00}.in");
|
||||||
|
|
||||||
public abstract string Part1();
|
public abstract string Part1();
|
||||||
public abstract string Part2();
|
public abstract string Part2();
|
||||||
|
|
|
@ -27,9 +27,7 @@ public sealed class Day01 : Day
|
||||||
var c = 0;
|
var c = 0;
|
||||||
for (var i = 0; i < _readings.Count - 3; i++)
|
for (var i = 0; i < _readings.Count - 3; i++)
|
||||||
{
|
{
|
||||||
var prev = _readings[i] + _readings[i + 1] + _readings[i + 2];
|
if (_readings[i + 3] > _readings[i]) c++;
|
||||||
var curr = _readings[i + 1] + _readings[i + 2] + _readings[i + 3];
|
|
||||||
if (curr > prev) c++;
|
|
||||||
}
|
}
|
||||||
return $"{c}";
|
return $"{c}";
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<None Update="input\day*.in">
|
<None Update="input\*.in">
|
||||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
</None>
|
</None>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
|
@ -0,0 +1,10 @@
|
||||||
|
199
|
||||||
|
200
|
||||||
|
208
|
||||||
|
210
|
||||||
|
200
|
||||||
|
207
|
||||||
|
240
|
||||||
|
269
|
||||||
|
260
|
||||||
|
263
|
Loading…
Reference in New Issue