Skip to content
Snippets Groups Projects
Commit fd210ace authored by Frank Prüfer's avatar Frank Prüfer
Browse files

Added tests for RelativeSpeedCondition

parent 74322513
No related branches found
No related tags found
2 merge requests!138Implement CI checks,!126Add missing unit tests for conditions
...@@ -15,17 +15,66 @@ ...@@ -15,17 +15,66 @@
#include "Storyboard/ByEntityCondition/RelativeSpeedCondition_impl.h" #include "Storyboard/ByEntityCondition/RelativeSpeedCondition_impl.h"
using namespace mantle_api; using namespace mantle_api;
using namespace units::literals; using units::literals::operator""_mps;
using testing::Return;
using testing::ReturnRef;
TEST(RelativeSpeedConditionTest, GivenSpeedDiffLessthanTolerance_ReturnTrue) class RelativeSpeedConditionTestFixture : public ::testing::Test
{ {
auto rule = OPENSCENARIO::Rule(NET_ASAM_OPENSCENARIO::v1_1::Rule::RuleEnum::EQUAL_TO, 10.0); protected:
auto mockEnvironment = std::make_shared<MockEnvironment>(); void SetUp() override
{
mock_environment_ = std::make_shared<MockEnvironment>();
}
OpenScenarioEngine::v1_1::RelativeSpeedCondition relativeSpeedCondition({"Vehicle1", std::shared_ptr<MockEnvironment> mock_environment_;
"Ego", OpenScenarioEngine::v1_1::RelativeSpeedCondition::Values condition_values_{.triggeringEntity = "vehicle1",
rule}, .entityRef = "Ego",
{mockEnvironment}); .rule = OPENSCENARIO::Rule(NET_ASAM_OPENSCENARIO::v1_1::Rule::RuleEnum::EQUAL_TO, 10.0)};
};
TEST_F(RelativeSpeedConditionTestFixture, GivenMockedEntities_WhenCheckingCondition_ThenGetsVelocityOfEntitiesAndDoesNotThrow)
{
OpenScenarioEngine::v1_1::RelativeSpeedCondition relativeSpeedCondition(condition_values_,
{mock_environment_});
EXPECT_CALL(dynamic_cast<mantle_api::MockVehicle&>(mock_environment_->GetEntityRepository().Get(condition_values_.entityRef).value().get()),
GetVelocity())
.Times(2);
EXPECT_NO_THROW(relativeSpeedCondition.IsSatisfied());
}
TEST_F(RelativeSpeedConditionTestFixture, GivenSatisfcatoryVelocities_WhenCheckingCondition_ThenReturnsTrue)
{
OpenScenarioEngine::v1_1::RelativeSpeedCondition relativeSpeedCondition(condition_values_,
{mock_environment_});
// Note: It would be better to have to two distinct ON_CALL statements, one for each entity/MockVehicle to define their respective velocities.
// However, this is currently not possible, as the MockEntityRepository always returns an empty entity on Get().
// This could be circumvented by returning a proper entity via the mocked GetImpl() function, but it is not straightforward to create such an entity,
// as it would have to implement the complete IVehicle interface.
EXPECT_CALL(dynamic_cast<mantle_api::MockVehicle&>(mock_environment_->GetEntityRepository().Get(condition_values_.entityRef).value().get()),
GetVelocity())
.WillOnce(::testing::Return(mantle_api::Vec3<units::velocity::meters_per_second_t>{20.0_mps, 0_mps, 0_mps}))
.WillOnce(::testing::Return(mantle_api::Vec3<units::velocity::meters_per_second_t>{10.0_mps, 0_mps, 0_mps}));
EXPECT_TRUE(relativeSpeedCondition.IsSatisfied());
}
TEST_F(RelativeSpeedConditionTestFixture, GivenUnsatisfcatoryVelocities_WhenCheckingCondition_ThenReturnsFalse)
{
OpenScenarioEngine::v1_1::RelativeSpeedCondition relativeSpeedCondition(condition_values_,
{mock_environment_});
// Note: It would be better to have to two distinct ON_CALL statements, one for each entity/MockVehicle to define their respective velocities.
// However, this is currently not possible, as the MockEntityRepository always returns an empty entity on Get().
// This could be circumvented by returning a proper entity via the mocked GetImpl() function, but it is not straightforward to create such an entity,
// as it would have to implement the complete IVehicle interface.
EXPECT_CALL(dynamic_cast<mantle_api::MockVehicle&>(mock_environment_->GetEntityRepository().Get(condition_values_.entityRef).value().get()),
GetVelocity())
.WillOnce(::testing::Return(mantle_api::Vec3<units::velocity::meters_per_second_t>{15.0_mps, 0_mps, 0_mps}))
.WillOnce(::testing::Return(mantle_api::Vec3<units::velocity::meters_per_second_t>{10.0_mps, 0_mps, 0_mps}));
EXPECT_FALSE(relativeSpeedCondition.IsSatisfied());
} }
\ No newline at end of file
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