GCC Code Coverage Report


Directory: ./
File: unit_tests/tests/trigger/test_map_cam.cpp
Date: 2025-11-16 14:52:24
Coverage Exec Excl Total
Lines: 100.0% 37 0 37
Functions: 100.0% 3 0 3
Branches: 47.9% 67 0 140
Decisions: 100.0% 2 - 2

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, 193333);
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
2/2
✓ Branch 0 taken 4 times.
✓ Branch 1 taken 1 time.
2/2
✓ Decision 'true' taken 4 times.
✓ Decision 'false' taken 1 time.
5 for (size_t i = 0; i < 4; i++) {
50
2/2
✓ Branch 1 taken 4 times.
✓ Branch 5 taken 4 times.
4 printf("%d %s\n", i, engine->scheduler.getForUnitTest(i)->action.getCallbackName());
51 }
52
53 // We have "VVT" sync, things should be scheduled!
54
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(4, engine->scheduler.size());
55 1 auto const turnSparkPinHighStartChargingAction{ action_s::make<turnSparkPinHighStartCharging>((IgnitionEvent*){})};
56
1/1
✓ Branch 1 taken 1 time.
1 eth.assertEvent5("spark down#0", 2, turnSparkPinHighStartChargingAction, 179458);
57
1/1
✓ Branch 1 taken 1 time.
1 eth.assertEvent5("spark down#1", 3, fireSparkAndPrepareNextScheduleAction, 191458);
58 1 }
59