Пример #1
0
def test_changing_modes():
    """Test changing modes."""
    np.random.seed(0)
    data = 20 * np.random.random((10, 4, 2))
    layer = Shapes(data)
    assert layer.mode == 'pan_zoom'
    assert layer.interactive == True

    layer.mode = 'select'
    assert layer.mode == 'select'
    assert layer.interactive == False

    layer.mode = 'direct'
    assert layer.mode == 'direct'
    assert layer.interactive == False

    layer.mode = 'vertex_insert'
    assert layer.mode == 'vertex_insert'
    assert layer.interactive == False

    layer.mode = 'vertex_remove'
    assert layer.mode == 'vertex_remove'
    assert layer.interactive == False

    layer.mode = 'add_rectangle'
    assert layer.mode == 'add_rectangle'
    assert layer.interactive == False

    layer.mode = 'add_ellipse'
    assert layer.mode == 'add_ellipse'
    assert layer.interactive == False

    layer.mode = 'add_line'
    assert layer.mode == 'add_line'
    assert layer.interactive == False

    layer.mode = 'add_path'
    assert layer.mode == 'add_path'
    assert layer.interactive == False

    layer.mode = 'add_polygon'
    assert layer.mode == 'add_polygon'
    assert layer.interactive == False

    layer.mode = 'pan_zoom'
    assert layer.mode == 'pan_zoom'
    assert layer.interactive == True
Пример #2
0
def test_delete():
    # Test on three four corner rectangle
    layer = Shapes(20 * np.random.random((3, 4, 2)))
    layer.mode = 'direct'

    assert len(layer.data) == 3
    layer.selected_data = {0, 1}

    key_bindings.delete_selected(layer)
    assert len(layer.data) == 1
Пример #3
0
def test_select_all():
    # Test on three four corner rectangle
    layer = Shapes(20 * np.random.random((3, 4, 2)))
    layer.mode = 'direct'

    assert len(layer.data) == 3
    assert len(layer.selected_data) == 0

    key_bindings.select_all(layer)
    assert len(layer.selected_data) == 3
Пример #4
0
def test_copy_paste():
    # Test on three four corner rectangle
    layer = Shapes(20 * np.random.random((3, 4, 2)))
    layer.mode = 'direct'

    assert len(layer.data) == 3
    assert layer._clipboard == {}
    layer.selected_data = {0, 1}

    key_bindings.copy(layer)
    assert len(layer.data) == 3
    assert len(layer._clipboard) == 5

    key_bindings.paste(layer)
    assert len(layer.data) == 5
    assert len(layer._clipboard) == 5
Пример #5
0
def test_properties(properties):
    shape = (10, 4, 2)
    np.random.seed(0)
    data = 20 * np.random.random(shape)
    layer = Shapes(data, properties=copy(properties))
    np.testing.assert_equal(layer.properties, properties)

    current_prop = {'shape_type': np.array(['B'])}
    assert layer.current_properties == current_prop

    # test removing shapes
    layer.selected_data = {0, 1}
    layer.remove_selected()
    remove_properties = properties['shape_type'][2::]
    assert len(layer.properties['shape_type']) == (shape[0] - 2)
    assert np.all(layer.properties['shape_type'] == remove_properties)

    # test selection of properties
    layer.selected_data = {0}
    selected_annotation = layer.current_properties['shape_type']
    assert len(selected_annotation) == 1
    assert selected_annotation[0] == 'A'

    # test adding shapes with properties
    new_data = np.random.random((1, 4, 2))
    new_shape_type = ['rectangle']
    layer.add(new_data, shape_type=new_shape_type)
    add_properties = np.concatenate((remove_properties, ['A']), axis=0)
    assert np.all(layer.properties['shape_type'] == add_properties)

    # test copy/paste
    layer.selected_data = {0, 1}
    layer._copy_data()
    assert np.all(layer._clipboard['properties']['shape_type'] == ['A', 'B'])

    layer._paste_data()
    paste_properties = np.concatenate((add_properties, ['A', 'B']), axis=0)
    assert np.all(layer.properties['shape_type'] == paste_properties)

    # test updating a property
    layer.mode = 'select'
    layer.selected_data = {0}
    new_property = {'shape_type': np.array(['B'])}
    layer.current_properties = new_property
    updated_properties = layer.properties
    assert updated_properties['shape_type'][0] == 'B'
Пример #6
0
def test_value():
    """Test getting the value of the data at the current coordinates."""
    shape = (10, 4, 2)
    np.random.seed(0)
    data = 20 * np.random.random(shape)
    data[-1, :] = [[0, 0], [0, 10], [10, 0], [10, 10]]
    layer = Shapes(data)
    value = layer.get_value((0, 0))
    assert value == (9, None)

    layer.mode = 'select'
    layer.selected_data = [9]
    value = layer.get_value((0, 0))
    assert value == (9, 7)

    layer = Shapes(data + 5)
    value = layer.get_value((0, 0))
    assert value == (None, None)
Пример #7
0
def test_hold_to_pan_zoom():
    # Test a single four corner rectangle
    layer = Shapes(20 * np.random.random((1, 4, 2)))
    layer.mode = 'direct'
    # need to go through the generator
    _ = list(key_bindings.hold_to_pan_zoom(layer))