def test_to_command_str(self): parallel_commands = ParallelDroneCommands() parallel_commands.add([]) parallel_commands.add([ SingleDroneCommand("abc", Command.takeoff()), SingleDroneCommand("abc", Command.up(1)) ]) self.assertEqual("{ } || { abc.takeoff(); abc.up(1); };", parallel_commands.to_command_str()) outer_parallel_commands = ParallelDroneCommands() outer_parallel_commands.add([]) outer_parallel_commands.add([parallel_commands]) self.assertEqual("{ } || { { } || { abc.takeoff(); abc.up(1); }; };", outer_parallel_commands.to_command_str())
def _update_states_and_check_parallel_drone_commands( self, parallel_drone_commands: ParallelDroneCommands, state_updaters: Dict[str, StateUpdater], drone_state_map: Dict[str, State], drones_involved: Set[str]) -> float: assert len(parallel_drone_commands.branches) > 0 time_used_in_branches = self._update_states_and_check_for_each_branch( parallel_drone_commands, state_updaters, drone_state_map) longest_time_used = self._update_states_to_wait_for_slowest_branch( parallel_drone_commands, drone_state_map, time_used_in_branches, drones_involved) for name, state in drone_state_map.items(): try: self.boundary_config.check_state(name, state) except SafetyCheckError as e: raise SafetyCheckError( "When running command '{}', boundary limits are violated: {}" .format(parallel_drone_commands.to_command_str(), str(e))) return longest_time_used