def test_setting_non_gettable_parameter_with_finite_step(caplog):
    initial_value = 0
    step_size = 0.1
    set_value = 1.0

    # when the parameter is initially set from
    # the initial_value the starting point is unknown
    # so this should cause a warning but the parameter should still be set
    with caplog.at_level(logging.WARNING):
        x = Parameter('x',
                      initial_value=initial_value,
                      step=step_size,
                      set_cmd=None)
        assert len(caplog.records) == 1
        assert f"cannot sweep x from None to {initial_value}" in str(
            caplog.records[0])
    assert x.cache.get() == 0

    # afterwards the stepping should work as expected.
    with caplog.at_level(logging.WARNING):
        caplog.clear()
        assert_array_almost_equal(
            np.array(x.get_ramp_values(set_value, step_size)), (np.arange(
                initial_value + step_size, set_value + step_size, step_size)))
        x.set(set_value)
        assert x.cache.get() == set_value
        assert len(caplog.records) == 0
Exemplo n.º 2
0
 def test_ramp_scaled(self, scale, value):
     p = Parameter('p',
                   set_cmd=self.set_p,
                   get_cmd=self.get_p,
                   scale=scale,
                   initial_value=0)
     assert p() == 0.0
     # first set a step size
     p.step = 0.1
     # and a wait time
     p.inter_delay = 1e-9  # in seconds
     expected_output = np.linspace(0.1, 10, 100)
     np.testing.assert_allclose(p.get_ramp_values(10, p.step),
                                expected_output)
     p.set(value)
     np.testing.assert_allclose(p.get(), value)
     assert p.raw_value == value * scale