def test_queues(self): cb = CircularBuffer() for i in range(12): cb.queue(i) assert cb.read == 0 assert cb.dequeue() == 0 assert cb.read == 1 assert cb.dequeue() == 1 # Overwriting for i in range(12): cb.queue(i) assert cb.read == 0 assert cb.dequeue() == 0 assert cb.read == 1 assert cb.dequeue() == 1 # Let's keep dequeueing assert cb.dequeue() == 2 assert cb.dequeue() == 3 assert cb.dequeue() == 4 assert cb.dequeue() == 5 assert cb.dequeue() == 6 assert cb.dequeue() == 7 assert cb.dequeue() == 8 assert cb.dequeue() == 9 assert cb.dequeue() == 10 assert cb.dequeue() == 11 assert cb.dequeue() is None assert cb.dequeue() is None assert cb.read == 11 assert cb.write == 0
def test_write_and_read_movement(self): cb = CircularBuffer(['A', 'B', 'C']) assert cb.write == 3 assert cb.read == 0 # This better not be moving cb.queue('D') assert cb.write == 4 assert cb.read == 0 cb.dequeue() # Should not do anything assert cb.write == 4 assert cb.read == 1 cb = CircularBuffer() # Clearing for i in range(11): cb.queue(i) assert cb.write == 11 assert cb.read == 0 cb.queue(11) assert cb.write == 0 assert cb.read == 0 assert cb.dequeue() == 0 # Should BOTH move cb.queue(12) assert cb.write == 1 assert cb.read == 1 assert cb.dequeue() == 1