def test_insert_slice_to_previous():
    rl = RangedList(10, "a")
    rl[3:7] = "b"
    assert rl.get_ranges() == [(0, 3, "a"), (3, 7, "b"), (7, 10, "a")]
    rl[2:5] = "a"
    assert list(rl) == ["a", "a", "a", "a", "a", "b", "b", "a", "a", "a"]
    assert rl.get_ranges() == [(0, 5, "a"), (5, 7, "b"), (7, 10, "a")]
def test_range_merge():
    rl = RangedList(size=5, value=1, key="alpha")
    assert [(0, 5, 1)] == rl.get_ranges()
    rl[2:4] = 2
    assert [(0, 2, 1), (2, 4, 2), (4, 5, 1)] == rl.get_ranges()
    rl[2:4] = 1
    assert [(0, 5, 1)] == rl.get_ranges()
def test_insert_end():
    rl = RangedList(10, "a")
    rl[1] = "b"
    assert rl.get_ranges() == [(0, 1, "a"), (1, 2, "b"), (2, 10, "a")]
    rl[4:6] = "c"
    assert rl.get_ranges() == [(0, 1, "a"), (1, 2, "b"), (2, 4, "a"),
                               (4, 6, "c"), (6, 10, "a")]
def test_insert_slice_start_over_lap_both():
    rl = RangedList(10, "a")
    rl[3:7] = "b"
    assert rl.get_ranges() == [(0, 3, "a"), (3, 7, "b"), (7, 10, "a")]
    rl[1:8] = "c"
    assert list(rl) == ["a", "c", "c", "c", "c", "c", "c", "c", "a", "a"]
    assert rl.get_ranges() == [(0, 1, "a"), (1, 8, "c"), (8, 10, "a")]
def test_insert_slice_up_to():
    rl = RangedList(10, "a")
    rl[3:7] = "b"
    assert rl.get_ranges() == [(0, 3, "a"), (3, 7, "b"), (7, 10, "a")]
    rl[1:3] = "c"
    assert list(rl) == ["a", "c", "c", "b", "b", "b", "b", "a", "a", "a"]
    assert rl.get_ranges() == [(0, 1, "a"), (1, 3, "c"), (3, 7, "b"),
                               (7, 10, "a")]
