Skip to content

Commit 90ae192

Browse files
committed
Added tests for CircularBuffer and GrowingList.
1 parent 5e0f315 commit 90ae192

File tree

4 files changed

+184
-0
lines changed

4 files changed

+184
-0
lines changed

ReClass.NET/Util/GrowingList.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ public class GrowingList<T>
99

1010
public T DefaultValue { get; set; }
1111

12+
public int Count => list.Count;
13+
1214
public GrowingList()
1315
{
1416
Contract.Ensures(list != null);
@@ -24,6 +26,8 @@ public GrowingList(T defaultValue)
2426

2527
private void GrowToSize(int size)
2628
{
29+
list.Capacity = size;
30+
2731
for (var i = list.Count; i <= size; ++i)
2832
{
2933
list.Add(DefaultValue);

ReClass.NET_Tests/ReClass.NET_Tests.csproj

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
<TestProjectType>UnitTest</TestProjectType>
1616
<NuGetPackageImportStamp>
1717
</NuGetPackageImportStamp>
18+
<LangVersion>latest</LangVersion>
1819
</PropertyGroup>
1920
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
2021
<DebugSymbols>true</DebugSymbols>
@@ -65,6 +66,8 @@
6566
<Compile Include="AddressParser\ParserTest.cs" />
6667
<Compile Include="AddressParser\TokenizerTest.cs" />
6768
<Compile Include="Properties\AssemblyInfo.cs" />
69+
<Compile Include="Util\CircularBufferTest.cs" />
70+
<Compile Include="Util\GrowingListTest.cs" />
6871
</ItemGroup>
6972
<ItemGroup>
7073
<ProjectReference Include="..\ReClass.NET\ReClass.NET.csproj">
Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
using System;
2+
using System.Linq;
3+
using NFluent;
4+
using ReClassNET.Util;
5+
using Xunit;
6+
7+
namespace ReClass.NET_Tests.Util
8+
{
9+
public class CircularBufferTest
10+
{
11+
[Fact]
12+
public void CheckInitialCapacityCount()
13+
{
14+
const int Capacity = 5;
15+
16+
var cb = new CircularBuffer<int>(Capacity);
17+
18+
Check.That(cb.Capacity).IsEqualTo(Capacity);
19+
Check.That(cb.Count).IsEqualTo(0);
20+
}
21+
22+
[Fact]
23+
public void DequeueFromEmptyBufferThrows()
24+
{
25+
var cb = new CircularBuffer<int>(1);
26+
27+
Check.ThatCode(() => cb.Dequeue()).Throws<InvalidOperationException>();
28+
}
29+
30+
[Theory]
31+
[InlineData(1)]
32+
[InlineData(2)]
33+
[InlineData(10)]
34+
[InlineData(100)]
35+
public void CheckEnqueueAndDeque(int value)
36+
{
37+
var cb = new CircularBuffer<int>(1);
38+
39+
var overwrittenValue = cb.Enqueue(value);
40+
41+
Check.That(overwrittenValue).IsEqualTo(default);
42+
43+
Check.That(cb.Dequeue()).IsEqualTo(value);
44+
}
45+
46+
[Theory]
47+
[InlineData(1)]
48+
[InlineData(1, 2)]
49+
[InlineData(1, 2, 3)]
50+
[InlineData(1, 2, 3, 4)]
51+
[InlineData(1, 2, 3, 4, 5)]
52+
public void CheckMultipleEnqueueAndDeque(params int[] values)
53+
{
54+
var cb = new CircularBuffer<int>(values.Length);
55+
56+
foreach (var value in values)
57+
{
58+
cb.Enqueue(value);
59+
}
60+
61+
foreach (var value in values.Reverse())
62+
{
63+
Check.That(cb.Dequeue()).IsEqualTo(value);
64+
}
65+
}
66+
67+
[Theory]
68+
[InlineData(1, 2)]
69+
[InlineData(1, 2, 3)]
70+
[InlineData(1, 2, 3, 4)]
71+
[InlineData(1, 2, 3, 4, 5)]
72+
public void CheckOverflow(params int[] values)
73+
{
74+
var cb = new CircularBuffer<int>(1);
75+
76+
cb.Enqueue(values[0]);
77+
78+
for (var i = 1; i < values.Length; ++i)
79+
{
80+
Check.That(cb.Enqueue(values[i])).IsEqualTo(values[i - 1]);
81+
}
82+
83+
Check.That(cb.Dequeue()).IsEqualTo(values[values.Length - 1]);
84+
}
85+
}
86+
}
Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
using NFluent;
2+
using ReClassNET.Util;
3+
using Xunit;
4+
5+
namespace ReClass.NET_Tests.Util
6+
{
7+
public class GrowingListTest
8+
{
9+
[Theory]
10+
[InlineData(0)]
11+
[InlineData(1)]
12+
[InlineData(2)]
13+
[InlineData(10)]
14+
[InlineData(100)]
15+
public void CheckSetCount(int index)
16+
{
17+
var gl = new GrowingList<int>
18+
{
19+
[index] = default
20+
};
21+
22+
Check.That(gl.Count).IsEqualTo(index + 1);
23+
}
24+
25+
[Theory]
26+
[InlineData(0, 1, 2)]
27+
[InlineData(1, 2, 3)]
28+
[InlineData(2, 10, 11)]
29+
[InlineData(10, 8, 11)]
30+
[InlineData(100, 200, 201)]
31+
[InlineData(0, 0, 1)]
32+
[InlineData(10, 1, 11)]
33+
[InlineData(2, 1, 3)]
34+
public void CheckMultipleSetCount(int index1, int index2, int expected)
35+
{
36+
var gl = new GrowingList<int>
37+
{
38+
[index1] = default,
39+
[index2] = default
40+
};
41+
42+
Check.That(gl.Count).IsEqualTo(expected);
43+
}
44+
45+
[Theory]
46+
[InlineData(0)]
47+
[InlineData(1)]
48+
[InlineData(2)]
49+
[InlineData(10)]
50+
[InlineData(100)]
51+
public void CheckGetCount(int index)
52+
{
53+
var gl = new GrowingList<int>();
54+
55+
var _ = gl[index];
56+
57+
Check.That(gl.Count).IsEqualTo(index + 1);
58+
}
59+
60+
[Theory]
61+
[InlineData(0, 1, 2)]
62+
[InlineData(1, 2, 3)]
63+
[InlineData(2, 10, 11)]
64+
[InlineData(10, 8, 11)]
65+
[InlineData(100, 200, 201)]
66+
[InlineData(0, 0, 1)]
67+
[InlineData(10, 1, 11)]
68+
[InlineData(2, 1, 3)]
69+
public void CheckMultipleGetCount(int index1, int index2, int expected)
70+
{
71+
var gl = new GrowingList<int>();
72+
73+
var _ = gl[index1];
74+
_ = gl[index2];
75+
76+
Check.That(gl.Count).IsEqualTo(expected);
77+
}
78+
79+
[Theory]
80+
[InlineData(1, 0)]
81+
[InlineData(1, 10)]
82+
[InlineData(-1, 0)]
83+
[InlineData(-1, 20)]
84+
public void CheckDefaultValue(int value, int index)
85+
{
86+
var gl = new GrowingList<int>(value);
87+
88+
Check.That(gl[index]).IsEqualTo(value);
89+
}
90+
}
91+
}

0 commit comments

Comments
 (0)