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
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
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]
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]
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]
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"]
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"]
def test_insert_slice_inverted(): rl = RangedList(4, "a") rl[2:1] = "b" assert rl.get_ranges() == [(0, 4, "a")]
def test_insert_slice_stop_too_negative(): rl = RangedList(4, "a") rl[2:-5] = "b" assert rl.get_ranges() == [(0, 4, "a")]
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")]