[InlineData(new long[] {}, new long[] {})] // no collections
        public void MeasureBucketShouldProduceReport(long[] msValues, long[] counterValues)
        {
            var testCollector = new TestMetricCollector(new CounterMetricName("foo"), "bar");
            var measureBucket = new MeasureBucket(testCollector);
            var length = msValues.Length;
            var timeSpans = msValues.Select(x => TimeSpan.FromMilliseconds(x).Ticks).ToList();
            for (var i = 0; i < length; i++)
            {
                testCollector.CollectorValue = counterValues[i];
                measureBucket.Collect(timeSpans[i]);
            }

            var delta = counterValues.LastOrDefault() - counterValues.FirstOrDefault();
            var report = measureBucket.ToReport();
            Assert.Equal(delta, report.MetricValue);
        }