GCC Code Coverage Report


Directory: ./
File: unit_tests/tests/trigger/test_real_4b11.cpp
Date: 2025-10-03 00:57:22
Warnings: 2 unchecked decisions!
Coverage Exec Excl Total
Lines: 100.0% 33 0 33
Functions: 100.0% 6 0 6
Branches: 55.7% 34 0 61
Decisions: 0.0% 0 - 4

Line Branch Decision Exec Source
1 // Mitsubishi 4B11 trigger pattern
2 // Crank: 36-2-1
3 // Cam: Single tooth (half moon)
4
5 #include "pch.h"
6
7 #include "engine_csv_reader.h"
8
9 4 TEST(real4b11, running) {
10 extern bool unitTestTaskPrecisionHack;
11 1 unitTestTaskPrecisionHack = true;
12
1/1
✓ Branch 2 taken 1 time.
1 EngineCsvReader reader(1, /* vvtCount */ 0);
13
14
1/1
✓ Branch 1 taken 1 time.
1 reader.open("tests/trigger/resources/4b11-running.csv");
15
1/1
✓ Branch 2 taken 1 time.
1 EngineTestHelper eth(engine_type_e::TEST_ENGINE);
16 1 engineConfiguration->isFasterEngineSpinUpEnabled = true;
17 1 engineConfiguration->alwaysInstantRpm = true;
18
19
1/1
✓ Branch 1 taken 1 time.
1 eth.setTriggerType(trigger_type_e::TT_36_2_1);
20
21
3/3
✓ Branch 1 taken 2048 times.
✓ Branch 3 taken 2047 times.
✓ Branch 4 taken 1 time.
0/1
? Decision couldn't be analyzed.
2048 while (reader.haveMore()) {
22
1/1
✓ Branch 1 taken 2047 times.
2047 reader.processLine(&eth);
23
24 // Expect that all teeth are in the correct spot
25
1/1
✓ Branch 2 taken 2047 times.
2047 float angleError = getTriggerCentral()->triggerToothAngleError;
26
3/15
✓ Branch 2 taken 2047 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2047 times.
✗ Branch 5 not taken.
✗ Branch 9 not taken.
✓ Branch 10 taken 2047 times.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✗ Branch 22 not taken.
✗ Branch 26 not taken.
✗ Branch 29 not taken.
✗ Branch 34 not taken.
✗ Branch 38 not taken.
✗ Branch 41 not taken.
2047 EXPECT_TRUE(angleError < 3 && angleError > -3) << "tooth angle of " << angleError << " at timestamp " << (getTimeNowNt() / 1e8);
27
28
1/1
✓ Branch 1 taken 2047 times.
2047 reader.assertFirstRpm(1436, 30);
29 }
30
31
4/9
✓ 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.
✓ Branch 32 taken 1 time.
✗ Branch 33 not taken.
1 ASSERT_EQ(0u, eth.recentWarnings()->getCount());
32 1 }
33
34 4 TEST(real4b11, runningDoubledEdge) {
35 extern bool unitTestTaskPrecisionHack;
36 1 unitTestTaskPrecisionHack = true;
37
1/1
✓ Branch 2 taken 1 time.
1 EngineCsvReader reader(1, /* vvtCount */ 0);
38
39 // This log has an extra duplicate edge at 5.393782 seconds (hand added)
40
1/1
✓ Branch 1 taken 1 time.
1 reader.open("tests/trigger/resources/4b11-running-doubled-edge.csv");
41
1/1
✓ Branch 2 taken 1 time.
1 EngineTestHelper eth(engine_type_e::TEST_ENGINE);
42 1 engineConfiguration->isFasterEngineSpinUpEnabled = true;
43 1 engineConfiguration->alwaysInstantRpm = true;
44
45
1/1
✓ Branch 1 taken 1 time.
1 eth.setTriggerType(trigger_type_e::TT_36_2_1);
46
47
3/3
✓ Branch 1 taken 2050 times.
✓ Branch 3 taken 2049 times.
✓ Branch 4 taken 1 time.
0/1
? Decision couldn't be analyzed.
2050 while (reader.haveMore()) {
48
1/1
✓ Branch 1 taken 2049 times.
2049 reader.processLine(&eth);
49
1/1
✓ Branch 1 taken 2049 times.
2049 reader.assertFirstRpm(1436, 30);
50 }
51
52 // Should get a warning for the doubled edge, but NOT one for a trigger error!
53
4/9
✓ 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.
✓ Branch 32 taken 1 time.
✗ Branch 33 not taken.
1 ASSERT_EQ(1u, eth.recentWarnings()->getCount());
54
4/9
✓ 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.
✓ Branch 30 taken 1 time.
✗ Branch 31 not taken.
1 ASSERT_EQ(ObdCode::CUSTOM_PRIMARY_DOUBLED_EDGE, eth.recentWarnings()->get(0).Code);
55 1 }
56