def test_insert_slice_up_to():
    rl = RangedList(10, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
    rl[3:7] = "b"
    assert rl.get_ranges() == [(0, 1, 0), (1, 2, 1), (2, 3, 2), (3, 7, "b"),
                               (7, 8, 7), (8, 9, 8), (9, 10, 9)]

    rl[1:3] = "c"
    assert rl == [0, "c", "c", "b", "b", "b", "b", 7, 8, 9]
    assert rl.get_ranges() == [(0, 1, 0), (1, 3, "c"), (3, 7, "b"), (7, 8, 7),
                               (8, 9, 8), (9, 10, 9)]
def test_insert_id():
    rl = RangedList(10, "a")
    rl[4] = "b"
    assert "b" == rl[4]
    assert "a" == rl[3]
    ranges = rl.get_ranges()
    assert list(rl) == ["a", "a", "a", "a", "b", "a", "a", "a", "a", "a"]
    assert ranges == [(0, 4, "a"), (4, 5, "b"), (5, 10, "a")]
    rl[5] = "b"
    assert list(rl) == ["a", "a", "a", "a", "b", "b", "a", "a", "a", "a"]
    ranges = rl.get_ranges()
    assert ranges == [(0, 4, "a"), (4, 6, "b"), (6, 10, "a")]
def test_simple():
    rl = RangedList(5, [0, 1, 2, 3, 4])
    ranges = rl.get_ranges()
    assert rl == [0, 1, 2, 3, 4]
    assert len(ranges) == 5
    assert ranges == [(0, 1, 0), (1, 2, 1), (2, 3, 2), (3, 4, 3), (4, 5, 4)]
    assert rl[3] == 3
def test_insert_slice_start_over_lap_to():
    rl = RangedList(10, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
    rl[3:7] = "b"
    rl[1:5] = "c"
    assert rl == [0, "c", "c", "c", "c", "b", "b", 7, 8, 9]
    assert rl.get_ranges() == [(0, 1, 0), (1, 5, "c"), (5, 7, "b"), (7, 8, 7),
                               (8, 9, 8), (9, 10, 9)]
def test_insert_list():
    rl = RangedList(10, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
    rl[4, 8, 2] = "b"
    assert rl == [0, 1, "b", 3, "b", 5, 6, 7, "b", 9]
    assert rl.get_ranges() == [(0, 1, 0), (1, 2, 1), (2, 3, "b"), (3, 4, 3),
                               (4, 5, "b"), (5, 6, 5), (6, 7, 6), (7, 8, 7),
                               (8, 9, "b"), (9, 10, 9)]
    rl[3] = "b"
    assert rl == [0, 1, "b", "b", "b", 5, 6, 7, "b", 9]
    assert rl.get_ranges() == [(0, 1, 0), (1, 2, 1), (2, 5, "b"), (5, 6, 5),
                               (6, 7, 6), (7, 8, 7), (8, 9, "b"), (9, 10, 9)]
    rl[3] = "x"
    assert rl == [0, 1, "b", "x", "b", 5, 6, 7, "b", 9]
    assert rl.get_ranges() == [(0, 1, 0), (1, 2, 1), (2, 3, "b"), (3, 4, "x"),
                               (4, 5, "b"), (5, 6, 5), (6, 7, 6), (7, 8, 7),
                               (8, 9, "b"), (9, 10, 9)]
    assert rl.count("b") == 3
示例#11
0
def test_insert_list():
    rl = RangedList(10, "a")
    rl[4, 8, 2] = "b"
    assert rl == ["a", "a", "b", "a", "b", "a", "a", "a", "b", "a"]
    assert rl.get_ranges() == [(0, 2, "a"), (2, 3, "b"), (3, 4, "a"),
                               (4, 5, "b"), (5, 8, "a"), (8, 9, "b"),
                               (9, 10, "a")]
    rl[3] = "b"
    assert rl == ["a", "a", "b", "b", "b", "a", "a", "a", "b", "a"]
    assert rl.get_ranges() == [(0, 2, "a"), (2, 5, "b"), (5, 8, "a"),
                               (8, 9, "b"), (9, 10, "a")]
    rl[3] = "x"
    assert rl == ["a", "a", "b", "x", "b", "a", "a", "a", "b", "a"]
    assert rl.get_ranges() == [(0, 2, "a"), (2, 3, "b"), (3, 4, "x"),
                               (4, 5, "b"), (5, 8, "a"), (8, 9, "b"),
                               (9, 10, "a")]
    assert rl.count("b") == 3
示例#12
0
def test_simple():
    rl = RangedList(10, "a")
    ranges = rl.get_ranges()
    assert list(rl) == ["a", "a", "a", "a", "a", "a", "a", "a", "a", "a"]
    assert len(ranges) == 1
    assert ranges[0][0] == 0
    assert ranges[0][1] == 10
    assert ranges[0][2] == "a"
    assert rl[3] == "a"
def test_insert_slice_part_range():
    rl = RangedList(5, [0, 1, 2, 3, 4])
    assert 8 not in rl
    rl[1:3] = 8
    assert 8 in rl
    ranges = rl.get_ranges()
    assert rl == [0, 8, 8, 3, 4]
    assert ranges == [(0, 1, 0), (1, 3, 8), (3, 4, 3), (4, 5, 4)]
    assert 8 in rl
    assert 9 not in rl
    assert [8, 3] == rl[2:4]
示例#14
0
def test_insert_slice_part_range():
    rl = RangedList(10, "a")
    assert "b" not in rl
    rl[4:6] = "b"
    assert "b" in rl
    ranges = rl.get_ranges()
    assert list(rl) == ["a", "a", "a", "a", "b", "b", "a", "a", "a", "a"]
    assert ranges == [(0, 4, "a"), (4, 6, "b"), (6, 10, "a")]
    assert "a" in rl
    assert "c" not in rl
    assert ["a", "b"] == rl[3:5]
def test_insert_complex_slice():
    rl = RangedList(10, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
    assert rl[4:8:2] == [4, 6]
    assert "b" not in rl
    rl[4:8:2] = "b"
    assert "b" in rl
    assert rl == [0, 1, 2, 3, "b", 5, "b", 7, 8, 9]
    ranges = rl.get_ranges()
    assert ranges == [(0, 1, 0), (1, 2, 1), (2, 3, 2), (3, 4, 3), (4, 5, "b"),
                      (5, 6, 5), (6, 7, "b"), (7, 8, 7), (8, 9, 8), (9, 10, 9)]
    assert 2 in rl
    assert "c" not in rl
    assert [3, "b"] == rl[3:7:3]
示例#16
0
def test_insert_complex_slice():
    rl = RangedList(10, "a")
    assert rl[4:8:2] == ["a", "a"]
    assert "b" not in rl
    rl[4:8:2] = "b"
    assert "b" in rl
    assert list(rl) == ["a", "a", "a", "a", "b", "a", "b", "a", "a", "a"]
    ranges = rl.get_ranges()
    assert ranges == [(0, 4, "a"), (4, 5, "b"), (5, 6, "a"), (6, 7, "b"),
                      (7, 10, "a")]
    assert "a" in rl
    assert "c" not in rl
    assert ["a", "b"] == rl[3:7:3]
示例#17
0
def test_insert_slice_to_big():
    rl = RangedList(2, "a")
    rl[1:3] = "b"
    assert rl.get_ranges() == [(0, 1, "a"), (1, 2, "b")]
    assert list(rl) == ["a", "b"]
示例#18
0
def test_insert_slice_to_far():
    rl = RangedList(2, "a")
    rl[3:6] = "b"
    assert rl.get_ranges() == [(0, 2, "a")]
    assert list(rl) == ["a", "a"]
示例#19
0
def test_insert_slice_inverted():
    rl = RangedList(4, "a")
    rl[2:1] = "b"
    assert rl.get_ranges() == [(0, 4, "a")]
示例#20
0
def test_insert_slice_stop_too_negative():
    rl = RangedList(4, "a")
    rl[2:-5] = "b"
    assert rl.get_ranges() == [(0, 4, "a")]
示例#21
0
def test_insert_slice_start_too_negative():
    rl = RangedList(4, "a")
    rl[-6:3] = "b"
    assert rl.get_ranges() == [(0, 3, "b"), (3, 4, "a")]