public void RemoveFromTailTest() { var rnd = new Random(); var buffer = new CircularBuffer<int>(2); var head = rnd.Next(); var tail = rnd.Next(); buffer.AddToTail(tail); buffer.AddToHead(head); Assert.That(buffer.Head, Is.EqualTo(head), "Invalid head value"); Assert.That(buffer.Tail, Is.EqualTo(tail), "Invalid tail value"); Assert.That(buffer.Length, Is.EqualTo(2), "Invalid Length value"); Assert.That(buffer.RemoveFromTail(), Is.EqualTo(tail), "Step 1"); Assert.That(buffer.RemoveFromTail(), Is.EqualTo(head), "Step 2"); Assert.That(buffer.IsEmpty, Is.True, "Buffer should be empty"); Assert.Throws(typeof(InvalidOperationException), () => buffer.RemoveFromTail()); }