示例#1
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
示例#2
0
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
示例#3
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
示例#4
0
    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
示例#5
0
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
示例#6
0
    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)
示例#7
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
示例#8
0
    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()