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)]
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]
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
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]
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))
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())
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]))
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"
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
示例#10
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
示例#11
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"
示例#12
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"
示例#13
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]
示例#14
0
def test_floor_div_number():
    left = RangedList(4, [0, 6, 12, 24], "many")
    right = RangedList(4, [1, 2, 3, 4], "many")
    ans = left // 6
    assert [0, 1, 2, 4] == ans
    ans = left // right
    assert [0, 3, 4, 6] == ans
    with pytest.raises(Exception):
        left // "foo"
    with pytest.raises(ZeroDivisionError):
        left // 0
示例#15
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()
示例#16
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")]
示例#17
0
def test_complex():
    a_list = RangedList(5, 20, "twenty")
    single = SingleList(a_list=a_list, operation=create_lambda())
    assert single == [
        0.95122942450071402, 0.95122942450071402, 0.95122942450071402,
        0.95122942450071402, 0.95122942450071402
    ]
示例#18
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")]
示例#19
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")]
示例#20
0
def test_two_many_values_slice():
    rl = RangedList(size=5, value=1, key="alpha")
    rl[2] = 2
    with pytest.raises(MultipleValuesException):
        rl.get_single_value_by_slice(1, 3)
    with pytest.raises(MultipleValuesException):
        rl.get_single_value_by_ids([1, 2])
示例#21
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))
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_complex():
    a_list = RangedList(5, [2, 1, 2, 3, 4], "many")
    single = SingleList(a_list=a_list, operation=create_lambda())
    assert single == [
        0.60653065971263342, 0.36787944117144233, 0.60653065971263342,
        0.716531310573789272, 0.77880078307140488
    ]
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))
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
示例#26
0
def test_iter_by_slice():
    a_list = RangedList(5, 12, "twelve")
    single = SingleList(a_list=a_list, operation=lambda x: x / 3)
    assert [4, 4, 4] == list(single.iter_by_slice(2, 5))
    a_list[:3] = 6
    assert [2, 4, 4] == list(single.iter_by_slice(2, 5))
    a_list[4:] = 24
    assert [2, 4, 8] == list(single.iter_by_slice(2, 5))
示例#27
0
def test_set_value_by_callable():
    rl = RangedList(size=10, value="a", key="alpha")
    rl.set_value(lambda x: x * 2)
    assert list(rl) == [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
    rl.set_value_by_slice(4, 6, lambda x: x * 3)
    assert list(rl) == [0, 2, 4, 6, 12, 15, 12, 14, 16, 18]
    rl.set_value_by_ids([1, 8, 2], lambda x: x * 4)
    assert list(rl) == [0, 4, 8, 6, 12, 15, 12, 14, 32, 18]
示例#28
0
def test_bad_callable():
    rl = RangedList(size=10, value="a", key="alpha")
    with pytest.raises(TypeError):
        rl.set_value(lambda: 2)
    with pytest.raises(TypeError):
        rl.set_value(lambda x, y: x * y)
    with pytest.raises(TypeError):
        rl.set_value(lambda x: len(x))
示例#29
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))
示例#30
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")]