class TestTarget(TestCase): def setUp(self) -> None: """Сохраняем ссылку на цель :return: None """ self.target = Target() def test___init__without_arguments(self) -> None: """Проверяет правильность установки значений инициализатором без аргументов :return: None """ # Вызов тестируемой функции target = Target() # Проверка для собственного времени ticks = target.ticks real_ticks = 0 self.assertEqual(real_ticks, ticks, "Собственное время установлено неверно") # Проверка для номера цели number = target.number real_number = -1 self.assertEqual(real_number, number, "Номер цели установлен неверно") # Проверка для координат цели coordinates = target.coordinates.tolist() real_coordinates = [0., 0., 0.] self.assertEqual(real_coordinates, coordinates, "Координаты установлены неверно") # Проверка для скоростей цели velocities = target.velocities.tolist() real_velocities = [0., 0., 0.] self.assertEqual(real_velocities, velocities, "Скорости установлены неверно") # Проверка для типа цели target_type = target.type real_target_type = "Aerodynamic" self.assertEqual(real_target_type, target_type, "Тип цели установлен неверно") # Проверка для признака АС цели is_auto_tracking = target.is_auto_tracking real_is_auto_tracking = {num: False for num in range(1, 4)} self.assertDictEqual(real_is_auto_tracking, is_auto_tracking, "Признак АС установлен неверно") # Проверка для признака помехи от цели is_anj = target.is_anj real_is_anj = {num: False for num in range(1, 4)} self.assertDictEqual(real_is_anj, is_anj, "Признак помехи установлен неверно") def test___init__with_arguments(self) -> None: """Проверяет правильность установки значений инициализатором с аргументами :return: None """ # Вызов тестируемой функции target = Target(number=1, coordinates=np.array([30_000., 2_000., -2_000.]), velocities=np.array([200., 235., -20]), target_type="Ballistic", is_auto_tracking={1: True}, is_anj={1: False}) # Проверка для собственного времени ticks = target.ticks real_ticks = 0 self.assertEqual(real_ticks, ticks, "Собственное время установлено неверно") # Проверка для номера цели number = target.number real_number = 1 self.assertEqual(real_number, number, "Номер цели установлен неверно") # Проверка для координат цели coordinates = target.coordinates.tolist() real_coordinates = [30_000., 2_000., -2_000.] self.assertEqual(real_coordinates, coordinates, "Координаты установлены неверно") # Проверка для скоростей цели velocities = target.velocities.tolist() real_velocities = [200., 235., -20] self.assertEqual(real_velocities, velocities, "Скорости установлены неверно") # Проверка для типа цели target_type = target.type real_target_type = "Ballistic" self.assertEqual(real_target_type, target_type, "Тип цели установлен неверно") # Проверка для признака АС цели is_auto_tracking = target.is_auto_tracking real_is_auto_tracking = {1: True} self.assertDictEqual(real_is_auto_tracking, is_auto_tracking, "Признак АС установлен неверно") # Проверка для признака помехи от цели is_anj = target.is_anj real_is_anj = {1: False} self.assertDictEqual(real_is_anj, is_anj, "Признак помехи установлен неверно") def test_operate(self) -> None: """Тест для основного алгоритма работы :return: None """ # Определим нужные для функции данные ticks = 100 self.target.coordinates = np.array([100_000., 5_000., 30_000.]) self.target.velocities = np.array([-100., -100., 100.]) # Вызов тестируемой функции for tick in range(ticks): self.target.operate(tick) # Проверка для координат coordinates = self.target.coordinates.tolist() real_coordinates = [99_500., 4_500., 30_500.] self.assertEqual(real_coordinates, coordinates, "Координаты цели не совпадают") # Проверка для временных тиков target_ticks = self.target.ticks real_target_ticks = 99 self.assertEqual(real_target_ticks, target_ticks, "Не совпадают временные тики") def test_registration(self) -> None: """Проверка регистрируемых величин :return: None """ # Определим нужные для функции данные self.target.coordinates = np.array([20_000., 1_000., 2_430.]) self.target.velocities = np.array([100., 250., -50.]) # Определение регистрации тестируемой функцией registration = self.target.registration # Определение регистрации вручную real_registration = [20_000., 1_000., 2_430., 100., 250., -50.] # Проверка self.assertEqual(real_registration, registration, "Не совпала регистрация")
from command_post import CommandPost from multi_functional_radar import MultiFunctionalRadar from target import Target if __name__ == "__main__": # Цель target = Target(number=0, coordinates=np.array([50_000., 5_000., 0.]), velocities=np.array([-100., 0., 0.]), target_type="Aerodynamic", is_auto_tracking={0: True}, is_anj={0: False}) # МФР multifunctional_radar = MultiFunctionalRadar(target_list=[target], stable_point=np.array([1_000., 0., 0.]), mfr_number=0) # ПБУ command_post = CommandPost(mfr_list=[multifunctional_radar]) # Время моделирования в секундах modelling_time = 2_000 # Моделирование (цикл по времени) for time in range(20 * modelling_time): target.operate(time) multifunctional_radar.operate(time) command_post.operate(time)