Skip to content

Commit 2d18fbb

Browse files
committed
Adding coverage for each Histogram impl to recorder tests
1 parent a601a03 commit 2d18fbb

5 files changed

Lines changed: 64 additions & 21 deletions

File tree

src/HdrHistogram.UnitTests/HdrHistogram.UnitTests.csproj

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,10 @@
6464
<Compile Include="Persistence\ShortHistogramLogReaderWriterTests.cs" />
6565
<Compile Include="Persistence\TestCaseGenerator.cs" />
6666
<Compile Include="Properties\AssemblyInfo.cs" />
67-
<Compile Include="Recording\RecorderTests.cs" />
67+
<Compile Include="Recording\RecorderTestsBase.cs" />
68+
<Compile Include="Recording\RecorderTestWithIntHistogram.cs" />
69+
<Compile Include="Recording\RecorderTestWithLongHistogram.cs" />
70+
<Compile Include="Recording\RecorderTestWithLShortHistogram.cs" />
6871
<Compile Include="ShortHistogramTests.cs" />
6972
</ItemGroup>
7073
<ItemGroup>
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
using NUnit.Framework;
2+
3+
namespace HdrHistogram.UnitTests.Recording
4+
{
5+
[TestFixture]
6+
public sealed class RecorderTestWithIntHistogram : RecorderTestsBase
7+
{
8+
protected override HistogramBase Create(long id, long min, long max, int sf)
9+
{
10+
return new IntHistogram(id, min, max, sf);
11+
}
12+
}
13+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
using NUnit.Framework;
2+
3+
namespace HdrHistogram.UnitTests.Recording
4+
{
5+
[TestFixture]
6+
public sealed class RecorderTestWithLShortHistogram : RecorderTestsBase
7+
{
8+
protected override HistogramBase Create(long id, long min, long max, int sf)
9+
{
10+
return new ShortHistogram(id, min, max, sf);
11+
}
12+
}
13+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
using NUnit.Framework;
2+
3+
namespace HdrHistogram.UnitTests.Recording
4+
{
5+
[TestFixture]
6+
public sealed class RecorderTestWithLongHistogram : RecorderTestsBase
7+
{
8+
protected override HistogramBase Create(long id, long min, long max, int sf)
9+
{
10+
return new LongHistogram(id, min, max, sf);
11+
}
12+
}
13+
}

src/HdrHistogram.UnitTests/Recording/RecorderTests.cs renamed to src/HdrHistogram.UnitTests/Recording/RecorderTestsBase.cs

Lines changed: 21 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,13 @@
44

55
namespace HdrHistogram.UnitTests.Recording
66
{
7-
[TestFixture]
8-
public class RecorderTests
7+
public abstract class RecorderTestsBase
98
{
10-
private const long HighestTrackableValue = TimeSpan.TicksPerHour; // e.g. for 1 hr in ticks
9+
private const long HighestTrackableValue = 7716549600;//TimeStamp.Hours(1); // e.g. for 1 hr in system clock ticks (StopWatch.Frequency)
1110
private const int NumberOfSignificantValueDigits = 3;
1211

12+
protected abstract HistogramBase Create(long id, long min, long max, int sf);
13+
1314
[TestCase(0, 1, NumberOfSignificantValueDigits, "lowestTrackableValue", "lowestTrackableValue must be >= 1")]
1415
[TestCase(1, 1, NumberOfSignificantValueDigits, "highestTrackableValue", "highestTrackableValue must be >= 2 * lowestTrackableValue")]
1516
[TestCase(1, HighestTrackableValue, 6, "numberOfSignificantValueDigits", "numberOfSignificantValueDigits must be between 0 and 5")]
@@ -23,15 +24,15 @@ public void ConstructorShouldRejectInvalidParameters(
2324
lowestTrackableValue,
2425
highestTrackableValue,
2526
numberOfSignificantValueDigits,
26-
(id, lowest, highest, sf) => new LongHistogram(id, lowest, highest, sf)));
27+
Create));
2728
Assert.AreEqual(errorParamName, ex.ParamName);
2829
StringAssert.StartsWith(errorMessage, ex.Message);
2930
}
3031

