def test_zoom_out_should_be_limited_to_20_percent(zoom_data, view):
    tool = zoom_tool(view)
    view.add_controller(tool)
    on_scale_changed(tool, 0.0, zoom_data)

    assert view.matrix[0] == 0.2
    assert view.matrix[3] == 0.2
def test_zoom_in_should_be_limited_to_20_times(zoom_data, view):
    tool = zoom_tool(view)
    view.add_controller(tool)

    on_scale_changed(tool, 100.0, zoom_data)

    assert view.matrix[0] == 20
    assert view.matrix[3] == 20
def test_scaling(zoom_data, view):
    tool = zoom_tool(view)
    view.add_controller(tool)

    on_scale_changed(tool, 1.2, zoom_data)

    assert view.matrix[0] == 1.2
    assert view.matrix[3] == 1.2
def test_zoom_should_center_around_mouse_cursor(zoom_data, view):
    tool = zoom_tool(view)
    view.add_controller(tool)
    zoom_data.x0 = 100
    zoom_data.y0 = 50

    on_scale_changed(tool, 1.2, zoom_data)

    assert view.matrix[4] == -20.0
    assert view.matrix[5] == -10.0
def test_scaling_with_unequal_scaling_factor(zoom_data, view):
    tool = zoom_tool(view)
    view.add_controller(tool)

    zoom_data.sx = 2

    on_scale_changed(tool, 1.2, zoom_data)

    assert view.matrix[0] == 2.4
    assert view.matrix[3] == 1.2
def test_can_create_zoom_tool(view):
    tool = zoom_tool(view)
    view.add_controller(tool)

    assert isinstance(tool, Gtk.Gesture)