def test_that_name_and_data_type_are_read_only(self):
        with self.assertRaises(AttributeError) as e:
            Parameter('a', str).name = 'b'
        self.assertEqual(str(e.exception), 'can\'t set attribute')

        with self.assertRaises(AttributeError) as e:
            Parameter('a', str).data_type = float
        self.assertEqual(str(e.exception), 'can\'t set attribute')
 def test_get_parameter(self):
     parameter = Parameter.get_parameter(Extension, 'threshold')
     self.assertIsNotNone(parameter)
     self.assertEqual('threshold', parameter.name)
     parameter = Parameter.get_parameter(Extension, 'range')
     self.assertIsNone(parameter)
     parameter = Parameter.get_parameter(Extension2, 'range')
     self.assertIsNotNone(parameter)
     self.assertEqual('range', parameter.name)
    def test_that_ctor_checks_validity(self):
        with self.assertRaises(ValueError) as e:
            Parameter(None)
        self.assertEqual(str(e.exception), 'name must not be None or empty')

        with self.assertRaises(ValueError) as e:
            Parameter('')
        self.assertEqual(str(e.exception), 'name must not be None or empty')

        with self.assertRaises(ValueError) as e:
            Parameter('a', None)
        self.assertEqual(str(e.exception), 'data_type must not be None')
 def test_get_parameters(self):
     parameters = Parameter.get_parameters(ParamFree)
     self.assertIsNotNone(parameters)
     self.assertEqual(set(), set(parameters))
     parameters = Parameter.get_parameters(Range)
     self.assertIsNotNone(parameters)
     self.assertEqual({'lower', 'upper'}, set(parameters))
     parameters = Parameter.get_parameters(Extension)
     self.assertIsNotNone(parameters)
     self.assertEqual({'threshold'}, set(parameters))
     parameters = Parameter.get_parameters(Extension2)
     self.assertIsNotNone(parameters)
     self.assertEqual({'threshold', 'method', 'range'}, set(parameters))
 def test_that_ctor_derives_data_type(self):
     self.assertEqual(Parameter('name', 42).data_type, int)
     self.assertEqual(Parameter('name', 0.5).data_type, float)
     self.assertEqual(Parameter('name', 'None').data_type, str)