def test_circular_buffer_insert_partial_several():
    b = CircularBuffer(5, range(3))
    b.insert(1, -1)
    assert list(b) == [0, -1, 1, 2]
    b.insert(0, -2)
    assert list(b) == [-2, 0, -1, 1, 2]
    b.insert(0, -3)
    assert list(b) == [-3, 0, -1, 1, 2]
    b.insert(4, -4)
    assert list(b) == [0, -1, 1, 2, -4]
    b.insert(0, -5)
    assert list(b) == [-5, -1, 1, 2, -4]
def test_circular_buffer_insert_overfull_end():
    b = CircularBuffer(5, range(7))
    b.insert(5, -1)
    assert list(b) == [3, 4, 5, 6, -1]
def test_circular_buffer_insert_overfull_start():
    b = CircularBuffer(5, range(7))
    b.insert(0, -1)
    assert list(b) == [-1, 3, 4, 5, 6]
def test_circular_buffer_insert_full_end():
    b = CircularBuffer(5, range(5))
    b.insert(5, -1)
    assert list(b) == [1, 2, 3, 4, -1]
def test_circular_buffer_insert_full_start():
    b = CircularBuffer(5, range(5))
    b.insert(0, -1)
    assert list(b) == [-1, 1, 2, 3, 4]
def test_circular_buffer_insert_partial_end():
    b = CircularBuffer(5, range(3))
    b.insert(5, -1)
    assert list(b) == [0, 1, 2, -1]
def test_circular_buffer_insert_partial_start():
    b = CircularBuffer(5, range(3))
    b.insert(0, -1)
    assert list(b) == [-1, 0, 1, 2]
def test_circular_buffer_insert_empty():
    b = CircularBuffer(5)
    b.insert(0, 1)
    assert list(b) == [1]