From 1155d8e1b747b9168283c93d730a090d2cc54957 Mon Sep 17 00:00:00 2001 From: rusefillc Date: Sun, 29 Dec 2024 14:06:25 -0500 Subject: [PATCH] only:refactoring --- .../test-framework/engine_csv_reader.cpp | 3 ++ unit_tests/test-framework/engine_csv_reader.h | 48 +++++++++++++++++++ .../test-framework/logicdata_csv_reader.h | 2 - .../ignition_injection/test_hd_cranking.cpp | 25 +++------- .../tests/trigger/test_real_cas_24_plus_1.cpp | 11 ++--- 5 files changed, 61 insertions(+), 28 deletions(-) create mode 100644 unit_tests/test-framework/engine_csv_reader.cpp create mode 100644 unit_tests/test-framework/engine_csv_reader.h diff --git a/unit_tests/test-framework/engine_csv_reader.cpp b/unit_tests/test-framework/engine_csv_reader.cpp new file mode 100644 index 0000000000..3e24575adf --- /dev/null +++ b/unit_tests/test-framework/engine_csv_reader.cpp @@ -0,0 +1,3 @@ + + +#include "engine_csv_reader.h" diff --git a/unit_tests/test-framework/engine_csv_reader.h b/unit_tests/test-framework/engine_csv_reader.h new file mode 100644 index 0000000000..069300308e --- /dev/null +++ b/unit_tests/test-framework/engine_csv_reader.h @@ -0,0 +1,48 @@ +// file engine_csv_reader.h + +#pragma once + +#include "logicdata_csv_reader.h" + +class EngineCsvReader { +public: + EngineCsvReader(size_t triggerCount, size_t vvtCount) : cvsReader(triggerCount, vvtCount) { + } + + bool gotRpm = false; + bool gotSync = false; + bool prevSync = false; + + int expectedFirstRpm = -1; + int expectedFirstRpmAtIndex = -1; + + // composition good, inheritance less good? + CsvReader cvsReader; + + void open(const char *fileName, const int* triggerColumnIndexes = NORMAL_ORDER, const int *vvtColumnIndexes = NORMAL_ORDER) { + cvsReader.open(fileName, triggerColumnIndexes, vvtColumnIndexes); + } + bool haveMore() { + return cvsReader.haveMore(); + } + + int lineIndex() const { + return cvsReader.lineIndex(); + } + + void processLine(EngineTestHelper *eth) { + cvsReader.processLine(eth); + } + + void assertFirstRpm(int expectedFirstRpm, int expectedFirstRpmAtIndex) { + auto rpm = Sensor::getOrZero(SensorType::Rpm); + + if (!gotRpm && rpm) { + gotRpm = true; + + EXPECT_NEAR(rpm, expectedFirstRpm, 1); + EXPECT_EQ(lineIndex(), expectedFirstRpmAtIndex); + } + } + +}; diff --git a/unit_tests/test-framework/logicdata_csv_reader.h b/unit_tests/test-framework/logicdata_csv_reader.h index e30e643b52..d0436e5bde 100644 --- a/unit_tests/test-framework/logicdata_csv_reader.h +++ b/unit_tests/test-framework/logicdata_csv_reader.h @@ -9,8 +9,6 @@ const int NORMAL_ORDER[2] = {0, 1}; const int REVERSE_ORDER[2] = {1, 0}; - - class CsvReader { public: CsvReader(size_t triggerCount, size_t vvtCount) : CsvReader(triggerCount, vvtCount, 0.0) {} diff --git a/unit_tests/tests/ignition_injection/test_hd_cranking.cpp b/unit_tests/tests/ignition_injection/test_hd_cranking.cpp index 221ed31219..17514d60f9 100644 --- a/unit_tests/tests/ignition_injection/test_hd_cranking.cpp +++ b/unit_tests/tests/ignition_injection/test_hd_cranking.cpp @@ -1,39 +1,28 @@ // file test_hd_cranking.cpp #include "pch.h" -#include "logicdata_csv_reader.h" +#include "engine_csv_reader.h" -TEST(harley, crankingSomethingCam) { - CsvReader reader(1, /* vvtCount */ 1); +TEST(harley, hdCrankingWithCam) { + EngineCsvReader reader(1, /* vvtCount */ 1); reader.open("tests/ignition_injection/resources/hd-req-sync_3.csv"); EngineTestHelper eth(engine_type_e::HARLEY); engineConfiguration->vvtMode[0] = VVT_BOSCH_QUICK_START; eth.applyTriggerWaveform(); - bool gotRpm = false; - bool gotSync = false; - bool prevSync = false; - while (reader.haveMore()) { reader.processLine(ð); - // whole pattern is a copy-paste from test_real_4b11.cpp, is better API possible? + reader.assertFirstRpm(184, 60); auto rpm = Sensor::getOrZero(SensorType::Rpm); - if (!gotRpm && rpm) { - gotRpm = true; - // We should get first RPM on exactly the first sync point - this means the instant RPM pre-sync event copy all worked OK - EXPECT_EQ(reader.lineIndex(), 60); - EXPECT_NEAR(rpm, 184, 1); - } - - if (!gotSync && engine->triggerCentral.triggerState.hasSynchronizedPhase()) { + if (!reader.gotSync && engine->triggerCentral.triggerState.hasSynchronizedPhase()) { EXPECT_EQ(reader.lineIndex(), 269); - gotSync = true; + reader.gotSync = true; } - if (gotSync) { + if (reader.gotSync) { // we have loss of sync, interesting! // EXPECT_TRUE(engine->triggerCentral.triggerState.hasSynchronizedPhase()) << "Loss " << reader.lineIndex(); } diff --git a/unit_tests/tests/trigger/test_real_cas_24_plus_1.cpp b/unit_tests/tests/trigger/test_real_cas_24_plus_1.cpp index 84fce5dc84..ff27ab0460 100644 --- a/unit_tests/tests/trigger/test_real_cas_24_plus_1.cpp +++ b/unit_tests/tests/trigger/test_real_cas_24_plus_1.cpp @@ -4,10 +4,10 @@ #include "pch.h" -#include "logicdata_csv_reader.h" +#include "engine_csv_reader.h" TEST(realCas24Plus1, spinningOnBench) { - CsvReader reader(/*triggerCount*/1, /* vvtCount */ 1); + EngineCsvReader reader(/*triggerCount*/1, /* vvtCount */ 1); reader.open("tests/trigger/resources/cas_nissan_24_plus_1.csv"); EngineTestHelper eth(engine_type_e::TEST_ENGINE); @@ -33,13 +33,8 @@ TEST(realCas24Plus1, spinningOnBench) { EXPECT_TRUE(angleError < 3 && angleError > -3) << "tooth angle of " << angleError << " at timestamp " << (getTimeNowNt() / 1e8); auto rpm = Sensor::getOrZero(SensorType::Rpm); - if (!gotRpm && rpm) { - gotRpm = true; - // We should get first RPM on exactly the first (primary) sync point - this means the instant RPM pre-sync event copy all worked OK - EXPECT_EQ(reader.lineIndex(), 7); - EXPECT_NEAR(rpm, 808.32f, 0.1); - } + reader.assertFirstRpm(808, 7); bool hasFullSync = getTriggerCentral()->triggerState.hasSynchronizedPhase(); if (!gotFullSync && hasFullSync) {