44
55namespace 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