// // Created by kifir on 11/4/24. // #include "pch.h" #include "test_engine_configuration.h" #include "engine_configuration_defaults.h" TestEngineConfiguration& TestEngineConfiguration::getInstance() { return instance; } void TestEngineConfiguration::configureLaunchControlEnabled(const std::optional launchControlEnabled) { if (launchControlEnabled.has_value()) { engineConfiguration->launchControlEnabled = launchControlEnabled.value(); } else { ASSERT_FALSE(engineConfiguration->launchControlEnabled); // check default value } } void TestEngineConfiguration::configureLaunchActivationMode( const std::optional launchActivationMode ) { if (launchActivationMode.has_value()) { engineConfiguration->launchActivationMode = launchActivationMode.value(); } else { ASSERT_EQ( engineConfiguration->launchActivationMode, engine_configuration_defaults::LAUNCH_ACTIVATION_MODE ); // check default value } } void TestEngineConfiguration::configureLaunchSpeedThreshold(const std::optional launchSpeedThreshold) { if (launchSpeedThreshold.has_value()) { engineConfiguration->launchSpeedThreshold = launchSpeedThreshold.value(); } else { ASSERT_EQ( engineConfiguration->launchSpeedThreshold, engine_configuration_defaults::LAUNCH_SPEED_THRESHOLD ); // check default value } } void TestEngineConfiguration::configureLaunchRpm(const std::optional launchRpm) { if (launchRpm.has_value()) { engineConfiguration->launchRpm = launchRpm.value(); } else { ASSERT_EQ(engineConfiguration->launchRpm, 3000); // check default value } } void TestEngineConfiguration::configureLaunchRpmWindow(const std::optional launchRpmWindow) { if (launchRpmWindow.has_value()) { engineConfiguration->launchRpmWindow = launchRpmWindow.value(); } else { ASSERT_EQ(engineConfiguration->launchRpmWindow, 500); // check default value } } void TestEngineConfiguration::configureLaunchCorrectionsEndRpm(const std::optional launchCorrectionsEndRpm) { if (launchCorrectionsEndRpm.has_value()) { engineConfiguration->launchCorrectionsEndRpm = launchCorrectionsEndRpm.value(); } else { ASSERT_EQ(engineConfiguration->launchCorrectionsEndRpm, 0); // check default value } } void TestEngineConfiguration::configureIgnitionRetardEnable(std::optional ignitionRetardEnable) { if (ignitionRetardEnable.has_value()) { engineConfiguration->enableLaunchRetard = ignitionRetardEnable.value(); } else { ASSERT_FALSE(engineConfiguration->enableLaunchRetard); // check default value } } void TestEngineConfiguration::configureIgnitionRetard(std::optional ignitionRetard) { if (ignitionRetard.has_value()) { engineConfiguration->launchTimingRetard = ignitionRetard.value(); } else { ASSERT_EQ(engineConfiguration->launchTimingRetard, 0); // check default value } } void TestEngineConfiguration::configureSmoothRetardMode(std::optional smoothRetardMode) { if (smoothRetardMode.has_value()) { engineConfiguration->launchSmoothRetard = smoothRetardMode.value(); } else { ASSERT_FALSE(engineConfiguration->launchSmoothRetard); // check default value } } void TestEngineConfiguration::configureEnableIgnitionCut(const std::optional enableIgnitionCut) { if (enableIgnitionCut.has_value()) { engineConfiguration->launchSparkCutEnable = enableIgnitionCut.value(); } else { ASSERT_FALSE(engineConfiguration->launchSparkCutEnable); // check default value } } void TestEngineConfiguration::configureInitialIgnitionCutPercent(const std::optional initialIgnitionCutPercent) { if (initialIgnitionCutPercent.has_value()) { engineConfiguration->initialIgnitionCutPercent = initialIgnitionCutPercent.value(); } else { ASSERT_EQ(engineConfiguration->initialIgnitionCutPercent, 0); // check default value } } void TestEngineConfiguration::configureFinalIgnitionCutPercentBeforeLaunch( const std::optional finalIgnitionCutPercentBeforeLaunch ) { if (finalIgnitionCutPercentBeforeLaunch.has_value()) { engineConfiguration->finalIgnitionCutPercentBeforeLaunch = finalIgnitionCutPercentBeforeLaunch.value(); } else { ASSERT_EQ(engineConfiguration->finalIgnitionCutPercentBeforeLaunch, 0); // check default value } } void TestEngineConfiguration::configureTorqueReductionEnabled(const std::optional torqueReductionEnabled) { if (torqueReductionEnabled.has_value()) { engineConfiguration->torqueReductionEnabled = torqueReductionEnabled.value(); } else { ASSERT_EQ( engineConfiguration->torqueReductionEnabled, engine_configuration_defaults::ENABLE_SHIFT_TORQUE_REDUCTION ); // check default value } } void TestEngineConfiguration::configureTorqueReductionActivationMode( const std::optional activationMode ) { if (activationMode.has_value()) { engineConfiguration->torqueReductionActivationMode = activationMode.value(); } else { ASSERT_EQ( engineConfiguration->torqueReductionActivationMode, engine_configuration_defaults::TORQUE_REDUCTION_ACTIVATION_MODE ); // check default value } } void TestEngineConfiguration::configureTorqueReductionTriggerPin(const std::optional pin) { if (pin.has_value()) { engineConfiguration->torqueReductionTriggerPin = pin.value(); } else { ASSERT_EQ( engineConfiguration->torqueReductionTriggerPin, engine_configuration_defaults::TORQUE_REDUCTION_TRIGGER_PIN ); // check default value } } void TestEngineConfiguration::configureTorqueReductionButtonInverted(const std::optional pinInverted) { if (pinInverted.has_value()) { engineConfiguration->torqueReductionTriggerPinInverted = pinInverted.value(); } else { ASSERT_EQ( engineConfiguration->torqueReductionTriggerPinInverted, engine_configuration_defaults::TORQUE_REDUCTION_TRIGGER_PIN_INVERTED ); // check default value } } void TestEngineConfiguration::configureLaunchActivatePin(const std::optional pin) { if (pin.has_value()) { engineConfiguration->launchActivatePin = pin.value(); } else { ASSERT_EQ( engineConfiguration->launchActivatePin, engine_configuration_defaults::LAUNCH_ACTIVATE_PIN ); // check default value } } void TestEngineConfiguration::configureLaunchActivateInverted(const std::optional pinInverted) { if (pinInverted.has_value()) { engineConfiguration->launchActivateInverted = pinInverted.value(); } else { ASSERT_EQ( engineConfiguration->launchActivateInverted, engine_configuration_defaults::LAUNCH_ACTIVATE_PIN_INVERTED ); // check default value } } void TestEngineConfiguration::configureLimitTorqueReductionTime(std::optional limitTorqueReductionTime) { if (limitTorqueReductionTime.has_value()) { engineConfiguration->limitTorqueReductionTime = limitTorqueReductionTime.value(); } else { ASSERT_EQ( engineConfiguration->limitTorqueReductionTime, engine_configuration_defaults::LIMIT_TORQUE_REDUCTION_TIME ); // check default value } } void TestEngineConfiguration::configureTorqueReductionTime(std::optional timeout) { if (timeout.has_value()) { engineConfiguration->torqueReductionTime = timeout.value(); } else { ASSERT_EQ( engineConfiguration->torqueReductionTime, engine_configuration_defaults::TORQUE_REDUCTION_TIME ); // check default value } } void TestEngineConfiguration::configureTorqueReductionArmingRpm(const std::optional armingRpm) { if (armingRpm.has_value()) { engineConfiguration->torqueReductionArmingRpm = armingRpm.value(); } else { ASSERT_EQ( engineConfiguration->torqueReductionArmingRpm, engine_configuration_defaults::TORQUE_REDUCTION_ARMING_RPM ); // check default value } } void TestEngineConfiguration::configureTorqueReductionArmingApp(const std::optional armingApp) { if (armingApp.has_value()) { engineConfiguration->torqueReductionArmingApp = armingApp.value(); } else { ASSERT_EQ( engineConfiguration->torqueReductionArmingApp, engine_configuration_defaults::TORQUE_REDUCTION_ARMING_APP ); // check default value } } void TestEngineConfiguration::configureTorqueReductionIgnitionCut(const std::optional ignitionCut) { if (ignitionCut.has_value()) { engineConfiguration->torqueReductionIgnitionCut = ignitionCut.value(); } else { ASSERT_EQ( engineConfiguration->torqueReductionIgnitionCut, engine_configuration_defaults::TORQUE_REDUCTION_IGNITION_CUT ); // check default value } } void TestEngineConfiguration::configureTorqueReductionIgnitionRetard(const std::optional ignitionRetard) { if (ignitionRetard.has_value()) { engineConfiguration->torqueReductionIgnitionRetard = ignitionRetard.value(); } else { ASSERT_EQ( engineConfiguration->torqueReductionIgnitionRetard, engine_configuration_defaults::TORQUE_REDUCTION_IGNITION_RETARD ); // check default value } } void TestEngineConfiguration::configureFuelPressureSensorMode( const std::optional fuelPressureSensorMode ) { if (fuelPressureSensorMode.has_value()) { engineConfiguration->fuelPressureSensorMode = fuelPressureSensorMode.value(); } else { ASSERT_EQ( engineConfiguration->fuelPressureSensorMode, engine_configuration_defaults::FUEL_PRESSURE_SENSOR_MODE ); // check default value } } void TestEngineConfiguration::configureInjectorFlowAsMassFlow(const std::optional injectorFlowAsMassFlow) { if (injectorFlowAsMassFlow.has_value()) { engineConfiguration->injectorFlowAsMassFlow = injectorFlowAsMassFlow.value(); } else { ASSERT_EQ( engineConfiguration->injectorFlowAsMassFlow, engine_configuration_defaults::INJECTOR_FLOW_AS_MASS_FLOW ); // check default value } } void TestEngineConfiguration::configureInjectorFlow(const std::optional flow) { if (flow.has_value()) { engineConfiguration->injector.flow = flow.value(); } else { ASSERT_EQ(engineConfiguration->injector.flow, engine_configuration_defaults::INJECTOR_FLOW); // check default value } } void TestEngineConfiguration::configureInjectorBattLagCorr(const std::optional battLagCorr) { if (battLagCorr.has_value()) { std::copy( std::begin(battLagCorr.value()), std::end(battLagCorr.value()), std::begin(engineConfiguration->injector.battLagCorr) ); } else { EXPECT_THAT( engineConfiguration->injector.battLagCorr, testing::ElementsAreArray(engine_configuration_defaults::INJECTOR_BATT_LAG_CURR) ); } } void TestEngineConfiguration::configureFuelReferencePressure(const std::optional fuelReferencePressure) { if (fuelReferencePressure.has_value()) { engineConfiguration->fuelReferencePressure = fuelReferencePressure.value(); } else { ASSERT_EQ( engineConfiguration->fuelReferencePressure, engine_configuration_defaults::FUEL_REFERENCE_PRESSURE ); // check default value } } void TestEngineConfiguration::configureInjectorCompensationMode( const std::optional injectorCompensationMode ) { if (injectorCompensationMode.has_value()) { engineConfiguration->injectorCompensationMode = injectorCompensationMode.value(); } else { ASSERT_EQ( engineConfiguration->injectorCompensationMode, engine_configuration_defaults::INJECTOR_COMPENSATION_MODE ); // check default value } } void TestEngineConfiguration::configureInjectorSecondaryFlow(const std::optional flow) { if (flow.has_value()) { engineConfiguration->injectorSecondary.flow = flow.value(); } else { ASSERT_EQ( engineConfiguration->injectorSecondary.flow, engine_configuration_defaults::INJECTOR_SECONDARY_FLOW ); // check default value } } void TestEngineConfiguration::configureInjectorSecondaryBattLagCorr(const std::optional battLagCorr) { if (battLagCorr.has_value()) { std::copy( std::begin(battLagCorr.value()), std::end(battLagCorr.value()), std::begin(engineConfiguration->injectorSecondary.battLagCorr) ); } else { EXPECT_THAT( engineConfiguration->injectorSecondary.battLagCorr, testing::ElementsAreArray(engine_configuration_defaults::INJECTOR_SECONDARY_BATT_LAG_CURR) ); } } void TestEngineConfiguration::configureSecondaryInjectorFuelReferencePressure( const std::optional secondaryInjectorFuelReferencePressure ) { if (secondaryInjectorFuelReferencePressure.has_value()) { engineConfiguration->secondaryInjectorFuelReferencePressure = secondaryInjectorFuelReferencePressure.value(); } else { ASSERT_EQ( engineConfiguration->secondaryInjectorFuelReferencePressure, engine_configuration_defaults::SECONDARY_INJECTOR_FUEL_REFERENCE_PRESSURE ); // check default value } } void TestEngineConfiguration::configureSecondaryInjectorCompensationMode( const std::optional secondaryInjectorCompensationMode ) { if (secondaryInjectorCompensationMode.has_value()) { engineConfiguration->secondaryInjectorCompensationMode = secondaryInjectorCompensationMode.value(); } else { ASSERT_EQ( engineConfiguration->secondaryInjectorCompensationMode, engine_configuration_defaults::SECONDARY_INJECTOR_COMPENSATION_MODE ); // check default value } } void TestEngineConfiguration::configureEnableStagedInjection(const std::optional isStagedInjectionEnabled) { if (isStagedInjectionEnabled.has_value()) { engineConfiguration->enableStagedInjection = isStagedInjectionEnabled.value(); } else { ASSERT_EQ( engineConfiguration->enableStagedInjection, engine_configuration_defaults::ENABLE_STAGED_INJECTION ); // check default value } } void TestEngineConfiguration::configureNitrousControlEnabled(const std::optional nitrousControlEnabled) { if (nitrousControlEnabled.has_value()) { engineConfiguration->nitrousControlEnabled = nitrousControlEnabled.value(); } else { ASSERT_EQ( engineConfiguration->nitrousControlEnabled, engine_configuration_defaults::NITROUS_CONTROL_ENABLED ); // check default value } } void TestEngineConfiguration::configureNitrousControlArmingMethod( const std::optional armingMethod ) { if (armingMethod.has_value()) { engineConfiguration->nitrousControlArmingMethod = armingMethod.value(); } else { ASSERT_EQ( engineConfiguration->nitrousControlArmingMethod, engine_configuration_defaults::NITROUS_CONTROL_ARMING_METHOD ); // check default value } } void TestEngineConfiguration::configureNitrousControlTriggerPin(const std::optional triggerPin) { if (triggerPin.has_value()) { engineConfiguration->nitrousControlTriggerPin = triggerPin.value(); } else { ASSERT_EQ( engineConfiguration->nitrousControlTriggerPin, engine_configuration_defaults::NITROUS_CONTROL_TRIGGER_PIN ); // check default value } } void TestEngineConfiguration::configureNitrousControlTriggerPinInverted(const std::optional triggerPinInverted) { if (triggerPinInverted.has_value()) { engineConfiguration->nitrousControlTriggerPinInverted = triggerPinInverted.value(); } else { ASSERT_EQ( engineConfiguration->nitrousControlTriggerPinInverted, engine_configuration_defaults::NITROUS_CONTROL_TRIGGER_PIN_INVERTED ); // check default value } } void TestEngineConfiguration::configureNitrousControlTriggerPinMode( const std::optional triggerPinMode ) { if (triggerPinMode.has_value()) { engineConfiguration->nitrousControlTriggerPinMode = triggerPinMode.value(); } else { ASSERT_EQ( engineConfiguration->nitrousControlTriggerPinMode, engine_configuration_defaults::NITROUS_CONTROL_TRIGGER_PIN_MODE ); // check default value } } void TestEngineConfiguration::configureNitrousLuaGauge(const std::optional luaGauge) { if (luaGauge.has_value()) { engineConfiguration->nitrousLuaGauge = luaGauge.value(); } else { ASSERT_EQ( engineConfiguration->nitrousLuaGauge, engine_configuration_defaults::NITROUS_LUA_GAUGE ); // check default value } } void TestEngineConfiguration::configureNitrousLuaGaugeMeaning(const std::optional luaGaugeMeaning) { if (luaGaugeMeaning.has_value()) { engineConfiguration->nitrousLuaGaugeMeaning = luaGaugeMeaning.value(); } else { ASSERT_EQ( engineConfiguration->nitrousLuaGaugeMeaning, engine_configuration_defaults::NITROUS_LUA_GAUGE_MEANING ); // check default value } } void TestEngineConfiguration::configureNitrousLuaGaugeArmingValue(const std::optional luaGaugeArmingValue) { if (luaGaugeArmingValue.has_value()) { engineConfiguration->nitrousLuaGaugeArmingValue = luaGaugeArmingValue.value(); } else { ASSERT_EQ( engineConfiguration->nitrousLuaGaugeArmingValue, engine_configuration_defaults::NITROUS_LUA_GAUGE_ARMING_VALUE ); // check default value } } void TestEngineConfiguration::configureNitrousMinimumVehicleSpeed( const std::optional nitrousMinimumVehicleSpeed ) { if (nitrousMinimumVehicleSpeed.has_value()) { engineConfiguration->nitrousMinimumVehicleSpeed = nitrousMinimumVehicleSpeed.value(); } else { ASSERT_EQ( engineConfiguration->nitrousMinimumVehicleSpeed, engine_configuration_defaults::NITROUS_MINIMUM_VEHICLE_SPEED ); // check default value } } void TestEngineConfiguration::configureNitrousMinimumTps(const std::optional nitrousMinimumTps) { if (nitrousMinimumTps.has_value()) { engineConfiguration->nitrousMinimumTps = nitrousMinimumTps.value(); } else { ASSERT_EQ( engineConfiguration->nitrousMinimumTps, engine_configuration_defaults::NITROUS_MINIMUM_TPS ); // check default value } } void TestEngineConfiguration::configureNitrousMinimumClt(const std::optional nitrousMinimumClt) { if (nitrousMinimumClt.has_value()) { engineConfiguration->nitrousMinimumClt = nitrousMinimumClt.value(); } else { ASSERT_EQ( engineConfiguration->nitrousMinimumClt, engine_configuration_defaults::NITROUS_MINIMUM_CLT ); // check default value } } void TestEngineConfiguration::configureNitrousMaximumMap(const std::optional nitrousMaximumMap) { if (nitrousMaximumMap.has_value()) { engineConfiguration->nitrousMaximumMap = nitrousMaximumMap.value(); } else { ASSERT_EQ( engineConfiguration->nitrousMaximumMap, engine_configuration_defaults::NITROUS_MAXIMUM_MAP ); // check default value } } void TestEngineConfiguration::configureNitrousMaximumAfr(const std::optional nitrousMaximumAfr) { if (nitrousMaximumAfr.has_value()) { engineConfiguration->nitrousMaximumAfr = nitrousMaximumAfr.value(); } else { ASSERT_EQ( engineConfiguration->nitrousMaximumAfr, engine_configuration_defaults::NITROUS_MAXIMUM_AFR ); // check default value } } void TestEngineConfiguration::configureNitrousActivationRpm(const std::optional nitrousActivationRpm) { if (nitrousActivationRpm.has_value()) { engineConfiguration->nitrousActivationRpm = nitrousActivationRpm.value(); } else { ASSERT_EQ( engineConfiguration->nitrousActivationRpm, engine_configuration_defaults::NITROUS_ACTIVATION_RPM ); // check default value } } void TestEngineConfiguration::configureNitrousDeactivationRpm(const std::optional nitrousDeactivationRpm) { if (nitrousDeactivationRpm.has_value()) { engineConfiguration->nitrousDeactivationRpm = nitrousDeactivationRpm.value(); } else { ASSERT_EQ( engineConfiguration->nitrousDeactivationRpm, engine_configuration_defaults::NITROUS_DEACTIVATION_RPM ); // check default value } } void TestEngineConfiguration::configureNitrousDeactivationRpmWindow( const std::optional nitrousDeactivationRpmWindow ) { if (nitrousDeactivationRpmWindow.has_value()) { engineConfiguration->nitrousDeactivationRpmWindow = nitrousDeactivationRpmWindow.value(); } else { ASSERT_EQ( engineConfiguration->nitrousDeactivationRpmWindow, engine_configuration_defaults::NITROUS_DEACTIVATION_RPM_WINDOW ); // check default value } } void TestEngineConfiguration::configureNitrousFuelAdderPercent(const std::optional nitrousFuelAdderPercent) { if (nitrousFuelAdderPercent.has_value()) { engineConfiguration->nitrousFuelAdderPercent = nitrousFuelAdderPercent.value(); } else { ASSERT_EQ( engineConfiguration->nitrousFuelAdderPercent, engine_configuration_defaults::NITROUS_FUEL_ADDER_PERCENT ); // check default value } } void TestEngineConfiguration::configureNitrousIgnitionRetard(const std::optional nitrousIgnitionRetard) { if (nitrousIgnitionRetard.has_value()) { engineConfiguration->nitrousIgnitionRetard = nitrousIgnitionRetard.value(); } else { ASSERT_EQ( engineConfiguration->nitrousIgnitionRetard, engine_configuration_defaults::NITROUS_IGNITION_RETARD ); // check default value } } TestEngineConfiguration::TestEngineConfiguration() { } TestEngineConfiguration TestEngineConfiguration::instance;