GCC Code Coverage Report


Directory: ./
File: unit_tests/tests/ignition_injection/test_fuel_computer.cpp
Date: 2025-10-03 00:57:22
Coverage Exec Excl Total
Lines: 100.0% 40 0 40
Functions: 100.0% 12 0 12
Branches: 67.4% 58 0 86
Decisions: -% 0 - 0

Line Branch Decision Exec Source
1 #include "pch.h"
2
3 // sneaky...
4 #define protected public
5 #include "fuel_computer.h"
6
7 using ::testing::FloatEq;
8
9 class MockFuelComputer : public FuelComputerBase {
10 public:
11 2 MOCK_METHOD(float, getStoichiometricRatio, (), (const, override));
12
3/3
✓ Branch 3 taken 1 time.
✓ Branch 7 taken 1 time.
✓ Branch 10 taken 1 time.
2 MOCK_METHOD(float, getTargetLambda, (float rpm, float load), (const, override));
13
2/2
✓ Branch 3 taken 1 time.
✓ Branch 6 taken 1 time.
2 MOCK_METHOD(float, getTargetLambdaLoadAxis, (float defaultLoad), (const, override));
14 };
15
16 4 TEST(FuelComputer, getCycleFuel) {
17
1/1
✓ Branch 2 taken 1 time.
1 EngineTestHelper eth(engine_type_e::TEST_ENGINE);
18
19
1/1
✓ Branch 2 taken 1 time.
1 MockFuelComputer dut;
20
21
5/5
✓ Branch 3 taken 1 time.
✓ Branch 6 taken 1 time.
✓ Branch 9 taken 1 time.
✓ Branch 12 taken 1 time.
✓ Branch 16 taken 1 time.
3 EXPECT_CALL(dut, getTargetLambdaLoadAxis(FloatEq(0.8f)))
22
3/3
✓ Branch 5 taken 1 time.
✓ Branch 8 taken 1 time.
✓ Branch 11 taken 1 time.
3 .WillOnce(Return(0.8f));
23
3/3
✓ Branch 1 taken 1 time.
✓ Branch 4 taken 1 time.
✓ Branch 8 taken 1 time.
3 EXPECT_CALL(dut, getStoichiometricRatio())
24
3/3
✓ Branch 5 taken 1 time.
✓ Branch 8 taken 1 time.
✓ Branch 11 taken 1 time.
3 .WillOnce(Return(3.0f));
25
6/6
✓ Branch 3 taken 1 time.
✓ Branch 6 taken 1 time.
✓ Branch 10 taken 1 time.
✓ Branch 13 taken 1 time.
✓ Branch 16 taken 1 time.
✓ Branch 20 taken 1 time.
3 EXPECT_CALL(dut, getTargetLambda(1000, FloatEq(0.8f)))
26
3/3
✓ Branch 5 taken 1 time.
✓ Branch 8 taken 1 time.
✓ Branch 11 taken 1 time.
3 .WillOnce(Return(5.0f));
27
28
1/1
✓ Branch 1 taken 1 time.
1 auto result = dut.getCycleFuel(7.0f, 1000, 0.8f);
29
2/6
✓ Branch 2 taken 1 time.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 time.
✗ Branch 9 not taken.
✗ Branch 14 not taken.
✗ Branch 17 not taken.
1 EXPECT_FLOAT_EQ(result, 7.0f / (5 * 3));
30 2 }
31
32 4 TEST(FuelComputer, FlexFuel) {
33
1/1
✓ Branch 2 taken 1 time.
1 EngineTestHelper eth(engine_type_e::TEST_ENGINE);
34
35 1 FuelComputer dut;
36
37 // easier values for testing
38 1 engineConfiguration->stoichRatioPrimary = 15;
39 1 engineConfiguration->stoichRatioSecondary = 10;
40
41 // No sensor -> returns primary
42
1/1
✓ Branch 1 taken 1 time.
1 Sensor::resetMockValue(SensorType::FuelEthanolPercent);
43
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(15.0f, dut.getStoichiometricRatio());
44
45 // E0 -> primary afr
46
1/1
✓ Branch 1 taken 1 time.
1 Sensor::setMockValue(SensorType::FuelEthanolPercent, 0);
47
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(15.0f, dut.getStoichiometricRatio());
48
49 // E50 -> half way between
50
1/1
✓ Branch 1 taken 1 time.
1 Sensor::setMockValue(SensorType::FuelEthanolPercent, 50);
51
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(12.5f, dut.getStoichiometricRatio());
52
53 // E100 -> secondary afr
54
1/1
✓ Branch 1 taken 1 time.
1 Sensor::setMockValue(SensorType::FuelEthanolPercent, 100);
55
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(10.0f, dut.getStoichiometricRatio());
56
57 // E(-10) -> clamp to primary
58
1/1
✓ Branch 1 taken 1 time.
1 Sensor::setMockValue(SensorType::FuelEthanolPercent, -10);
59
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(15.0f, dut.getStoichiometricRatio());
60
61 // E110 -> clamp to secondary
62
1/1
✓ Branch 1 taken 1 time.
1 Sensor::setMockValue(SensorType::FuelEthanolPercent, 110);
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_FLOAT_EQ(10.0f, dut.getStoichiometricRatio());
64 2 }
65