async def METHOD_NAME(widget, probe, on_change):
    widget.tick_count = 5
    widget.min = 0
    widget.max = 10
    widget.value = prev_value = 5
    for min, max, value in [
        (0, 9, 4.5),
        (0, 10, 5),
        (1, 10, 5.5),
        (1, 9, 5),
        (1, 10, 5.5),
    ]:
        on_change.reset_mock()
        widget.min = min
        widget.max = max
        assert widget.value == value
        await probe.redraw(
            message="Slider range with tick should be {}, {}, {}".format(
                min, max, value
            )
        )
        assert probe.position == approx((value - min) / (max - min), abs=ACCURACY)
        if value == prev_value:
            on_change.assert_not_called()
        else:
            on_change.assert_called_once_with(widget)
        prev_value = value