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};
|
const int REVERSE_ORDER[2] = {1, 0};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class CsvReader {
|
class CsvReader {
|
||||||
public:
|
public:
|
||||||
CsvReader(size_t triggerCount, size_t vvtCount) : CsvReader(triggerCount, vvtCount, 0.0) {}
|
CsvReader(size_t triggerCount, size_t vvtCount) : CsvReader(triggerCount, vvtCount, 0.0) {}
|
||||||
|
|
|
@ -1,39 +1,28 @@
|
||||||
// file test_hd_cranking.cpp
|
// file test_hd_cranking.cpp
|
||||||
|
|
||||||
#include "pch.h"
|
#include "pch.h"
|
||||||
#include "logicdata_csv_reader.h"
|
#include "engine_csv_reader.h"
|
||||||
|
|
||||||
TEST(harley, crankingSomethingCam) {
|
TEST(harley, hdCrankingWithCam) {
|
||||||
CsvReader reader(1, /* vvtCount */ 1);
|
EngineCsvReader reader(1, /* vvtCount */ 1);
|
||||||
reader.open("tests/ignition_injection/resources/hd-req-sync_3.csv");
|
reader.open("tests/ignition_injection/resources/hd-req-sync_3.csv");
|
||||||
|
|
||||||
EngineTestHelper eth(engine_type_e::HARLEY);
|
EngineTestHelper eth(engine_type_e::HARLEY);
|
||||||
engineConfiguration->vvtMode[0] = VVT_BOSCH_QUICK_START;
|
engineConfiguration->vvtMode[0] = VVT_BOSCH_QUICK_START;
|
||||||
eth.applyTriggerWaveform();
|
eth.applyTriggerWaveform();
|
||||||
|
|
||||||
bool gotRpm = false;
|
|
||||||
bool gotSync = false;
|
|
||||||
bool prevSync = false;
|
|
||||||
|
|
||||||
while (reader.haveMore()) {
|
while (reader.haveMore()) {
|
||||||
reader.processLine(ð);
|
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);
|
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
|
if (!reader.gotSync && engine->triggerCentral.triggerState.hasSynchronizedPhase()) {
|
||||||
EXPECT_EQ(reader.lineIndex(), 60);
|
|
||||||
EXPECT_NEAR(rpm, 184, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!gotSync && engine->triggerCentral.triggerState.hasSynchronizedPhase()) {
|
|
||||||
EXPECT_EQ(reader.lineIndex(), 269);
|
EXPECT_EQ(reader.lineIndex(), 269);
|
||||||
gotSync = true;
|
reader.gotSync = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (gotSync) {
|
if (reader.gotSync) {
|
||||||
// we have loss of sync, interesting!
|
// we have loss of sync, interesting!
|
||||||
// EXPECT_TRUE(engine->triggerCentral.triggerState.hasSynchronizedPhase()) << "Loss " << reader.lineIndex();
|
// EXPECT_TRUE(engine->triggerCentral.triggerState.hasSynchronizedPhase()) << "Loss " << reader.lineIndex();
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,10 +4,10 @@
|
||||||
|
|
||||||
#include "pch.h"
|
#include "pch.h"
|
||||||
|
|
||||||
#include "logicdata_csv_reader.h"
|
#include "engine_csv_reader.h"
|
||||||
|
|
||||||
TEST(realCas24Plus1, spinningOnBench) {
|
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");
|
reader.open("tests/trigger/resources/cas_nissan_24_plus_1.csv");
|
||||||
EngineTestHelper eth(engine_type_e::TEST_ENGINE);
|
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);
|
EXPECT_TRUE(angleError < 3 && angleError > -3) << "tooth angle of " << angleError << " at timestamp " << (getTimeNowNt() / 1e8);
|
||||||
|
|
||||||
auto rpm = Sensor::getOrZero(SensorType::Rpm);
|
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
|
// 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);
|
reader.assertFirstRpm(808, 7);
|
||||||
EXPECT_NEAR(rpm, 808.32f, 0.1);
|
|
||||||
}
|
|
||||||
|
|
||||||
bool hasFullSync = getTriggerCentral()->triggerState.hasSynchronizedPhase();
|
bool hasFullSync = getTriggerCentral()->triggerState.hasSynchronizedPhase();
|
||||||
if (!gotFullSync && hasFullSync) {
|
if (!gotFullSync && hasFullSync) {
|
||||||
|
|
Loading…
Reference in New Issue