only:refactoring

This commit is contained in:
rusefillc 2024-12-29 14:15:05 -05:00
parent 1155d8e1b7
commit da8f5144c3
6 changed files with 43 additions and 110 deletions

View File

@ -30,6 +30,14 @@ public:
return cvsReader.lineIndex();
}
void setReadingOffset(int offset) {
cvsReader.readingOffset = offset;
}
void setFlipOnRead(bool v) {
cvsReader.flipOnRead = v;
}
void processLine(EngineTestHelper *eth) {
cvsReader.processLine(eth);
}

View File

@ -4,10 +4,10 @@
#include "pch.h"
#include "logicdata_csv_reader.h"
#include "engine_csv_reader.h"
TEST(real4b11, running) {
CsvReader reader(1, /* vvtCount */ 0);
EngineCsvReader reader(1, /* vvtCount */ 0);
reader.open("tests/trigger/resources/4b11-running.csv");
EngineTestHelper eth(engine_type_e::TEST_ENGINE);
@ -16,8 +16,6 @@ TEST(real4b11, running) {
eth.setTriggerType(trigger_type_e::TT_36_2_1);
bool gotRpm = false;
while (reader.haveMore()) {
reader.processLine(&eth);
@ -25,21 +23,14 @@ TEST(real4b11, running) {
float angleError = getTriggerCentral()->triggerToothAngleError;
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 sync point - this means the instant RPM pre-sync event copy all worked OK
EXPECT_EQ(reader.lineIndex(), 30);
EXPECT_NEAR(rpm, 1436.23f, 0.1);
}
reader.assertFirstRpm(1436, 30);
}
ASSERT_EQ(0, eth.recentWarnings()->getCount());
}
TEST(real4b11, runningDoubledEdge) {
CsvReader reader(1, /* vvtCount */ 0);
EngineCsvReader reader(1, /* vvtCount */ 0);
// This log has an extra duplicate edge at 5.393782 seconds (hand added)
reader.open("tests/trigger/resources/4b11-running-doubled-edge.csv");
@ -49,20 +40,9 @@ TEST(real4b11, runningDoubledEdge) {
eth.setTriggerType(trigger_type_e::TT_36_2_1);
bool gotRpm = false;
while (reader.haveMore()) {
reader.processLine(&eth);
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(), 30);
EXPECT_NEAR(rpm, 1436.23f, 0.1);
}
reader.assertFirstRpm(1436, 30);
}
// Should get a warning for the doubled edge, but NOT one for a trigger error!

View File

@ -5,10 +5,10 @@
#include "pch.h"
#include "logicdata_csv_reader.h"
#include "engine_csv_reader.h"
TEST(real4g93, cranking) {
CsvReader reader(1, /* vvtCount */ 1);
EngineCsvReader reader(1, /* vvtCount */ 1);
reader.open("tests/trigger/resources/4g93-cranking.csv");
EngineTestHelper eth(engine_type_e::TEST_ENGINE);
@ -21,9 +21,6 @@ TEST(real4g93, cranking) {
eth.setTriggerType(trigger_type_e::TT_MITSU_4G63_CRANK);
bool gotRpm = false;
bool gotSync = false;
static const float gapRatios[2][4] = {
{ 0, NAN, INFINITY, 0.89f }, // no sync
{ 0.4f, 3.788f, 0.62f, 1.02f }
@ -37,23 +34,16 @@ TEST(real4g93, cranking) {
TriggerCentral *tc = getTriggerCentral();
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(), 6);
EXPECT_NEAR(rpm, 132.77f, 0.1);
}
reader.assertFirstRpm(133, 6);
auto rpm = Sensor::getOrZero(SensorType::Rpm);
if (!gotSync && tc->triggerState.hasSynchronizedPhase()) {
gotSync = true;
if (!reader.gotSync && tc->triggerState.hasSynchronizedPhase()) {
reader.gotSync = true;
EXPECT_EQ(reader.lineIndex(), 17);
EXPECT_NEAR(rpm, 204.01f, 0.1);
}
// float instantRpm = tc->instantRpm.getInstantRpm();
// not looking too bad horrible printf("rpm=%f instant=%f\n", rpm, instantRpm);
TriggerDecoderBase& vvtDecoder = tc->vvtState[/*bankIndex*/0][/*camIndex*/0];
@ -68,14 +58,14 @@ TEST(real4g93, cranking) {
}
}
ASSERT_TRUE(gotRpm);
ASSERT_TRUE(gotSync);
ASSERT_TRUE(reader.gotRpm);
ASSERT_TRUE(reader.gotSync);
ASSERT_EQ(0, eth.recentWarnings()->getCount());
}
TEST(real4g93, crankingOn11) {
CsvReader reader(2, /* vvtCount */ 0);
EngineCsvReader reader(2, /* vvtCount */ 0);
reader.open("tests/trigger/resources/4g93-cranking.csv");
EngineTestHelper eth(engine_type_e::TEST_ENGINE);
@ -85,26 +75,14 @@ TEST(real4g93, crankingOn11) {
eth.setTriggerType(trigger_type_e::TT_MAZDA_MIATA_NA);
bool gotRpm = false;
while (reader.haveMore()) {
reader.processLine(&eth);
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(), 7);
EXPECT_NEAR(rpm, 168.43f, 0.1);
}
// float instantRpm = engine->triggerCentral.instantRpm.getInstantRpm();
// printf("%d rpm=%f instant=%f\n", reader.lineIndex(), rpm, instantRpm);
reader.assertFirstRpm(168, 7);
}
}
TEST(real4g93, crankingCamOnly) {
CsvReader reader(1, /* vvtCount */ 0);
EngineCsvReader reader(1, /* vvtCount */ 0);
reader.open("tests/trigger/resources/4g93-cranking-cam-only.csv");
EngineTestHelper eth(engine_type_e::TEST_ENGINE);
@ -113,31 +91,28 @@ TEST(real4g93, crankingCamOnly) {
eth.setTriggerType(trigger_type_e::TT_MITSU_4G9x_CAM);
bool gotRpm = false;
bool gotSync = false;
while (reader.haveMore()) {
reader.processLine(&eth);
// Expect that all teeth are in the correct spot
auto rpm = Sensor::getOrZero(SensorType::Rpm);
if (!gotRpm && rpm) {
gotRpm = true;
if (!reader.gotRpm && rpm) {
reader.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(), 17);
EXPECT_NEAR(rpm, 194.61f, 0.1);
}
if (!gotSync && engine->triggerCentral.triggerState.getShaftSynchronized() && engine->triggerCentral.triggerState.hasSynchronizedPhase()) {
gotSync = true;
if (!reader.gotSync && engine->triggerCentral.triggerState.getShaftSynchronized() && engine->triggerCentral.triggerState.hasSynchronizedPhase()) {
reader.gotSync = true;
EXPECT_EQ(reader.lineIndex(), 17);
}
}
ASSERT_TRUE(gotRpm);
ASSERT_TRUE(gotSync);
ASSERT_TRUE(reader.gotRpm);
ASSERT_TRUE(reader.gotSync);
ASSERT_EQ(1, eth.recentWarnings()->getCount());
}

View File

@ -1,61 +1,41 @@
#include "pch.h"
#include "logicdata_csv_reader.h"
#include "engine_csv_reader.h"
TEST(realBQS, realHarleyCranking) {
CsvReader reader(/*triggerCount*/1, /* vvtCount */ 0);
reader.readingOffset = 1;
EngineCsvReader reader(/*triggerCount*/1, /* vvtCount */ 0);
reader.setReadingOffset(1);
reader.open("tests/ignition_injection/resources/hd-req-sync_3.csv");
reader.flipOnRead = true;
reader.setFlipOnRead(true);
EngineTestHelper eth(engine_type_e::ET_BOSCH_QUICK_START);
bool gotRpm = false;
while (reader.haveMore()) {
reader.processLine(&eth);
auto rpm = Sensor::getOrZero(SensorType::Rpm);
if (gotRpm) {
if (reader.gotRpm) {
ASSERT_TRUE(Sensor::get(SensorType::Rpm).Valid);
}
if (!gotRpm && rpm) {
gotRpm = true;
EXPECT_EQ(reader.lineIndex(), 163);
EXPECT_NEAR(rpm, 184, 1);
break;
}
reader.assertFirstRpm(184, 163);
}
ASSERT_TRUE(Sensor::get(SensorType::Rpm).Valid);
}
TEST(realBQS, readAsPrimarySensor) {
CsvReader reader(/*triggerCount*/1, /* vvtCount */ 0);
EngineCsvReader reader(/*triggerCount*/1, /* vvtCount */ 0);
reader.open("tests/trigger/resources/BQS-longer.csv");
reader.flipOnRead = true;
reader.setFlipOnRead(true);
EngineTestHelper eth(engine_type_e::ET_BOSCH_QUICK_START);
bool gotRpm = false;
while (reader.haveMore()) {
reader.processLine(&eth);
auto rpm = Sensor::getOrZero(SensorType::Rpm);
if (!gotRpm && rpm) {
gotRpm = true;
EXPECT_EQ(reader.lineIndex(), 13);
EXPECT_NEAR(rpm, 2035.53466f, 0.1);
break;
}
reader.assertFirstRpm(2036, 13);
}
ASSERT_TRUE(Sensor::get(SensorType::Rpm).Valid);
ASSERT_FLOAT_EQ(Sensor::get(SensorType::Rpm).Value, 2035.53467);
ASSERT_NEAR(Sensor::get(SensorType::Rpm).Value, 1874, 1);
}

View File

@ -22,7 +22,6 @@ TEST(realCas24Plus1, spinningOnBench) {
engineConfiguration->vvtMode[0] = VVT_SINGLE_TOOTH;
eth.setTriggerType(trigger_type_e::TT_12_TOOTH_CRANK);
bool gotRpm = false;
bool gotFullSync = false;
while (reader.haveMore()) {

View File

@ -1,9 +1,9 @@
#include "pch.h"
#include "logicdata_csv_reader.h"
#include "engine_csv_reader.h"
TEST(crankingGm24x_5, gmRealCrankingFromFile) {
CsvReader reader(1, /* vvtCount */ 0);
EngineCsvReader reader(1, /* vvtCount */ 0);
reader.open("tests/trigger/resources/gm_24x_cranking.csv");
EngineTestHelper eth(engine_type_e::TEST_ENGINE);
@ -12,8 +12,6 @@ TEST(crankingGm24x_5, gmRealCrankingFromFile) {
eth.setTriggerType(trigger_type_e::TT_GM_24x_5);
bool gotRpm = false;
while (reader.haveMore()) {
reader.processLine(&eth);
@ -21,14 +19,7 @@ TEST(crankingGm24x_5, gmRealCrankingFromFile) {
float angleError = getTriggerCentral()->triggerToothAngleError;
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 sync point - this means the instant RPM pre-sync event copy all worked OK
EXPECT_EQ(reader.lineIndex(), 23);
EXPECT_NEAR(rpm, 77.0f, 0.1);
}
reader.assertFirstRpm(77, 23);
}
ASSERT_EQ( 0, eth.recentWarnings()->getCount())<< "warningCounter#vwRealCranking";