def __test_valid_values(self, **kwargs): expected_values = {'min': float('-inf'), 'max': float('+inf'), 'default': None} for k in kwargs: expected_values[k] = kwargs[k] expected_values['absolute_min'] = expected_values['min'] expected_values['absolute_max'] = expected_values['max'] if isinstance(expected_values['absolute_min'], ParameterDeclaration): expected_values['absolute_min'] = expected_values['absolute_min'].absolute_min_value if isinstance(expected_values['absolute_max'], ParameterDeclaration): expected_values['absolute_max'] = expected_values['absolute_max'].absolute_max_value decl = ParameterDeclaration('test', **kwargs) self.assertEqual('test', decl.name) self.assertEqual(expected_values['min'], decl.min_value) self.assertEqual(expected_values['max'], decl.max_value) self.assertEqual(expected_values['default'], decl.default_value) self.assertEqual(expected_values['absolute_min'], decl.absolute_min_value) self.assertEqual(expected_values['absolute_max'], decl.absolute_max_value) decl = ParameterDeclaration('test', default=expected_values['default']) if 'min' in kwargs: decl.min_value = kwargs['min'] if 'max' in kwargs: decl.max_value = kwargs['max'] self.assertEqual(expected_values['min'], decl.min_value) self.assertEqual(expected_values['max'], decl.max_value) self.assertEqual(expected_values['default'], decl.default_value) self.assertEqual(expected_values['absolute_min'], decl.absolute_min_value) self.assertEqual(expected_values['absolute_max'], decl.absolute_max_value)
def test_add_entry_empty_time_is_declaration(self) -> None: table = TablePulseTemplate() decl = ParameterDeclaration('foo') table.add_entry(decl, 0) decl.min_value = 0 self.assertEqual([(0, 0, HoldInterpolationStrategy()), (decl, 0, HoldInterpolationStrategy())], table.entries) self.assertEqual({'foo'}, table.parameter_names) self.assertEqual({decl}, table.parameter_declarations)
def test_add_entry_empty_time_is_declaration(self) -> None: table = TablePulseTemplate() decl = ParameterDeclaration('foo') table.add_entry(decl, 0) decl.min_value = 0 self.assertEqual([[(0, 0, HoldInterpolationStrategy()), (decl, 0, HoldInterpolationStrategy())]], table.entries) self.assertEqual({'foo'}, table.parameter_names) self.assertEqual({decl}, table.parameter_declarations)
def test_add_entry_time_float_after_declaration_greater_bound(self) -> None: table = TablePulseTemplate() decl = ParameterDeclaration('t', max=3.4) table.add_entry(decl, 7.1) decl.min_value = 0 self.assertRaises(ValueError, table.add_entry, 2.1, 5.5) self.assertEqual([(0, 0, HoldInterpolationStrategy()), (decl, 7.1, HoldInterpolationStrategy())], table.entries) self.assertEqual({'t'}, table.parameter_names) self.assertEqual({decl}, table.parameter_declarations)
def test_add_entry_time_declaration_after_declaration_upper_bound(self) -> None: table = TablePulseTemplate() bar_decl = ParameterDeclaration('bar', min=1, max=2) foo_decl = ParameterDeclaration('foo') table.add_entry(bar_decl, -3) table.add_entry(foo_decl, 0.1) foo_decl.min_value = bar_decl self.assertEqual([(0, 0, HoldInterpolationStrategy()), (bar_decl, -3, HoldInterpolationStrategy()), (foo_decl, 0.1, HoldInterpolationStrategy())], table.entries) self.assertEqual({'foo', 'bar'}, table.parameter_names) self.assertEqual({foo_decl, bar_decl}, table.parameter_declarations)
def test_add_entry_time_declaration_after_declaration_no_upper_bound(self) -> None: table = TablePulseTemplate() table.add_entry('bar', 72.14) table.add_entry('foo', 0) bar_decl = ParameterDeclaration('bar', min=0) foo_decl = ParameterDeclaration('foo') foo_decl.min_value = bar_decl self.assertEqual([(0, 0, HoldInterpolationStrategy()), (bar_decl, 72.14, HoldInterpolationStrategy()), (foo_decl, 0, HoldInterpolationStrategy())], table.entries) self.assertEqual({'bar', 'foo'}, table.parameter_names) self.assertEqual({bar_decl, foo_decl}, table.parameter_declarations)
def test_add_entry_time_declaration_invalid_bounds(self) -> None: table = TablePulseTemplate() bar_decl = ParameterDeclaration('bar') foo_decl = ParameterDeclaration('foo') foo_decl.min_value = bar_decl self.assertRaises(ValueError, table.add_entry, foo_decl, 23857.23) self.assertRaises(ValueError, table.add_entry, bar_decl, -4967.1) self.assertFalse(table.entries) self.assertFalse(table.parameter_names) self.assertFalse(table.parameter_declarations)
def test_add_entry_time_declaration_after_declaration_upper_bound(self) -> None: table = TablePulseTemplate() bar_decl = ParameterDeclaration('bar', min=1, max=2) foo_decl = ParameterDeclaration('foo') table.add_entry(bar_decl, -3) table.add_entry(foo_decl, 0.1) foo_decl.min_value = bar_decl self.assertEqual([[(0, 0, HoldInterpolationStrategy()), (bar_decl, -3, HoldInterpolationStrategy()), (foo_decl, 0.1, HoldInterpolationStrategy())]], table.entries) self.assertEqual({'foo', 'bar'}, table.parameter_names) self.assertEqual({foo_decl, bar_decl}, table.parameter_declarations)
def test_add_entry_time_declaration_after_declaration_no_upper_bound(self) -> None: table = TablePulseTemplate() table.add_entry('bar', 72.14) table.add_entry('foo', 0) bar_decl = ParameterDeclaration('bar', min=0) foo_decl = ParameterDeclaration('foo') foo_decl.min_value = bar_decl self.assertEqual([[(0, 0, HoldInterpolationStrategy()), (bar_decl, 72.14, HoldInterpolationStrategy()), (foo_decl, 0, HoldInterpolationStrategy())]], table.entries) self.assertEqual({'bar', 'foo'}, table.parameter_names) self.assertEqual({bar_decl, foo_decl}, table.parameter_declarations)
def test_add_entry_time_declaration_invalid_bounds(self) -> None: table = TablePulseTemplate() bar_decl = ParameterDeclaration('bar') foo_decl = ParameterDeclaration('foo') foo_decl.min_value = bar_decl with self.assertRaises(ValueError): table.add_entry(foo_decl, 23857.23) with self.assertRaises(ValueError): table.add_entry(bar_decl, -4967.1) self.assertEquals([[TableEntry(0, 0, HoldInterpolationStrategy())]], table.entries) self.assertFalse(table.parameter_names) self.assertFalse(table.parameter_declarations)
def __test_valid_values(self, **kwargs): expected_values = { 'min': float('-inf'), 'max': float('+inf'), 'default': None } for k in kwargs: expected_values[k] = kwargs[k] expected_values['absolute_min'] = expected_values['min'] expected_values['absolute_max'] = expected_values['max'] if isinstance(expected_values['absolute_min'], ParameterDeclaration): expected_values['absolute_min'] = expected_values[ 'absolute_min'].absolute_min_value if isinstance(expected_values['absolute_max'], ParameterDeclaration): expected_values['absolute_max'] = expected_values[ 'absolute_max'].absolute_max_value decl = ParameterDeclaration('test', **kwargs) self.assertEqual('test', decl.name) self.assertEqual(expected_values['min'], decl.min_value) self.assertEqual(expected_values['max'], decl.max_value) self.assertEqual(expected_values['default'], decl.default_value) self.assertEqual(expected_values['absolute_min'], decl.absolute_min_value) self.assertEqual(expected_values['absolute_max'], decl.absolute_max_value) decl = ParameterDeclaration('test', default=expected_values['default']) if 'min' in kwargs: decl.min_value = kwargs['min'] if 'max' in kwargs: decl.max_value = kwargs['max'] self.assertEqual(expected_values['min'], decl.min_value) self.assertEqual(expected_values['max'], decl.max_value) self.assertEqual(expected_values['default'], decl.default_value) self.assertEqual(expected_values['absolute_min'], decl.absolute_min_value) self.assertEqual(expected_values['absolute_max'], decl.absolute_max_value)
def __assign_min_value(self, left_value: ParameterDeclaration, right_value: ParameterDeclaration) -> None: left_value.min_value = right_value
def __min_assignment(self, decl: ParameterDeclaration, value: Union[ParameterDeclaration, float]) -> None: decl.min_value = value