logicdata into unit tests

This commit is contained in:
rusefi 2020-07-20 00:36:10 -04:00
parent 517761320e
commit b2edd3a4f4
6 changed files with 58 additions and 2 deletions

View File

@ -55,6 +55,25 @@ int getCompositeRecordCount() {
return NextIdx;
}
#if EFI_UNIT_TEST
#include "logicdata.h"
int copyCompositeEvents(CompositeEvent *events) {
for (int i = 0;i < NextIdx;i++) {
CompositeEvent *event = &events[i];
event->timestamp = buffer[i].timestamp;
event->primaryTrigger = buffer[i].priLevel;
event->secondaryTrigger = buffer[i].secLevel;
event->trg = buffer[i].trigger;
event->sync = buffer[i].sync;
event->coil = buffer[i].coil;
event->injector = buffer[i].injector;
}
return NextIdx;
}
#endif // EFI_UNIT_TEST
static void SetNextCompositeEntry(efitick_t timestamp, bool trigger1, bool trigger2,
bool isTDC DECLARE_ENGINE_PARAMETER_SUFFIX) {
uint32_t nowUs = NT2US(timestamp);

View File

@ -13,6 +13,11 @@
#include "rusefi_enums.h"
#include "engine.h"
#if EFI_UNIT_TEST
#include "logicdata.h"
int copyCompositeEvents(CompositeEvent *events);
#endif // EFI_UNIT_TEST
int getCompositeRecordCount();
void EnableToothLoggerIfNotEnabled();

View File

@ -15,6 +15,8 @@
#include "engine_controller.h"
#include "advance_map.h"
#include "sensor.h"
#include "tooth_logger.h"
#include "logicdata.h"
extern int timeNowUs;
extern WarningCodeState unitTestWarningCodeState;
@ -25,6 +27,7 @@ extern bool printFuelDebug;
EngineTestHelperBase::EngineTestHelperBase() {
// todo: make this not a global variable, we need currentTimeProvider interface on engine
timeNowUs = 0;
EnableToothLogger();
}
EngineTestHelper::EngineTestHelper(engine_type_e engineType, configuration_callback_t boardCallback)
@ -86,6 +89,18 @@ EngineTestHelper::~EngineTestHelper() {
Sensor::resetRegistry();
}
static CompositeEvent compositeEvents[COMPOSITE_PACKET_COUNT];
void EngineTestHelper::writeEvents(const char *fileName) {
int count = copyCompositeEvents(compositeEvents);
if (count < 2) {
printf("Not enough data for %s\n", fileName);
return;
}
printf("Writing %d records to %s\n", count, fileName);
writeFile(fileName, compositeEvents, count);
}
/**
* mock a change of time and fire single RISE front event
*/
@ -98,7 +113,11 @@ void EngineTestHelper::fireRise(float delayMs) {
* fire single RISE front event
*/
void EngineTestHelper::firePrimaryTriggerRise() {
engine.triggerCentral.handleShaftSignal(SHAFT_PRIMARY_RISING, getTimeNowNt(), &engine, engine.engineConfigurationPtr, &persistentConfig);
efitick_t nowNt = getTimeNowNt();
Engine *engine = &this->engine;
EXPAND_Engine;
LogTriggerTooth(SHAFT_PRIMARY_RISING, nowNt PASS_ENGINE_PARAMETER_SUFFIX);
engine->triggerCentral.handleShaftSignal(SHAFT_PRIMARY_RISING, nowNt, engine, engine->engineConfigurationPtr, &persistentConfig);
}
void EngineTestHelper::fireFall(float delayMs) {
@ -107,7 +126,11 @@ void EngineTestHelper::fireFall(float delayMs) {
}
void EngineTestHelper::firePrimaryTriggerFall() {
engine.triggerCentral.handleShaftSignal(SHAFT_PRIMARY_FALLING, getTimeNowNt(), &engine, engine.engineConfigurationPtr, &persistentConfig);
efitick_t nowNt = getTimeNowNt();
Engine *engine = &this->engine;
EXPAND_Engine;
LogTriggerTooth(SHAFT_PRIMARY_FALLING, nowNt PASS_ENGINE_PARAMETER_SUFFIX);
engine->triggerCentral.handleShaftSignal(SHAFT_PRIMARY_FALLING, nowNt, engine, engine->engineConfigurationPtr, &persistentConfig);
}
void EngineTestHelper::fireTriggerEventsWithDuration(float durationMs) {

View File

@ -68,6 +68,8 @@ public:
void moveTimeForwardUs(int deltaTimeUs);
efitimeus_t getTimeNowUs(void);
void writeEvents(const char *fileName);
Engine engine;
persistent_config_s persistentConfig;
};

View File

@ -1,3 +1,7 @@
/**
* @file logicdata_sandbox.cpp
*
*/
#include <cstdio>
#include "logicdata.h"

View File

@ -35,6 +35,9 @@ TEST(fuelControl, transitionIssue1592) {
ASSERT_EQ(IM_SIMULTANEOUS, ENGINE(getCurrentInjectionMode(PASS_ENGINE_PARAMETER_SIGNATURE)));
eth.writeEvents("transitionIssue1592.logicdata");
}