async def METHOD_NAME(widget, probe, on_change):
    for scale in SCALES:
        widget.min = 0
        widget.max = scale
        for position in POSITIONS:
            on_change.reset_mock()
            assert_set_value(widget, position * scale)
            await probe.redraw(f"Slider scale should be {scale}")
            assert probe.position == approx(position, abs=ACCURACY)
            on_change.assert_called_once_with(widget)
    on_change.reset_mock()
    widget.on_change = None
    widget.value = 42
    await probe.redraw("Slider scale should be reset")
    on_change.assert_not_called()