enhance AcPressureTest #6570

This commit is contained in:
kifir 2024-06-19 21:48:08 +03:00 committed by rusefillc
parent edaa711fba
commit af8f0ab58f
3 changed files with 24 additions and 1 deletions

View File

@ -17,6 +17,7 @@ namespace {
}; };
AcPressureTestConfig::AcPressureTestConfig() { AcPressureTestConfig::AcPressureTestConfig() {
setAcDelay(0.0f);
setMinAcPressure(TEST_MIN_AC_PRESSURE); setMinAcPressure(TEST_MIN_AC_PRESSURE);
setMaxAcPressure(TEST_MAX_AC_PRESSURE); setMaxAcPressure(TEST_MAX_AC_PRESSURE);
} }
@ -38,8 +39,9 @@ namespace {
void AcPressureTest::doTest(const AcPressureTestConfig& config, const std::vector<AcPressureTestData>& testData) { void AcPressureTest::doTest(const AcPressureTestConfig& config, const std::vector<AcPressureTestData>& testData) {
setUpTestConfig(config); setUpTestConfig(config);
engineConfiguration->acDelay = 0;
Sensor::setMockValue(SensorType::Rpm, 500); // to avoid engineTooSlow Sensor::setMockValue(SensorType::Rpm, 500); // to avoid engineTooSlow
engine->engineModules.get<AcController>()->acButtonState = true; engine->engineState.lua.acRequestState = true; // to emulate pressed A/C button
for (const AcPressureTestData& testDataItem: testData) { for (const AcPressureTestData& testDataItem: testData) {
updateAcPressure(testDataItem.acPressure); updateAcPressure(testDataItem.acPressure);
@ -53,10 +55,18 @@ namespace {
engine->engineModules.get<AcController>()->acPressureTooHigh, engine->engineModules.get<AcController>()->acPressureTooHigh,
testDataItem.expectedAcPressureTooHigh testDataItem.expectedAcPressureTooHigh
) << testDataItem.context; ) << testDataItem.context;
const bool shouldAcBeEnabled = !testDataItem.expectedAcPressureTooLow
&& !testDataItem.expectedAcPressureTooHigh;
EXPECT_EQ(engine->engineModules.get<AcController>()->isAcEnabled(), shouldAcBeEnabled)
<< testDataItem.context;
EXPECT_EQ(engine->engineModules.get<AcController>()->acCompressorState, shouldAcBeEnabled)
<< testDataItem.context;
EXPECT_EQ(enginePins.acRelay.getLogicValue(), shouldAcBeEnabled) << testDataItem.context;
} }
} }
void AcPressureTest::checkPersistentIndicators() { void AcPressureTest::checkPersistentIndicators() {
EXPECT_TRUE(engine->engineModules.get<AcController>()->acButtonState);
EXPECT_FALSE(engine->engineModules.get<AcController>()->engineTooSlow); EXPECT_FALSE(engine->engineModules.get<AcController>()->engineTooSlow);
EXPECT_FALSE(engine->engineModules.get<AcController>()->engineTooFast); EXPECT_FALSE(engine->engineModules.get<AcController>()->engineTooFast);
EXPECT_FALSE(engine->engineModules.get<AcController>()->noClt); EXPECT_FALSE(engine->engineModules.get<AcController>()->noClt);

View File

@ -12,10 +12,19 @@ void AcTestBase::updateAcPressure(float acPressure) {
} }
void AcTestBase::setUpTestConfig(const AcTestConfig& config) { void AcTestBase::setUpTestConfig(const AcTestConfig& config) {
configureAcDelay(config.getAcDelay());
configureMinAcPressure(config.getMinAcPressure()); configureMinAcPressure(config.getMinAcPressure());
configureMaxAcPressure(config.getMaxAcPressure()); configureMaxAcPressure(config.getMaxAcPressure());
} }
void AcTestBase::configureAcDelay(const std::optional<float> acDelay) {
if (acDelay.has_value()) {
engineConfiguration->acDelay = acDelay.value();
} else {
ASSERT_EQ(engineConfiguration->acDelay, 0.5); // check default value
}
}
void AcTestBase::configureMinAcPressure(const std::optional<uint16_t> minAcPressure) { void AcTestBase::configureMinAcPressure(const std::optional<uint16_t> minAcPressure) {
if (minAcPressure.has_value()) { if (minAcPressure.has_value()) {
engineConfiguration->minAcPressure = minAcPressure.value(); engineConfiguration->minAcPressure = minAcPressure.value();

View File

@ -8,12 +8,15 @@
class AcTestConfig { class AcTestConfig {
public: public:
std::optional<float> getAcDelay() const { return m_acDelay; }
std::optional<uint16_t> getMinAcPressure() const { return m_minAcPressure; } std::optional<uint16_t> getMinAcPressure() const { return m_minAcPressure; }
std::optional<uint16_t> getMaxAcPressure() const { return m_maxAcPressure; } std::optional<uint16_t> getMaxAcPressure() const { return m_maxAcPressure; }
protected: protected:
void setAcDelay(const std::optional<float> value) { m_acDelay = value; }
void setMinAcPressure(const std::optional<uint16_t> value) { m_minAcPressure = value; } void setMinAcPressure(const std::optional<uint16_t> value) { m_minAcPressure = value; }
void setMaxAcPressure(const std::optional<uint16_t> value) { m_maxAcPressure = value; } void setMaxAcPressure(const std::optional<uint16_t> value) { m_maxAcPressure = value; }
private: private:
std::optional<float> m_acDelay;
std::optional<uint16_t> m_minAcPressure; std::optional<uint16_t> m_minAcPressure;
std::optional<uint16_t> m_maxAcPressure; std::optional<uint16_t> m_maxAcPressure;
}; };
@ -24,6 +27,7 @@ protected:
void setUpTestConfig(const AcTestConfig& config); void setUpTestConfig(const AcTestConfig& config);
private: private:
void configureAcDelay(const std::optional<float> acDelay);
void configureMinAcPressure(const std::optional<uint16_t> minAcPressure); void configureMinAcPressure(const std::optional<uint16_t> minAcPressure);
void configureMaxAcPressure(const std::optional<uint16_t> maxAcPressure); void configureMaxAcPressure(const std::optional<uint16_t> maxAcPressure);
}; };