Skip to content

Commit 5ff631d

Browse files
Migrated tests and updated references.
1 parent 90b89e4 commit 5ff631d

7 files changed

+254
-2
lines changed

Open.Collections.Numeric.sln

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
2+
Microsoft Visual Studio Solution File, Format Version 12.00
3+
# Visual Studio Version 16
4+
VisualStudioVersion = 16.0.31410.357
5+
MinimumVisualStudioVersion = 10.0.40219.1
6+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Open.Collections.Numeric", "source\Open.Collections.Numeric.csproj", "{9D657730-F7E8-4816-B3B1-507CD4EB2ECA}"
7+
EndProject
8+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Open.Collections.Numeric.Tests", "tests\Open.Collections.Numeric.Tests.csproj", "{99A27628-3474-42FD-BFD1-9F64C40412D9}"
9+
EndProject
10+
Global
11+
GlobalSection(SolutionConfigurationPlatforms) = preSolution
12+
Debug|Any CPU = Debug|Any CPU
13+
Release|Any CPU = Release|Any CPU
14+
EndGlobalSection
15+
GlobalSection(ProjectConfigurationPlatforms) = postSolution
16+
{9D657730-F7E8-4816-B3B1-507CD4EB2ECA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
17+
{9D657730-F7E8-4816-B3B1-507CD4EB2ECA}.Debug|Any CPU.Build.0 = Debug|Any CPU
18+
{9D657730-F7E8-4816-B3B1-507CD4EB2ECA}.Release|Any CPU.ActiveCfg = Release|Any CPU
19+
{9D657730-F7E8-4816-B3B1-507CD4EB2ECA}.Release|Any CPU.Build.0 = Release|Any CPU
20+
{99A27628-3474-42FD-BFD1-9F64C40412D9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
21+
{99A27628-3474-42FD-BFD1-9F64C40412D9}.Debug|Any CPU.Build.0 = Debug|Any CPU
22+
{99A27628-3474-42FD-BFD1-9F64C40412D9}.Release|Any CPU.ActiveCfg = Release|Any CPU
23+
{99A27628-3474-42FD-BFD1-9F64C40412D9}.Release|Any CPU.Build.0 = Release|Any CPU
24+
EndGlobalSection
25+
GlobalSection(SolutionProperties) = preSolution
26+
HideSolutionNode = FALSE
27+
EndGlobalSection
28+
GlobalSection(ExtensibilityGlobals) = postSolution
29+
SolutionGuid = {161319D6-1653-4E21-8CF8-12CF03149775}
30+
EndGlobalSection
31+
EndGlobal
File renamed without changes.
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
<Project Sdk="Microsoft.NET.Sdk">
2+
3+
<PropertyGroup>
4+
<TargetFrameworks>netstandard2.0;netstandard2.1</TargetFrameworks>
5+
<LangVersion>latest</LangVersion>
6+
<Nullable>enable</Nullable>
7+
<EnableNETAnalyzers>true</EnableNETAnalyzers>
8+
<GeneratePackageOnBuild>True</GeneratePackageOnBuild>
9+
<Authors>electricessence</Authors>
10+
<Description>
11+
Useful set of extensions for processing collections of numerical data.
12+
13+
Part of the "Open" set of libraries.
14+
</Description>
15+
<PackageTags>collections;numeric;double;extensions;threadsafe;thread-safe</PackageTags>
16+
<Copyright>© electricessence (Oren F.) All rights reserved.</Copyright>
17+
<PackageProjectUrl>https://github.com/Open-NET-Libraries/Open.Collections.Numeric/</PackageProjectUrl>
18+
<RepositoryUrl>https://github.com/Open-NET-Libraries/Open.Collections.Numeric/</RepositoryUrl>
19+
<RepositoryType>git</RepositoryType>
20+
<Version>1.5.5</Version>
21+
<PackageReleaseNotes></PackageReleaseNotes>
22+
<PackageLicenseExpression>MIT</PackageLicenseExpression>
23+
<PublishRepositoryUrl>true</PublishRepositoryUrl>
24+
<IncludeSymbols>true</IncludeSymbols>
25+
<SymbolPackageFormat>snupkg</SymbolPackageFormat>
26+
<PackageIcon>logo.png</PackageIcon>
27+
</PropertyGroup>
28+
29+
<ItemGroup>
30+
<PackageReference Include="Microsoft.SourceLink.GitHub" Version="1.0.0" PrivateAssets="All" />
31+
</ItemGroup>
32+
33+
<ItemGroup>
34+
<None Remove=".git" />
35+
<None Remove=".gitignore" />
36+
<None Include="logo.png">
37+
<Pack>True</Pack>
38+
<PackagePath></PackagePath>
39+
</None>
40+
</ItemGroup>
41+
42+
<ItemGroup>
43+
<None Remove=".git" />
44+
<None Remove=".gitignore" />
45+
<None Remove="LICENSE.md" />
46+
<None Remove="README.md" />
47+
</ItemGroup>
48+
49+
<ItemGroup>
50+
<PackageReference Include="Open.Collections" Version="2.11.1" />
51+
<PackageReference Include="Open.Numeric" Version="2.3.1" />
52+
<PackageReference Include="Open.Threading" Version="1.6.1" />
53+
<PackageReference Include="System.Collections.Immutable" Version="5.0.0" />
54+
</ItemGroup>
55+
56+
</Project>

PossibleAddends.cs renamed to source/PossibleAddends.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,11 +68,11 @@ public IEnumerable<IReadOnlyList<int>> GetUniqueAddends(int sum, int count)
6868

6969
protected override void OnDispose()
7070
{
71-
foreach(var c in Cache.Values)
71+
foreach (var c in Cache.Values)
7272
{
7373
foreach (var s in c.Values)
7474
{
75-
if(s is IDisposable d) d.Dispose();
75+
if (s is IDisposable d) d.Dispose();
7676
}
7777
}
7878
Cache.Clear();
File renamed without changes.
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
<Project Sdk="Microsoft.NET.Sdk">
2+
3+
<PropertyGroup>
4+
<TargetFramework>net5.0</TargetFramework>
5+
6+
<IsPackable>false</IsPackable>
7+
</PropertyGroup>
8+
9+
<ItemGroup>
10+
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.10.0" />
11+
<PackageReference Include="xunit" Version="2.4.1" />
12+
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.3">
13+
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
14+
<PrivateAssets>all</PrivateAssets>
15+
</PackageReference>
16+
<PackageReference Include="coverlet.collector" Version="3.0.3">
17+
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
18+
<PrivateAssets>all</PrivateAssets>
19+
</PackageReference>
20+
</ItemGroup>
21+
22+
<ItemGroup>
23+
<ProjectReference Include="..\source\Open.Collections.Numeric.csproj" />
24+
</ItemGroup>
25+
26+
</Project>

tests/SumCombinationTests.cs

Lines changed: 139 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,139 @@
1+
using Open.Collections.Numeric;
2+
using System.Linq;
3+
using Xunit;
4+
5+
namespace Open.Collections.Tests
6+
{
7+
public class SumCombinationTests
8+
{
9+
readonly PossibleAddends SC = new();
10+
11+
[Fact]
12+
public void NoAddendsLessThan2()
13+
{
14+
for (int i = 0; i < 2; i++)
15+
{
16+
Assert.Empty(SC.UniqueAddendsFor(7, i));
17+
Assert.Empty(PossibleAddends.GetUniqueAddendsBuffered(7, i));
18+
}
19+
}
20+
21+
[Fact]
22+
public void NoAddendsWithLowSum()
23+
{
24+
for (int i = 0; i < 4; i++)
25+
{
26+
Assert.Empty(SC.UniqueAddendsFor(2, i));
27+
Assert.Empty(PossibleAddends.GetUniqueAddendsBuffered(2, i));
28+
}
29+
}
30+
31+
[Fact]
32+
public void AddendsFor2()
33+
{
34+
{
35+
var result = SC.UniqueAddendsFor(3, 2);
36+
Assert.Equal(1, result.Count);
37+
Assert.Equal(new int[] { 1, 2 }, result[0]);
38+
Assert.Equal(result, PossibleAddends.GetUniqueAddendsEnumerable(3, 2));
39+
}
40+
{
41+
var result = SC.UniqueAddendsFor(4, 2);
42+
Assert.Equal(1, result.Count);
43+
Assert.Equal(new int[] { 1, 3 }, result[0]);
44+
Assert.Equal(result, PossibleAddends.GetUniqueAddendsEnumerable(4, 2));
45+
}
46+
{
47+
var result = SC.UniqueAddendsFor(5, 2);
48+
Assert.Equal(2, result.Count);
49+
Assert.Equal(new int[] { 1, 4 }, result[0]);
50+
Assert.Equal(new int[] { 2, 3 }, result[1]);
51+
Assert.Equal(result, PossibleAddends.GetUniqueAddendsEnumerable(5, 2));
52+
}
53+
{
54+
var result = SC.UniqueAddendsFor(6, 2);
55+
Assert.Equal(2, result.Count);
56+
Assert.Equal(new int[] { 1, 5 }, result[0]);
57+
Assert.Equal(new int[] { 2, 4 }, result[1]);
58+
Assert.Equal(result, PossibleAddends.GetUniqueAddendsEnumerable(6, 2));
59+
}
60+
{
61+
var result = SC.UniqueAddendsFor(7, 2);
62+
Assert.Equal(3, result.Count);
63+
Assert.Equal(new int[] { 1, 6 }, result[0]);
64+
Assert.Equal(new int[] { 2, 5 }, result[1]);
65+
Assert.Equal(new int[] { 3, 4 }, result[2]);
66+
Assert.Equal(result, PossibleAddends.GetUniqueAddendsEnumerable(7, 2));
67+
}
68+
}
69+
70+
71+
[Fact]
72+
public void AddendsFor3()
73+
{
74+
{
75+
for (int i = 0; i < 6; i++)
76+
{
77+
var result = SC.UniqueAddendsFor(i, 3);
78+
Assert.Empty(result);
79+
Assert.Empty(PossibleAddends.GetUniqueAddendsBuffered(i, 3));
80+
}
81+
}
82+
{
83+
var result = SC.UniqueAddendsFor(6, 3);
84+
Assert.Equal(1, result.Count);
85+
Assert.Equal(new int[] { 1, 2, 3 }, result[0]);
86+
Assert.Equal(result, PossibleAddends.GetUniqueAddendsEnumerable(6, 3));
87+
}
88+
{
89+
var result = SC.UniqueAddendsFor(7, 3);
90+
Assert.Equal(1, result.Count);
91+
Assert.Equal(new int[] { 1, 2, 4 }, result[0]);
92+
Assert.Equal(result, PossibleAddends.GetUniqueAddendsEnumerable(7, 3));
93+
}
94+
{
95+
var result = SC.UniqueAddendsFor(8, 3);
96+
Assert.Equal(2, result.Count);
97+
Assert.Equal(new int[] { 1, 2, 5 }, result[0]);
98+
Assert.Equal(new int[] { 1, 3, 4 }, result[1]);
99+
Assert.Equal(result, PossibleAddends.GetUniqueAddendsEnumerable(8, 3));
100+
}
101+
{
102+
var result = SC.UniqueAddendsFor(9, 3);
103+
Assert.Equal(3, result.Count);
104+
Assert.Equal(new int[] { 1, 2, 6 }, result[0]);
105+
Assert.Equal(new int[] { 1, 3, 5 }, result[1]);
106+
Assert.Equal(new int[] { 2, 3, 4 }, result[2]);
107+
Assert.Equal(result, PossibleAddends.GetUniqueAddendsEnumerable(9, 3));
108+
}
109+
{
110+
var result = SC.UniqueAddendsFor(10, 3);
111+
Assert.Equal(4, result.Count);
112+
Assert.Equal(new int[] { 1, 2, 7 }, result[0]);
113+
Assert.Equal(new int[] { 1, 3, 6 }, result[1]);
114+
Assert.Equal(new int[] { 1, 4, 5 }, result[2]);
115+
Assert.Equal(new int[] { 2, 3, 5 }, result[3]);
116+
Assert.Equal(result, PossibleAddends.GetUniqueAddendsEnumerable(10, 3));
117+
}
118+
119+
{
120+
var result = SC.UniqueAddendsFor(15, 3);
121+
Assert.Equal(12, result.Count);
122+
Assert.Equal(new int[] { 1, 2, 12 }, result[0]);
123+
Assert.Equal(new int[] { 1, 3, 11 }, result[1]);
124+
Assert.Equal(new int[] { 1, 4, 10 }, result[2]);
125+
Assert.Equal(new int[] { 2, 3, 10 }, result[3]);
126+
Assert.Equal(new int[] { 1, 5, 9 }, result[4]);
127+
Assert.Equal(new int[] { 2, 4, 9 }, result[5]);
128+
Assert.Equal(new int[] { 1, 6, 8 }, result[6]);
129+
Assert.Equal(new int[] { 2, 5, 8 }, result[7]);
130+
Assert.Equal(new int[] { 3, 4, 8 }, result[8]);
131+
Assert.Equal(new int[] { 2, 6, 7 }, result[9]);
132+
Assert.Equal(new int[] { 3, 5, 7 }, result[10]);
133+
Assert.Equal(new int[] { 4, 5, 6 }, result[11]);
134+
Assert.Equal(result, PossibleAddends.GetUniqueAddendsEnumerable(15, 3));
135+
}
136+
}
137+
138+
}
139+
}

0 commit comments

Comments
 (0)