コード例 #1
0
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")]
コード例 #2
0
def test_get_default():
    left = RangedList(4, 3, "three")
    assert 3 == left.get_default()
    right = RangedList(4, 2, "two")
    add = left + right
    result = add.get_default()
    assert 5 == result
コード例 #3
0
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)]
コード例 #4
0
def test_ranges_by_slice():
    rl = RangedList(size=10, value="a", key="alpha")
    assert [(3, 8, "a")] == list(rl.iter_ranges_by_slice(3, 8))
    rl[5] = "foo"
    rl[5] = "foo"
    assert [(3, 5, "a"), (5, 6, "foo"), (6, 8, "a")] == \
        list(rl.iter_ranges_by_slice(3, 8))
コード例 #5
0
def test_get_slice():
    numerator = RangedList(5, 12.0, "numerator")
    divisor = RangedList(5, 4, "divisor")
    div = numerator / divisor
    divisor[1:3] = 6
    numerator[2, 4] = 24
    assert div[2:4] == [4, 3]
コード例 #6
0
def test_get_ids():
    numerator = RangedList(5, 12.0, "numerator")
    divisor = RangedList(5, 4, "divisor")
    div = numerator / divisor
    divisor[1:3] = 6
    numerator[2, 4] = 24
    assert div[1:5:2] == [2, 3]
コード例 #7
0
def test_copy():
    rd = RangeDictionary(3)
    a_list1 = RangedList(3, [1, 2, 3])
    a_list2 = RangedList(3, 5)
    a_calc1 = a_list1 * 4
    a_calc2 = a_list2 * 4
    rd["list1"] = a_list1
    rd["list2"] = a_list2
    rd["calc1"] = a_calc1
    rd["calc2"] = a_calc2
    rd2 = rd.copy()
    a_list1_copy = rd2["list1"]
    assert a_list1_copy == [1, 2, 3]
    assert list(a_list1_copy.iter_ranges()) == \
           [(0, 1, 1), (1, 2, 2), (2, 3, 3)]
    a_list2_copy = rd2["list2"]
    assert list(a_list2_copy.iter_ranges()) == [(0, 3, 5)]
    assert a_list2_copy == [5, 5, 5]
    calc1_copy = rd2["calc1"]
    assert calc1_copy == [4, 8, 12]
    assert list(calc1_copy.iter_ranges()) == \
           [(0, 1, 4), (1, 2, 8), (2, 3, 12)]
    calc2_copy = rd2["calc2"]
    assert calc2_copy == [20, 20, 20]
    assert list(calc2_copy.iter_ranges()) == [(0, 3, 20)]
コード例 #8
0
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()
コード例 #9
0
def test_ranges_by_slice():
    rl = RangedList(10, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
    assert [(3, 4, 3), (4, 5, 4), (5, 6, 5), (6, 7, 6), (7, 8, 7)] == \
        list(rl.iter_ranges_by_slice(3, 8))
    rl[5] = "foo"
    assert [(3, 4, 3), (4, 5, 4), (5, 6, "foo"), (6, 7, 6), (7, 8, 7)] == \
        list(rl.iter_ranges_by_slice(3, 8))
コード例 #10
0
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
コード例 #11
0
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")]
コード例 #12
0
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")]
コード例 #13
0
def test_ranges_by_slice():
    numerator = RangedList(10, 12.0, "numerator")
    divisor = RangedList(10, 4, "divisor")
    div = numerator / divisor
    divisor[1:6] = 6
    numerator[4:8] = 24
    assert [(2, 4, 2.0), (4, 6, 4), (6, 7, 6)] == \
        list(div.iter_ranges_by_slice(2, 7))
コード例 #14
0
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")]
コード例 #15
0
def test_warn():
    rl = RangedList(value=range(5))
    assert [0, 1, 2] == rl.selector_to_ids([True, True, True, False],
                                           warn=True)
    assert [0, 1,
            2] == rl.selector_to_ids([True, True, True, False, False, False],
                                     warn=True)
    assert [0, 1, 2, 3, 4] == list(rl.selector_to_ids(None, warn=True))
コード例 #16
0
def test_ranges():
    numerator = RangedList(10, 12.0, "numerator")
    divisor = RangedList(10, 4, "divisor")
    div = numerator / divisor
    divisor[1:6] = 6
    numerator[4:8] = 24
    assert [(0, 1, 3.0), (1, 4, 2.0), (4, 6, 4), (6, 8, 6), (8, 10, 3.0)] == \
        list(div.iter_ranges())
コード例 #17
0
def test_complex():
    numerator = RangedList(5, 12.0, "numerator")
    divisor = RangedList(5, 4, "divisor")
    div = numerator / divisor
    assert list(div) == [3, 3, 3, 3, 3]
    divisor[1:3] = 6
    numerator[2, 4] = 24
    assert div == [3, 2, 4, 3, 6]
コード例 #18
0
def test_numpy_array():
    left = RangedList(2,
                      numpy.array([2, 4, 6]),
                      "many",
                      use_list_as_value=True)
    right = RangedList(2, 2, "many")
    ans = left / right
    assert all(ans.get_single_value_all() == numpy.array([1, 2, 3]))
コード例 #19
0
def test_sub_number():
    left = RangedList(10, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], "many")
    right = RangedList(10, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], "many")
    sub = left - 4
    assert [-2, -1, 0, 1] == list(sub.iter_by_slice(2, 6))
    sub = left - right
    assert [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] == sub
    with pytest.raises(Exception):
        left - "foo"
