def test_float_bounds(): p = FloatParameter('Test', minimum=0.1, maximum=0.5) p.value = 0.3 assert p.value == 0.3 with pytest.raises(ValueError): p.value = 10 # above maximum with pytest.raises(ValueError): p.value = -10 # below minimum
def test_float_value(): p = FloatParameter('Test') with pytest.raises(ValueError): v = p.value # not set with pytest.raises(ValueError): p.value = 'a' # not a float p.value = False # boolean assert p.value == 0.0 p.value = 100 assert p.value == 100.0
def test_float_bounds(): p = FloatParameter('Test', minimum=0.1, maximum=0.5) p.value = 0.3 assert p.value == 0.3 with pytest.raises(ValueError): p.value = 10 # above maximum with pytest.raises(ValueError): p.value = -10 # below minimum # TODO: Add tests for VectorParameter, ListParamter, and Measurable
def test_setValue_out_of_range_should_constrain(self, qtbot): float_param = FloatParameter('potato', minimum=-1000, maximum=1000, default=0) sci_input = ScientificInput(float_param) qtbot.addWidget(sci_input) # test sci_input.setValue(1024) assert sci_input.value() == 1000 sci_input.setValue(-1024) assert sci_input.value() == -1000
def test_float_value(): p = FloatParameter('Test', units='tests') with pytest.raises(ValueError): _ = p.value # not set with pytest.raises(ValueError): p.value = 'a' # not a float p.value = False # boolean assert p.value == 0.0 p.value = 100 assert p.value == 100.0 p.value = '1.06' assert p.value == 1.06 p.value = '11.3 tests' assert p.value == 11.3 assert p.units == 'tests' with pytest.raises(ValueError): p.value = '31.3 incorrect units' # not the correct units
def test_setValue_should_update_param(self, qtbot): float_param = FloatParameter('potato', minimum=-1000, maximum=1000, default=10.0) sci_input = ScientificInput(float_param) qtbot.addWidget(sci_input) with mock.patch('test_inputs.FloatParameter.value', new_callable=mock.PropertyMock, return_value=10.0) as p: # test sci_input.setValue(5.0) sci_input.parameter # lazy update p.assert_called_once_with(5.0)
def test_setValue_within_range_should_set_regression_118(self, qtbot): float_param = FloatParameter('potato', minimum=-1000, maximum=1000, default=0) sci_input = ScientificInput(float_param) qtbot.addWidget(sci_input) # test - validate min/max beyond QDoubleSpinBox defaults # QDoubleSpinBox defaults are 0 to 99.9 - so test value >= 100 sci_input.setValue(999) assert sci_input.value() == 999 sci_input.setValue(-999) assert sci_input.value() == -999
def test_init_from_param(self, qtbot, min_, max_, default_value, value_remains_default): float_param = FloatParameter('potato', minimum=min_, maximum=max_, default=default_value, units='m') if (value_remains_default): # Enable check that the value is initialized to default_value check_value = default_value else: # Set to a non default value float_param.value = min_ # Enable check that the value is changed after initialization to a non default value check_value = min_ sci_input = ScientificInput(float_param) qtbot.addWidget(sci_input) assert sci_input.minimum() == min_ assert sci_input.maximum() == max_ assert sci_input.value() == check_value assert sci_input.suffix() == ' m'
class XYmove(Procedure, StageAndSpec): num_avg = IntegerParameter('Averages', default=1) initial_x = FloatParameter('Final x', units='micrometers', default=0) final_x = FloatParameter('Final x', units='micrometers', default=10) initial_y = FloatParameter('Final x', units='micrometers', default=0) final_y = FloatParameter('Final x', units='micrometers', default=10) dx = FloatParameter('Paso dx', units='micrometers', default=1) dy = FloatParameter('Paso dy', units='micrometers', default=1) #step = IntegerParameter('Step', default=1) #wavelength = ListParameter('Wavelength [nm]',units='nm') #intensity = ListParameter('Intensity [a.u.]', units='a.u.') DATA_COLUMNS = ['Wavelength [nm]', 'Intensity [a.u.]'] def startup(self): log.info("CONNECTING to stage and spectrometer.") self.connect() def execute(self): x_array_scan = np.arange(self.initial_x, self.final_x, self.dx) y_array_scan = np.arange(self.initial_y, self.final_y, self.dy) x_positions, y_positions = self.generate_positions_list( self.dx, x_array_scan, self.dy, y_array_scan) for i, j in zip(x_positions, y_positions): self.stage.move_to_x_y(i, j) intensity, wavelength = self.ccs.take_data(integration_time=None, num_avg=self.num_avg, use_background=False) self.emit('results', { 'Wavelength [nm]': wavelength, 'Intensity [a.u.]': intensity }) log.info('Spectra measured in {}'.format( self.stage.get_x_y_position())) if i == x_positions[-1] and j == y_positions[-1]: log.info('FINISHED SCANNING.') time.sleep(0.01) if self.should_stop(): log.info("User aborted the procedure") break def shutdown(self): self.disconnect()