From b7917800c8909f81e671adb55e1e9640c5812ca2 Mon Sep 17 00:00:00 2001 From: rusefi Date: Sat, 12 Jan 2019 08:34:38 -0500 Subject: [PATCH] making warning codes more unit testable --- firmware/controllers/algo/engine2.cpp | 5 +++++ firmware/controllers/error_handling.cpp | 4 ++-- unit_tests/engine_test_helper.cpp | 4 ++-- unit_tests/tests/test_trigger_decoder.cpp | 6 +++--- 4 files changed, 12 insertions(+), 7 deletions(-) diff --git a/firmware/controllers/algo/engine2.cpp b/firmware/controllers/algo/engine2.cpp index fd1a46db65..635e666132 100644 --- a/firmware/controllers/algo/engine2.cpp +++ b/firmware/controllers/algo/engine2.cpp @@ -37,9 +37,14 @@ extern TunerStudioOutputChannels tsOutputChannels; #endif /* EFI_TUNER_STUDIO */ WarningCodeState::WarningCodeState() { + clear(); +} + +void WarningCodeState::clear() { warningCounter = 0; lastErrorCode = 0; timeOfPreviousWarning = -10; + recentWarninig.clear(); } void WarningCodeState::addWarningCode(obd_code_e code) { diff --git a/firmware/controllers/error_handling.cpp b/firmware/controllers/error_handling.cpp index 91de2bc7f7..2b93eaf4ed 100644 --- a/firmware/controllers/error_handling.cpp +++ b/firmware/controllers/error_handling.cpp @@ -96,7 +96,7 @@ static void printWarning(const char *fmt, va_list ap) { } #else -int unitTestWarningCounter = 0; +WarningCodeState unitTestWarningCodeState; #endif /* EFI_SIMULATOR || EFI_PROD_CODE */ @@ -131,7 +131,7 @@ bool warning(obd_code_e code, const char *fmt, ...) { printWarning(fmt, ap); va_end(ap); #else - unitTestWarningCounter++; + unitTestWarningCodeState.addWarningCode(code); printf("unit_test_warning: "); va_list ap; va_start(ap, fmt); diff --git a/unit_tests/engine_test_helper.cpp b/unit_tests/engine_test_helper.cpp index 42c6cffbba..9a38b0e0c2 100644 --- a/unit_tests/engine_test_helper.cpp +++ b/unit_tests/engine_test_helper.cpp @@ -17,12 +17,12 @@ extern int timeNowUs; extern EnginePins enginePins; -extern int unitTestWarningCounter; +extern WarningCodeState unitTestWarningCodeState; extern float testMafValue; extern engine_configuration_s activeConfiguration; EngineTestHelper::EngineTestHelper(engine_type_e engineType) : engine (&persistentConfig) { - unitTestWarningCounter = 0; + unitTestWarningCodeState.clear(); // todo: make this not a global variable, we need currentTimeProvider interface on engine timeNowUs = 0; diff --git a/unit_tests/tests/test_trigger_decoder.cpp b/unit_tests/tests/test_trigger_decoder.cpp index ae517cc4fb..3644fbf826 100644 --- a/unit_tests/tests/test_trigger_decoder.cpp +++ b/unit_tests/tests/test_trigger_decoder.cpp @@ -34,7 +34,7 @@ extern int timeNowUs; extern float mockMapValue; extern float testMafValue; -extern int unitTestWarningCounter; +extern WarningCodeState unitTestWarningCodeState; extern bool printTriggerDebug; extern float actualSynchGap; @@ -1248,7 +1248,7 @@ TEST(big, testMissedSpark299) { engineConfiguration->isIgnitionEnabled = true; engineConfiguration->isInjectionEnabled = false; - assertEqualsM("warningCounter#0", 4, unitTestWarningCounter); + assertEqualsM("warningCounter#0", 4, unitTestWarningCodeState.warningCounter); eth.fireRise(20); @@ -1318,5 +1318,5 @@ TEST(big, testMissedSpark299) { eth.fireFall(20); eth.executeActions(); - assertEqualsM("warningCounter#1", 5, unitTestWarningCounter); + assertEqualsM("warningCounter#1", 5, unitTestWarningCodeState.warningCounter); }