mirror of https://github.com/borgbackup/borg.git
52 lines
1.6 KiB
Python
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
|