[lang-ref] ( insert_item_by_position ) ( python )

def test_insert_item_by_position():
    # items.insert(i, v)

    items = ['A', 'B', 'D', 'E']
    expected = ['A', 'B', 'C', 'D', 'E']

    items.insert(2, 'C')

    assert items == expected
def test_insert_item_by_position_alternative1():
    # items[i:i] = [v]

    items = ['A', 'B', 'D', 'E']
    expected = ['A', 'B', 'C', 'D', 'E']

    items[2:2] = ['C']

    assert items == expected
def test_insert_item_by_position_alternative2():
    # items[i:i] = v  is wrong way

    items = [10, 20, 40, 50]
    expected = [10, 20, 30, 40, 50]

    with pytest.raises(TypeError):
        items[2:2] = 30

    items = ['A', 'B', 'D', 'E']
    expected = ['A', 'B', 'C', 'D', 'E']

    items[2:2] = 'XYZ'  # this doesn't throw, but result is not what we want

    assert items != expected
    assert items == ['A', 'B', 'X', 'Y', 'Z', 'D', 'E']