Skip to content

Commit df3b4b4

Browse files
Added possible addends tests.
1 parent d8195cc commit df3b4b4

File tree

3 files changed

+123
-33
lines changed

3 files changed

+123
-33
lines changed

benchmarking/Combinations.cs

Lines changed: 0 additions & 31 deletions
This file was deleted.

testing/Open.Collections.Tests/Open.Collections.Tests.csproj

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,19 +7,20 @@
77
</PropertyGroup>
88

99
<ItemGroup>
10-
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.9.4" />
10+
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.10.0" />
1111
<PackageReference Include="xunit" Version="2.4.1" />
1212
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.3">
1313
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
1414
<PrivateAssets>all</PrivateAssets>
1515
</PackageReference>
16-
<PackageReference Include="coverlet.collector" Version="3.0.2">
16+
<PackageReference Include="coverlet.collector" Version="3.0.3">
1717
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
1818
<PrivateAssets>all</PrivateAssets>
1919
</PackageReference>
2020
</ItemGroup>
2121

2222
<ItemGroup>
23+
<ProjectReference Include="..\..\..\Open.Collections.Numeric\Open.Collections.Numeric.csproj" />
2324
<ProjectReference Include="..\..\source\Open.Collections.csproj" />
2425
</ItemGroup>
2526

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

0 commit comments

Comments
 (0)