GCC Code Coverage Report


Directory: ./
File: unit_tests/tests/ignition_injection/test_one_cylinder_logic.cpp
Date: 2025-10-03 00:57:22
Coverage Exec Excl Total
Lines: 100.0% 30 0 30
Functions: 100.0% 3 0 3
Branches: 46.3% 38 0 82
Decisions: -% 0 - 0

Line Branch Decision Exec Source
1 /**
2 * @file test_one_cylinder_logic.cpp
3 * @author Andrey Belomutskiy, (c) 2012-2020
4 */
5
6 #include "pch.h"
7 #include "spark_logic.h"
8 #include "GY6_139QMB.h"
9 #include "defaults.h"
10
11 4 TEST(issues, issueOneCylinderSpecialCase968) {
12
1/1
✓ Branch 2 taken 1 time.
1 EngineTestHelper eth(engine_type_e::GY6_139QMB);
13 1 angle_t timing = 4;
14 1 engineConfiguration->crankingTimingAngle = timing;
15 1 setTable(config->injectionPhase, -180.0f);
16 1 engineConfiguration->isFasterEngineSpinUpEnabled = false;
17 1 engine->tdcMarkEnabled = false;
18 // set injection_mode 1
19 1 engineConfiguration->injectionMode = IM_SEQUENTIAL;
20
21
1/1
✓ Branch 1 taken 1 time.
1 setCrankOperationMode();
22
23
1/1
✓ Branch 1 taken 1 time.
1 eth.setTriggerType(trigger_type_e::TT_HALF_MOON);
24
25
4/10
✓ Branch 3 taken 1 time.
✓ Branch 7 taken 1 time.
✗ Branch 12 not taken.
✓ Branch 13 taken 1 time.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✓ Branch 34 taken 1 time.
✗ Branch 35 not taken.
1 ASSERT_EQ( 0, engine->scheduler.size()) << "start";
26
27
1/1
✓ Branch 1 taken 1 time.
1 eth.fireTriggerEvents2(/* count */ 2, 50 /* ms */);
28
4/9
✓ 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.
✓ Branch 31 taken 1 time.
✗ Branch 32 not taken.
1 ASSERT_EQ(0, Sensor::getOrZero(SensorType::Rpm));
29
4/10
✓ Branch 3 taken 1 time.
✓ Branch 7 taken 1 time.
✗ Branch 12 not taken.
✓ Branch 13 taken 1 time.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✓ Branch 34 taken 1 time.
✗ Branch 35 not taken.
1 ASSERT_EQ( 0, engine->scheduler.size()) << "first revolution(s)";
30
31
1/1
✓ Branch 1 taken 1 time.
1 eth.fireTriggerEvents2(/* count */ 1, 50 /* ms */);
32
4/9
✓ 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.
✓ Branch 31 taken 1 time.
✗ Branch 32 not taken.
1 ASSERT_EQ(600, Sensor::getOrZero(SensorType::Rpm));
33
3/8
✓ Branch 3 taken 1 time.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 time.
✗ Branch 11 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✓ Branch 26 taken 1 time.
✗ Branch 27 not taken.
1 ASSERT_EQ(engine->triggerCentral.currentEngineDecodedPhase, 90 + Gy6139_globalTriggerAngleOffset);
34
3/8
✓ 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.
✓ Branch 24 taken 1 time.
✗ Branch 25 not taken.
1 ASSERT_EQ(engine->engineState.timingAdvance[0], timing);
35
36 1 angle_t expectedAngle = 180 - Gy6139_globalTriggerAngleOffset + timing;
37 1 int expectedDeltaTimeUs = eth.angleToTimeUs(expectedAngle);
38
39
4/10
✓ Branch 3 taken 1 time.
✓ Branch 7 taken 1 time.
✗ Branch 12 not taken.
✓ Branch 13 taken 1 time.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✓ Branch 34 taken 1 time.
✗ Branch 35 not taken.
1 ASSERT_EQ( 2, engine->scheduler.size()) << "first revolution(s)";
40
41 1 auto const turnSparkPinHighStartChargingAction{ action_s::make<turnSparkPinHighStartCharging>((IgnitionEvent*){}) };
42 1 auto const fireSparkAndPrepareNextScheduleAction{ action_s::make<fireSparkAndPrepareNextSchedule>((IgnitionEvent*){}) };
43
44
1/1
✓ Branch 1 taken 1 time.
1 eth.assertEvent5("spark up#0", 0, turnSparkPinHighStartChargingAction, -expectedDeltaTimeUs - MS2US(DEFAULT_CRANKING_DWELL_MS));
45
1/1
✓ Branch 1 taken 1 time.
1 eth.assertEvent5("spark down#0", 1, fireSparkAndPrepareNextScheduleAction, -expectedDeltaTimeUs);
46
47
48
1/1
✓ Branch 1 taken 1 time.
1 eth.fireTriggerEvents2(/* count */ 1, 50 /* ms */);
49
4/10
✓ Branch 3 taken 1 time.
✓ Branch 7 taken 1 time.
✗ Branch 12 not taken.
✓ Branch 13 taken 1 time.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✓ Branch 34 taken 1 time.
✗ Branch 35 not taken.
1 ASSERT_EQ( 4, engine->scheduler.size()) << "first revolution(s)";
50 1 }
51