public void IntervalQueueCorrectlyDequeues() { TimeSpan windowSize = TimeSpan.FromDays(5); IntervalQueue<QueueItem> queue = new IntervalQueue<QueueItem>(windowSize, "EventTime"); DateTime initialDate = DateTime.UtcNow; int initialValue = 0; queue.Enqueue(new QueueItem() { EventTime = initialDate.AddDays(1), Value = initialValue++, }); QueueItem expected = new QueueItem() { EventTime = initialDate.AddDays(2), Value = initialValue++, }; queue.Enqueue(expected); queue.Enqueue(new QueueItem() { EventTime = initialDate.AddDays(3), Value = initialValue++, }); QueueItem overflow; queue.TryDequeue(out overflow); QueueItem actual; queue.TryDequeue(out actual); Assert.Equal(expected, actual); }
public void IntervalQueueWillRespectWindowSize() { TimeSpan windowSize = TimeSpan.FromDays(2.5); IntervalQueue<QueueItem> queue = new IntervalQueue<QueueItem>(windowSize, "EventTime"); // Data Set DateTime initialDate = DateTime.UtcNow; double timeIncrement = 1; List<QueueItem> dataSet = new List<QueueItem>(); for (int i = 0; i < 10; i++) { dataSet.Add(new QueueItem() { EventTime = initialDate.AddDays((double)i * timeIncrement), Value = i }); } List<QueueItem> expected = dataSet.Skip(7).ToList(); foreach (QueueItem item in dataSet) { queue.Enqueue(item); } List<QueueItem> actual = queue.ToList(); Assert.Equal<QueueItem>(expected, actual); }