Circular buffer
In [ ]:
Copied!
from collections import deque
from collections import deque
In [ ]:
Copied!
class CircularBuffer:
def __init__(self, size):
self.buffer = deque(maxlen=size)
def push(self, data):
self.buffer.append(data)
def pop(self):
if self.buffer:
return self.buffer.popleft()
else:
raise IndexError("Buffer is empty")
def is_full(self):
return len(self.buffer) == self.buffer.maxlen
def is_empty(self):
return len(self.buffer) == 0
class CircularBuffer:
def __init__(self, size):
self.buffer = deque(maxlen=size)
def push(self, data):
self.buffer.append(data)
def pop(self):
if self.buffer:
return self.buffer.popleft()
else:
raise IndexError("Buffer is empty")
def is_full(self):
return len(self.buffer) == self.buffer.maxlen
def is_empty(self):
return len(self.buffer) == 0
In [ ]:
Copied!
# Test
def test_circular_buffer():
cb = CircularBuffer(3)
cb.push(1)
cb.push(2)
cb.push(3)
assert cb.is_full()
assert cb.pop() == 1
cb.push(4)
assert cb.pop() == 2
assert not cb.is_empty()
# Test
def test_circular_buffer():
cb = CircularBuffer(3)
cb.push(1)
cb.push(2)
cb.push(3)
assert cb.is_full()
assert cb.pop() == 1
cb.push(4)
assert cb.pop() == 2
assert not cb.is_empty()
In [ ]:
Copied!
test_circular_buffer()
test_circular_buffer()