S1005403_RisCC/tests/core/test_simulation_engine.py

45 lines
1.4 KiB
Python

import pytest
from target_simulator.core.simulation_engine import SimulationEngine
from target_simulator.core.models import Scenario, Target, Waypoint, ManeuverType
from unittest.mock import Mock
from queue import Queue
@pytest.fixture
def fake_communicator():
return Mock()
@pytest.fixture
def fake_update_queue():
return Queue()
def test_simulation_engine_init(fake_communicator, fake_update_queue):
engine = SimulationEngine(fake_communicator, fake_update_queue)
assert hasattr(engine, "scenario")
assert hasattr(engine, "communicator")
assert hasattr(engine, "update_queue")
def test_simulation_engine_load_scenario(fake_communicator, fake_update_queue):
engine = SimulationEngine(fake_communicator, fake_update_queue)
scenario = Scenario(name="TestScenario")
t = Target(
target_id=1, trajectory=[Waypoint(maneuver_type=ManeuverType.FLY_TO_POINT)]
)
scenario.add_target(t)
engine.load_scenario(scenario)
assert engine.scenario.name == "TestScenario"
assert engine.scenario.get_target(1) is not None
def test_simulation_engine_start_stop(fake_communicator, fake_update_queue):
engine = SimulationEngine(fake_communicator, fake_update_queue)
engine._is_running_event.clear()
engine._stop_event.clear()
engine.start()
assert engine.is_alive()
engine._stop_event.set()
engine.join(timeout=1)