implement BoostControl.BoostOpenLoopYAxis test #4778

This commit is contained in:
kifir 2024-05-15 23:40:15 +03:00 committed by rusefillc
parent 6b6f2f5b6e
commit c5a4ca08ef
1 changed files with 159 additions and 0 deletions

View File

@ -68,6 +68,165 @@ TEST(BoostControl, OpenLoop) {
EXPECT_FLOAT_EQ(bc.getOpenLoop(0).value_or(-1), 47.0f);
}
TEST(BoostControl, BoostOpenLoopYAxis)
{
MockVp3d openMap;
// Just pass MAP input to output
EXPECT_CALL(openMap, getValue(_, _))
.WillRepeatedly([](float xRpm, float tps) { return tps; });
EngineTestHelper eth(engine_type_e::TEST_ENGINE);
BoostController bc;
bc.init(nullptr, &openMap, nullptr, nullptr);
constexpr float RPM_TEST_VALUE = 42.0f;
Sensor::setMockValue(SensorType::Rpm, RPM_TEST_VALUE);
constexpr float TPS1_TEST_VALUE = 42.1f;
Sensor::setMockValue(SensorType::Tps1, TPS1_TEST_VALUE);
constexpr float MAP_TEST_VALUE = 42.3f;
Sensor::setMockValue(SensorType::Map, MAP_TEST_VALUE);
constexpr float CLT_TEST_VALUE = 42.4f;
Sensor::setMockValue(SensorType::Clt, CLT_TEST_VALUE);
constexpr float IAT_TEST_VALUE = 42.5f;
Sensor::setMockValue(SensorType::Iat, IAT_TEST_VALUE);
constexpr float LUA_GAUGE1_TEST_VALUE = 42.6f;
Sensor::setMockValue(SensorType::LuaGauge1, LUA_GAUGE1_TEST_VALUE);
constexpr float LUA_GAUGE2_TEST_VALUE = 42.7f;
Sensor::setMockValue(SensorType::LuaGauge2, LUA_GAUGE2_TEST_VALUE);
constexpr float AUX_TEMP1_TEST_VALUE = 42.7f;
Sensor::setMockValue(SensorType::AuxTemp1, AUX_TEMP1_TEST_VALUE);
constexpr float AUX_TEMP2_TEST_VALUE = 42.8f;
Sensor::setMockValue(SensorType::AuxTemp2, AUX_TEMP2_TEST_VALUE);
constexpr float ACCELERATOR_PEDAL_TEST_VALUE = 42.9f;
Sensor::setMockValue(SensorType::AcceleratorPedal, ACCELERATOR_PEDAL_TEST_VALUE);
constexpr float BATTERY_VOLTAGE_TEST_VALUE = 43.0f;
Sensor::setMockValue(SensorType::BatteryVoltage, BATTERY_VOLTAGE_TEST_VALUE);
constexpr float FUEL_ETANOL_PERCENT_TEST_VALUE = 43.1f;
Sensor::setMockValue(SensorType::FuelEthanolPercent, FUEL_ETANOL_PERCENT_TEST_VALUE);
constexpr float AUX_LINEAR1_TEST_VALUE = 43.2f;
Sensor::setMockValue(SensorType::AuxLinear1, AUX_LINEAR1_TEST_VALUE);
constexpr float AUX_LINEAR2_TEST_VALUE = 43.3f;
Sensor::setMockValue(SensorType::AuxLinear2, AUX_LINEAR2_TEST_VALUE);
// need to investigate why the following mocked sensors cause
// ../firmware/controllers/actuators/boost_control.cpp:127:95: runtime error: index 44 out of bounds for type 'scaled_channel [10]'
/*
constexpr float DETECTED_GEAR_TEST_VALUE = 43.4f;
Sensor::setMockValue(SensorType::DetectedGear, DETECTED_GEAR_TEST_VALUE);
constexpr float BAROMETRIC_PRESSURE_TEST_VALUE = 43.5f;
Sensor::setMockValue(SensorType::BarometricPressure, BAROMETRIC_PRESSURE_TEST_VALUE);
constexpr float EGT1_TEST_VALUE = 43.6f;
Sensor::setMockValue(SensorType::EGT1, EGT1_TEST_VALUE);
constexpr float EGT2_TEST_VALUE = 43.7f;
Sensor::setMockValue(SensorType::EGT2, EGT2_TEST_VALUE);
*/
EXPECT_EQ(engineConfiguration->boostOpenLoopYAxis, gppwm_channel_e::GPPWM_Tps); // default value
EXPECT_FLOAT_EQ(bc.getOpenLoop(0).value_or(-1), TPS1_TEST_VALUE);
engineConfiguration->boostOpenLoopYAxis = GPPWM_Zero;
EXPECT_FLOAT_EQ(bc.getOpenLoop(0).value_or(-1), 0.0f);
engineConfiguration->boostOpenLoopYAxis = GPPWM_Rpm;
EXPECT_FLOAT_EQ(bc.getOpenLoop(0).value_or(-1), RPM_TEST_VALUE);
engineConfiguration->boostOpenLoopYAxis = GPPWM_Tps;
EXPECT_FLOAT_EQ(bc.getOpenLoop(0).value_or(-1), TPS1_TEST_VALUE);
engineConfiguration->boostOpenLoopYAxis = GPPWM_Map;
EXPECT_FLOAT_EQ(bc.getOpenLoop(0).value_or(-1), MAP_TEST_VALUE);
engineConfiguration->boostOpenLoopYAxis = GPPWM_Clt;
EXPECT_FLOAT_EQ(bc.getOpenLoop(0).value_or(-1), CLT_TEST_VALUE);
engineConfiguration->boostOpenLoopYAxis = GPPWM_Iat;
EXPECT_FLOAT_EQ(bc.getOpenLoop(0).value_or(-1), IAT_TEST_VALUE);
engineConfiguration->boostOpenLoopYAxis = GPPWM_LuaGauge1;
EXPECT_FLOAT_EQ(bc.getOpenLoop(0).value_or(-1), LUA_GAUGE1_TEST_VALUE);
engineConfiguration->boostOpenLoopYAxis = GPPWM_LuaGauge2;
EXPECT_FLOAT_EQ(bc.getOpenLoop(0).value_or(-1), LUA_GAUGE2_TEST_VALUE);
engineConfiguration->boostOpenLoopYAxis = GPPWM_FuelLoad;
EXPECT_FLOAT_EQ(bc.getOpenLoop(0).value_or(-1), engine->engineState.fuelingLoad);
engineConfiguration->boostOpenLoopYAxis = GPPWM_IgnLoad;
EXPECT_FLOAT_EQ(bc.getOpenLoop(0).value_or(-1), engine->engineState.ignitionLoad);
engineConfiguration->boostOpenLoopYAxis = GPPWM_AuxTemp1;
EXPECT_FLOAT_EQ(bc.getOpenLoop(0).value_or(-1), AUX_TEMP1_TEST_VALUE);
engineConfiguration->boostOpenLoopYAxis = GPPWM_AuxTemp2;
EXPECT_FLOAT_EQ(bc.getOpenLoop(0).value_or(-1), AUX_TEMP2_TEST_VALUE);
engineConfiguration->boostOpenLoopYAxis = GPPWM_AccelPedal;
EXPECT_FLOAT_EQ(bc.getOpenLoop(0).value_or(-1), ACCELERATOR_PEDAL_TEST_VALUE);
engineConfiguration->boostOpenLoopYAxis = GPPWM_Vbatt;
EXPECT_FLOAT_EQ(bc.getOpenLoop(0).value_or(-1), BATTERY_VOLTAGE_TEST_VALUE);
engineConfiguration->boostOpenLoopYAxis = GPPWM_VVT_1I;
EXPECT_FLOAT_EQ(
bc.getOpenLoop(0).value_or(-1),
engine->triggerCentral.getVVTPosition(/*bankIndex*/0, /*camIndex*/0)
);
engineConfiguration->boostOpenLoopYAxis = GPPWM_VVT_1E;
EXPECT_FLOAT_EQ(
bc.getOpenLoop(0).value_or(-1),
engine->triggerCentral.getVVTPosition(/*bankIndex*/0, /*camIndex*/1)
);
engineConfiguration->boostOpenLoopYAxis = GPPWM_VVT_2I;
EXPECT_FLOAT_EQ(
bc.getOpenLoop(0).value_or(-1),
engine->triggerCentral.getVVTPosition(/*bankIndex*/1, /*camIndex*/0)
);
engineConfiguration->boostOpenLoopYAxis = GPPWM_VVT_2E;
EXPECT_FLOAT_EQ(
bc.getOpenLoop(0).value_or(-1),
engine->triggerCentral.getVVTPosition(/*bankIndex*/1, /*camIndex*/1)
);
engineConfiguration->boostOpenLoopYAxis = GPPWM_EthanolPercent;
EXPECT_FLOAT_EQ(bc.getOpenLoop(0).value_or(-1), FUEL_ETANOL_PERCENT_TEST_VALUE);
engineConfiguration->boostOpenLoopYAxis = GPPWM_AuxLinear1;
EXPECT_FLOAT_EQ(bc.getOpenLoop(0).value_or(-1), AUX_LINEAR1_TEST_VALUE);
engineConfiguration->boostOpenLoopYAxis = GPPWM_AuxLinear2;
EXPECT_FLOAT_EQ(bc.getOpenLoop(0).value_or(-1), AUX_LINEAR2_TEST_VALUE);
engineConfiguration->boostOpenLoopYAxis = GPPWM_GppwmOutput1;
EXPECT_FLOAT_EQ(bc.getOpenLoop(0).value_or(-1), (float)engine->outputChannels.gppwmOutput[0]);
engineConfiguration->boostOpenLoopYAxis = GPPWM_GppwmOutput2;
EXPECT_FLOAT_EQ(bc.getOpenLoop(0).value_or(-1), (float)engine->outputChannels.gppwmOutput[1]);
engineConfiguration->boostOpenLoopYAxis = GPPWM_GppwmOutput3;
EXPECT_FLOAT_EQ(bc.getOpenLoop(0).value_or(-1), (float)engine->outputChannels.gppwmOutput[2]);
engineConfiguration->boostOpenLoopYAxis = GPPWM_GppwmOutput4;
EXPECT_FLOAT_EQ(bc.getOpenLoop(0).value_or(-1), (float)engine->outputChannels.gppwmOutput[3]);
/*
engineConfiguration->boostOpenLoopYAxis = GPPWM_DetectedGear;
EXPECT_FLOAT_EQ(bc.getOpenLoop(0).value_or(-1), DETECTED_GEAR_TEST_VALUE);
engineConfiguration->boostOpenLoopYAxis = GPPWM_BaroPressure;
EXPECT_FLOAT_EQ(bc.getOpenLoop(0).value_or(-1), BAROMETRIC_PRESSURE_TEST_VALUE);
engineConfiguration->boostOpenLoopYAxis = GPPWM_Egt1;
EXPECT_FLOAT_EQ(bc.getOpenLoop(0).value_or(-1), EGT1_TEST_VALUE);
engineConfiguration->boostOpenLoopYAxis = GPPWM_Egt2;
EXPECT_FLOAT_EQ(bc.getOpenLoop(0).value_or(-1), EGT2_TEST_VALUE);
*/
}
TEST(BoostControl, TestClosedLoop) {
EngineTestHelper eth(engine_type_e::TEST_ENGINE);