only:refactoring
This commit is contained in:
parent
41040541a8
commit
1155d8e1b7
|
@ -0,0 +1,3 @@
|
|||
|
||||
|
||||
#include "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);
|
||||
}
|
||||
}
|
||||
|
||||
};
|
|
@ -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) {}
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
|
|
@ -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) {
|
||||
|
|
Loading…
Reference in New Issue