예제 #1
0
def test_shape_add_remove(shape_factory: CeedPaintCanvasBehavior, shape_cls):
    assert not shape_factory.shapes
    assert not shape_factory.shape_names
    shape = shape_cls(app=None, painter=shape_factory, show_in_gui=False)
    shape.make_shape()

    # add shape
    shape_factory.test_changes_count = 0
    assert shape_factory.add_shape(shape.shape)
    assert shape.shape in shape_factory.shapes
    assert shape.name in shape_factory.shape_names
    assert shape.shape is shape_factory.shape_names[shape.name]
    assert shape_factory.test_changes_count

    # remove shape
    shape_factory.test_changes_remove_shape_count = 0
    shape_factory.test_changes_count = 0
    assert shape_factory.remove_shape(shape.shape)
    assert shape.shape not in shape_factory.shapes
    assert shape.name not in shape_factory.shape_names
    assert shape_factory.test_changes_remove_shape_count
    assert shape_factory.test_changes_count

    # remove same shape again
    shape_factory.test_changes_remove_shape_count = 0
    shape_factory.test_changes_count = 0
    assert not shape_factory.remove_shape(shape.shape)
    assert not shape_factory.test_changes_remove_shape_count
    assert not shape_factory.test_changes_count
예제 #2
0
def test_add_remove_group(shape_factory: CeedPaintCanvasBehavior):
    assert not shape_factory.groups
    assert not shape_factory.shape_group_names

    # first group
    shape_factory.test_changes_count = 0
    group = shape_factory.add_group()

    assert isinstance(group, CeedShapeGroup)
    assert len(shape_factory.groups) == 1
    assert len(shape_factory.shape_group_names) == 1
    assert group in shape_factory.groups
    assert group.name in shape_factory.shape_group_names
    assert group is shape_factory.shape_group_names[group.name]
    assert shape_factory.test_changes_count

    # add second group
    shape_factory.test_changes_count = 0
    group2 = shape_factory.add_group()

    assert shape_factory.groups == [group, group2]
    assert shape_factory.shape_group_names == {
        group.name: group,
        group2.name: group2
    }
    assert shape_factory.test_changes_count

    # remove first group
    shape_factory.test_changes_count = 0
    shape_factory.test_changes_remove_group_count = 0
    assert shape_factory.remove_group(group)

    assert shape_factory.test_changes_count
    assert shape_factory.test_changes_remove_group_count
    assert shape_factory.groups == [group2]
    assert shape_factory.shape_group_names == {group2.name: group2}

    # add back first group
    shape_factory.test_changes_count = 0
    assert shape_factory.add_group(group) is group

    assert shape_factory.groups == [group2, group]
    assert shape_factory.shape_group_names == {
        group.name: group,
        group2.name: group2
    }
    assert shape_factory.test_changes_count

    # remove all groups
    shape_factory.test_changes_count = 0
    shape_factory.test_changes_remove_group_count = 0
    shape_factory.remove_all_groups()

    assert shape_factory.test_changes_count
    assert shape_factory.test_changes_remove_group_count
    assert not shape_factory.groups
    assert not shape_factory.shape_group_names
예제 #3
0
def test_group_name(shape_factory: CeedPaintCanvasBehavior):
    assert not shape_factory.groups
    assert not shape_factory.shape_group_names

    # first group
    shape_factory.test_changes_count = 0
    group = shape_factory.add_group()

    assert isinstance(group, CeedShapeGroup)
    assert len(shape_factory.groups) == 1
    assert len(shape_factory.shape_group_names) == 1
    assert group in shape_factory.groups
    assert group.name in shape_factory.shape_group_names
    assert group is shape_factory.shape_group_names[group.name]
    assert shape_factory.test_changes_count

    # add second group
    shape_factory.test_changes_count = 0
    group2 = shape_factory.add_group()

    assert len(shape_factory.groups) == 2
    assert len(shape_factory.shape_group_names) == 2
    assert group2 in shape_factory.groups
    assert shape_factory.test_changes_count

    assert group.name != group2.name
    assert group2.name in shape_factory.shape_group_names
    assert group2 is shape_factory.shape_group_names[group2.name]

    # try making a duplicate name
    shape_factory.test_changes_count = 0
    group2.name = group.name
    assert len(shape_factory.groups) == 2
    assert len(shape_factory.shape_group_names) == 2
    assert group2 in shape_factory.groups
    assert shape_factory.test_changes_count

    assert group.name != group2.name
    assert group2.name in shape_factory.shape_group_names
    assert group2 is shape_factory.shape_group_names[group2.name]

    # try setting name
    shape_factory.test_changes_count = 0
    group2.name = 'something random'
    assert len(shape_factory.groups) == 2
    assert len(shape_factory.shape_group_names) == 2
    assert group2 in shape_factory.groups
    assert shape_factory.test_changes_count

    assert group2.name == 'something random'
    assert group2.name in shape_factory.shape_group_names
    assert group2 is shape_factory.shape_group_names['something random']
