GCC Code Coverage Report


Directory: ./
File: unit_tests/tests/trigger/test_cam_vvt_input.cpp
Date: 2025-10-03 00:57:22
Coverage Exec Excl Total
Lines: 100.0% 130 0 130
Functions: 100.0% 15 0 15
Branches: 55.7% 195 0 350
Decisions: 100.0% 14 - 14

Line Branch Decision Exec Source
1 /*
2 * test_cam_vvt_input.cpp
3 *
4 * Created on: Jan 13, 2019
5 * @author Andrey Belomutskiy, (c) 2012-2020
6 */
7
8 #include "pch.h"
9
10 #include "engine_sniffer.h"
11 extern WaveChart waveChart;
12
13 4 TEST(trigger, testNoStartUpWarningsNoSynchronizationTrigger) {
14
1/1
✓ Branch 2 taken 1 time.
1 EngineTestHelper eth(engine_type_e::TEST_ENGINE);
15 // one tooth does not need synchronization it just counts tooth
16
1/1
✓ Branch 1 taken 1 time.
1 eth.setTriggerType(trigger_type_e::TT_HALF_MOON);
17
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, round(Sensor::getOrZero(SensorType::Rpm))) << "testNoStartUpWarnings RPM";
18
19
1/1
✓ Branch 1 taken 1 time.
1 eth.fireTriggerEvents2(/*count*/10, /*duration*/50);
20
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(1200, round(Sensor::getOrZero(SensorType::Rpm))) << "testNoStartUpWarnings RPM";
21
4/10
✓ Branch 3 taken 1 time.
✓ Branch 8 taken 1 time.
✗ Branch 13 not taken.
✓ Branch 14 taken 1 time.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 25 not taken.
✗ Branch 28 not taken.
✓ Branch 35 taken 1 time.
✗ Branch 36 not taken.
1 ASSERT_EQ( 0u, getRecentWarnings()->getCount()) << "warningCounter#testNoStartUpWarningsNoSynchronizationTrigger";
22 1 }
23
24 4 TEST(trigger, testNoStartUpWarnings) {
25
1/1
✓ Branch 2 taken 1 time.
1 EngineTestHelper eth(engine_type_e::TEST_ENGINE);
26 // for this test we need a trigger with isSynchronizationNeeded=true
27 1 engineConfiguration->trigger.customTotalToothCount = 3;
28 1 engineConfiguration->trigger.customSkippedToothCount = 1;
29
1/1
✓ Branch 1 taken 1 time.
1 eth.setTriggerType(trigger_type_e::TT_TOOTHED_WHEEL);
30
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, round(Sensor::getOrZero(SensorType::Rpm))) << "testNoStartUpWarnings RPM";
31
32
2/2
✓ Branch 0 taken 10 times.
✓ Branch 1 taken 1 time.
2/2
✓ Decision 'true' taken 10 times.
✓ Decision 'false' taken 1 time.
11 for (int i = 0;i < 10;i++) {
33
1/1
✓ Branch 1 taken 10 times.
10 eth.fireRise(50);
34
1/1
✓ Branch 1 taken 10 times.
10 eth.fireFall(50);
35
1/1
✓ Branch 1 taken 10 times.
10 eth.fireRise(50);
36
1/1
✓ Branch 1 taken 10 times.
10 eth.fireFall(150);
37 }
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(400, round(Sensor::getOrZero(SensorType::Rpm))) << "testNoStartUpWarnings RPM";
40
4/10
✓ Branch 3 taken 1 time.
✓ Branch 8 taken 1 time.
✗ Branch 13 not taken.
✓ Branch 14 taken 1 time.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 25 not taken.
✗ Branch 28 not taken.
✓ Branch 35 taken 1 time.
✗ Branch 36 not taken.
1 ASSERT_EQ( 0u, getRecentWarnings()->getCount()) << "warningCounter#testNoStartUpWarnings";
41 // now let's post something unneeded
42
1/1
✓ Branch 1 taken 1 time.
1 eth.fireRise(50);
43
1/1
✓ Branch 1 taken 1 time.
1 eth.fireFall(50);
44
1/1
✓ Branch 1 taken 1 time.
1 eth.fireRise(50); // this is noise
45
1/1
✓ Branch 1 taken 1 time.
1 eth.fireFall(50); // this is noise
46
1/1
✓ Branch 1 taken 1 time.
1 eth.fireRise(50);
47
1/1
✓ Branch 1 taken 1 time.
1 eth.fireFall(150);
48
2/2
✓ Branch 0 taken 1 time.
✓ Branch 1 taken 1 time.
2/2
✓ Decision 'true' taken 1 time.
✓ Decision 'false' taken 1 time.
2 for (int i = 0;i < 1;i++) {
49
1/1
✓ Branch 1 taken 1 time.
1 eth.fireRise(50);
50
1/1
✓ Branch 1 taken 1 time.
1 eth.fireFall(50);
51
1/1
✓ Branch 1 taken 1 time.
1 eth.fireRise(50);
52
1/1
✓ Branch 1 taken 1 time.
1 eth.fireFall(150);
53 }
54
3/8
✓ Branch 3 taken 1 time.
✓ Branch 8 taken 1 time.
✗ Branch 13 not taken.
✓ Branch 14 taken 1 time.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 25 not taken.
✗ Branch 28 not taken.
1 EXPECT_EQ( 1u, getRecentWarnings()->getCount()) << "warningCounter#testNoStartUpWarnings CUSTOM_SYNC_COUNT_MISMATCH expected";
55
3/7
✓ Branch 2 taken 1 time.
✓ Branch 7 taken 1 time.
✗ Branch 11 not taken.
✓ Branch 12 taken 1 time.
✗ Branch 15 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
1 EXPECT_EQ(ObdCode::CUSTOM_PRIMARY_TOO_MANY_TEETH, getRecentWarnings()->get(0).Code);
56 1 }
57
58 4 TEST(trigger, testNoisyInput) {
59
1/1
✓ Branch 2 taken 1 time.
1 EngineTestHelper eth(engine_type_e::TEST_ENGINE);
60
61
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));
62
63
1/1
✓ Branch 1 taken 1 time.
1 eth.firePrimaryTriggerRise();
64
1/1
✓ Branch 1 taken 1 time.
1 eth.firePrimaryTriggerFall();
65
1/1
✓ Branch 1 taken 1 time.
1 eth.firePrimaryTriggerRise();
66
1/1
✓ Branch 1 taken 1 time.
1 eth.firePrimaryTriggerFall();
67
1/1
✓ Branch 1 taken 1 time.
1 eth.firePrimaryTriggerRise();
68
1/1
✓ Branch 1 taken 1 time.
1 eth.firePrimaryTriggerFall();
69
1/1
✓ Branch 1 taken 1 time.
1 eth.firePrimaryTriggerRise();
70
1/1
✓ Branch 1 taken 1 time.
1 eth.firePrimaryTriggerFall();
71
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));
72
73
3/7
✓ 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.
1 EXPECT_EQ(1u, getRecentWarnings()->getCount());
74
3/7
✓ Branch 2 taken 1 time.
✓ Branch 7 taken 1 time.
✗ Branch 11 not taken.
✓ Branch 12 taken 1 time.
✗ Branch 15 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
1 EXPECT_EQ(ObdCode::CUSTOM_PRIMARY_NOT_ENOUGH_TEETH, getRecentWarnings()->get(0).Code);
75 1 }
76
77 4 TEST(trigger, testCamInput) {
78
1/1
✓ Branch 2 taken 1 time.
1 EngineTestHelper eth(engine_type_e::TEST_ENGINE);
79 1 engineConfiguration->globalTriggerAngleOffset = -37;
80 1 engineConfiguration->crankingTimingAngle = 3;
81 1 engineConfiguration->triggerInputPins[1] = Gpio::Unassigned;
82
83 // changing to 'ONE TOOTH' trigger on CRANK with CAM/VVT
84
1/1
✓ Branch 1 taken 1 time.
1 setCrankOperationMode();
85 1 engineConfiguration->vvtMode[0] = VVT_SINGLE_TOOTH;
86 1 engineConfiguration->vvtOffsets[0] = 360;
87
1/1
✓ Branch 1 taken 1 time.
1 eth.setTriggerType(trigger_type_e::TT_HALF_MOON);
88 1 engineConfiguration->camInputs[0] = Gpio::A10; // we just need to indicate that we have CAM
89
90
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, round(Sensor::getOrZero(SensorType::Rpm))) << "testCamInput RPM";
91
92
2/2
✓ Branch 0 taken 5 times.
✓ Branch 1 taken 1 time.
2/2
✓ Decision 'true' taken 5 times.
✓ Decision 'false' taken 1 time.
6 for (int i = 0; i < 5;i++) {
93
1/1
✓ Branch 1 taken 5 times.
5 eth.fireRise(25);
94
1/1
✓ Branch 1 taken 5 times.
5 eth.fireFall(25);
95 }
96
97
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(1200, round(Sensor::getOrZero(SensorType::Rpm)));
98
4/10
✓ Branch 3 taken 1 time.
✓ Branch 8 taken 1 time.
✗ Branch 13 not taken.
✓ Branch 14 taken 1 time.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 25 not taken.
✗ Branch 28 not taken.
✓ Branch 35 taken 1 time.
✗ Branch 36 not taken.
1 ASSERT_EQ(0u, getRecentWarnings()->getCount()) << "warningCounter#testCamInput";
99
100
2/2
✓ Branch 0 taken 600 times.
✓ Branch 1 taken 1 time.
2/2
✓ Decision 'true' taken 600 times.
✓ Decision 'false' taken 1 time.
601 for (int i = 0; i < 600;i++) {
101
1/1
✓ Branch 1 taken 600 times.
600 eth.fireRise(25);
102
1/1
✓ Branch 1 taken 600 times.
600 eth.fireFall(25);
103 }
104
105 // asserting that lack of camshaft signal would be detecting
106
4/10
✓ Branch 3 taken 1 time.
✓ Branch 8 taken 1 time.
✗ Branch 13 not taken.
✓ Branch 14 taken 1 time.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 25 not taken.
✗ Branch 28 not taken.
✓ Branch 35 taken 1 time.
✗ Branch 36 not taken.
1 ASSERT_EQ(1u, getRecentWarnings()->getCount()) << "warningCounter#testCamInput #2";
107
4/10
✓ Branch 2 taken 1 time.
✓ Branch 7 taken 1 time.
✗ Branch 11 not taken.
✓ Branch 12 taken 1 time.
✗ Branch 15 not taken.
✗ Branch 18 not taken.
✗ Branch 23 not taken.
✗ Branch 26 not taken.
✓ Branch 33 taken 1 time.
✗ Branch 34 not taken.
1 ASSERT_EQ(ObdCode::OBD_Camshaft_Position_Sensor_Circuit_Range_Performance, getRecentWarnings()->get(0).Code) << "@0";
108
1/1
✓ Branch 1 taken 1 time.
1 getRecentWarnings()->clear();
109
110
2/2
✓ Branch 0 taken 600 times.
✓ Branch 1 taken 1 time.
2/2
✓ Decision 'true' taken 600 times.
✓ Decision 'false' taken 1 time.
601 for (int i = 0; i < 600;i++) {
111
1/1
✓ Branch 1 taken 600 times.
600 eth.moveTimeForwardUs(MS2US(10));
112
113 // cam comes every other crank rev
114
2/2
✓ Branch 0 taken 300 times.
✓ Branch 1 taken 300 times.
2/2
✓ Decision 'true' taken 300 times.
✓ Decision 'false' taken 300 times.
600 if (i % 2 == 0) {
115
2/2
✓ Branch 1 taken 300 times.
✓ Branch 4 taken 300 times.
300 hwHandleVvtCamSignal(TriggerValue::RISE, getTimeNowNt(), 0);
116 }
117
118
1/1
✓ Branch 1 taken 600 times.
600 eth.moveTimeForwardUs(MS2US(15));
119
120
1/1
✓ Branch 1 taken 600 times.
600 eth.firePrimaryTriggerRise();
121
3/7
✓ Branch 3 taken 600 times.
✓ Branch 7 taken 600 times.
✗ Branch 12 not taken.
✓ Branch 13 taken 600 times.
✗ Branch 16 not taken.
✗ Branch 21 not taken.
✗ Branch 24 not taken.
600 EXPECT_EQ(1200, round(Sensor::getOrZero(SensorType::Rpm)));
122
123
1/1
✓ Branch 1 taken 600 times.
600 eth.moveTimeForwardUs(MS2US(25));
124
1/1
✓ Branch 1 taken 600 times.
600 eth.firePrimaryTriggerFall();
125 }
126
127 // asserting that error code has cleared
128
4/10
✓ Branch 3 taken 1 time.
✓ Branch 8 taken 1 time.
✗ Branch 13 not taken.
✓ Branch 14 taken 1 time.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 25 not taken.
✗ Branch 28 not taken.
✓ Branch 35 taken 1 time.
✗ Branch 36 not taken.
1 ASSERT_EQ(0u, getRecentWarnings()->getCount()) << "warningCounter#testCamInput #3";
129
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_M3(71, engine->triggerCentral.getVVTPosition(0, 0));
130 1 }
131
132 4 TEST(trigger, testNB2CamInput) {
133
1/1
✓ Branch 2 taken 1 time.
1 EngineTestHelper eth(engine_type_e::MAZDA_MIATA_NB2);
134
135 1 engineConfiguration->isFasterEngineSpinUpEnabled = false;
136
137
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, round(Sensor::getOrZero(SensorType::Rpm)));
138
2/2
✓ Branch 0 taken 6 times.
✓ Branch 1 taken 1 time.
2/2
✓ Decision 'true' taken 6 times.
✓ Decision 'false' taken 1 time.
7 for (int i = 0; i < 6;i++) {
139
1/1
✓ Branch 1 taken 6 times.
6 eth.fireRise(25 * 70 / 180);
140
1/1
✓ Branch 1 taken 6 times.
6 eth.fireRise(25 * 110 / 180);
141
4/9
✓ Branch 3 taken 6 times.
✓ Branch 7 taken 6 times.
✗ Branch 12 not taken.
✓ Branch 13 taken 6 times.
✗ Branch 16 not taken.
✗ Branch 21 not taken.
✗ Branch 24 not taken.
✓ Branch 31 taken 6 times.
✗ Branch 32 not taken.
6 ASSERT_EQ( 0, round(Sensor::getOrZero(SensorType::Rpm)));
142 }
143
1/1
✓ Branch 1 taken 1 time.
1 eth.fireRise(25 * 70 / 180);
144
1/1
✓ Branch 1 taken 1 time.
1 eth.fireRise(25 * 110 / 180);
145 // first time we have RPM
146
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(1250, round(Sensor::getOrZero(SensorType::Rpm)));
147
148 1 int totalRevolutionCountBeforeVvtSync = 5;
149 // need to be out of VVT sync to see VVT sync in action
150
1/1
✓ Branch 1 taken 1 time.
1 eth.fireRise(25 * 70 / 180);
151
1/1
✓ Branch 1 taken 1 time.
1 eth.fireRise(25 * 110 / 180);
152
4/9
✓ Branch 3 taken 1 time.
✓ Branch 6 taken 1 time.
✗ Branch 10 not taken.
✓ Branch 11 taken 1 time.
✗ Branch 14 not taken.
✗ Branch 19 not taken.
✗ Branch 22 not taken.
✓ Branch 29 taken 1 time.
✗ Branch 30 not taken.
1 ASSERT_EQ(totalRevolutionCountBeforeVvtSync, engine->triggerCentral.triggerState.getSynchronizationCounter());
153
2/8
✗ Branch 5 not taken.
✓ Branch 6 taken 1 time.
✗ Branch 9 not taken.
✗ Branch 14 not taken.
✗ Branch 18 not taken.
✗ Branch 21 not taken.
✓ Branch 30 taken 1 time.
✗ Branch 31 not taken.
1 ASSERT_TRUE((totalRevolutionCountBeforeVvtSync % SYMMETRICAL_CRANK_SENSOR_DIVIDER) != 0);
154
155
1/1
✓ Branch 1 taken 1 time.
1 eth.moveTimeForwardUs(MS2US(3)); // shifting VVT phase a few angles
156
157
2/2
✓ Branch 1 taken 1 time.
✓ Branch 4 taken 1 time.
1 hwHandleVvtCamSignal(true, getTimeNowNt(), 0);
158
159 // first gap - long
160
161
1/1
✓ Branch 1 taken 1 time.
1 eth.moveTimeForwardUs(MS2US(130));
162
2/2
✓ Branch 1 taken 1 time.
✓ Branch 4 taken 1 time.
1 hwHandleVvtCamSignal(false, getTimeNowNt(), 0);
163
1/1
✓ Branch 1 taken 1 time.
1 eth.moveTimeForwardUs(MS2US( 30));
164
2/2
✓ Branch 1 taken 1 time.
✓ Branch 4 taken 1 time.
1 hwHandleVvtCamSignal(true, getTimeNowNt(), 0);
165
166 // second gap - short
167
168
1/1
✓ Branch 1 taken 1 time.
1 eth.moveTimeForwardUs(MS2US(10));
169
2/2
✓ Branch 1 taken 1 time.
✓ Branch 4 taken 1 time.
1 hwHandleVvtCamSignal(false, getTimeNowNt(), 0);
170
1/1
✓ Branch 1 taken 1 time.
1 eth.moveTimeForwardUs(MS2US(10));
171
2/2
✓ Branch 1 taken 1 time.
✓ Branch 4 taken 1 time.
1 hwHandleVvtCamSignal(true, getTimeNowNt(), 0);
172
173
4/9
✓ 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.
✓ Branch 27 taken 1 time.
✗ Branch 28 not taken.
1 ASSERT_FLOAT_EQ(0, engine->triggerCentral.getVVTPosition(0, 0));
174
4/9
✓ Branch 3 taken 1 time.
✓ Branch 6 taken 1 time.
✗ Branch 10 not taken.
✓ Branch 11 taken 1 time.
✗ Branch 14 not taken.
✗ Branch 19 not taken.
✗ Branch 22 not taken.
✓ Branch 29 taken 1 time.
✗ Branch 30 not taken.
1 ASSERT_EQ(totalRevolutionCountBeforeVvtSync, engine->triggerCentral.triggerState.getSynchronizationCounter());
175
176 // Third gap - long
177
178
1/1
✓ Branch 1 taken 1 time.
1 eth.moveTimeForwardUs(MS2US(130));
179
2/2
✓ Branch 1 taken 1 time.
✓ Branch 4 taken 1 time.
1 hwHandleVvtCamSignal(false, getTimeNowNt(), 0);
180
1/1
✓ Branch 1 taken 1 time.
1 eth.moveTimeForwardUs(MS2US( 30));
181
2/2
✓ Branch 1 taken 1 time.
✓ Branch 4 taken 1 time.
1 hwHandleVvtCamSignal(true, getTimeNowNt(), 0);
182
183
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(290.5f, engine->triggerCentral.getVVTPosition(0, 0), EPS2D);
184 // actually position based on VVT!
185
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(totalRevolutionCountBeforeVvtSync + 3, engine->triggerCentral.triggerState.getSynchronizationCounter());
186
187
3/7
✓ 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.
1 EXPECT_EQ(40, waveChart.getSize());
188 1 }
189