コード例 #20
0
def test_add_number():
    left = RangedList(10, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], "many")
    right = RangedList(10, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], "many")
    add = left + 4
    assert [6, 7, 8, 9] == list(add.iter_by_slice(2, 6))
    add = left + right
    assert [0, 2, 4, 6, 8, 10, 12, 14, 16, 18] == add
    with pytest.raises(Exception):
        left + "foo"
コード例 #21
0
def test_get_value():
    numerator = RangedList(5, 12.0, "numerator")
    divisor = RangedList(5, 4, "divisor")
    div = numerator / divisor
    assert div.get_single_value_by_slice(1, 3) == 3
    assert div.get_single_value_by_ids([1, 3]) == 3
    divisor[1:3] = 6
    numerator[2, 4] = 24
    assert div[2] == 4
コード例 #22
0
def test_muliple():
    numerator = RangedList(5, 12.0, "numerator")
    divisor = RangedList(5, 4, "divisor")
    div = numerator / divisor
    assert div == [3, 3, 3, 3, 3]
    divisor[1] = 6
    divisor[2] = 3
    divisor[3] = 8
    assert div == [3, 2, 4, 1.5, 3]
コード例 #23
0
def test_mult_number():
    left = RangedList(10, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], "many")
    right = RangedList(10, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], "many")
    mult = left * 4
    assert [8, 12, 16, 20] == list(mult.iter_by_slice(2, 6))
    mult = left * right
    assert [0, 1, 4, 9, 16, 25, 36, 49, 64, 81] == mult
    with pytest.raises(Exception):
        left * "foo"
コード例 #24
0
def test_both_equals():
    left = RangedList(4, 3, "three")
    right = RangedList(4, 2, "two")
    add = left + right
    simple = RangedList(4, 5, "five")
    assert add == simple
    left[1] = 7
    simple[1] = 9
    assert add == simple
コード例 #25
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"
コード例 #26
0
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)]
コード例 #27
0
def test_ranges_by_ids():
    rl = RangedList(size=10, value="a", key="alpha")
    assert [(1, 4, "a"), (7, 8, "a"), (4, 5, "a")] == \
        list(rl.iter_ranges_by_ids((1, 2, 3, 7, 4)))
    rl[6] = "foo"
    assert [(1, 4, "a"), (7, 8, "a"), (4, 5, "foo")] == \
        list(rl.iter_ranges_by_ids((1, 2, 3, 7, 4)))
    rl[3] = "foo"
    assert [(1, 3, "a"), (3, 4, "foo"), (7, 8, "a"), (4, 5, "a")] == \
        list(rl.iter_ranges_by_ids((1, 2, 3, 7, 4)))
コード例 #28
0
def test_ranges_by_ids():
    rl = RangedList(10, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
    assert [(1, 2, 1), (2, 3, 2), (3, 4, 3), (7, 8, 7), (4, 5, 4)] == \
        list(rl.iter_ranges_by_ids((1, 2, 3, 7, 4)))
    rl[6] = "foo"
    assert [(1, 2, 1), (2, 3, 2), (3, 4, 3), (7, 8, 7), (4, 5, 4)] == \
        list(rl.iter_ranges_by_ids((1, 2, 3, 7, 4)))
    rl[3] = "foo"
    assert [(1, 2, 1), (2, 3, 2), (3, 4, "foo"), (7, 8, 7), (4, 5, 4)] == \
        list(rl.iter_ranges_by_ids((1, 2, 3, 7, 4)))
コード例 #29
0
def test_set_value_by_slice():
    rl = RangedList(size=10, value="a", key="alpha")
    rl.set_value_by_slice(2, 7, "b")
    assert rl == ["a", "a", "b", "b", "b", "b", "b", "a", "a", "a"]
    rl.set_value_by_slice(3, 7, "c")
    assert rl == ["a", "a", "b", "c", "c", "c", "c", "a", "a", "a"]
    rl.set_value_by_slice(5, 8, "d")
    assert rl == ["a", "a", "b", "c", "c", "d", "d", "d", "a", "a"]
    rl.set_value_by_slice(4, 6, "c")
    assert rl == ["a", "a", "b", "c", "c", "c", "d", "d", "a", "a"]
コード例 #30
0
def test_get_values_bad_lists():
    rl = RangedList(value=range(10))
    with pytest.raises(TypeError):
        rl.get_values([2, -1, 4])
    with pytest.raises(TypeError):
        rl.get_values([2, 12, 4])
    with pytest.raises(TypeError):
        rl.get_values([2, True])
    with pytest.raises(TypeError):
        rl.get_values([2, "True"])