public void RecordValueWithExpectedInterval() { var TestValueLevel = 4L; var recorder = new Recorder(1, HighestTrackableValue, NumberOfSignificantValueDigits, (id, lowest, highest, sf) => new LongHistogram(id, lowest, highest, sf)); var valueHistogram = new LongHistogram(HighestTrackableValue, NumberOfSignificantValueDigits); recorder.RecordValueWithExpectedInterval(TestValueLevel, TestValueLevel / 4); valueHistogram.RecordValue(TestValueLevel); var intervalHistogram = recorder.GetIntervalHistogram(); // The data will include corrected samples: Assert.AreEqual(1L, intervalHistogram.GetCountAtValue((TestValueLevel * 1) / 4)); Assert.AreEqual(1L, intervalHistogram.GetCountAtValue((TestValueLevel * 2) / 4)); Assert.AreEqual(1L, intervalHistogram.GetCountAtValue((TestValueLevel * 3) / 4)); Assert.AreEqual(1L, intervalHistogram.GetCountAtValue((TestValueLevel * 4) / 4)); Assert.AreEqual(4L, intervalHistogram.TotalCount); // But the raw data will not: Assert.AreEqual(0L, valueHistogram.GetCountAtValue((TestValueLevel * 1) / 4)); Assert.AreEqual(0L, valueHistogram.GetCountAtValue((TestValueLevel * 2) / 4)); Assert.AreEqual(0L, valueHistogram.GetCountAtValue((TestValueLevel * 3) / 4)); Assert.AreEqual(1L, valueHistogram.GetCountAtValue((TestValueLevel * 4) / 4)); Assert.AreEqual(1L, valueHistogram.TotalCount); }