Line | Branch | Decision | Exec | Source |
---|---|---|---|---|
1 | /* | |||
2 | * @file test_real_cranking_nissan_vq40.cpp | |||
3 | * | |||
4 | * @date Jul 21, 2021 | |||
5 | * @author Andrey Belomutskiy, (c) 2012-2021 | |||
6 | */ | |||
7 | ||||
8 | #include "pch.h" | |||
9 | #include "logicdata_csv_reader.h" | |||
10 | ||||
11 | 2 | static void test(int engineSyncCam, float camOffsetAdd) { | ||
12 |
1/1✓ Branch 2 taken 2 times.
|
2 | CsvReader reader(1, /* vvtCount */ 2); | |
13 | ||||
14 |
1/1✓ Branch 1 taken 2 times.
|
2 | reader.open("tests/trigger/resources/nissan_vq40_cranking-1.csv"); | |
15 |
1/1✓ Branch 2 taken 2 times.
|
2 | EngineTestHelper eth (engine_type_e::HELLEN_121_NISSAN_6_CYL); | |
16 | 2 | setTable(config->ignitionIatCorrTable, 0); | ||
17 | 2 | engineConfiguration->isFasterEngineSpinUpEnabled = false; | ||
18 | 2 | engineConfiguration->alwaysInstantRpm = true; | ||
19 | ||||
20 | // Different sync cam may result in different TDC point, so we might need different cam offsets. | |||
21 | 2 | engineConfiguration->vvtOffsets[0] += camOffsetAdd; | ||
22 | 2 | engineConfiguration->vvtOffsets[2] += camOffsetAdd; | ||
23 | 2 | engineConfiguration->engineSyncCam = engineSyncCam; | ||
24 | ||||
25 | 2 | bool hasSeenFirstVvt = false; | ||
26 | ||||
27 |
3/3✓ Branch 1 taken 1626 times.
✓ Branch 3 taken 1624 times.
✓ Branch 4 taken 2 times.
|
0/1? Decision couldn't be analyzed.
|
1626 | while (reader.haveMore()) { |
28 |
1/1✓ Branch 1 taken 1624 times.
|
1624 | reader.processLine(ð); | |
29 |
1/1✓ Branch 1 taken 1624 times.
|
1624 | float vvt1 = engine->triggerCentral.getVVTPosition(/*bankIndex*/0, /*camIndex*/0); | |
30 |
1/1✓ Branch 1 taken 1624 times.
|
1624 | float vvt2 = engine->triggerCentral.getVVTPosition(/*bankIndex*/1, /*camIndex*/0); | |
31 | ||||
32 |
2/2✓ Branch 0 taken 1298 times.
✓ Branch 1 taken 326 times.
|
2/2✓ Decision 'true' taken 1298 times.
✓ Decision 'false' taken 326 times.
|
1624 | if (vvt1 != 0) { |
33 |
2/2✓ Branch 0 taken 2 times.
✓ Branch 1 taken 1296 times.
|
2/2✓ Decision 'true' taken 2 times.
✓ Decision 'false' taken 1296 times.
|
1298 | if (!hasSeenFirstVvt) { |
34 |
2/6✓ Branch 2 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 14 not taken.
✗ Branch 17 not taken.
|
2 | EXPECT_NEAR(vvt1, 1.4, /*precision*/1); | |
35 | 2 | hasSeenFirstVvt = true; | ||
36 | } | |||
37 | ||||
38 | // cam position should never be reported outside of correct range | |||
39 |
3/10✓ Branch 2 taken 1298 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1298 times.
✗ Branch 5 not taken.
✗ Branch 9 not taken.
✓ Branch 10 taken 1298 times.
✗ Branch 13 not taken.
✗ Branch 18 not taken.
✗ Branch 22 not taken.
✗ Branch 25 not taken.
|
1298 | EXPECT_TRUE(vvt1 > -3 && vvt1 < 3); | |
40 | } | |||
41 | ||||
42 |
2/2✓ Branch 0 taken 1298 times.
✓ Branch 1 taken 326 times.
|
2/2✓ Decision 'true' taken 1298 times.
✓ Decision 'false' taken 326 times.
|
1624 | if (vvt2 != 0) { |
43 | // cam position should never be reported outside of correct range | |||
44 |
3/10✓ Branch 2 taken 1298 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1298 times.
✗ Branch 5 not taken.
✗ Branch 9 not taken.
✓ Branch 10 taken 1298 times.
✗ Branch 13 not taken.
✗ Branch 18 not taken.
✗ Branch 22 not taken.
✗ Branch 25 not taken.
|
1298 | EXPECT_TRUE(vvt2 > -3 && vvt2 < 3); | |
45 | } | |||
46 | } | |||
47 | ||||
48 |
3/7✓ Branch 2 taken 2 times.
✓ Branch 5 taken 2 times.
✗ Branch 8 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 12 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
|
2 | EXPECT_NEAR(engine->triggerCentral.getVVTPosition(/*bankIndex*/0, /*camIndex*/0), 1.351, 1e-2); | |
49 |
3/7✓ Branch 2 taken 2 times.
✓ Branch 5 taken 2 times.
✗ Branch 8 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 12 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
|
2 | EXPECT_NEAR(engine->triggerCentral.getVVTPosition(/*bankIndex*/1, /*camIndex*/0), 1.548, 1e-2); | |
50 |
4/10✓ Branch 3 taken 2 times.
✓ Branch 7 taken 2 times.
✗ Branch 12 not taken.
✓ Branch 13 taken 2 times.
✗ Branch 16 not taken.
✗ Branch 21 not taken.
✗ Branch 26 not taken.
✗ Branch 29 not taken.
✓ Branch 37 taken 2 times.
✗ Branch 38 not taken.
|
2 | ASSERT_EQ(102, round(Sensor::getOrZero(SensorType::Rpm)))<< reader.lineIndex(); | |
51 | ||||
52 | // TODO: why warnings? | |||
53 |
4/9✓ Branch 3 taken 2 times.
✓ Branch 8 taken 2 times.
✗ Branch 13 not taken.
✓ Branch 14 taken 2 times.
✗ Branch 17 not taken.
✗ Branch 22 not taken.
✗ Branch 25 not taken.
✓ Branch 32 taken 2 times.
✗ Branch 33 not taken.
|
2 | ASSERT_EQ(2u, eth.recentWarnings()->getCount()); | |
54 |
4/9✓ Branch 2 taken 2 times.
✓ Branch 7 taken 2 times.
✗ Branch 11 not taken.
✓ Branch 12 taken 2 times.
✗ Branch 15 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✓ Branch 30 taken 2 times.
✗ Branch 31 not taken.
|
2 | ASSERT_EQ(ObdCode::CUSTOM_OUT_OF_ORDER_COIL, eth.recentWarnings()->get(0).Code); // this is from a coil being protected by overdwell protection | |
55 |
4/9✓ Branch 2 taken 2 times.
✓ Branch 7 taken 2 times.
✗ Branch 11 not taken.
✓ Branch 12 taken 2 times.
✗ Branch 15 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✓ Branch 30 taken 2 times.
✗ Branch 31 not taken.
|
2 | ASSERT_EQ(ObdCode::CUSTOM_PRIMARY_TOO_MANY_TEETH, eth.recentWarnings()->get(1).Code); | |
56 | 2 | } | ||
57 | ||||
58 | // On Nissan VQ, all cams have the same pattern, so all should be equally good for engine sync. Check them all! | |||
59 | ||||
60 | 4 | TEST(realCrankingVQ40, normalCrankingSyncCam1) { | ||
61 | 1 | test(0, 0); | ||
62 | 1 | } | ||
63 | ||||
64 | 4 | TEST(realCrankingVQ40, normalCrankingSyncCam2) { | ||
65 | 1 | test(2, -360); | ||
66 | 1 | } | ||
67 |