Skip to content
Snippets Groups Projects
Commit 2d4baf8d authored by Andreas Rauschert's avatar Andreas Rauschert
Browse files

Merge branch 'fix_setting_environment_defaults' into 'main'

fix: set environment defaults before initializing environment and don't stop creating controllers on non-controllable entities

See merge request eclipse/openpass/openscenario1_engine!178
parents 385349f4 143f35b1
No related branches found
No related tags found
1 merge request!178fix: set environment defaults before initializing environment and don't stop creating controllers on non-controllable entities
......@@ -95,6 +95,8 @@ void OpenScenarioEngine::Init()
controller_creator_->GetControllerService()->ResetControllerMappings();
SetEnvironmentDefaults();
ParseScenarioFile();
LoadRoadNetwork();
......@@ -104,8 +106,6 @@ void OpenScenarioEngine::Init()
CreateControllers();
CreateAndInitStoryboard();
SetEnvironmentDefaults();
}
mantle_api::ScenarioInfo OpenScenarioEngine::GetScenarioInfo() const
......@@ -333,7 +333,8 @@ mantle_api::Time OpenScenarioEngine::GetDuration() const
for (const auto& condition_group : condition_groups)
{
auto conditions = condition_group->GetConditions();
std::for_each(conditions.begin(), conditions.end(), [&durations](const auto& condition) {
std::for_each(conditions.begin(), conditions.end(), [&durations](const auto& condition)
{
if (const auto& by_val_condition = condition->GetByValueCondition())
{
if (const auto& sim_time_condition = by_val_condition->GetSimulationTimeCondition())
......
......@@ -136,7 +136,7 @@ void ControllerCreator::CreateControllers(const std::vector<std::shared_ptr<NET_
if (detail::IsNotControllable(scenario_object))
{
Logger::Info("ControllerCreator: No controller created for non-vehicle and non-pedestrian type scenario object \"" + entity_name + "\"");
return;
continue;
}
const auto entity = environment_.GetEntityRepository().Get(entity_name);
......
......@@ -46,11 +46,15 @@ class OpenScenarioEngineTest : public OpenScenarioEngineTestBase
std::string controller_name {"TestController"s};
};
TEST_F(OpenScenarioEngineTest, GivenValidScenarioFile_WhenInitialized_ThenDefaultRoutingBehaviourIsSetToRandom)
TEST_F(OpenScenarioEngineTest, GivenValidScenarioFile_WhenInitialized_ThenDefaultRoutingBehaviourIsSetBeforeControllersAreCreated)
{
std::string xosc_file_path{GetScenariosPath(test_info_->file()) + default_xosc_scenario_};
EXPECT_CALL(*env_, SetDefaultRoutingBehavior(mantle_api::DefaultRoutingBehavior::kRandomRoute)).Times(1);
{
testing::InSequence s;
EXPECT_CALL(*env_, SetDefaultRoutingBehavior(mantle_api::DefaultRoutingBehavior::kRandomRoute)).Times(1);
EXPECT_CALL(env_->GetControllerRepository(), Create(_)).Times(2);
}
OpenScenarioEngine::v1_2::OpenScenarioEngine engine(xosc_file_path, env_);
......
......@@ -144,6 +144,17 @@ TEST_F(ControllerCreator, GivenUncontrollableScenarioObject_WhenCreateIsCalled_T
EXPECT_THAT(LOGGER->LastLogMessage(), HasSubstr("test_entity"));
}
TEST_F(ControllerCreator, GivenUncontrollableAndControllableScenarioObject_WhenCreateIsCalled_ThenControllerOnlyForControllableObjectIsCreated)
{
SETUP_ENTITY("uncontrollable_entity", 1234, false, false);
SETUP_ENTITY("entity_2", 5678, true, false);
EXPECT_CALL(mockControllerRepository, Create(_)).Times(1).WillOnce(ReturnRef(mockController));
OpenScenarioEngine::v1_2::ControllerCreator controller_creator(mockEnvironment);
controller_creator.CreateControllers(scenario_objects);
}
TEST_F(ControllerCreator, GivenScenarioObjectWithController_WhenCreateIsCalled_ThenCreatesDefaultAndUserDefinedController)
{
SETUP_ENTITY("test_entity", 1234, true, true);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment