예제 #1
0
    def test_validate_pdesc_failed(self):
        # test setting of parameter where the automatic conversion fails
        # set

        test_param = 'focus_distance_m'
        test_val = 'foo'
        expecting_type = float

        param = Parameter(test_param, test_val, expecting_type)

        # we know the parameter, this should not raise anything
        ParametersStore.get(test_param)

        # same as this one
        self.assertRaises(ValueError, ParametersStore.set,
                          param.name, param.value)
        self.assertRaises(ValueError, ParametersStore.validate,
                          param.name, param.value)
        self.assertRaises(ValueError, ParametersStore.validate_desc,
                          param)

        # change value to correct one
        param.value = 10
        try:
            ParametersStore.validate_desc(param)
        except Exception as err:
            self.fail("Exception raised")
예제 #2
0
    def test_set_validate_failed(self):
        # test setting of parameter where the automatic conversion fails
        # set

        test_param = 'focus_distance_m'
        test_val = 'foo'
        expecting_type = float

        # this will raise ValueError obviously
        self.assertRaises(ValueError, expecting_type, test_val)

        focus_before = ParametersStore.get(test_param)

        # same as this one
        self.assertRaises(ValueError, ParametersStore.set,
                          test_param, test_val)
        self.assertRaises(ValueError, ParametersStore.validate,
                          test_param, test_val)
        self.assertRaises(KeyError, ParametersStore.validate,
                          test_param + '=foo', test_val)
        self.assertRaises(KeyError, ParametersStore.set,
                          test_param + '=foo', test_val)

        # try to fetch the parameter again to compare that its value
        # is unchaged
        focus_after = ParametersStore.get(test_param)

        self.assertIs(focus_before, focus_after)
예제 #3
0
 def _set_servo_params_status(cls, pstatus):
     """Update status of parameters that are applied to servo"""
     for pname in SERVO_PARAMETERS:
         pdesc = ParametersStore.get(pname)
         pdesc_status = pdesc.status
         pdesc_status.set_status(pstatus)
         ParametersStore.set_status(pname, pdesc_status)
    def test_apply(self):

        to_apply = [
            Parameter('foo-writable', 'test', str),
            Parameter('foo-readonly', 'test2', str)
        ]

        applied = self.ctrl.apply_parameters(to_apply)
        # only one parameter was applied
        self.assertEqual(len(applied), 1)
        app_param = applied[0]
        self.assertEqual(app_param.name, 'foo-writable')
        self.assertEqual(app_param.value, 'test')

        # writable parameter was set
        self.assertEqual(ParametersStore.get('foo-writable').value, 'test')
        # readonly remains unchanged
        self.assertEqual(ParametersStore.get('foo-readonly').value, 'baz')
예제 #5
0
    def test_set(self):
        # test that a parameter can be set
        test_param = 'focus_distance_m'
        test_val = 10.0

        self.assertTrue(ParametersStore.set(test_param, test_val))
        focus_set = ParametersStore.get(test_param)

        self.assertEqual(focus_set.value, test_val)
예제 #6
0
    def test_get_value(self):

        for param_in in self.PARAMETERS:
            pdesc = ParametersStore.get(param_in.name)
            self.assertEqual(param_in.name, pdesc.name)
            self.assertEqual(param_in.value, pdesc.value)
            self.assertEqual(param_in.value_type, pdesc.value_type)

            pvalue = ParametersStore.get_value(param_in.name)
            self.assertEqual(pvalue, param_in.value)
            self.assertEqual(type(pvalue), param_in.value_type)
예제 #7
0
    def test_set_convert(self):
        # test that parameter can be set, and the value is
        # automatically converted to proper type
        test_param = 'focus_distance_m'
        test_val = 10
        expecting_type = float

        # test value is an int
        self.assertIsInstance(test_val, int)

        # first read it
        param = ParametersStore.get(test_param)
        self.assertEqual(param.value_type, expecting_type)
        self.assertIsInstance(param.value, expecting_type)

        # set
        ParametersStore.set(test_param, test_val)
        as_set = ParametersStore.get(test_param)
        # the type should have been converted according to parameter
        # description
        self.assertIsInstance(as_set.value, expecting_type)
        self.assertEqual(as_set.value, expecting_type(test_val))
예제 #8
0
    def test_get_existing(self):
        from ros3ddevcontroller.param.sysparams import SYSTEM_PARAMETERS

        for param in SYSTEM_PARAMETERS:
            name = param.name
            value = param.value

            try:
                from_store = ParametersStore.get(param.name)
            except KeyError:
                self.fail('Expecting key in the set')

            self.assertEqual(name, from_store.name)
            self.assertEqual(value, from_store.value)
            self.assertEqual(param.value_type, from_store.value_type)
예제 #9
0
    def test_set_value(self):

        self.assertNotEqual(ParametersStore.DEPENDENCIES, {})
        pdesc_bar = ParametersStore.get('bar')

        ParametersStore.set('foo', 3)
        bar_val = ParametersStore.get_value('bar')
        # bar = foo + 1
        self.assertEqual(bar_val, 4)
        baz_val = ParametersStore.get_value('baz')
        # baz = foo * bar + 1
        self.assertEqual(baz_val, 13)
        # cafe = baz ** 2 + bar
        cafe_val = ParametersStore.get_value('cafe')
        self.assertEqual(cafe_val, 173)
예제 #10
0
    def apply_parameters(self, params):
        """Apply a parameter set

        :param params list of ParamDesc: list of parameters to apply
        :rtype: list(Parameter)
        :return: list of parameters applied"""
        # record changed parameter descriptors
        changed_params = []

        # apply parameters serially, note that if any parameter takes
        # longer to aplly this will contribute to wait time of the
        # whole request
        for param in params:
            applied = self.apply_single_parameter(param)

            # param validation was successful and was applied to servo
            if applied:
                par = ParametersStore.get(param.name)
                changed_params.append(par)

        return changed_params
예제 #11
0
    def apply_parameters(self, params):
        """Apply a parameter set

        :param params list of ParamDesc: list of parameters to apply
        :rtype: list(Parameter)
        :return: list of parameters applied"""
        # record changed parameter descriptors
        changed_params = []

        # apply parameters serially, note that if any parameter takes
        # longer to aplly this will contribute to wait time of the
        # whole request
        for param in params:
            applied = self.apply_single_parameter(param)

            # param validation was successful and was applied to servo
            if applied:
                par = ParametersStore.get(param.name)
                changed_params.append(par)

        return changed_params
예제 #12
0
 def _set_camera_status(self, pstatus):
     for pname in CAMERA_PARAMETERS:
         pdesc = ParametersStore.get(pname)
         pdesc_status = pdesc.status
         pdesc_status.set_status(pstatus)
         ParametersStore.set_status(pname, pdesc_status)