public void QueueViaStacksTest() { var myQueue = new QueueViaStacks <int>(); // not possible to dequeue from an empty queue Assert.Equal(0, myQueue.Length); Assert.Throws <System.InvalidOperationException>(() => myQueue.Dequeue()); // items are added by enqueue for (int i = 0; i < 3; i++) { myQueue.Enqueue(i); } Assert.Equal(3, myQueue.Length); // valid values are dequeued Assert.Equal(0, myQueue.Dequeue()); Assert.Equal(1, myQueue.Dequeue()); Assert.Equal(1, myQueue.Length); // enqueing new value doesn't break the dequeue myQueue.Enqueue(3); Assert.Equal(2, myQueue.Dequeue()); // peek returns value without removing it from the queue Assert.Equal(1, myQueue.Length); Assert.Equal(3, myQueue.Peek()); Assert.Equal(1, myQueue.Length); // clear removes all values from the queue myQueue.Clear(); Assert.Equal(0, myQueue.Length); }
public void QueueViaStacks_Peek_WhenNotEmpty_ReturnsOldestElements() { // Arrange var queueViaStacks = new QueueViaStacks <int>(); queueViaStacks.Push(1); queueViaStacks.Push(2); queueViaStacks.Push(3); queueViaStacks.Push(4); queueViaStacks.Push(5); // Act&Assert queueViaStacks.Peek().Should().Be(1); queueViaStacks.Push(6); queueViaStacks.Pop(); queueViaStacks.Peek().Should().Be(2); }
public void QueueViaStacks_Peek_WhenEmpty_ThrowsEmptyQueueException() { // Arrange var queueViaStacks = new QueueViaStacks <int>(); Action action = () => { queueViaStacks.Peek(); }; // Act && Assert action.Should().Throw <EmptyQueueException>().WithMessage("Queue is Empty"); }
public void ReturnValuesInFIFOOrderingAfterModifications() { QueueViaStacks <int> queue = CreateQueueViaStacksFromArray(new [] { 9, 6, 1, 2 }); Assert.Equal(9, queue.Peek()); Assert.Equal(9, queue.Remove()); Assert.Equal(6, queue.Remove()); queue.Add(3); queue.Add(4); CollectionsEqual(new [] { 1, 2, 3, 4 }, queue); }