def test_blank_between_second_argument_None_blanks_to_end(): rl = RunLengthList([(0, "foo"), (2, "bar"), (4, "baz")]) rl.blank_between(1, None) assert rl.items() == [(0, "foo")]
def test_change_between_changes_to_end_if_second_argument_None(): rl = RunLengthList([(0, "foo"), (2, "bar"), (4, "baz")]) rl.change_between(1, None, "qux") assert rl.items() == [(0, "foo"), (1, "qux")]
def test_RunLengthList_copy_copies_non_empty(): r = RunLengthList([(0, "foo")]) assert r == r.copy() assert not r.items() is r.copy().items()
def test_add_change_works_on_top_of_existing_colour_definition(): rl = RunLengthList([(0, "foo"), (2, +20)]) rl.add_change(2, -20) # deliberately try and get it to the left assert rl.items() == [(0, "foo"), (2, -20)]
def test_RunLengthList_insertion_normalisation(): r1 = RunLengthList([(0, "foo"), (1, "bar")]) r2 = RunLengthList([(0, "foo"), (1, "bar")]) r1.insert_list_at(1, 2, r2) assert r1.items() == [(0, "foo"), (2, "bar")], r1.items()
def test_inserted_list_gets_chopped_if_not_enough_length(): r1 = RunLengthList([(0, "foo"), (1, "bar")]) r2 = RunLengthList([(0, "baz"), (2, "qux")]) r1.insert_list_at(1, 1, r2) assert r1.items() == [(0, "foo"), (1, "baz"), (2, "bar")]
def test_copy_returns_different_lists(): r = RunLengthList([(0, "foo")]) assert r.items() is not r.copy().items()
def test_RunLengthList_insertion(): r1 = RunLengthList([(0, "foo"), (2, "qux")]) r2 = RunLengthList([(0, "bar"), (2, "baz")]) r1.insert_list_at(1, 3, r2) assert r1.items() == [(0, "foo"), (1, "bar"), (3, "baz"), (4, "foo"), (5, "qux")], r1.items()
def test_RunLengthList_blank_between(): c = RunLengthList([(0, "FOO"), (2, "BAR"), (3, "BAZ"), (4, "QUX")]) c.blank_between(2, 3) assert c.items() == [(0, "FOO"), (3, "BAZ"), (4, "QUX")], c.items()
def test_RunLengthList_add_change_normalises_afterwards(): r = RunLengthList([(0, "foo")]) r.add_change(2, "foo") r.add_change(1, "bar") assert r.items() == [(0, "foo"), (1, "bar")]
def test_RunlengthList_index_adjust_negative_adjustment_normalises(): c = RunLengthList([(0, "f"), (2, "o"), (3, "b")]) c.index_adjust(1, -2) assert c.items() == [(0, "f"), (1, "b")]
def test_RunLengthList_index_adjust_index_collision(): c = RunLengthList([(0, 1), (3, 2)]) c.index_adjust(3, 2) assert c.items() == [(0, 1), (5, 2)], c.items()
def test_RunLengthList_index_adjust(): c = RunLengthList([(0, 1), (3, 2), (6, 3)]) c.index_adjust(2, 2) assert c.items() == [(0, 1), (5, 2), (8, 3)], c.items()
def test_RunLengthList_add_change_already_got_index(): c = RunLengthList([(0, "foo"), (3, "bar")]) c.add_change(3, "baz") assert c.items() == [(0, "foo"), (3, "baz")]
def test_RunLengthList_add_change(): c = RunLengthList([(0, 1), (3, 2)]) c.add_change(1, 3) assert c.items() == [(0, 1), (1, 3), (3, 2)]