def test_raises_on_modify_with_no_actual_changes(): cl = [ Modify(R(30, 30, 300, 300), R(30, 30, 300, 300)), ] with pytest.raises(ValueError) as err: _validate(cl, elems) assert "Modifying without actual changes" in err.value.message
def test_raises_on_invalid_changelist_elements(): with pytest.raises(ValueError) as err: _validate([Insert(R(9, 9, 9, 9)), None], elems) assert 'Invalid change' in err.value.message with pytest.raises(ValueError) as err: _validate([Insert(R(9, 9, 9, 9)), 2], elems) assert 'Invalid change' in err.value.message
def test_raises_on_duplicate_removals(): cl = [ Remove(R(10, 10, 100, 100)), Remove(R(10, 10, 100, 100)), ] with pytest.raises(ValueError) as err: _validate(cl, elems) assert 'Removing same element' in err.value.message
def test_raises_on_duplicate_insertions(): cl = [ Insert(R(55, 610, 555, 555)), Insert(R(55, 610, 555, 555)), ] with pytest.raises(ValueError) as err: _validate(cl, elems) assert 'Inserting same element' in err.value.message
def test_raises_on_zero_dimensions(): _validate([Insert(R(1, 1, 0, 1))], elems) # allowed one to be 0 _validate([Insert(R(1, 1, 1, 0))], elems) _validate([Modify(R(10, 10, 100, 100), R(10, 10, 0, 1))], elems) with pytest.raises(ValueError) as err: _validate([Insert(R(1, 1, 0, 0))], elems) assert 'dimensions' in err.value.message with pytest.raises(ValueError) as err: _validate([Modify(R(10, 10, 100, 100), R(10, 10, 0, 0))], elems) assert 'dimensions' in err.value.message
def test_allows_modified_link_with_targets_modified_in_same_changelist(): el = elems[1] link1 = elems[-2] link2 = elems[-1] assert isinstance(el, R) assert isinstance(link1, Link) assert isinstance(link2, Link) assert link1.b == el assert link2.a == el and link2.b == el new_el = R(10, 11, 12, 13) new_link1 = Link(link1.a, new_el) new_link2 = Link(new_el, new_el) cl = [ Modify(el, new_el), Modify(link1, new_link1), Modify(link2, new_link2), ] _validate(cl, elems)
def test_raises_on_changelist_without_updated_links(): # TODO # when modifying some element, and link exists which points to that same # element, changelist must contain modified link also # using same elements as in test above el = elems[1] link1 = elems[-2] link2 = elems[-1] new_el = R(10, 11, 12, 13) new_link1 = Link(link1.a, new_el) new_link2 = Link(new_el, new_el) with pytest.raises(ValueError) as err: _validate([ Modify(el, new_el), ], elems) assert "Incomplete" in err.value.message with pytest.raises(ValueError) as err: _validate([ Modify(el, new_el), Modify(link1, new_link1), ], elems) assert "Incomplete" in err.value.message with pytest.raises(ValueError) as err: _validate([ Modify(el, new_el), Modify(link2, new_link2), ], elems) assert "Incomplete" in err.value.message
def test_raises_when_removing_old_not_in_existing(): with pytest.raises(ValueError) as err: _validate([Remove(R(9, 9, 9, 9))], elems) assert "Removing element that's not in the model" in err.value.message
def test_raises_when_modifying_old_not_in_existing(): with pytest.raises(ValueError) as err: _validate([Modify(R(9, 9, 9, 9), R(1, 1, 10, 10))], elems) assert "Changing element that's not in the model" in err.value.message
def test_raises_when_inserting_same_as_existing_with_fixing(): with pytest.raises(ValueError) as err: _validate([Insert(R(30, 330, 300, -300))], elems) assert 'already present' in err.value.message
def test_raises_on_mixed_changes_in_same_changelist(changelist): with pytest.raises(ValueError) as err: _validate(changelist, elems) assert "not allowed" in err.value.message
def test_allows_removing_elements(): cl = [ Remove(elem=R(30, 30, 300, 300)), Remove(R(20, 20, 200, 200)), ] _validate(cl, elems)
def test_allows_modified_elements(): cl = [ Modify(R(30, 30, 300, 300), R(33, 33, 330, 330)), Modify(R(20, 20, 200, 200), R(23, 23, 230, 320)), ] _validate(cl, elems)
def test_raises_when_modifying_link_target_into_element_not_in_existing(new): old = Link(elems[0], elems[1]) with pytest.raises(ValueError) as err: _validate([Modify(old, new)], elems) assert "target" in err.value.message
def test_allows_new_elements(): cl = [ Insert(elem=R(44, 44, 444, 444)), Insert(R(55, 55, 555, 555)), ] _validate(cl, elems)
def test_raises_when_inserting_link_with_targets_not_in_existing(link): with pytest.raises(ValueError) as err: _validate([Insert(link)], elems) assert "target" in err.value.message