HEX
Server: LiteSpeed
System: Linux shams.tasjeel.ae 5.14.0-611.5.1.el9_7.x86_64 #1 SMP PREEMPT_DYNAMIC Tue Nov 11 08:09:09 EST 2025 x86_64
User: infowars (1469)
PHP: 8.2.29
Disabled: NONE
Upload Files
File: //usr/lib64/python3.9/site-packages/borg/testsuite/efficient_collection_queue.py
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