From 4a5eeb8cf0ffe323d4c2709293e289265d7e3928 Mon Sep 17 00:00:00 2001 From: Buddhism8003 Date: Sun, 14 Dec 2025 16:26:21 +0100 Subject: [PATCH] added test project for AdventOfCode.Extensions --- .../AdventOfCode.Extensions.Tests.csproj | 25 +++++++++++++ .../EnumerableExtensionsTest.cs | 37 +++++++++++++++++++ .../EnumerableExtensions.cs | 2 +- AdventOfCode.sln | 17 +++++++++ 4 files changed, 80 insertions(+), 1 deletion(-) create mode 100644 AdventOfCode.Extensions.Tests/AdventOfCode.Extensions.Tests.csproj create mode 100644 AdventOfCode.Extensions.Tests/EnumerableExtensionsTest.cs diff --git a/AdventOfCode.Extensions.Tests/AdventOfCode.Extensions.Tests.csproj b/AdventOfCode.Extensions.Tests/AdventOfCode.Extensions.Tests.csproj new file mode 100644 index 0000000..5c7d8d0 --- /dev/null +++ b/AdventOfCode.Extensions.Tests/AdventOfCode.Extensions.Tests.csproj @@ -0,0 +1,25 @@ + + + + net9.0 + enable + enable + false + + + + + + + + + + + + + + + + + + diff --git a/AdventOfCode.Extensions.Tests/EnumerableExtensionsTest.cs b/AdventOfCode.Extensions.Tests/EnumerableExtensionsTest.cs new file mode 100644 index 0000000..2505f10 --- /dev/null +++ b/AdventOfCode.Extensions.Tests/EnumerableExtensionsTest.cs @@ -0,0 +1,37 @@ +using AdventOfCode.Extensions; +namespace AdventOfCode.Extensions.Tests; + +public class EnumerableExtensionsTest +{ + [Fact] + public void Combinations_12_2_equals_12_21() + { + int[] data = [1, 2]; + + var actual = data.Combinations(2).ToArray(); + + Assert.Contains([1, 2], actual); + } + + [Fact] + public void Combinations_123_2_equals_12_13_23() + { + int[] data = [1, 2, 3]; + + var actual = data.Combinations(2).ToArray(); + + Assert.Contains([1, 2], actual); + Assert.Contains([1, 3], actual); + Assert.Contains([2, 3], actual); + } + + [Fact] + public void Combinations_123_3_equals_123() + { + int[] data = [1, 2, 3]; + + var actual = data.Combinations(3).ToArray(); + + Assert.Contains([1, 2, 3], actual); + } +} \ No newline at end of file diff --git a/AdventOfCode.Extensions/EnumerableExtensions.cs b/AdventOfCode.Extensions/EnumerableExtensions.cs index a0d05f0..c7dd053 100644 --- a/AdventOfCode.Extensions/EnumerableExtensions.cs +++ b/AdventOfCode.Extensions/EnumerableExtensions.cs @@ -18,7 +18,7 @@ public static class EnumerableExtensions { var validIndex = false; var currentIndex = 0; - foreach (var i in Range(0, count).Reverse()) + for(var i = count - 1; i >= 0; i--) { currentIndex = i; if (indices[i] != i + poolLength - count) diff --git a/AdventOfCode.sln b/AdventOfCode.sln index 5b17a0d..cbde281 100644 --- a/AdventOfCode.sln +++ b/AdventOfCode.sln @@ -18,6 +18,14 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AdventOfCode.HelperClasses. EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AdventOfCode.Downloader", "AdventOfCode.Downloader\AdventOfCode.Downloader.csproj", "{43B006C3-5296-452B-BD86-225574C0E2A2}" EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "HelperClasses", "HelperClasses", "{60EAF50E-3D09-4886-A237-984AF6F40119}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Contracts", "Contracts", "{19D1A1FA-0E80-4C2C-A542-5AB6FB3FB18D}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Extensions", "Extensions", "{F6AF8AA9-D28F-4DC0-A689-0A1451DC6B61}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AdventOfCode.Extensions.Tests", "AdventOfCode.Extensions.Tests\AdventOfCode.Extensions.Tests.csproj", "{FCED95A0-13EC-4DB0-B572-592398BB30F3}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -56,10 +64,19 @@ Global {43B006C3-5296-452B-BD86-225574C0E2A2}.Debug|Any CPU.Build.0 = Debug|Any CPU {43B006C3-5296-452B-BD86-225574C0E2A2}.Release|Any CPU.ActiveCfg = Release|Any CPU {43B006C3-5296-452B-BD86-225574C0E2A2}.Release|Any CPU.Build.0 = Release|Any CPU + {FCED95A0-13EC-4DB0-B572-592398BB30F3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {FCED95A0-13EC-4DB0-B572-592398BB30F3}.Debug|Any CPU.Build.0 = Debug|Any CPU + {FCED95A0-13EC-4DB0-B572-592398BB30F3}.Release|Any CPU.ActiveCfg = Release|Any CPU + {FCED95A0-13EC-4DB0-B572-592398BB30F3}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(NestedProjects) = preSolution {4F395AE3-DABB-4546-A4D0-5A62425FE168} = {05EBAA1C-B33B-4AFE-8635-A58D7CA509A7} {197D9628-C2D1-4B33-9DB8-134F87F79904} = {05EBAA1C-B33B-4AFE-8635-A58D7CA509A7} {FAB5E28F-706A-4DE1-B5FD-54E31C3A8405} = {05EBAA1C-B33B-4AFE-8635-A58D7CA509A7} + {D47175BB-5AD6-43A8-9287-FF5E6F1816E3} = {60EAF50E-3D09-4886-A237-984AF6F40119} + {3D09528A-09A7-4B0B-9D45-7D3AAB26449A} = {60EAF50E-3D09-4886-A237-984AF6F40119} + {0249A329-D5C1-4699-88BE-A668B362432E} = {19D1A1FA-0E80-4C2C-A542-5AB6FB3FB18D} + {1466A0F6-7C88-47FF-B8F8-FF30368E26DC} = {F6AF8AA9-D28F-4DC0-A689-0A1451DC6B61} + {FCED95A0-13EC-4DB0-B572-592398BB30F3} = {F6AF8AA9-D28F-4DC0-A689-0A1451DC6B61} EndGlobalSection EndGlobal