GCC Code Coverage Report


Directory: ./
File: unit_tests/tests/sensor/test_flex_sensor.cpp
Date: 2025-10-03 00:57:22
Coverage Exec Excl Total
Lines: 100.0% 33 0 33
Functions: 100.0% 9 0 9
Branches: 64.7% 33 0 51
Decisions: 100.0% 2 - 2

Line Branch Decision Exec Source
1 #include "pch.h"
2 #include "flex_sensor.h"
3
4 4 TEST(FlexSensorTest, lowPinStart) {
5
1/1
✓ Branch 2 taken 1 time.
1 EngineTestHelper eth(engine_type_e::TEST_ENGINE);
6
1/1
✓ Branch 2 taken 1 time.
1 FlexSensor sensor(MS2NT(1000));
7
1/1
✓ Branch 1 taken 1 time.
1 sensor.Register(true);
8
9 // low to high transition after 0.5 sec
10
1/1
✓ Branch 1 taken 1 time.
1 sensor.callback(MS2NT(500), 1);
11
12
4/9
✓ Branch 3 taken 1 time.
✓ Branch 8 taken 1 time.
✗ Branch 13 not taken.
✓ Branch 14 taken 1 time.
✗ Branch 17 not taken.
✗ Branch 22 not taken.
✗ Branch 25 not taken.
✓ Branch 32 taken 1 time.
✗ Branch 33 not taken.
1 ASSERT_EQ(0u, getRecentWarnings()->getCount());
13 1 }
14
15 4 TEST(FlexSensorTest, highPinStart) {
16
1/1
✓ Branch 2 taken 1 time.
1 EngineTestHelper eth(engine_type_e::TEST_ENGINE);
17
1/1
✓ Branch 2 taken 1 time.
1 FlexSensor sensor(MS2NT(1000));
18
1/1
✓ Branch 1 taken 1 time.
1 sensor.Register(true);
19
20 // low to high transition after 0.5 sec
21
1/1
✓ Branch 1 taken 1 time.
1 sensor.callback(MS2NT(500), 0);
22
23
4/9
✓ Branch 3 taken 1 time.
✓ Branch 8 taken 1 time.
✗ Branch 13 not taken.
✓ Branch 14 taken 1 time.
✗ Branch 17 not taken.
✗ Branch 22 not taken.
✗ Branch 25 not taken.
✓ Branch 32 taken 1 time.
✗ Branch 33 not taken.
1 ASSERT_EQ(0u, getRecentWarnings()->getCount());
24 1 }
25
26 4 TEST(FlexSensorTest, converter) {
27 1 efitick_t nowNt = 0;
28
1/1
✓ Branch 2 taken 1 time.
1 EngineTestHelper eth(engine_type_e::TEST_ENGINE);
29
1/1
✓ Branch 2 taken 1 time.
1 FlexSensor sensor(MS2NT(1000));
30
1/1
✓ Branch 1 taken 1 time.
1 sensor.Register(true);
31
32 // feed BiQuad filters and wait it get close to expected values
33
2/2
✓ Branch 0 taken 1000 times.
✓ Branch 1 taken 1 time.
2/2
✓ Decision 'true' taken 1000 times.
✓ Decision 'false' taken 1 time.
1001 for (size_t i = 0; i < 1000; i++) {
34
2/2
✓ Branch 1 taken 1000 times.
✓ Branch 4 taken 1000 times.
1000 sensor.callback(getTimeNowNt(), 1);
35 // emulate 25 degrees C
36
1/1
✓ Branch 1 taken 1000 times.
1000 eth.moveTimeForwardUs(2576);
37
2/2
✓ Branch 1 taken 1000 times.
✓ Branch 4 taken 1000 times.
1000 sensor.callback(getTimeNowNt(), 0);
38 // emulate 100 Hz = 50% ethanol
39
1/1
✓ Branch 1 taken 1000 times.
1000 eth.moveTimeForwardUs(10000 - 2576);
40 }
41
42
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(50, Sensor::getOrZero(SensorType::FuelEthanolPercent), 0.1);
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_NEAR(25, Sensor::getOrZero(SensorType::FuelTemperature), 0.1);
44 2 }
45