From e2a3f2417acd8d9bd8048d6a904374038a39efd1 Mon Sep 17 00:00:00 2001 From: Josh Creek Date: Thu, 13 Oct 2022 09:25:24 +0100 Subject: [PATCH] chore(*): Add day creation tool --- AdventOfCode/AOC.Tests/Y2015/Tasks/Day03.txt | 0 AdventOfCode/AdventOfCode.sln | 6 +++ AdventOfCode/DayCreator/DayCreator.csproj | 20 +++++++++ AdventOfCode/DayCreator/DayX.cs | 45 ++++++++++++++++++++ AdventOfCode/DayCreator/Program.cs | 30 +++++++++++++ 5 files changed, 101 insertions(+) create mode 100644 AdventOfCode/AOC.Tests/Y2015/Tasks/Day03.txt create mode 100644 AdventOfCode/DayCreator/DayCreator.csproj create mode 100644 AdventOfCode/DayCreator/DayX.cs create mode 100644 AdventOfCode/DayCreator/Program.cs diff --git a/AdventOfCode/AOC.Tests/Y2015/Tasks/Day03.txt b/AdventOfCode/AOC.Tests/Y2015/Tasks/Day03.txt new file mode 100644 index 0000000..e69de29 diff --git a/AdventOfCode/AdventOfCode.sln b/AdventOfCode/AdventOfCode.sln index 4da70a6..ee57901 100644 --- a/AdventOfCode/AdventOfCode.sln +++ b/AdventOfCode/AdventOfCode.sln @@ -5,6 +5,8 @@ VisualStudioVersion = 17.3.32922.545 MinimumVisualStudioVersion = 10.0.40219.1 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AOC.Tests", "AOC.Tests\AOC.Tests.csproj", "{2E0193E1-5DD3-40A6-A07B-C6E58341ACA0}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DayCreator", "DayCreator\DayCreator.csproj", "{BBA91797-9C84-4A8D-9C12-9AE4D3C3EF83}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -15,6 +17,10 @@ Global {2E0193E1-5DD3-40A6-A07B-C6E58341ACA0}.Debug|Any CPU.Build.0 = Debug|Any CPU {2E0193E1-5DD3-40A6-A07B-C6E58341ACA0}.Release|Any CPU.ActiveCfg = Release|Any CPU {2E0193E1-5DD3-40A6-A07B-C6E58341ACA0}.Release|Any CPU.Build.0 = Release|Any CPU + {BBA91797-9C84-4A8D-9C12-9AE4D3C3EF83}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {BBA91797-9C84-4A8D-9C12-9AE4D3C3EF83}.Debug|Any CPU.Build.0 = Debug|Any CPU + {BBA91797-9C84-4A8D-9C12-9AE4D3C3EF83}.Release|Any CPU.ActiveCfg = Release|Any CPU + {BBA91797-9C84-4A8D-9C12-9AE4D3C3EF83}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/AdventOfCode/DayCreator/DayCreator.csproj b/AdventOfCode/DayCreator/DayCreator.csproj new file mode 100644 index 0000000..053d4b8 --- /dev/null +++ b/AdventOfCode/DayCreator/DayCreator.csproj @@ -0,0 +1,20 @@ + + + + Exe + net6.0 + enable + enable + + + + + + + + + Always + + + + diff --git a/AdventOfCode/DayCreator/DayX.cs b/AdventOfCode/DayCreator/DayX.cs new file mode 100644 index 0000000..83d70d9 --- /dev/null +++ b/AdventOfCode/DayCreator/DayX.cs @@ -0,0 +1,45 @@ +using System.Reflection; + +namespace AOC.Tests.YX +{ + [TestFixture, Parallelizable(ParallelScope.All)] + public class DayX + { + protected string GetThisClassName() { return this.GetType().Name; } + private string[] realData; + + [SetUp] + public void Setup() + { + realData = File.ReadAllLines(Path.Combine(TestContext.CurrentContext.TestDirectory, "YX", "Data", $"{GetThisClassName()}.dat")); + } + + [TestCase("blah", 0)] + [TestCase(null, 232)] // The actual answer + public void Part1(string input, int? expected) + { + string[] lines = input != null ? new[] { input } : realData; + + //if (expected != null) + //{ + // Assert.That(result, Is.EqualTo(expected.Value)); + //} + + //Console.WriteLine($"Part 1: {result}"); + } + + [TestCase("blah", 1)] + [TestCase(null, 1783)] // The actual answer + public void Part2(string input, int? expected) + { + //string[] lines = input != null ? new[] { input } : realData; + + //if (expected != null) + //{ + // Assert.That(result, Is.EqualTo(expected.Value)); + //} + + //Console.WriteLine($"Part 2: {result}"); + } + } +} \ No newline at end of file diff --git a/AdventOfCode/DayCreator/Program.cs b/AdventOfCode/DayCreator/Program.cs new file mode 100644 index 0000000..04790ec --- /dev/null +++ b/AdventOfCode/DayCreator/Program.cs @@ -0,0 +1,30 @@ +using System.Collections.Generic; +using System; +using System.IO; +using System.Text; + +Console.Write("Year: "); +var year = Console.ReadLine(); + +Console.Write("Day: "); +var day = Console.ReadLine().PadLeft(2, '0'); ; + +var currentLocation = System.Reflection.Assembly.GetExecutingAssembly().Location; +int ix = currentLocation.IndexOf("DayCreator"); +var newPathBase = currentLocation.Substring(0, ix - 1); + +string yearPath = Path.GetFullPath(Path.Combine(newPathBase, $@"AOC.Tests\Y{year}\")); +string dataPath = Path.GetFullPath(Path.Combine(yearPath, $@"Data\")); +string tasksPath = Path.GetFullPath(Path.Combine(yearPath, $@"Tasks\")); + +// Create data file +using (FileStream fs = File.Create($"{dataPath}Day{day}.dat")); + +// Create task file +using (FileStream fs = File.Create($"{tasksPath}Day{day}.txt")); + +// Create code file +string text = File.ReadAllText("DayX.cs"); +text = text.Replace("YX", $"Y{year}"); +text = text.Replace("DayX", $"Day{day}"); +File.WriteAllText($"{yearPath}Day{day}.cs", text);