From 6344608c7d9205071f0f933553ee547b5a946000 Mon Sep 17 00:00:00 2001 From: Elnagdy Elnagdy <elnagdy.elnagdy@bmw.de> Date: Wed, 12 Feb 2025 17:29:17 +0100 Subject: [PATCH 1/2] fix: event_start_trigger_in_event_node --- engine/BUILD.bazel | 3 ++- engine/src/Node/EventNode.cpp | 3 ++- engine/tests/Node/EventNodeTest.cpp | 15 ++++++++++++++- 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/engine/BUILD.bazel b/engine/BUILD.bazel index 1143206a..2c0353c2 100644 --- a/engine/BUILD.bazel +++ b/engine/BUILD.bazel @@ -177,7 +177,7 @@ cc_test( data = [":open_scenario_engine_test_data"], tags = ["test"], deps = [ - "test_utils", + ":test_utils", ":open_scenario_engine", ":open_scenario_engine_test_utils", "@googletest//:gtest_main", @@ -197,6 +197,7 @@ cc_test( deps = [ ":open_scenario_engine", ":open_scenario_engine_test_utils", + ":test_utils", "@googletest//:gtest_main", "@mantle_api//:test_utils", ], diff --git a/engine/src/Node/EventNode.cpp b/engine/src/Node/EventNode.cpp index a20bbe48..532f5765 100644 --- a/engine/src/Node/EventNode.cpp +++ b/engine/src/Node/EventNode.cpp @@ -1,5 +1,6 @@ /******************************************************************************* * Copyright (c) 2025 Ansys, Inc. + * Copyright (c) 2025 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License 2.0 which is available at @@ -37,7 +38,7 @@ yase::NodeStatus EventNode::tick() auto current_status = TriggerableCompositeNode::tick(); - if (start_trigger_->status() == yase::NodeStatus::kSuccess) + if (start_trigger_ == nullptr || start_trigger_->status() == yase::NodeStatus::kSuccess) { event_prioritizer_->EventStarted(name()); } diff --git a/engine/tests/Node/EventNodeTest.cpp b/engine/tests/Node/EventNodeTest.cpp index 8023ef78..23efd112 100644 --- a/engine/tests/Node/EventNodeTest.cpp +++ b/engine/tests/Node/EventNodeTest.cpp @@ -1,5 +1,6 @@ /******************************************************************************* * Copyright (c) 2025 Ansys, Inc. + * Copyright (c) 2025 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License 2.0 which is available at @@ -57,7 +58,7 @@ class EventNodeTest : public testing::Test { protected: EventNodeTest() - : root{tree.get_root()}, event_prioritizer{tree.get_event_prioritizer()} + : root{tree.get_root()}, event_prioritizer{tree.get_event_prioritizer()} { ON_CALL(event_prioritizer, RegisterEvent).WillByDefault(Return()); ON_CALL(*mock_action_node, tick()).WillByDefault(Return(yase::NodeStatus::kSuccess)); @@ -135,3 +136,15 @@ TEST_F(EventNodeTest, GivenStartedNodeWithNonSkipPriority_WhenShouldStopChildAnd EXPECT_CALL(event_prioritizer, EventStarted).Times(0); ASSERT_THAT(root.executeTick(), yase::NodeStatus::kSuccess); } + +TEST_F(EventNodeTest, GivenUnstartedNodeWithoutStartTrigger_WhenParentTicks_ThenEventTicks) +{ + auto event_under_test = std::make_shared<EventNode>("Event", mock_action_node, nullptr); + root.setChild(event_under_test); + root.distributeData(); + + EXPECT_CALL(event_prioritizer, ShouldStopChild).Times(1).WillOnce(Return(false)); + EXPECT_CALL(event_prioritizer, ShouldSkipChild).Times(1).WillOnce(Return(false)); + EXPECT_CALL(event_prioritizer, EventStarted).Times(1).WillOnce(Return()); + root.executeTick(); +} -- GitLab From a573bf7ecd3acb1c6aa44f72b96313a5a386c9f1 Mon Sep 17 00:00:00 2001 From: Elnagdy Elnagdy <elnagdy.elnagdy@bmw.de> Date: Thu, 13 Feb 2025 07:50:47 +0000 Subject: [PATCH 2/2] fix: meaningful name of the test --- engine/tests/Node/EventNodeTest.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/engine/tests/Node/EventNodeTest.cpp b/engine/tests/Node/EventNodeTest.cpp index 23efd112..899c66c4 100644 --- a/engine/tests/Node/EventNodeTest.cpp +++ b/engine/tests/Node/EventNodeTest.cpp @@ -137,7 +137,7 @@ TEST_F(EventNodeTest, GivenStartedNodeWithNonSkipPriority_WhenShouldStopChildAnd ASSERT_THAT(root.executeTick(), yase::NodeStatus::kSuccess); } -TEST_F(EventNodeTest, GivenUnstartedNodeWithoutStartTrigger_WhenParentTicks_ThenEventTicks) +TEST_F(EventNodeTest, GivenEventWithoutStartTrigger_WhenTick_ThenEventStarted) { auto event_under_test = std::make_shared<EventNode>("Event", mock_action_node, nullptr); root.setChild(event_under_test); -- GitLab