def METHOD_NAME(value) -> None:
    start_point = 0.0
    p = MemoryParameter(name='p',
                        set_parser=lambda x: -x,
                        get_parser=lambda x: -x,
                        initial_value=start_point)
    assert p() == start_point
    # first set a step size
    p.step = 0.1
    # and a wait time
    p.inter_delay = 1e-9 # in seconds
    first_step = 1.0
    second_step = 10.0
    # do a step to start from a non zero starting point where
    # scale matters
    p.set(first_step)
    assert p.get() == first_step
    assert p.raw_value == - first_step
    np.testing.assert_allclose(np.array([p.get()]),
                               np.array([first_step]))
    expected_raw_steps = np.linspace(-start_point, -first_step, 11)
    # getting the raw values that are actually send to the instrument.
    # these are parsed in the set_wrapper
    np.testing.assert_allclose(np.array(p.set_values), expected_raw_steps)
    assert p.raw_value == -first_step
    # then check the generated steps. They should not be parsed as the
    # scaling happens when setting them
    expected_steps = np.linspace((first_step+p.step),
                                 second_step,90)
    actual_steps = p.get_ramp_values(second_step, p.step)
    np.testing.assert_allclose(np.array(actual_steps), expected_steps)
    p.set(second_step)
    np.testing.assert_allclose(np.array(p.set_values),
                               np.linspace(-start_point, -second_step, 101))
    p.set(value)
    np.testing.assert_allclose(p.get(), value)
    assert p.raw_value == - value