public void CanConvertBothDirections()
        {
            var now = DateTime.UtcNow;

            var nowWithoutMs = new DateTime(now.Year, now.Month, now.Day, now.Hour, now.Minute, now.Second,
                                            now.Millisecond, DateTimeKind.Utc);
            var rightNow = now.ToMillisecondTimestamp().ToDateTime();

            Assert.IsTrue(nowWithoutMs.Equals(rightNow));

            var yesterday = (nowWithoutMs.ToMillisecondTimestamp() - (long)TimeSpan.FromDays(1).TotalMilliseconds).ToDateTime();
            var dayAfterTomorrow = yesterday.AddDays(1);

            Assert.IsTrue(nowWithoutMs.Equals(dayAfterTomorrow.ToUniversalTime()));
        }
        public void SampleCombinerMergesTimeRanges()
        {
            var now = DateTime.Now;
            var today = new DateTime(now.Year, now.Month, now.Day);
            var yesterday = today.AddDays(-1);
            var tomorrow = today.AddDays(1);

            var firstSample = new DataSample { HitCount = 1, SampleType = DataSampleType.HitCount, StartTime = yesterday.ToMillisecondTimestamp(), EndTime = today.ToMillisecondTimestamp() };
            var secondSample = new DataSample { HitCount = 1, SampleType = DataSampleType.HitCount, StartTime = today.ToMillisecondTimestamp(), EndTime = tomorrow.ToMillisecondTimestamp() };
            var combiner = new SampleCombiner(firstSample);
            combiner.AddSample(secondSample);

            Assert.AreEqual(yesterday.ToMillisecondTimestamp(), combiner.Data.StartTime);
            Assert.AreEqual(tomorrow.ToMillisecondTimestamp(), combiner.Data.EndTime);
        }