Line | Branch | Decision | Exec | Source |
---|---|---|---|---|
1 | // file test_real_4b11.cpp | |||
2 | // Mitsubishi 4G93 trigger pattern | |||
3 | // Crank: 2 teeth per rev (4 teeth per cycle) | |||
4 | // Cam: 4G92/93/94 pattern (big tooth - small tooth) | |||
5 | ||||
6 | #include "pch.h" | |||
7 | ||||
8 | #include "engine_csv_reader.h" | |||
9 | ||||
10 | 4 | TEST(real4g93, cranking) { | ||
11 |
1/1✓ Branch 2 taken 1 time.
|
1 | EngineCsvReader reader(1, /* vvtCount */ 1); | |
12 | ||||
13 |
1/1✓ Branch 1 taken 1 time.
|
1 | reader.open("tests/trigger/resources/4g93-cranking.csv"); | |
14 |
1/1✓ Branch 2 taken 1 time.
|
1 | EngineTestHelper eth(engine_type_e::TEST_ENGINE); | |
15 | 1 | engineConfiguration->isFasterEngineSpinUpEnabled = true; | ||
16 | 1 | engineConfiguration->alwaysInstantRpm = true; | ||
17 | ||||
18 | 1 | engineConfiguration->isPhaseSyncRequiredForIgnition = true; | ||
19 | ||||
20 | 1 | engineConfiguration->vvtMode[0] = VVT_MITSUBISHI_4G63; | ||
21 | ||||
22 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.setTriggerType(trigger_type_e::TT_MITSU_4G63_CRANK); | |
23 | ||||
24 | static const float gapRatios[2][4] = { | |||
25 | { 0, NAN, INFINITY, 0.89f }, // no sync | |||
26 | { 0.4f, 3.788f, 0.62f, 1.02f } | |||
27 | }; | |||
28 | static const int gapRatioIndices[12] = { 0, 0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3 }; | |||
29 | ||||
30 |
3/3✓ Branch 1 taken 194 times.
✓ Branch 3 taken 193 times.
✓ Branch 4 taken 1 time.
|
0/1? Decision couldn't be analyzed.
|
194 | for (int idx = 0; reader.haveMore(); idx++) { |
31 |
1/1✓ Branch 1 taken 193 times.
|
193 | reader.processLine(ð); | |
32 | ||||
33 | // Expect that all teeth are in the correct spot | |||
34 | ||||
35 |
1/1✓ Branch 1 taken 193 times.
|
193 | TriggerCentral *tc = getTriggerCentral(); | |
36 | ||||
37 | // We should get first RPM on exactly the first sync point - this means the instant RPM pre-sync event copy all worked OK | |||
38 |
1/1✓ Branch 1 taken 193 times.
|
193 | reader.assertFirstRpm(133, 6); | |
39 |
1/1✓ Branch 1 taken 193 times.
|
193 | auto rpm = Sensor::getOrZero(SensorType::Rpm); | |
40 | ||||
41 |
6/6✓ Branch 0 taken 17 times.
✓ Branch 1 taken 176 times.
✓ Branch 3 taken 1 time.
✓ Branch 4 taken 16 times.
✓ Branch 5 taken 1 time.
✓ Branch 6 taken 192 times.
|
2/2✓ Decision 'true' taken 1 time.
✓ Decision 'false' taken 192 times.
|
193 | if (!reader.gotSync && tc->triggerState.hasSynchronizedPhase()) { |
42 | 1 | reader.gotSync = true; | ||
43 | ||||
44 |
2/6✓ Branch 5 taken 1 time.
✗ Branch 10 not taken.
✓ Branch 11 taken 1 time.
✗ Branch 14 not taken.
✗ Branch 19 not taken.
✗ Branch 22 not taken.
|
1 | EXPECT_EQ(reader.lineIndex(), 17); | |
45 |
2/6✓ Branch 2 taken 1 time.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 time.
✗ Branch 9 not taken.
✗ Branch 14 not taken.
✗ Branch 17 not taken.
|
1 | EXPECT_NEAR(rpm, 204.01f, 0.1); | |
46 | } | |||
47 | ||||
48 | 193 | TriggerDecoderBase& vvtDecoder = tc->vvtState[/*bankIndex*/0][/*camIndex*/0]; | ||
49 | ||||
50 | 193 | float vvtSyncGapRatio = vvtDecoder.triggerSyncGapRatio; | ||
51 | 193 | float gapRatio = gapRatios[idx < 12 ? 0 : 1][gapRatioIndices[idx % 12]]; | ||
52 |
2/2✓ Branch 1 taken 3 times.
✓ Branch 2 taken 190 times.
|
2/2✓ Decision 'true' taken 3 times.
✓ Decision 'false' taken 190 times.
|
193 | if (std::isnan(gapRatio)) { |
53 |
1/6✗ Branch 6 not taken.
✓ Branch 7 taken 3 times.
✗ Branch 10 not taken.
✗ Branch 15 not taken.
✗ Branch 19 not taken.
✗ Branch 22 not taken.
|
3 | EXPECT_TRUE(std::isnan(vvtSyncGapRatio)); | |
54 |
2/2✓ Branch 1 taken 3 times.
✓ Branch 2 taken 187 times.
|
2/2✓ Decision 'true' taken 3 times.
✓ Decision 'false' taken 187 times.
|
190 | } else if (std::isinf(gapRatio)) { |
55 |
1/6✗ Branch 6 not taken.
✓ Branch 7 taken 3 times.
✗ Branch 10 not taken.
✗ Branch 15 not taken.
✗ Branch 19 not taken.
✗ Branch 22 not taken.
|
3 | EXPECT_TRUE(std::isinf(vvtSyncGapRatio)); | |
56 | }else { | |||
57 |
2/6✓ Branch 2 taken 187 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 187 times.
✗ Branch 9 not taken.
✗ Branch 14 not taken.
✗ Branch 17 not taken.
|
187 | EXPECT_NEAR(vvtSyncGapRatio, gapRatio, 0.1); | |
58 | } | |||
59 | } | |||
60 | ||||
61 |
2/8✗ Branch 3 not taken.
✓ Branch 4 taken 1 time.
✗ Branch 7 not taken.
✗ Branch 12 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✓ Branch 28 taken 1 time.
✗ Branch 29 not taken.
|
1 | ASSERT_TRUE(reader.gotRpm); | |
62 |
2/8✗ Branch 3 not taken.
✓ Branch 4 taken 1 time.
✗ Branch 7 not taken.
✗ Branch 12 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✓ Branch 28 taken 1 time.
✗ Branch 29 not taken.
|
1 | ASSERT_TRUE(reader.gotSync); | |
63 | ||||
64 |
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()); | |
65 | 1 | } | ||
66 | ||||
67 | 4 | TEST(real4g93, crankingOn11) { | ||
68 |
1/1✓ Branch 2 taken 1 time.
|
1 | EngineCsvReader reader(2, /* vvtCount */ 0); | |
69 | ||||
70 |
1/1✓ Branch 1 taken 1 time.
|
1 | reader.open("tests/trigger/resources/4g93-cranking.csv"); | |
71 |
1/1✓ Branch 2 taken 1 time.
|
1 | EngineTestHelper eth(engine_type_e::TEST_ENGINE); | |
72 | 1 | engineConfiguration->isFasterEngineSpinUpEnabled = true; | ||
73 | ||||
74 | 1 | engineConfiguration->isPhaseSyncRequiredForIgnition = true; | ||
75 | ||||
76 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.setTriggerType(trigger_type_e::TT_MAZDA_MIATA_NA); | |
77 | ||||
78 |
3/3✓ Branch 1 taken 194 times.
✓ Branch 3 taken 193 times.
✓ Branch 4 taken 1 time.
|
0/1? Decision couldn't be analyzed.
|
194 | while (reader.haveMore()) { |
79 |
1/1✓ Branch 1 taken 193 times.
|
193 | reader.processLine(ð); | |
80 |
1/1✓ Branch 1 taken 193 times.
|
193 | reader.assertFirstRpm(168, 7); | |
81 | } | |||
82 | 2 | } | ||
83 | ||||
84 | 4 | TEST(real4g93, crankingCamOnly) { | ||
85 |
1/1✓ Branch 2 taken 1 time.
|
1 | EngineCsvReader reader(1, /* vvtCount */ 0); | |
86 | ||||
87 |
1/1✓ Branch 1 taken 1 time.
|
1 | reader.open("tests/trigger/resources/4g93-cranking-cam-only.csv"); | |
88 |
1/1✓ Branch 2 taken 1 time.
|
1 | EngineTestHelper eth(engine_type_e::TEST_ENGINE); | |
89 | 1 | engineConfiguration->isFasterEngineSpinUpEnabled = true; | ||
90 | 1 | engineConfiguration->alwaysInstantRpm = true; | ||
91 | ||||
92 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.setTriggerType(trigger_type_e::TT_MITSU_4G63_CAM); | |
93 | ||||
94 |
3/3✓ Branch 1 taken 194 times.
✓ Branch 3 taken 193 times.
✓ Branch 4 taken 1 time.
|
0/1? Decision couldn't be analyzed.
|
194 | while (reader.haveMore()) { |
95 |
1/1✓ Branch 1 taken 193 times.
|
193 | reader.processLine(ð); | |
96 | ||||
97 | // Expect that all teeth are in the correct spot | |||
98 |
1/1✓ Branch 1 taken 193 times.
|
193 | auto rpm = Sensor::getOrZero(SensorType::Rpm); | |
99 |
4/4✓ Branch 0 taken 17 times.
✓ Branch 1 taken 176 times.
✓ Branch 2 taken 1 time.
✓ Branch 3 taken 16 times.
|
2/2✓ Decision 'true' taken 1 time.
✓ Decision 'false' taken 192 times.
|
193 | if (!reader.gotRpm && rpm) { |
100 | 1 | reader.gotRpm = true; | ||
101 | ||||
102 | // We should get first RPM on exactly the first sync point - this means the instant RPM pre-sync event copy all worked OK | |||
103 |
2/6✓ Branch 5 taken 1 time.
✗ Branch 10 not taken.
✓ Branch 11 taken 1 time.
✗ Branch 14 not taken.
✗ Branch 19 not taken.
✗ Branch 22 not taken.
|
1 | EXPECT_EQ(reader.lineIndex(), 17); | |
104 |
2/6✓ Branch 2 taken 1 time.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 time.
✗ Branch 9 not taken.
✗ Branch 14 not taken.
✗ Branch 17 not taken.
|
1 | EXPECT_NEAR(rpm, 194.61f, 0.1); | |
105 | } | |||
106 | ||||
107 |
8/9✓ Branch 0 taken 17 times.
✓ Branch 1 taken 176 times.
✓ Branch 3 taken 17 times.
✓ Branch 5 taken 1 time.
✓ Branch 6 taken 16 times.
✓ Branch 8 taken 1 time.
✗ Branch 9 not taken.
✓ Branch 10 taken 1 time.
✓ Branch 11 taken 192 times.
|
2/2✓ Decision 'true' taken 1 time.
✓ Decision 'false' taken 192 times.
|
193 | if (!reader.gotSync && engine->triggerCentral.triggerState.getShaftSynchronized() && engine->triggerCentral.triggerState.hasSynchronizedPhase()) { |
108 | 1 | reader.gotSync = true; | ||
109 | ||||
110 |
2/6✓ Branch 5 taken 1 time.
✗ Branch 10 not taken.
✓ Branch 11 taken 1 time.
✗ Branch 14 not taken.
✗ Branch 19 not taken.
✗ Branch 22 not taken.
|
1 | EXPECT_EQ(reader.lineIndex(), 17); | |
111 | } | |||
112 | } | |||
113 | ||||
114 |
2/8✗ Branch 3 not taken.
✓ Branch 4 taken 1 time.
✗ Branch 7 not taken.
✗ Branch 12 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✓ Branch 28 taken 1 time.
✗ Branch 29 not taken.
|
1 | ASSERT_TRUE(reader.gotRpm); | |
115 |
2/8✗ Branch 3 not taken.
✓ Branch 4 taken 1 time.
✗ Branch 7 not taken.
✗ Branch 12 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✓ Branch 28 taken 1 time.
✗ Branch 29 not taken.
|
1 | ASSERT_TRUE(reader.gotSync); | |
116 | ||||
117 |
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()); | |
118 | 1 | } | ||
119 |