borg/src/borg/testsuite/efficient_collection_queue.py

52 lines
1.6 KiB
Python

import pytest
from ..helpers.datastruct import EfficientCollectionQueue
class TestEfficientQueue:
def test_base_usage(self):
queue = EfficientCollectionQueue(100, bytes)
assert queue.peek_front() == b''
queue.push_back(b'1234')
assert queue.peek_front() == b'1234'
assert len(queue) == 4
assert queue
queue.pop_front(4)
assert queue.peek_front() == b''
assert len(queue) == 0
assert not queue
def test_usage_with_arrays(self):
queue = EfficientCollectionQueue(100, list)
assert queue.peek_front() == []
queue.push_back([1, 2, 3, 4])
assert queue.peek_front() == [1, 2, 3, 4]
assert len(queue) == 4
assert queue
queue.pop_front(4)
assert queue.peek_front() == []
assert len(queue) == 0
assert not queue
def test_chunking(self):
queue = EfficientCollectionQueue(2, bytes)
queue.push_back(b'1')
queue.push_back(b'23')
queue.push_back(b'4567')
assert len(queue) == 7
assert queue.peek_front() == b'12'
queue.pop_front(3)
assert queue.peek_front() == b'4'
queue.pop_front(1)
assert queue.peek_front() == b'56'
queue.pop_front(2)
assert len(queue) == 1
assert queue
with pytest.raises(EfficientCollectionQueue.SizeUnderflow):
queue.pop_front(2)
assert queue.peek_front() == b'7'
queue.pop_front(1)
assert queue.peek_front() == b''
assert len(queue) == 0
assert not queue