From fee1602fd96720a2076aba1ee60c25c4abf1a825 Mon Sep 17 00:00:00 2001 From: kifir Date: Fri, 17 May 2024 19:30:22 +0300 Subject: [PATCH] add tests for targetSkipRatio calculation #6528 --- firmware/controllers/algo/launch_control.h | 1 + .../tests/launch/test_target_skip_ratio.cpp | 41 +++++++++++++++++++ unit_tests/tests/tests.mk | 1 + 3 files changed, 43 insertions(+) create mode 100644 unit_tests/tests/launch/test_target_skip_ratio.cpp diff --git a/firmware/controllers/algo/launch_control.h b/firmware/controllers/algo/launch_control.h index 648a13b3b3..6591448d4a 100644 --- a/firmware/controllers/algo/launch_control.h +++ b/firmware/controllers/algo/launch_control.h @@ -49,6 +49,7 @@ public: * targetSkipRatio of '0' means 'do not skip', would always return false */ void setTargetSkipRatio(float targetSkipRatio); + [[nodiscard]] float getTargetSkipRatio() const { return targetSkipRatio; } bool shouldSkip(); private: diff --git a/unit_tests/tests/launch/test_target_skip_ratio.cpp b/unit_tests/tests/launch/test_target_skip_ratio.cpp new file mode 100644 index 0000000000..76e6a1f5e0 --- /dev/null +++ b/unit_tests/tests/launch/test_target_skip_ratio.cpp @@ -0,0 +1,41 @@ +// +// Created by kifir on 5/17/24. +// + +#include "pch.h" + +constexpr float TEST_TRACTION_CONTROL_IGNITION_SKIP = 17.0f; +constexpr float TEST_LUA_SOFT_SPARK_SKIP = 239.0f; +constexpr float TEST_LUA_HARD_SPARK_SKIP = 174.0f; + +static void setUpTestParameters() { + std::fill_n( + &engineConfiguration->tractionControlIgnitionSkip[0][0], + TRACTION_CONTROL_ETB_DROP_SIZE * TRACTION_CONTROL_ETB_DROP_SIZE, + static_cast(TEST_TRACTION_CONTROL_IGNITION_SKIP) + ); + engine->engineState.luaSoftSparkSkip = TEST_LUA_SOFT_SPARK_SKIP; + engine->engineState.luaHardSparkSkip = TEST_LUA_HARD_SPARK_SKIP; +} + +TEST(targetSkipRatio, doNotUseSkipInTraction) { + EngineTestHelper eth(engine_type_e::TEST_ENGINE); + + setUpTestParameters(); + EXPECT_FALSE(engineConfiguration->useHardSkipInTraction); + + eth.engine.periodicFastCallback(); + EXPECT_EQ(engine->softSparkLimiter.getTargetSkipRatio(), TEST_LUA_SOFT_SPARK_SKIP + TEST_TRACTION_CONTROL_IGNITION_SKIP); + EXPECT_EQ(engine->hardSparkLimiter.getTargetSkipRatio(), TEST_LUA_HARD_SPARK_SKIP); +} + +TEST(targetSkipRatio, useSkipInTraction) { + EngineTestHelper eth(engine_type_e::TEST_ENGINE); + + setUpTestParameters(); + engineConfiguration->useHardSkipInTraction = true; + + eth.engine.periodicFastCallback(); + EXPECT_EQ(engine->softSparkLimiter.getTargetSkipRatio(), TEST_LUA_SOFT_SPARK_SKIP); + EXPECT_EQ(engine->hardSparkLimiter.getTargetSkipRatio(), TEST_LUA_HARD_SPARK_SKIP + TEST_TRACTION_CONTROL_IGNITION_SKIP); +} diff --git a/unit_tests/tests/tests.mk b/unit_tests/tests/tests.mk index 62a503708a..7a45a17bf0 100644 --- a/unit_tests/tests/tests.mk +++ b/unit_tests/tests/tests.mk @@ -44,6 +44,7 @@ TESTS_SRC_CPP = \ tests/ignition_injection/test_fuel_computer.cpp \ tests/ignition_injection/test_injector_model.cpp \ tests/ignition_injection/test_odd_firing_engine.cpp \ + tests/launch/test_target_skip_ratio.cpp \ tests/lua/test_lua_basic.cpp \ tests/lua/test_lookup.cpp \ tests/lua/test_lua_e38.cpp \