예제 #4
0
def test_set_factory_state(shape_factory: CeedPaintCanvasBehavior):
    (group, group2, group3), (shape, shape2, shape3) = \
        assert_add_three_groups(shape_factory)

    name_map = {}
    shape_factory.test_changes_count = 0
    shape_factory.set_state(shape_factory.get_state(), name_map)
    assert shape_factory.test_changes_count

    assert shape_factory.shapes[:3] == [
        shape.shape, shape2.shape, shape3.shape
    ]
    assert len(shape_factory.shapes) == 6
    assert len(set(shape_factory.shapes)) == 6
    assert len(shape_factory.shape_names) == 6

    assert shape_factory.groups[:3] == [group, group2, group3]
    assert len(shape_factory.groups) == 6
    assert len(set(shape_factory.groups)) == 6
    assert len(shape_factory.shape_group_names) == 6

    shape4, shape5, shape6 = shape_factory.shapes[3:]
    group4, group5, group6 = shape_factory.groups[3:]

    assert group4.shapes == [shape4, shape5]
    assert group5.shapes == [shape5, shape6]
    assert group6.shapes == [shape4, shape5, shape6]

    assert_shapes_same(shape.shape, shape4)
    assert_shapes_same(shape2.shape, shape5)
    assert_shapes_same(shape3.shape, shape6)
예제 #5
0
def test_shape_name(shape_factory: CeedPaintCanvasBehavior):
    assert not shape_factory.shapes
    assert not shape_factory.shape_names
    shape = EllipseShapeP1(app=None, painter=shape_factory, show_in_gui=False)
    shape.make_shape()

    # add first shape
    shape_factory.test_changes_count = 0
    assert shape_factory.add_shape(shape.shape)
    assert len(shape_factory.shapes) == 1
    assert len(shape_factory.shape_names) == 1
    assert shape.shape in shape_factory.shapes
    assert shape.name in shape_factory.shape_names
    assert shape.shape is shape_factory.shape_names[shape.name]
    assert shape_factory.test_changes_count

    shape2 = EllipseShapeP1(app=None, painter=shape_factory, show_in_gui=False)
    shape2.make_shape()

    # add second shape
    shape_factory.test_changes_count = 0
    assert shape_factory.add_shape(shape2.shape)
    assert len(shape_factory.shapes) == 2
    assert len(shape_factory.shape_names) == 2
    assert shape2.shape in shape_factory.shapes
    assert shape_factory.test_changes_count

    assert shape2.name != shape2.shape.name
    assert shape.shape.name != shape2.shape.name
    assert shape2.shape.name in shape_factory.shape_names
    assert shape2.shape is shape_factory.shape_names[shape2.shape.name]

    # try making shape2 the same name as shape 1
    shape_factory.test_changes_count = 0
    shape2.shape.name = shape.shape.name
    assert len(shape_factory.shapes) == 2
    assert len(shape_factory.shape_names) == 2
    assert shape2.shape in shape_factory.shapes
    assert shape_factory.test_changes_count

    assert shape.shape.name != shape2.shape.name
    assert shape2.shape.name in shape_factory.shape_names
    assert shape2.shape is shape_factory.shape_names[shape2.shape.name]
예제 #6
0
def test_move_shape_upwards(shape_factory: CeedPaintCanvasBehavior):
    shape, shape2, shape3 = assert_add_three_shapes(shape_factory)

    shape_factory.test_changes_count = 0
    shape_factory.move_shape_upwards(shape.shape)
    assert shape_factory.test_changes_count

    assert shape_factory.shapes == [shape2.shape, shape.shape, shape3.shape]
    assert len(shape_factory.shapes) == 3
    assert len(shape_factory.shape_names) == 3
    for s in (shape, shape2, shape3):
        assert shape_factory.shape_names[s.name] is s.shape