GCC Code Coverage Report


Directory: ./
File: unit_tests/tests/trigger/test_map_cam.cpp
Date: 2025-10-03 00:57:22
Coverage Exec Excl Total
Lines: 100.0% 35 0 35
Functions: 100.0% 3 0 3
Branches: 46.3% 63 0 136
Decisions: -% 0 - 0

Line Branch Decision Exec Source
1
2
3 #include "pch.h"
4 #include "trigger_central.h"
5 #include "spark_logic.h"
6
7 4 TEST(trigger, map_cam_by_magic_point) {
8
9
1/1
✓ Branch 2 taken 1 time.
1 EngineTestHelper eth(engine_type_e::TEST_CRANK_ENGINE);
10 1 engineConfiguration->isFasterEngineSpinUpEnabled = false;
11
12 1 engineConfiguration->isPhaseSyncRequiredForIgnition = true;
13
14 1 engineConfiguration->camInputs[0] = Gpio::A0;
15 1 engineConfiguration->vvtMode[0] = VVT_MAP_V_TWIN;
16
1/1
✓ Branch 1 taken 1 time.
1 eth.engine.periodicFastCallback(); // trigger limp mode
17
4/10
✓ Branch 4 taken 1 time.
✓ Branch 7 taken 1 time.
✗ Branch 14 not taken.
✓ Branch 15 taken 1 time.
✗ Branch 18 not taken.
✗ Branch 23 not taken.
✗ Branch 27 not taken.
✗ Branch 30 not taken.
✓ Branch 39 taken 1 time.
✗ Branch 40 not taken.
1 ASSERT_FALSE(getLimpManager()->allowIgnition());
18
4/10
✓ Branch 4 taken 1 time.
✓ Branch 7 taken 1 time.
✗ Branch 14 not taken.
✓ Branch 15 taken 1 time.
✗ Branch 18 not taken.
✗ Branch 23 not taken.
✗ Branch 27 not taken.
✗ Branch 30 not taken.
✓ Branch 39 taken 1 time.
✗ Branch 40 not taken.
1 ASSERT_FALSE(getLimpManager()->allowInjection());
19
5/10
✓ Branch 3 taken 1 time.
✓ Branch 6 taken 1 time.
✓ Branch 10 taken 1 time.
✗ Branch 15 not taken.
✓ Branch 16 taken 1 time.
✗ Branch 19 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✓ Branch 34 taken 1 time.
✗ Branch 35 not taken.
1 ASSERT_EQ(ClearReason::EnginePhase, getLimpManager()->allowIgnition().reason);
20
5/10
✓ Branch 3 taken 1 time.
✓ Branch 6 taken 1 time.
✓ Branch 10 taken 1 time.
✗ Branch 15 not taken.
✓ Branch 16 taken 1 time.
✗ Branch 19 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✓ Branch 34 taken 1 time.
✗ Branch 35 not taken.
1 ASSERT_EQ(ClearReason::EnginePhase, getLimpManager()->allowInjection().reason);
21
22 1 engine->outputChannels.instantMAPValue = 100;
23
24 1 engineConfiguration->mapCamDetectionAnglePosition = 90;
25
26
1/1
✓ Branch 1 taken 1 time.
1 eth.smartFireTriggerEvents2(/*count*/10, /*delayMs*/200);
27
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(150, Sensor::getOrZero(SensorType::Rpm)) << "RPM";
28
29
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(1, engine->triggerCentral.mapVvt_sync_counter);
30
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(0, engine->triggerCentral.triggerState.camResyncCounter);
31
32 // Nothing should have been scheduled yet
33
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(1, engine->scheduler.size());
34
1/1
✓ Branch 1 taken 1 time.
1 scheduling_s* next = engine->scheduler.getForUnitTest(0);
35 1 auto const fireSparkAndPrepareNextScheduleAction{ action_s::make<fireSparkAndPrepareNextSchedule>((IgnitionEvent*){})};
36
37
1/1
✓ Branch 1 taken 1 time.
1 eth.assertEvent5("spark down#0", 0, fireSparkAndPrepareNextScheduleAction, 188333);
38
39 1 engine->outputChannels.instantMAPValue = 120;
40
1/1
✓ Branch 1 taken 1 time.
1 eth.smartFireTriggerEvents2(/*count*/4, /*delayMs*/200);
41
42
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(2, engine->triggerCentral.mapVvt_sync_counter);
43
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(1, engine->triggerCentral.triggerState.camResyncCounter);
44
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(10, engine->triggerCentral.mapVvt_MAP_AT_CYCLE_COUNT);
45
46
5/10
✓ Branch 3 taken 1 time.
✓ Branch 6 taken 1 time.
✓ Branch 10 taken 1 time.
✗ Branch 15 not taken.
✓ Branch 16 taken 1 time.
✗ Branch 19 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✓ Branch 34 taken 1 time.
✗ Branch 35 not taken.
1 ASSERT_EQ(ClearReason::None, getLimpManager()->allowIgnition().reason);
47
5/10
✓ Branch 3 taken 1 time.
✓ Branch 6 taken 1 time.
✓ Branch 10 taken 1 time.
✗ Branch 15 not taken.
✓ Branch 16 taken 1 time.
✗ Branch 19 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✓ Branch 34 taken 1 time.
✗ Branch 35 not taken.
1 ASSERT_EQ(ClearReason::None, getLimpManager()->allowInjection().reason);
48
49 // We have "VVT" sync, things should be scheduled!
50
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(2, engine->scheduler.size());
51 1 auto const turnSparkPinHighStartChargingAction{ action_s::make<turnSparkPinHighStartCharging>((IgnitionEvent*){})};
52
1/1
✓ Branch 1 taken 1 time.
1 eth.assertEvent5("spark down#0", 0, turnSparkPinHighStartChargingAction, 185333);
53
1/1
✓ Branch 1 taken 1 time.
1 eth.assertEvent5("spark down#1", 1, fireSparkAndPrepareNextScheduleAction, 188333);
54 1 }
55