bool test_task_type_manip(TaskManager& task_manager, const Waypoints &waypoints, unsigned n_points) { if (!test_task_random_RT_AAT_FAI(task_manager, waypoints, n_points)) return false; switch (rand() %4) { case 0: task_manager.SetFactory(TaskFactoryType::AAT); test_note("# switched FACTORY TYPE to AAT\n"); break; case 1: task_manager.SetFactory(TaskFactoryType::RACING); test_note("# switched FACTORY TYPE to RT\n"); break; case 2: task_manager.SetFactory(TaskFactoryType::FAI_GENERAL); test_note("# switched FACTORY TYPE to FAI GENERAL\n"); break; case 3: task_manager.SetFactory(TaskFactoryType::MAT); test_note("# switched FACTORY TYPE to MAT\n"); break; default: test_note("# unknown task type\n"); } AbstractTaskFactory &fact = task_manager.GetFactory(); fact.MutateTPsToTaskType(); fact.UpdateStatsGeometry(); test_note("# checking mutated start..\n"); if (!fact.IsValidStartType(fact.GetType(task_manager.GetOrderedTask().GetTaskPoint(0)))) return false; char tmp[255]; sprintf(tmp, "# checking mutated intermediates. task_size():%d..\n", task_manager.TaskSize()); test_note(tmp); for (unsigned i = 1; i < (task_manager.TaskSize() - 1); i++) { sprintf(tmp, "# checking mutated intermediate point %d..\n", i); test_note(tmp); if (!fact.IsValidIntermediateType(fact.GetType(task_manager.GetOrderedTask().GetTaskPoint(i)))) return false; } test_note("# checking mutated finish..\n"); if (!fact.IsValidFinishType( fact.GetType(task_manager.GetOrderedTask().GetTaskPoint(task_manager.TaskSize() - 1)))) return false; test_note("# validating task..\n"); if (!fact.Validate()) { return false; } test_note("# checking task..\n"); if (!task_manager.CheckOrderedTask()) { return false; } if (task_manager.GetOrderedTask().GetFactoryType() == TaskFactoryType::FAI_GENERAL) { test_note("# checking OZs for FAI task..\n"); if (!fact.ValidateFAIOZs()) return false; } if (task_manager.GetOrderedTask().GetFactoryType() == TaskFactoryType::MAT) { test_note("# checking OZs for MAT task..\n"); if (!fact.ValidateMATOZs()) return false; } return true; }
bool test_task_type_manip(TaskManager& task_manager, const Waypoints &waypoints, unsigned n_points) { if (!test_task_random_RT_AAT_FAI(task_manager, waypoints, n_points)) return false; AbstractTaskFactory &fact = task_manager.get_factory(); switch (rand() %3) { case 0: task_manager.set_factory(TaskBehaviour::FACTORY_AAT); test_note("# switched FACTORY TYPE to AAT\n"); break; case 1: task_manager.set_factory(TaskBehaviour::FACTORY_RT); test_note("# switched FACTORY TYPE to RT\n"); break; case 2: task_manager.set_factory(TaskBehaviour::FACTORY_FAI_GENERAL); test_note("# switched FACTORY TYPE to FAI GENERAL\n"); break; default: test_note("# unknown task type\n"); } fact.mutate_tps_to_task_type(); test_note("# checking mutated start..\n"); if (!fact.validStartType( fact.getType(*task_manager.get_ordered_task().getTaskPoint(0)))) return false; char tmp[255]; sprintf(tmp, "# checking mutated intermediates. task_size():%d..\n", task_manager.task_size()); test_note(tmp); for (unsigned i = 1; i < (task_manager.task_size() - 1); i++) { sprintf(tmp, "# checking mutated intermediate point %d..\n", i); test_note(tmp); if (!fact.validIntermediateType( fact.getType(*task_manager.get_ordered_task().getTaskPoint(i)))) return false; } test_note("# checking mutated finish..\n"); if (!fact.validFinishType( fact.getType(*task_manager.get_ordered_task().getTaskPoint( task_manager.task_size() - 1)))) return false; test_note("# validating task..\n"); if (!fact.validate()) { return false; } test_note("# checking task..\n"); if (!task_manager.check_ordered_task()) { return false; } if (task_manager.get_ordered_task().get_factory_type() == TaskBehaviour::FACTORY_FAI_GENERAL) { test_note("# checking OZs for FAI task..\n"); if (!fact.validateFAIOZs()) return false; } return true; }