GCC Code Coverage Report


Directory: ./
File: unit_tests/tests/trigger/test_real_ford_coyote.cpp
Date: 2025-10-03 00:57:22
Warnings: 2 unchecked decisions!
Coverage Exec Excl Total
Lines: 100.0% 44 0 44
Functions: 100.0% 11 0 11
Branches: 58.6% 34 0 58
Decisions: 0.0% 0 - 4

Line Branch Decision Exec Source
1 #include "pch.h"
2
3 #include "logicdata_csv_reader.h"
4
5 1 static void runCoyoteIntakeCam(bool invertPrimaryTriggerSignal, uint32_t warningCount, int rpm) {
6
1/1
✓ Branch 2 taken 1 time.
1 CsvReader reader(1, /* vvtCount */ 0);
7
8
1/1
✓ Branch 1 taken 1 time.
1 reader.open("tests/trigger/resources/ford-coyote-intake-cam.csv");
9
10
1/1
✓ Branch 2 taken 1 time.
1 EngineTestHelper eth(engine_type_e::TEST_ENGINE);
11
1/1
✓ Branch 1 taken 1 time.
1 eth.setTriggerType(trigger_type_e::TT_VVT_FORD_COYOTE);
12 1 engineConfiguration->isFasterEngineSpinUpEnabled = true;
13 1 engineConfiguration->alwaysInstantRpm = true;
14 1 reader.flipOnRead = invertPrimaryTriggerSignal;
15
16
17
1/1
✓ Branch 1 taken 1 time.
1 printf("Reading intake %d...\n", invertPrimaryTriggerSignal);
18
3/3
✓ Branch 1 taken 1980 times.
✓ Branch 3 taken 1979 times.
✓ Branch 4 taken 1 time.
0/1
? Decision couldn't be analyzed.
1980 while (reader.haveMore()) {
19
1/1
✓ Branch 1 taken 1979 times.
1979 reader.processLine(&eth);
20 }
21
22
4/10
✓ Branch 3 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( warningCount, eth.recentWarnings()->getCount())<< "warningCounter#intakeCam";
23
4/10
✓ 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 24 not taken.
✗ Branch 27 not taken.
✓ Branch 35 taken 1 time.
✗ Branch 36 not taken.
1 ASSERT_EQ( rpm, round(Sensor::getOrZero(SensorType::Rpm)))<< reader.lineIndex();
24 1 }
25
26 4 TEST(fordCoyote, intakeCam) {
27 1 runCoyoteIntakeCam(false, 1, 1093);
28 1 }
29
30 2 static void runCoyoteExhaustCam(bool invertPrimaryTriggerSignal, uint32_t warningCount, int rpm) {
31
1/1
✓ Branch 2 taken 2 times.
2 CsvReader reader(1, /* vvtCount */ 0);
32
33
1/1
✓ Branch 1 taken 2 times.
2 reader.open("tests/trigger/resources/ford-coyote-exhaust-cam.csv");
34
35
1/1
✓ Branch 2 taken 2 times.
2 EngineTestHelper eth(engine_type_e::TEST_ENGINE);
36
1/1
✓ Branch 1 taken 2 times.
2 eth.setTriggerType(trigger_type_e::TT_VVT_FORD_COYOTE);
37 2 engineConfiguration->isFasterEngineSpinUpEnabled = true;
38 2 reader.flipOnRead = invertPrimaryTriggerSignal;
39 2 engineConfiguration->alwaysInstantRpm = true;
40
41
1/1
✓ Branch 1 taken 2 times.
2 printf("Reading exhaust...\n");
42
3/3
✓ Branch 1 taken 3962 times.
✓ Branch 3 taken 3960 times.
✓ Branch 4 taken 2 times.
0/1
? Decision couldn't be analyzed.
3962 while (reader.haveMore()) {
43
1/1
✓ Branch 1 taken 3960 times.
3960 reader.processLine(&eth);
44 }
45
46
4/10
✓ Branch 3 taken 2 times.
✓ Branch 7 taken 2 times.
✗ Branch 11 not taken.
✓ Branch 12 taken 2 times.
✗ Branch 15 not taken.
✗ Branch 18 not taken.
✗ Branch 23 not taken.
✗ Branch 26 not taken.
✓ Branch 33 taken 2 times.
✗ Branch 34 not taken.
2 ASSERT_EQ(warningCount, eth.recentWarnings()->getCount())<< "warningCounter#exhaustCam";
47
4/10
✓ Branch 3 taken 2 times.
✓ Branch 6 taken 2 times.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
✗ Branch 14 not taken.
✗ Branch 19 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✓ Branch 35 taken 2 times.
✗ Branch 36 not taken.
2 ASSERT_EQ(rpm, round(Sensor::getOrZero(SensorType::Rpm)))<< reader.lineIndex();
48 2 }
49
50 4 TEST(fordCoyote, exhaustCam) {
51 1 runCoyoteExhaustCam(false, 1, 1093);
52 1 }
53
54 4 TEST(fordCoyote, exhaustCamInverted) {
55 extern bool unitTestTaskPrecisionHack;
56 1 unitTestTaskPrecisionHack = true;
57 1 runCoyoteExhaustCam(true, 2, 1046);
58 1 }
59