3132
[Test]
3233
public void GetIntervalHistogram_returns_alternating_instances_from_factory()
3334
{
34-
var recorder = new Recorder(1, HighestTrackableValue, NumberOfSignificantValueDigits, (id, lowest, highest, sf) => new LongHistogram(id, lowest, highest, sf));
35+
var recorder = new Recorder(1, HighestTrackableValue, NumberOfSignificantValueDigits, Create);
3536
var a = recorder.GetIntervalHistogram();
3637
var b = recorder.GetIntervalHistogram(a);
3738
var c = recorder.GetIntervalHistogram(b);
@@ -46,7 +47,7 @@ public void GetIntervalHistogram_returns_alternating_instances_from_factory()
4647
[Test]
4748
public void GetIntervalHistogram_returns_current_histogram_values()
4849
{
49-
var recorder = new Recorder(1, HighestTrackableValue, NumberOfSignificantValueDigits, (id, lowest, highest, sf) => new LongHistogram(id, lowest, highest, sf));
50+
var recorder = new Recorder(1, HighestTrackableValue, NumberOfSignificantValueDigits, Create);
5051
recorder.RecordValue(1);
5152
recorder.RecordValue(10);
5253
recorder.RecordValue(100);
@@ -59,7 +60,7 @@ public void GetIntervalHistogram_returns_current_histogram_values()
5960
[Test]
6061
public void GetIntervalHistogram_causes_recording_to_happen_on_new_histogram()
6162
{
62-
var recorder = new Recorder(1, HighestTrackableValue, NumberOfSignificantValueDigits, (id, lowest, highest, sf) => new LongHistogram(id, lowest, highest, sf));
63+
var recorder = new Recorder(1, HighestTrackableValue, NumberOfSignificantValueDigits, Create);
6364
recorder.RecordValue(1);
6465
var histogramPrimary = recorder.GetIntervalHistogram();
6566
Assert.AreEqual(1, histogramPrimary.GetCountAtValue(1));
@@ -76,7 +77,7 @@ public void GetIntervalHistogram_causes_recording_to_happen_on_new_histogram()
7677
[Test]
7778
public void GetIntervalHistogram_resets_recycled_histogram()
7879
{
79-
var recorder = new Recorder(1, HighestTrackableValue, NumberOfSignificantValueDigits, (id, lowest, highest, sf) => new LongHistogram(id, lowest, highest, sf));
80+
var recorder = new Recorder(1, HighestTrackableValue, NumberOfSignificantValueDigits, Create);
8081
recorder.RecordValue(1);
8182
recorder.RecordValue(10);
8283
recorder.RecordValue(100);
@@ -98,7 +99,7 @@ public void GetIntervalHistogram_resets_recycled_histogram()
9899
[Test]
99100
public void RecordValue_increments_TotalCount()
100101
{
101-
var recorder = new Recorder(1, HighestTrackableValue, NumberOfSignificantValueDigits, (id, lowest, highest, sf) => new LongHistogram(id, lowest, highest, sf));
102+
var recorder = new Recorder(1, HighestTrackableValue, NumberOfSignificantValueDigits, Create);
102103
recorder.RecordValue(1000);
103104
var histogram = recorder.GetIntervalHistogram();
104105
Assert.AreEqual(1, histogram.TotalCount);
@@ -107,7 +108,7 @@ public void RecordValue_increments_TotalCount()
107108
[Test]
108109
public void RecordValue_increments_CountAtValue()
109110
{
110-
var recorder = new Recorder(1, HighestTrackableValue, NumberOfSignificantValueDigits, (id, lowest, highest, sf) => new LongHistogram(id, lowest, highest, sf));
111+
var recorder = new Recorder(1, HighestTrackableValue, NumberOfSignificantValueDigits, Create);
111112
recorder.RecordValue(1000);
112113
recorder.RecordValue(1000);
113114
recorder.RecordValue(1000);
@@ -119,14 +120,14 @@ public void RecordValue_increments_CountAtValue()
119120
public void RecordValue_Overflow_ShouldThrowException()
120121
{
121122
var highestTrackableValue = HighestTrackableValue;
122-
var recorder = new Recorder(1, highestTrackableValue, NumberOfSignificantValueDigits, (id, lowest, highest, sf) => new LongHistogram(id, lowest, highest, sf));
123+
var recorder = new Recorder(1, highestTrackableValue, NumberOfSignificantValueDigits, Create);
123124
Assert.Throws<IndexOutOfRangeException>(() => recorder.RecordValue(highestTrackableValue * 3));
124125
}
125126

126127
[Test]
127128
public void RecordValueWithCount_increments_TotalCount()
128129
{
129-
var recorder = new Recorder(1, HighestTrackableValue, NumberOfSignificantValueDigits, (id, lowest, highest, sf) => new LongHistogram(id, lowest, highest, sf));
130+
var recorder = new Recorder(1, HighestTrackableValue, NumberOfSignificantValueDigits, Create);
130131
recorder.RecordValueWithCount(1000, 10);
131132
var histogram = recorder.GetIntervalHistogram();
132133
Assert.AreEqual(10, histogram.TotalCount);
@@ -135,7 +136,7 @@ public void RecordValueWithCount_increments_TotalCount()
135136
[Test]
136137
public void RecordValueWithCount_increments_CountAtValue()
137138
{
138-
var recorder = new Recorder(1, HighestTrackableValue, NumberOfSignificantValueDigits, (id, lowest, highest, sf) => new LongHistogram(id, lowest, highest, sf));
139+
var recorder = new Recorder(1, HighestTrackableValue, NumberOfSignificantValueDigits, Create);
139140
recorder.RecordValueWithCount(1000, 10);
140141
recorder.RecordValueWithCount(1000, 10);
141142
recorder.RecordValueWithCount(5000, 20);
@@ -148,15 +149,15 @@ public void RecordValueWithCount_increments_CountAtValue()
148149
public void RecordValueWithCount_Overflow_ShouldThrowException()
149150
{
150151
var highestTrackableValue = HighestTrackableValue;
151-
var recorder = new Recorder(1, highestTrackableValue, NumberOfSignificantValueDigits, (id, lowest, highest, sf) => new LongHistogram(id, lowest, highest, sf));
152+
var recorder = new Recorder(1, highestTrackableValue, NumberOfSignificantValueDigits, Create);
152153
Assert.Throws<IndexOutOfRangeException>(() => recorder.RecordValueWithCount(highestTrackableValue * 3, 100));
153154
}
154155

155156
[Test]
156157
public void RecordValueWithExpectedInterval()
157158
{
158159
var TestValueLevel = 4L;
159-
var recorder = new Recorder(1, HighestTrackableValue, NumberOfSignificantValueDigits, (id, lowest, highest, sf) => new LongHistogram(id, lowest, highest, sf));
160+
var recorder = new Recorder(1, HighestTrackableValue, NumberOfSignificantValueDigits, Create);
160161
var valueHistogram = new LongHistogram(HighestTrackableValue, NumberOfSignificantValueDigits);
161162

162163
recorder.RecordValueWithExpectedInterval(TestValueLevel, TestValueLevel / 4);
@@ -180,7 +181,7 @@ public void RecordValueWithExpectedInterval()
180181
[Test]
181182
public void RecordAction_increments_TotalCount()
182183
{
183-
var recorder = new Recorder(1, HighestTrackableValue, NumberOfSignificantValueDigits, (id, lowest, highest, sf) => new LongHistogram(id, lowest, highest, sf));
184+
var recorder = new Recorder(1, HighestTrackableValue, NumberOfSignificantValueDigits, Create);
184185

185186
recorder.Record(() => { });
186187

@@ -191,7 +192,7 @@ public void RecordAction_increments_TotalCount()
191192
[Test]
192193
public void Reset_clears_counts_for_instances()
193194
{
194-
var recorder = new Recorder(1, HighestTrackableValue, NumberOfSignificantValueDigits, (id, lowest, highest, sf) => new LongHistogram(id, lowest, highest, sf));
195+
var recorder = new Recorder(1, HighestTrackableValue, NumberOfSignificantValueDigits, Create);
195196
recorder.RecordValue(1);
196197
recorder.RecordValue(10);
197198
recorder.RecordValue(100);
@@ -227,7 +228,7 @@ public void GetIntervalHistogramInto_copies_data_over_provided_Histogram()
227228
Assert.AreEqual(1, targetHistogram.GetCountAtValue(10));
228229
Assert.AreEqual(1, targetHistogram.GetCountAtValue(100));
229230

230-
var recorder = new Recorder(1, HighestTrackableValue, NumberOfSignificantValueDigits, (id, lowest, highest, sf) => new LongHistogram(id, lowest, highest, sf));
231+
var recorder = new Recorder(1, HighestTrackableValue, NumberOfSignificantValueDigits, Create);
231232
recorder.RecordValue(1000);
232233
recorder.RecordValue(10000);
233234
recorder.RecordValue(100000);
@@ -248,8 +249,8 @@ public void GetIntervalHistogramInto_copies_data_over_provided_Histogram()
248249
[Test]
249250
public void Using_external_histogram_for_recycling_throws()
250251
{
251-
var externallyCreatedHistogram = new LongHistogram(HighestTrackableValue, 3);
252-
var recorder = new Recorder(1, HighestTrackableValue, NumberOfSignificantValueDigits, (id, lowest, highest, sf) => new LongHistogram(id, lowest, highest, sf));
252+
var externallyCreatedHistogram = Create(-1000, 1, HighestTrackableValue, NumberOfSignificantValueDigits);
253+
var recorder = new Recorder(1, HighestTrackableValue, NumberOfSignificantValueDigits, Create);
253254
recorder.RecordValue(1000);
254255

255256
Assert.Throws<InvalidOperationException>(() => recorder.GetIntervalHistogram(externallyCreatedHistogram));

0 commit comments

Comments
 (0)