tests for rpmCondition with hysterisis #5610

This commit is contained in:
kifir 2024-05-21 15:32:52 +03:00 committed by rusefillc
parent af6786e237
commit 3405205dee
2 changed files with 101 additions and 0 deletions

View File

@ -0,0 +1,100 @@
//
// Created by kifir on 5/21/24.
//
#include "pch.h"
constexpr int TEST_LAUNCH_RPM = 2390;
constexpr int TEST_LAUNCH_RPM_WINDOW = 170;
constexpr int TEST_PRELAUNCH_RPM = TEST_LAUNCH_RPM - TEST_LAUNCH_RPM_WINDOW;
static void setUpTestParameters() {
engineConfiguration->launchControlEnabled = true;
engineConfiguration->launchRpm = TEST_LAUNCH_RPM;
engineConfiguration->launchRpmWindow = TEST_LAUNCH_RPM_WINDOW;
engineConfiguration->launchSparkCutEnable = true;
}
static void updateRpm(const int rpm) {
Sensor::setMockValue(SensorType::Rpm, rpm);
engine->launchController.update();
}
TEST(rpmCondition, IncreasingRpm) {
EngineTestHelper eth(engine_type_e::TEST_ENGINE);
setUpTestParameters();
/* RPM hasn't reached Launch RPM parameter - rpmCondition isn't satisfied: */
EXPECT_FALSE(engine->launchController.rpmCondition); // check default value
updateRpm(TEST_PRELAUNCH_RPM - 1);
EXPECT_FALSE(engine->launchController.rpmCondition);
updateRpm(TEST_PRELAUNCH_RPM);
EXPECT_FALSE(engine->launchController.rpmCondition);
updateRpm(TEST_LAUNCH_RPM - 1);
EXPECT_FALSE(engine->launchController.rpmCondition);
updateRpm(TEST_LAUNCH_RPM);
/* RPM reached Launch RPM parameter - now rpmCondition is satisfied: */
EXPECT_TRUE(engine->launchController.rpmCondition);
}
TEST(rpmCondition, HysterisisOnDecreasingRpm) {
EngineTestHelper eth(engine_type_e::TEST_ENGINE);
setUpTestParameters();
updateRpm(TEST_LAUNCH_RPM);
/* RPM reached Launch RPM parameter - rpmCondition is satisfied: */
EXPECT_TRUE(engine->launchController.rpmCondition);
updateRpm(TEST_LAUNCH_RPM - 1);
/* RPM is below Launch RPM parameter, but still in Launch Control Window - so rpmCondition is still satisfied: */
EXPECT_TRUE(engine->launchController.rpmCondition);
updateRpm(TEST_PRELAUNCH_RPM);
EXPECT_TRUE(engine->launchController.rpmCondition);
updateRpm(TEST_PRELAUNCH_RPM - 1);
/* RPM went down below Launch Control Window parameter - now rpmCondition is not satisfied: */
EXPECT_FALSE(engine->launchController.rpmCondition);
}
TEST(rpmCondition, HysterisisRpmOscillation) {
EngineTestHelper eth(engine_type_e::TEST_ENGINE);
setUpTestParameters();
updateRpm(TEST_LAUNCH_RPM);
/* RPM reached Launch RPM parameter - rpmCondition is satisfied: */
EXPECT_TRUE(engine->launchController.rpmCondition);
updateRpm(TEST_LAUNCH_RPM - 1);
EXPECT_TRUE(engine->launchController.rpmCondition);
updateRpm(TEST_LAUNCH_RPM + 1);
EXPECT_TRUE(engine->launchController.rpmCondition);
updateRpm(TEST_PRELAUNCH_RPM);
EXPECT_TRUE(engine->launchController.rpmCondition);
updateRpm(TEST_LAUNCH_RPM + 2);
EXPECT_TRUE(engine->launchController.rpmCondition);
updateRpm(TEST_PRELAUNCH_RPM - 1);
/* RPM went down below Launch Control Window parameter - now rpmCondition is not satisfied: */
EXPECT_FALSE(engine->launchController.rpmCondition);
updateRpm(TEST_PRELAUNCH_RPM);
EXPECT_FALSE(engine->launchController.rpmCondition);
updateRpm(TEST_LAUNCH_RPM - 1);
EXPECT_FALSE(engine->launchController.rpmCondition);
/* RPM reached Launch RPM parameter again - now rpmCondition is satisfied: */
updateRpm(TEST_LAUNCH_RPM);
EXPECT_TRUE(engine->launchController.rpmCondition);
}

View File

@ -45,6 +45,7 @@ TESTS_SRC_CPP = \
tests/ignition_injection/test_injector_model.cpp \
tests/ignition_injection/test_odd_firing_engine.cpp \
tests/launch/test_target_skip_ratio.cpp \
tests/launch/test_rpm_condition.cpp \
tests/lua/test_lua_basic.cpp \
tests/lua/test_lookup.cpp \
tests/lua/test_lua_e38.cpp \