| Line | Branch | Decision | Exec | Source |
|---|---|---|---|---|
| 1 | #include "pch.h" | |||
| 2 | #include "injector_model.h" | |||
| 3 | ||||
| 4 | using ::testing::_; | |||
| 5 | using ::testing::StrictMock; | |||
| 6 | ||||
| 7 | class MockInjectorModel : public InjectorModelBase { | |||
| 8 | public: | |||
| 9 | 8 | MOCK_METHOD(floatms_t, getDeadtime, (), (const, override)); | ||
| 10 | 8 | MOCK_METHOD(float, getBaseFlowRate, (), (const, override)); | ||
| 11 | 8 | MOCK_METHOD(float, getInjectorFlowRatio, (), (override)); | ||
| 12 | ✗ | MOCK_METHOD(void, updateState, (), (override)); | ||
| 13 | ✗ | MOCK_METHOD(expected<float>, getFuelDifferentialPressure, (), (const, override)); | ||
| 14 | ✗ | MOCK_METHOD(expected<float>, getFuelPressure, (), (const, override)); | ||
| 15 | 2 | MOCK_METHOD(float, getSmallPulseFlowRate, (), (const, override)); | ||
| 16 | 2 | MOCK_METHOD(float, getSmallPulseBreakPoint, (), (const, override)); | ||
| 17 | 33 | MOCK_METHOD(InjectorNonlinearMode, getNonlinearMode, (), (const, override)); | ||
| 18 | }; | |||
| 19 | ||||
| 20 | 4 | TEST(InjectorModel, Prepare) { | ||
| 21 |
1/1✓ Branch 2 taken 1 time.
|
1 | StrictMock<MockInjectorModel> dut; | |
| 22 | ||||
| 23 |
3/3✓ Branch 2 taken 1 time.
✓ Branch 6 taken 1 time.
✓ Branch 10 taken 1 time.
|
1 | EXPECT_CALL(dut, getDeadtime()); | |
| 24 |
3/3✓ Branch 2 taken 1 time.
✓ Branch 6 taken 1 time.
✓ Branch 10 taken 1 time.
|
1 | EXPECT_CALL(dut, getBaseFlowRate()); | |
| 25 |
3/3✓ Branch 2 taken 1 time.
✓ Branch 6 taken 1 time.
✓ Branch 10 taken 1 time.
|
1 | EXPECT_CALL(dut, getNonlinearMode()); | |
| 26 |
3/3✓ Branch 2 taken 1 time.
✓ Branch 6 taken 1 time.
✓ Branch 10 taken 1 time.
|
1 | EXPECT_CALL(dut, getInjectorFlowRatio()); | |
| 27 | ||||
| 28 |
1/1✓ Branch 1 taken 1 time.
|
1 | dut.prepare(); | |
| 29 | 2 | } | ||
| 30 | ||||
| 31 | 4 | TEST(InjectorModel, getInjectionDuration) { | ||
| 32 |
1/1✓ Branch 2 taken 1 time.
|
1 | StrictMock<MockInjectorModel> dut; | |
| 33 | ||||
| 34 |
3/3✓ Branch 1 taken 1 time.
✓ Branch 4 taken 1 time.
✓ Branch 8 taken 1 time.
|
3 | EXPECT_CALL(dut, getDeadtime()) | |
| 35 |
3/3✓ Branch 5 taken 1 time.
✓ Branch 8 taken 1 time.
✓ Branch 11 taken 1 time.
|
3 | .WillOnce(Return(2.0f)); | |
| 36 |
3/3✓ Branch 1 taken 1 time.
✓ Branch 4 taken 1 time.
✓ Branch 8 taken 1 time.
|
3 | EXPECT_CALL(dut, getInjectorFlowRatio()) | |
| 37 |
3/3✓ Branch 5 taken 1 time.
✓ Branch 8 taken 1 time.
✓ Branch 11 taken 1 time.
|
3 | .WillOnce(Return(1.0f)); | |
| 38 |
3/3✓ Branch 1 taken 1 time.
✓ Branch 4 taken 1 time.
✓ Branch 8 taken 1 time.
|
3 | EXPECT_CALL(dut, getBaseFlowRate()) | |
| 39 |
3/3✓ Branch 5 taken 1 time.
✓ Branch 8 taken 1 time.
✓ Branch 11 taken 1 time.
|
3 | .WillOnce(Return(4.8f)); // 400cc/min | |
| 40 |
3/3✓ Branch 1 taken 1 time.
✓ Branch 4 taken 1 time.
✓ Branch 8 taken 1 time.
|
3 | EXPECT_CALL(dut, getNonlinearMode()) | |
| 41 |
3/3✓ Branch 5 taken 1 time.
✓ Branch 8 taken 1 time.
✓ Branch 11 taken 1 time.
|
3 | .WillRepeatedly(Return(INJ_None)); | |
| 42 | ||||
| 43 |
1/1✓ Branch 1 taken 1 time.
|
1 | dut.prepare(); | |
| 44 | ||||
| 45 |
3/7✓ Branch 2 taken 1 time.
✓ Branch 5 taken 1 time.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 time.
✗ Branch 12 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
|
1 | EXPECT_NEAR(dut.getInjectionDuration(0.01f), 10 / 4.8f + 2.0f, EPS4D); | |
| 46 |
3/7✓ Branch 2 taken 1 time.
✓ Branch 5 taken 1 time.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 time.
✗ Branch 12 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
|
1 | EXPECT_NEAR(dut.getInjectionDuration(0.02f), 20 / 4.8f + 2.0f, EPS4D); | |
| 47 | 2 | } | ||
| 48 | ||||
| 49 | 4 | TEST(InjectorModel, getInjectionDurationWithFlowRatio) { | ||
| 50 |
1/1✓ Branch 2 taken 1 time.
|
1 | StrictMock<MockInjectorModel> dut; | |
| 51 | ||||
| 52 |
3/3✓ Branch 1 taken 1 time.
✓ Branch 4 taken 1 time.
✓ Branch 8 taken 1 time.
|
3 | EXPECT_CALL(dut, getDeadtime()) | |
| 53 |
3/3✓ Branch 5 taken 1 time.
✓ Branch 8 taken 1 time.
✓ Branch 11 taken 1 time.
|
3 | .WillOnce(Return(2.0f)); | |
| 54 |
3/3✓ Branch 1 taken 1 time.
✓ Branch 4 taken 1 time.
✓ Branch 8 taken 1 time.
|
3 | EXPECT_CALL(dut, getInjectorFlowRatio()) | |
| 55 |
3/3✓ Branch 5 taken 1 time.
✓ Branch 8 taken 1 time.
✓ Branch 11 taken 1 time.
|
3 | .WillOnce(Return(1.1f)); | |
| 56 |
3/3✓ Branch 1 taken 1 time.
✓ Branch 4 taken 1 time.
✓ Branch 8 taken 1 time.
|
3 | EXPECT_CALL(dut, getBaseFlowRate()) | |
| 57 |
3/3✓ Branch 5 taken 1 time.
✓ Branch 8 taken 1 time.
✓ Branch 11 taken 1 time.
|
3 | .WillOnce(Return(4.8f)); // 400cc/min | |
| 58 |
3/3✓ Branch 1 taken 1 time.
✓ Branch 4 taken 1 time.
✓ Branch 8 taken 1 time.
|
3 | EXPECT_CALL(dut, getNonlinearMode()) | |
| 59 |
3/3✓ Branch 5 taken 1 time.
✓ Branch 8 taken 1 time.
✓ Branch 11 taken 1 time.
|
3 | .WillRepeatedly(Return(INJ_None)); | |
| 60 | ||||
| 61 |
1/1✓ Branch 1 taken 1 time.
|
1 | dut.prepare(); | |
| 62 | ||||
| 63 |
3/7✓ Branch 2 taken 1 time.
✓ Branch 5 taken 1 time.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 time.
✗ Branch 12 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
|
1 | EXPECT_NEAR(dut.getInjectionDuration(0.01f), 10 / (4.8f * 1.1f) + 2.0f, EPS4D); | |
| 64 |
3/7✓ Branch 2 taken 1 time.
✓ Branch 5 taken 1 time.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 time.
✗ Branch 12 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
|
1 | EXPECT_NEAR(dut.getInjectionDuration(0.02f), 20 / (4.8f * 1.1f) + 2.0f, EPS4D); | |
| 65 | 2 | } | ||
| 66 | ||||
| 67 | 4 | TEST(InjectorModel, getInjectionDurationWithHPFPManualCompensation) { | ||
| 68 | #if (VBAT_INJECTOR_CURVE_PRESSURE_SIZE == 2) && (VBAT_INJECTOR_CURVE_SIZE == 8) | |||
| 69 |
1/1✓ Branch 2 taken 1 time.
|
1 | EngineTestHelper eth(engine_type_e::TEST_ENGINE); | |
| 70 |
1/1✓ Branch 2 taken 1 time.
|
1 | InjectorModelPrimary dut; | |
| 71 | static const auto HPFPMockedMassCompensation = 2; | |||
| 72 | ||||
| 73 | 1 | setTable(config->hpfpFuelMassCompensation, HPFPMockedMassCompensation); | ||
| 74 | 1 | engineConfiguration->injectorCompensationMode = ICM_HPFP_Manual_Compensation; | ||
| 75 | ||||
| 76 |
1/1✓ Branch 1 taken 1 time.
|
1 | dut.prepare(); | |
| 77 | ||||
| 78 |
3/7✓ Branch 2 taken 1 time.
✓ Branch 5 taken 1 time.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 time.
✗ Branch 12 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
|
1 | EXPECT_NEAR(dut.getInjectionDuration(0.01f), (10 * HPFPMockedMassCompensation) / (4.8f * 1.1 ) + 2.0f, EPS0D); | |
| 79 |
3/7✓ Branch 2 taken 1 time.
✓ Branch 5 taken 1 time.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 time.
✗ Branch 12 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
|
1 | EXPECT_NEAR(dut.getInjectionDuration(0.02f), (20 * HPFPMockedMassCompensation) / (4.8f * 1.1 ) + 2.0f, EPS0D); | |
| 80 | #endif // (VBAT_INJECTOR_CURVE_PRESSURE_SIZE == 2) && (VBAT_INJECTOR_CURVE_SIZE == 8) | |||
| 81 | 2 | } | ||
| 82 | ||||
| 83 | 4 | TEST(InjectorModel, nonLinearFordMode) { | ||
| 84 |
1/1✓ Branch 2 taken 1 time.
|
1 | StrictMock<MockInjectorModel> dut; | |
| 85 | ||||
| 86 |
3/3✓ Branch 1 taken 1 time.
✓ Branch 4 taken 1 time.
✓ Branch 8 taken 1 time.
|
3 | EXPECT_CALL(dut, getDeadtime()) | |
| 87 |
3/3✓ Branch 5 taken 1 time.
✓ Branch 8 taken 1 time.
✓ Branch 11 taken 1 time.
|
3 | .WillOnce(Return(0)); | |
| 88 |
3/3✓ Branch 1 taken 1 time.
✓ Branch 4 taken 1 time.
✓ Branch 8 taken 1 time.
|
3 | EXPECT_CALL(dut, getInjectorFlowRatio()) | |
| 89 |
3/3✓ Branch 5 taken 1 time.
✓ Branch 8 taken 1 time.
✓ Branch 11 taken 1 time.
|
3 | .WillOnce(Return(1.0f)); | |
| 90 | ||||
| 91 | // 2005 F150 injectors | |||
| 92 |
3/3✓ Branch 1 taken 1 time.
✓ Branch 4 taken 1 time.
✓ Branch 8 taken 1 time.
|
3 | EXPECT_CALL(dut, getBaseFlowRate()) | |
| 93 |
3/3✓ Branch 5 taken 1 time.
✓ Branch 8 taken 1 time.
✓ Branch 11 taken 1 time.
|
3 | .WillRepeatedly(Return(2.979f)); | |
| 94 |
3/3✓ Branch 1 taken 1 time.
✓ Branch 4 taken 1 time.
✓ Branch 8 taken 1 time.
|
3 | EXPECT_CALL(dut, getSmallPulseFlowRate()) | |
| 95 |
3/3✓ Branch 5 taken 1 time.
✓ Branch 8 taken 1 time.
✓ Branch 11 taken 1 time.
|
3 | .WillRepeatedly(Return(3.562f)); | |
| 96 |
3/3✓ Branch 1 taken 1 time.
✓ Branch 4 taken 1 time.
✓ Branch 8 taken 1 time.
|
3 | EXPECT_CALL(dut, getSmallPulseBreakPoint()) | |
| 97 |
3/3✓ Branch 5 taken 1 time.
✓ Branch 8 taken 1 time.
✓ Branch 11 taken 1 time.
|
3 | .WillRepeatedly(Return(0.00627f)); | |
| 98 |
3/3✓ Branch 1 taken 1 time.
✓ Branch 4 taken 1 time.
✓ Branch 8 taken 1 time.
|
3 | EXPECT_CALL(dut, getNonlinearMode()) | |
| 99 |
3/3✓ Branch 5 taken 1 time.
✓ Branch 8 taken 1 time.
✓ Branch 11 taken 1 time.
|
3 | .WillRepeatedly(Return(INJ_FordModel)); | |
| 100 | ||||
| 101 |
1/1✓ Branch 1 taken 1 time.
|
1 | dut.prepare(); | |
| 102 | ||||
| 103 |
3/7✓ Branch 2 taken 1 time.
✓ Branch 5 taken 1 time.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 time.
✗ Branch 12 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
|
1 | EXPECT_NEAR(dut.getBaseDurationImpl(0.000f), 0.344f, 1e-3); | |
| 104 |
3/7✓ Branch 2 taken 1 time.
✓ Branch 5 taken 1 time.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 time.
✗ Branch 12 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
|
1 | EXPECT_NEAR(dut.getBaseDurationImpl(0.001f), 0.625f, 1e-3); | |
| 105 |
3/7✓ Branch 2 taken 1 time.
✓ Branch 5 taken 1 time.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 time.
✗ Branch 12 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
|
1 | EXPECT_NEAR(dut.getBaseDurationImpl(0.002f), 0.906f, 1e-3); | |
| 106 |
3/7✓ Branch 2 taken 1 time.
✓ Branch 5 taken 1 time.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 time.
✗ Branch 12 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
|
1 | EXPECT_NEAR(dut.getBaseDurationImpl(0.003f), 1.187f, 1e-3); | |
| 107 |
3/7✓ Branch 2 taken 1 time.
✓ Branch 5 taken 1 time.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 time.
✗ Branch 12 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
|
1 | EXPECT_NEAR(dut.getBaseDurationImpl(0.004f), 1.467f, 1e-3); | |
| 108 |
3/7✓ Branch 2 taken 1 time.
✓ Branch 5 taken 1 time.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 time.
✗ Branch 12 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
|
1 | EXPECT_NEAR(dut.getBaseDurationImpl(0.005f), 1.748f, 1e-3); | |
| 109 |
3/7✓ Branch 2 taken 1 time.
✓ Branch 5 taken 1 time.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 time.
✗ Branch 12 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
|
1 | EXPECT_NEAR(dut.getBaseDurationImpl(0.006f), 2.029f, 1e-3); | |
| 110 |
3/7✓ Branch 2 taken 1 time.
✓ Branch 5 taken 1 time.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 time.
✗ Branch 12 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
|
1 | EXPECT_NEAR(dut.getBaseDurationImpl(0.007f), 2.350f, 1e-3); | |
| 111 |
3/7✓ Branch 2 taken 1 time.
✓ Branch 5 taken 1 time.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 time.
✗ Branch 12 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
|
1 | EXPECT_NEAR(dut.getBaseDurationImpl(0.008f), 2.685f, 1e-3); | |
| 112 |
3/7✓ Branch 2 taken 1 time.
✓ Branch 5 taken 1 time.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 time.
✗ Branch 12 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
|
1 | EXPECT_NEAR(dut.getBaseDurationImpl(0.009f), 3.021f, 1e-3); | |
| 113 |
3/7✓ Branch 2 taken 1 time.
✓ Branch 5 taken 1 time.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 time.
✗ Branch 12 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
|
1 | EXPECT_NEAR(dut.getBaseDurationImpl(0.010f), 3.357f, 1e-3); | |
| 114 |
3/7✓ Branch 2 taken 1 time.
✓ Branch 5 taken 1 time.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 time.
✗ Branch 12 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
|
1 | EXPECT_NEAR(dut.getBaseDurationImpl(0.011f), 3.693f, 1e-3); | |
| 115 |
3/7✓ Branch 2 taken 1 time.
✓ Branch 5 taken 1 time.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 time.
✗ Branch 12 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
|
1 | EXPECT_NEAR(dut.getBaseDurationImpl(0.012f), 4.028f, 1e-3); | |
| 116 |
3/7✓ Branch 2 taken 1 time.
✓ Branch 5 taken 1 time.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 time.
✗ Branch 12 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
|
1 | EXPECT_NEAR(dut.getBaseDurationImpl(0.013f), 4.364f, 1e-3); | |
| 117 |
3/7✓ Branch 2 taken 1 time.
✓ Branch 5 taken 1 time.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 time.
✗ Branch 12 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
|
1 | EXPECT_NEAR(dut.getBaseDurationImpl(0.014f), 4.700f, 1e-3); | |
| 118 |
3/7✓ Branch 2 taken 1 time.
✓ Branch 5 taken 1 time.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 time.
✗ Branch 12 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
|
1 | EXPECT_NEAR(dut.getBaseDurationImpl(0.015f), 5.035f, 1e-3); | |
| 119 |
3/7✓ Branch 2 taken 1 time.
✓ Branch 5 taken 1 time.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 time.
✗ Branch 12 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
|
1 | EXPECT_NEAR(dut.getBaseDurationImpl(0.016f), 5.371f, 1e-3); | |
| 120 |
3/7✓ Branch 2 taken 1 time.
✓ Branch 5 taken 1 time.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 time.
✗ Branch 12 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
|
1 | EXPECT_NEAR(dut.getBaseDurationImpl(0.017f), 5.707f, 1e-3); | |
| 121 |
3/7✓ Branch 2 taken 1 time.
✓ Branch 5 taken 1 time.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 time.
✗ Branch 12 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
|
1 | EXPECT_NEAR(dut.getBaseDurationImpl(0.018f), 6.042f, 1e-3); | |
| 122 |
3/7✓ Branch 2 taken 1 time.
✓ Branch 5 taken 1 time.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 time.
✗ Branch 12 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
|
1 | EXPECT_NEAR(dut.getBaseDurationImpl(0.019f), 6.378f, 1e-3); | |
| 123 |
3/7✓ Branch 2 taken 1 time.
✓ Branch 5 taken 1 time.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 time.
✗ Branch 12 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
|
1 | EXPECT_NEAR(dut.getBaseDurationImpl(0.020f), 6.714f, 1e-3); | |
| 124 | 2 | } | ||
| 125 | ||||
| 126 | 4 | TEST(InjectorModel, nonlinearPolynomial) { | ||
| 127 |
1/1✓ Branch 2 taken 1 time.
|
1 | EngineTestHelper eth(engine_type_e::TEST_ENGINE); | |
| 128 |
1/1✓ Branch 2 taken 1 time.
|
1 | InjectorModelPrimary dut; | |
| 129 | ||||
| 130 | 1 | engineConfiguration->applyNonlinearBelowPulse = 10; | ||
| 131 | ||||
| 132 |
2/2✓ Branch 0 taken 8 times.
✓ Branch 1 taken 1 time.
|
2/2✓ Decision 'true' taken 8 times.
✓ Decision 'false' taken 1 time.
|
9 | for (int i = 0; i < 8; i++) { |
| 133 | 8 | engineConfiguration->injectorCorrectionPolynomial[i] = i + 1; | ||
| 134 | } | |||
| 135 | ||||
| 136 | // expect return of the original value, plus polynomial f(x) | |||
| 137 |
3/7✓ Branch 2 taken 1 time.
✓ Branch 5 taken 1 time.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 time.
✗ Branch 12 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
|
1 | EXPECT_NEAR(dut.correctInjectionPolynomial(-3), -3 + -13532, EPS4D); | |
| 138 |
3/7✓ Branch 2 taken 1 time.
✓ Branch 5 taken 1 time.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 time.
✗ Branch 12 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
|
1 | EXPECT_NEAR(dut.correctInjectionPolynomial(-2), -2 + -711, EPS4D); | |
| 139 |
3/7✓ Branch 2 taken 1 time.
✓ Branch 5 taken 1 time.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 time.
✗ Branch 12 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
|
1 | EXPECT_NEAR(dut.correctInjectionPolynomial(-1), -1 + -4, EPS4D); | |
| 140 |
3/7✓ Branch 2 taken 1 time.
✓ Branch 5 taken 1 time.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 time.
✗ Branch 12 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
|
1 | EXPECT_NEAR(dut.correctInjectionPolynomial(0), 0 + 1, EPS4D); | |
| 141 |
3/7✓ Branch 2 taken 1 time.
✓ Branch 5 taken 1 time.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 time.
✗ Branch 12 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
|
1 | EXPECT_NEAR(dut.correctInjectionPolynomial(1), 1 + 36, EPS4D); | |
| 142 |
3/7✓ Branch 2 taken 1 time.
✓ Branch 5 taken 1 time.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 time.
✗ Branch 12 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
|
1 | EXPECT_NEAR(dut.correctInjectionPolynomial(2), 2 + 1793, EPS4D); | |
| 143 |
3/7✓ Branch 2 taken 1 time.
✓ Branch 5 taken 1 time.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 time.
✗ Branch 12 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
|
1 | EXPECT_NEAR(dut.correctInjectionPolynomial(3), 3 + 24604, EPS4D); | |
| 144 | ||||
| 145 | // Check that the disable threshold works | |||
| 146 |
3/7✓ Branch 4 taken 1 time.
✓ Branch 7 taken 1 time.
✗ Branch 12 not taken.
✓ Branch 13 taken 1 time.
✗ Branch 16 not taken.
✗ Branch 21 not taken.
✗ Branch 24 not taken.
|
1 | EXPECT_NE(dut.correctInjectionPolynomial(9.9f), 9.9f); | |
| 147 |
3/7✓ Branch 4 taken 1 time.
✓ Branch 7 taken 1 time.
✗ Branch 12 not taken.
✓ Branch 13 taken 1 time.
✗ Branch 16 not taken.
✗ Branch 21 not taken.
✗ Branch 24 not taken.
|
1 | EXPECT_EQ(dut.correctInjectionPolynomial(10.1f), 10.1f); | |
| 148 | 2 | } | ||
| 149 | ||||
| 150 | ||||
| 151 | #if (VBAT_INJECTOR_CURVE_PRESSURE_SIZE == 2) && (VBAT_INJECTOR_CURVE_SIZE == 8) | |||
| 152 | 4 | TEST(InjectorModel, Deadtime) { | ||
| 153 |
1/1✓ Branch 2 taken 1 time.
|
1 | EngineTestHelper eth(engine_type_e::TEST_ENGINE); | |
| 154 | ||||
| 155 | // Some test data in the injector correction table | |||
| 156 | static const float injectorLagPressureBins[VBAT_INJECTOR_CURVE_PRESSURE_SIZE] = { 300, 600 }; | |||
| 157 | static const float injectorLagVbattBins[VBAT_INJECTOR_CURVE_SIZE] = { 6.0, 8.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0 }; | |||
| 158 | static const float injectorLagCorrection[VBAT_INJECTOR_CURVE_PRESSURE_SIZE][VBAT_INJECTOR_CURVE_SIZE] = { | |||
| 159 | { 3.371, 1.974, 1.383, 1.194, 1.040, 0.914, 0.767, 0.726 }, | |||
| 160 | { 3.371, 1.974, 1.383, 1.194, 1.040, 0.914, 0.767, 0.726 }, | |||
| 161 | }; | |||
| 162 | ||||
| 163 | 1 | copyArray(engineConfiguration->injector.battLagCorrBattBins, injectorLagVbattBins); | ||
| 164 |
1/1✓ Branch 1 taken 1 time.
|
1 | copyArray(engineConfiguration->injector.battLagCorrPressBins, injectorLagPressureBins); | |
| 165 | 1 | copyTable(engineConfiguration->injector.battLagCorrTable, injectorLagCorrection); | ||
| 166 | ||||
| 167 |
1/1✓ Branch 2 taken 1 time.
|
1 | InjectorModelPrimary dut; | |
| 168 | 1 | dut.pressureCorrectionReference = 300; | ||
| 169 | ||||
| 170 |
1/1✓ Branch 1 taken 1 time.
|
1 | Sensor::setMockValue(SensorType::BatteryVoltage, 11); | |
| 171 |
3/7✓ Branch 2 taken 1 time.
✓ Branch 5 taken 1 time.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 time.
✗ Branch 12 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
|
1 | EXPECT_NEAR(dut.getDeadtime(), 1.18, EPS2D); | |
| 172 | ||||
| 173 |
1/1✓ Branch 1 taken 1 time.
|
1 | Sensor::setMockValue(SensorType::BatteryVoltage, 15); | |
| 174 |
3/7✓ Branch 2 taken 1 time.
✓ Branch 5 taken 1 time.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 time.
✗ Branch 12 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
|
1 | EXPECT_NEAR(dut.getDeadtime(), 0.72, EPS2D); | |
| 175 | 2 | } | ||
| 176 | #endif //(VBAT_INJECTOR_CURVE_PRESSURE_SIZE == 2) && (VBAT_INJECTOR_CURVE_SIZE == 8) | |||
| 177 | ||||
| 178 | struct TesterGetFlowRate : public InjectorModelPrimary { | |||
| 179 | MOCK_METHOD(float, getInjectorFlowRatio, (), (override)); | |||
| 180 | }; | |||
| 181 | ||||
| 182 | struct TesterGetRailPressure : public InjectorModelPrimary { | |||
| 183 | 12 | MOCK_METHOD(expected<float>, getFuelDifferentialPressure, (), (const, override)); | ||
| 184 | }; | |||
| 185 | ||||
| 186 | class FlowRateFixture : public ::testing::TestWithParam<float> { | |||
| 187 | }; | |||
| 188 | ||||
| 189 |
3/6gtest_InjectorModelFlowRateFixture_EvalGenerateName_(testing::TestParamInfo<float> const&):
✗ Branch 1 not taken.
✓ Branch 2 taken 5 times.
✗ Branch 6 not taken.
✗ Branch 9 not taken.
gtest_InjectorModelFlowRateFixture_EvalGenerator_():
✓ Branch 2 taken 1 time.
✓ Branch 5 taken 1 time.
|
7 | INSTANTIATE_TEST_SUITE_P( | |
| 190 | InjectorModel, | |||
| 191 | FlowRateFixture, | |||
| 192 | ::testing::Values(0.1f, 0.5f, 1.0f, 2.0f, 10.0f) | |||
| 193 | ); | |||
| 194 | ||||
| 195 |
6/8✓ Branch 6 taken 1 time.
✓ Branch 12 taken 1 time.
✓ Branch 15 taken 1 time.
✓ Branch 21 taken 1 time.
✓ Branch 25 taken 1 time.
✓ Branch 29 taken 1 time.
✗ Branch 44 not taken.
✗ Branch 45 not taken.
|
17 | TEST_P(FlowRateFixture, PressureRatio) { | |
| 196 |
1/1✓ Branch 2 taken 5 times.
|
5 | EngineTestHelper eth(engine_type_e::TEST_ENGINE); | |
| 197 | ||||
| 198 |
1/1✓ Branch 1 taken 5 times.
|
5 | float pressureRatio = GetParam(); | |
| 199 | // Flow ratio should be the sqrt of pressure ratio | |||
| 200 | 5 | float expectedFlowRatio = sqrtf(pressureRatio); | ||
| 201 | ||||
| 202 |
1/1✓ Branch 2 taken 5 times.
|
5 | StrictMock<TesterGetRailPressure> dut; | |
| 203 |
6/6✓ Branch 2 taken 5 times.
✓ Branch 6 taken 5 times.
✓ Branch 10 taken 5 times.
✓ Branch 15 taken 5 times.
✓ Branch 18 taken 5 times.
✓ Branch 21 taken 5 times.
|
5 | EXPECT_CALL(dut, getFuelDifferentialPressure()).WillOnce(Return(400 * pressureRatio)); | |
| 204 | ||||
| 205 | // Use injector compensation | |||
| 206 | 5 | engineConfiguration->injectorCompensationMode = ICM_SensedRailPressure; | ||
| 207 | ||||
| 208 | // Reference pressure is 400kPa | |||
| 209 | 5 | engineConfiguration->fuelReferencePressure = 400.0f; | ||
| 210 | ||||
| 211 | // Should return the expected ratio | |||
| 212 |
3/7✓ Branch 2 taken 5 times.
✓ Branch 5 taken 5 times.
✗ Branch 8 not taken.
✓ Branch 9 taken 5 times.
✗ Branch 12 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
|
5 | EXPECT_FLOAT_EQ(expectedFlowRatio, dut.getInjectorFlowRatio()); | |
| 213 | 10 | } | ||
| 214 | ||||
| 215 | 4 | TEST(InjectorModel, NegativePressureDelta) { | ||
| 216 |
1/1✓ Branch 2 taken 1 time.
|
1 | EngineTestHelper eth(engine_type_e::TEST_ENGINE); | |
| 217 | ||||
| 218 |
1/1✓ Branch 2 taken 1 time.
|
1 | StrictMock<TesterGetRailPressure> dut; | |
| 219 | ||||
| 220 | // Use injector compensation | |||
| 221 | 1 | engineConfiguration->injectorCompensationMode = ICM_SensedRailPressure; | ||
| 222 | ||||
| 223 | // Reference pressure is 400kPa | |||
| 224 | 1 | engineConfiguration->fuelReferencePressure = 400.0f; | ||
| 225 | ||||
| 226 |
6/6✓ Branch 2 taken 1 time.
✓ Branch 6 taken 1 time.
✓ Branch 10 taken 1 time.
✓ Branch 15 taken 1 time.
✓ Branch 18 taken 1 time.
✓ Branch 21 taken 1 time.
|
1 | EXPECT_CALL(dut, getFuelDifferentialPressure()).WillOnce(Return(-50)); | |
| 227 | ||||
| 228 | // Flow ratio defaults to 1.0 in this case | |||
| 229 |
3/7✓ Branch 2 taken 1 time.
✓ Branch 5 taken 1 time.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 time.
✗ Branch 12 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
|
1 | EXPECT_FLOAT_EQ(1.0f, dut.getInjectorFlowRatio()); | |
| 230 | 2 | } | ||
| 231 | ||||
| 232 | 4 | TEST(InjectorModel, VariableInjectorFlowModeNone) { | ||
| 233 |
1/1✓ Branch 2 taken 1 time.
|
1 | EngineTestHelper eth(engine_type_e::TEST_ENGINE); | |
| 234 | ||||
| 235 |
1/1✓ Branch 2 taken 1 time.
|
1 | StrictMock<TesterGetRailPressure> dut; | |
| 236 | ||||
| 237 | 1 | engineConfiguration->injectorCompensationMode = ICM_None; | ||
| 238 | ||||
| 239 | // This shoudn't call getFuelDifferentialPressure, it should just return 1.0 | |||
| 240 |
3/7✓ Branch 2 taken 1 time.
✓ Branch 5 taken 1 time.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 time.
✗ Branch 12 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
|
1 | EXPECT_FLOAT_EQ(1, dut.getInjectorFlowRatio()); | |
| 241 | 2 | } | ||
| 242 | ||||
| 243 | 4 | TEST(InjectorModel, HPFPManualCompensation) { | ||
| 244 |
1/1✓ Branch 2 taken 1 time.
|
1 | EngineTestHelper eth(engine_type_e::TEST_ENGINE); | |
| 245 | ||||
| 246 |
1/1✓ Branch 2 taken 1 time.
|
1 | InjectorModelPrimary dut; | |
| 247 | ||||
| 248 | // Use injector compensation | |||
| 249 | 1 | engineConfiguration->injectorCompensationMode = ICM_HPFP_Manual_Compensation; | ||
| 250 | ||||
| 251 | // Reference pressure is 400kPa | |||
| 252 | 1 | engineConfiguration->fuelReferencePressure = 400.0f; | ||
| 253 | ||||
| 254 | // Flow ratio defaults to 1.0 in this case | |||
| 255 |
3/7✓ Branch 2 taken 1 time.
✓ Branch 5 taken 1 time.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 time.
✗ Branch 12 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
|
1 | EXPECT_FLOAT_EQ(1.0f, dut.getInjectorFlowRatio()); | |
| 256 | 2 | } | ||
| 257 | ||||
| 258 | 4 | TEST(InjectorModel, RailPressureFixed) { | ||
| 259 |
1/1✓ Branch 2 taken 1 time.
|
1 | EngineTestHelper eth(engine_type_e::TEST_ENGINE); | |
| 260 | ||||
| 261 |
1/1✓ Branch 2 taken 1 time.
|
1 | InjectorModelPrimary dut; | |
| 262 | ||||
| 263 | // Reference pressure is 350kpa | |||
| 264 | 1 | engineConfiguration->fuelReferencePressure = 350; | ||
| 265 | 1 | engineConfiguration->injectorCompensationMode = ICM_FixedRailPressure; | ||
| 266 | ||||
| 267 | // MAP is 75kPa | |||
| 268 |
1/1✓ Branch 1 taken 1 time.
|
1 | Sensor::setMockValue(SensorType::Map, 75); | |
| 269 | ||||
| 270 | // Baro is 100kpa | |||
| 271 |
1/1✓ Branch 1 taken 1 time.
|
1 | Sensor::setMockValue(SensorType::BarometricPressure, 100); | |
| 272 | ||||
| 273 | // Should be reference pressure + 1 atm - 75kpa -> 375kPa | |||
| 274 |
3/7✓ Branch 3 taken 1 time.
✓ Branch 7 taken 1 time.
✗ Branch 11 not taken.
✓ Branch 12 taken 1 time.
✗ Branch 15 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_FLOAT_EQ(375.0f, dut.getFuelDifferentialPressure().value_or(0)); | |
| 275 | 2 | } | ||
| 276 | ||||
| 277 | 4 | TEST(InjectorModel, RailPressureSensedAbsolute) { | ||
| 278 |
1/1✓ Branch 2 taken 1 time.
|
1 | EngineTestHelper eth(engine_type_e::TEST_ENGINE); | |
| 279 | ||||
| 280 |
1/1✓ Branch 2 taken 1 time.
|
1 | InjectorModelPrimary dut; | |
| 281 | ||||
| 282 | // Reference pressure is 350kpa | |||
| 283 | 1 | engineConfiguration->injectorCompensationMode = ICM_SensedRailPressure; | ||
| 284 | 1 | engineConfiguration->fuelPressureSensorMode = FPM_Absolute; | ||
| 285 | ||||
| 286 |
1/1✓ Branch 1 taken 1 time.
|
1 | Sensor::setMockValue(SensorType::Map, 50); | |
| 287 | ||||
| 288 | // Should just return rail sensor value - MAP | |||
| 289 |
1/1✓ Branch 1 taken 1 time.
|
1 | Sensor::setMockValue(SensorType::FuelPressureInjector, 100); | |
| 290 |
3/7✓ Branch 3 taken 1 time.
✓ Branch 7 taken 1 time.
✗ Branch 11 not taken.
✓ Branch 12 taken 1 time.
✗ Branch 15 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_FLOAT_EQ(100 - 50, dut.getFuelDifferentialPressure().value_or(-1)); | |
| 291 |
1/1✓ Branch 1 taken 1 time.
|
1 | Sensor::setMockValue(SensorType::FuelPressureInjector, 200); | |
| 292 |
3/7✓ Branch 3 taken 1 time.
✓ Branch 7 taken 1 time.
✗ Branch 11 not taken.
✓ Branch 12 taken 1 time.
✗ Branch 15 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_FLOAT_EQ(200 - 50, dut.getFuelDifferentialPressure().value_or(-1)); | |
| 293 |
1/1✓ Branch 1 taken 1 time.
|
1 | Sensor::setMockValue(SensorType::FuelPressureInjector, 300); | |
| 294 |
3/7✓ Branch 3 taken 1 time.
✓ Branch 7 taken 1 time.
✗ Branch 11 not taken.
✓ Branch 12 taken 1 time.
✗ Branch 15 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_FLOAT_EQ(300 - 50, dut.getFuelDifferentialPressure().value_or(-1)); | |
| 295 | 2 | } | ||
| 296 | ||||
| 297 | 4 | TEST(InjectorModel, RailPressureSensedGauge) { | ||
| 298 |
1/1✓ Branch 2 taken 1 time.
|
1 | EngineTestHelper eth(engine_type_e::TEST_ENGINE); | |
| 299 | ||||
| 300 |
1/1✓ Branch 2 taken 1 time.
|
1 | InjectorModelPrimary dut; | |
| 301 | ||||
| 302 | // Reference pressure is 350kpa | |||
| 303 | 1 | engineConfiguration->injectorCompensationMode = ICM_SensedRailPressure; | ||
| 304 | 1 | engineConfiguration->fuelPressureSensorMode = FPM_Gauge; | ||
| 305 | ||||
| 306 |
1/1✓ Branch 1 taken 1 time.
|
1 | Sensor::setMockValue(SensorType::BarometricPressure, 110); | |
| 307 |
1/1✓ Branch 1 taken 1 time.
|
1 | Sensor::setMockValue(SensorType::Map, 50); | |
| 308 | ||||
| 309 | // Should just return rail sensor value + baro - MAP | |||
| 310 |
1/1✓ Branch 1 taken 1 time.
|
1 | Sensor::setMockValue(SensorType::FuelPressureInjector, 100); | |
| 311 |
3/7✓ Branch 3 taken 1 time.
✓ Branch 7 taken 1 time.
✗ Branch 11 not taken.
✓ Branch 12 taken 1 time.
✗ Branch 15 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_FLOAT_EQ(100 + 110 - 50, dut.getFuelDifferentialPressure().value_or(-1)); | |
| 312 |
1/1✓ Branch 1 taken 1 time.
|
1 | Sensor::setMockValue(SensorType::FuelPressureInjector, 200); | |
| 313 |
3/7✓ Branch 3 taken 1 time.
✓ Branch 7 taken 1 time.
✗ Branch 11 not taken.
✓ Branch 12 taken 1 time.
✗ Branch 15 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_FLOAT_EQ(200 + 110 - 50, dut.getFuelDifferentialPressure().value_or(-1)); | |
| 314 |
1/1✓ Branch 1 taken 1 time.
|
1 | Sensor::setMockValue(SensorType::FuelPressureInjector, 300); | |
| 315 |
3/7✓ Branch 3 taken 1 time.
✓ Branch 7 taken 1 time.
✗ Branch 11 not taken.
✓ Branch 12 taken 1 time.
✗ Branch 15 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_FLOAT_EQ(300 + 110 - 50, dut.getFuelDifferentialPressure().value_or(-1)); | |
| 316 | 2 | } | ||
| 317 | ||||
| 318 | 4 | TEST(InjectorModel, RailPressureSensedDifferential) { | ||
| 319 |
1/1✓ Branch 2 taken 1 time.
|
1 | EngineTestHelper eth(engine_type_e::TEST_ENGINE); | |
| 320 | ||||
| 321 |
1/1✓ Branch 2 taken 1 time.
|
1 | InjectorModelPrimary dut; | |
| 322 | ||||
| 323 | // Reference pressure is 350kpa | |||
| 324 | 1 | engineConfiguration->injectorCompensationMode = ICM_SensedRailPressure; | ||
| 325 | 1 | engineConfiguration->fuelPressureSensorMode = FPM_Differential; | ||
| 326 | ||||
| 327 | // Should just return rail sensor value | |||
| 328 |
1/1✓ Branch 1 taken 1 time.
|
1 | Sensor::setMockValue(SensorType::FuelPressureInjector, 100); | |
| 329 |
3/7✓ Branch 3 taken 1 time.
✓ Branch 7 taken 1 time.
✗ Branch 11 not taken.
✓ Branch 12 taken 1 time.
✗ Branch 15 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_FLOAT_EQ(100, dut.getFuelDifferentialPressure().value_or(-1)); | |
| 330 |
1/1✓ Branch 1 taken 1 time.
|
1 | Sensor::setMockValue(SensorType::FuelPressureInjector, 200); | |
| 331 |
3/7✓ Branch 3 taken 1 time.
✓ Branch 7 taken 1 time.
✗ Branch 11 not taken.
✓ Branch 12 taken 1 time.
✗ Branch 15 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_FLOAT_EQ(200, dut.getFuelDifferentialPressure().value_or(-1)); | |
| 332 |
1/1✓ Branch 1 taken 1 time.
|
1 | Sensor::setMockValue(SensorType::FuelPressureInjector, 300); | |
| 333 |
3/7✓ Branch 3 taken 1 time.
✓ Branch 7 taken 1 time.
✗ Branch 11 not taken.
✓ Branch 12 taken 1 time.
✗ Branch 15 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_FLOAT_EQ(300, dut.getFuelDifferentialPressure().value_or(-1)); | |
| 334 | 2 | } | ||
| 335 | ||||
| 336 | 4 | TEST(InjectorModel, FailedPressureSensor) { | ||
| 337 |
1/1✓ Branch 2 taken 1 time.
|
1 | EngineTestHelper eth(engine_type_e::TEST_ENGINE); | |
| 338 | ||||
| 339 |
1/1✓ Branch 2 taken 1 time.
|
1 | InjectorModelPrimary dut; | |
| 340 | ||||
| 341 | // Reference pressure is 350kpa | |||
| 342 | 1 | engineConfiguration->injectorCompensationMode = ICM_SensedRailPressure; | ||
| 343 | ||||
| 344 | // Sensor is broken! | |||
| 345 | // We have to register a broken sensor because the fuel pressure comp system | |||
| 346 | // has different logic for missing sensor | |||
| 347 |
1/1✓ Branch 2 taken 1 time.
|
1 | MockSensor ms(SensorType::FuelPressureInjector); | |
| 348 |
1/1✓ Branch 1 taken 1 time.
|
1 | ms.invalidate(); | |
| 349 |
1/1✓ Branch 1 taken 1 time.
|
1 | ms.Register(); | |
| 350 | ||||
| 351 |
3/7✓ Branch 3 taken 1 time.
✓ Branch 7 taken 1 time.
✗ Branch 12 not taken.
✓ Branch 13 taken 1 time.
✗ Branch 16 not taken.
✗ Branch 21 not taken.
✗ Branch 24 not taken.
|
1 | EXPECT_EQ(1.0f, dut.getInjectorFlowRatio()); | |
| 352 | 2 | } | ||
| 353 | ||||
| 354 | 4 | TEST(InjectorModel, MissingPressureSensor) { | ||
| 355 |
1/1✓ Branch 2 taken 1 time.
|
1 | EngineTestHelper eth(engine_type_e::TEST_ENGINE); | |
| 356 | ||||
| 357 |
1/1✓ Branch 2 taken 1 time.
|
1 | InjectorModelPrimary dut; | |
| 358 | ||||
| 359 | // Reference pressure is 350kpa | |||
| 360 | 1 | engineConfiguration->injectorCompensationMode = ICM_SensedRailPressure; | ||
| 361 | ||||
| 362 | // Sensor is missing! | |||
| 363 |
1/1✓ Branch 1 taken 1 time.
|
1 | Sensor::resetMockValue(SensorType::FuelPressureInjector); | |
| 364 | ||||
| 365 |
1/1✓ Branch 1 taken 1 time.
|
1 | int warningsBefore = eth.recentWarnings()->getCount(); | |
| 366 |
1/1✓ Branch 1 taken 1 time.
|
1 | dut.getInjectorFlowRatio(); | |
| 367 |
1/1✓ Branch 1 taken 1 time.
|
1 | int warningsAfter = eth.recentWarnings()->getCount(); | |
| 368 |
3/8✓ Branch 4 taken 1 time.
✗ Branch 9 not taken.
✓ Branch 10 taken 1 time.
✗ Branch 13 not taken.
✗ Branch 18 not taken.
✗ Branch 21 not taken.
✓ Branch 28 taken 1 time.
✗ Branch 29 not taken.
|
1 | ASSERT_EQ(1, warningsAfter - warningsBefore); | |
| 369 |
3/7✓ Branch 2 taken 1 time.
✓ Branch 7 taken 1 time.
✗ Branch 11 not taken.
✓ Branch 12 taken 1 time.
✗ Branch 15 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_EQ(ObdCode::OBD_Fuel_Pressure_Sensor_Missing, getRecentWarnings()->get(0).Code); | |
| 370 | ||||
| 371 | // Missing sensor should trigger a fatal as it's a misconfiguration | |||
| 372 | //EXPECT_FATAL_ERROR(dut.getInjectorFlowRatio()); | |||
| 373 | 1 | } | ||
| 374 | ||||
| 375 |