Line | Branch | Decision | Exec | Source |
---|---|---|---|---|
1 | /* | |||
2 | * test_startOfCrankingPrimingPulse.cpp | |||
3 | * | |||
4 | * Created on: Mar 4, 2018 | |||
5 | * @author Andrey Belomutskiy, (c) 2012-2020 | |||
6 | */ | |||
7 | ||||
8 | #include "pch.h" | |||
9 | #include "util/injection_crank_helper.h" | |||
10 | ||||
11 | 4 | TEST(engine, testPlainCrankingWithoutAdvancedFeatures) { | ||
12 |
1/1✓ Branch 2 taken 1 time.
|
1 | EngineTestHelper eth(engine_type_e::TEST_ENGINE); | |
13 | 1 | setTable(config->injectionPhase, -180.0f); | ||
14 | 1 | engineConfiguration->isFasterEngineSpinUpEnabled = false; | ||
15 | 1 | engine->tdcMarkEnabled = false; | ||
16 |
1/1✓ Branch 1 taken 1 time.
|
1 | setTestFuelCrankingTable(12); | |
17 | ||||
18 |
1/1✓ Branch 1 taken 1 time.
|
1 | setupSimpleTestEngineWithMafAndTT_ONE_trigger(ð); | |
19 |
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, Sensor::getOrZero(SensorType::Rpm)) << "RPM=0"; | |
20 | ||||
21 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.fireTriggerEventsWithDuration(/* durationMs */ 200); | |
22 | // still no RPM since need to cycles measure cycle duration | |||
23 |
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, Sensor::getOrZero(SensorType::Rpm)) << "start-RPM#1"; | |
24 | ||||
25 | ||||
26 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.fireRise(/* delayMs */ 200); | |
27 |
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(300, Sensor::getOrZero(SensorType::Rpm)); | |
28 | // two simultaneous injections | |||
29 |
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( 4, engine->scheduler.size()) << "plain#2"; | |
30 | ||||
31 | 1 | auto const startSimultaneousInjectionAction{ action_s::make<startSimultaneousInjection>() }; | ||
32 | 1 | auto const endSimultaneousInjectionAction{ action_s::make<endSimultaneousInjection>((InjectionEvent*){})}; | ||
33 | ||||
34 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.assertEvent5("sim start", 0, startSimultaneousInjectionAction, 100000 - 1625); | |
35 | // -1 because ugh floating point math | |||
36 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.assertEvent5("sim end", 1, endSimultaneousInjectionAction, 100000 - 1); | |
37 | 1 | } | ||
38 | ||||
39 | ||||
40 | 4 | TEST(priming, startScheduling) { | ||
41 |
1/1✓ Branch 2 taken 1 time.
|
1 | EngineTestHelper eth(engine_type_e::TEST_ENGINE); | |
42 | ||||
43 |
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, Sensor::getOrZero(SensorType::Rpm)) << "RPM=0"; | |
44 | ||||
45 | // Turn on the ignition switch! | |||
46 |
2/2✓ Branch 1 taken 1 time.
✓ Branch 5 taken 1 time.
|
1 | engine->module<PrimeController>()->onIgnitionStateChanged(true); | |
47 | ||||
48 |
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(1, engine->scheduler.size()) << "prime fuel"; | |
49 | 1 | } | ||
50 | ||||
51 | 4 | TEST(priming, duration) { | ||
52 |
1/1✓ Branch 2 taken 1 time.
|
1 | EngineTestHelper eth(engine_type_e::TEST_ENGINE); | |
53 | ||||
54 |
1/1✓ Branch 2 taken 1 time.
|
1 | MockInjectorModel2 injectorModel; | |
55 |
1/1✓ Branch 1 taken 1 time.
|
1 | engine->module<InjectorModelPrimary>().set(&injectorModel); | |
56 | ||||
57 |
2/2✓ Branch 1 taken 8 times.
✓ Branch 2 taken 1 time.
|
2/2✓ Decision 'true' taken 8 times.
✓ Decision 'false' taken 1 time.
|
9 | for (size_t i = 0; i < efi::size(engineConfiguration->primeBins); i++) { |
58 | 8 | engineConfiguration->primeBins[i] = i * 10; | ||
59 | } | |||
60 | ||||
61 |
7/7✓ Branch 3 taken 1 time.
✓ Branch 6 taken 1 time.
✓ Branch 10 taken 1 time.
✓ Branch 14 taken 1 time.
✓ Branch 19 taken 1 time.
✓ Branch 22 taken 1 time.
✓ Branch 25 taken 1 time.
|
1 | EXPECT_CALL(injectorModel, getInjectionDuration(0.075f)).WillOnce(Return(20.0f)); | |
62 | 1 | engineConfiguration->primeValues[5] = 75; // <-- We test this point | ||
63 | ||||
64 | // With coolant temp, we should see value from mock | |||
65 |
1/1✓ Branch 1 taken 1 time.
|
1 | Sensor::setMockValue(SensorType::Clt, 50); | |
66 |
4/8✓ Branch 3 taken 1 time.
✓ Branch 7 taken 1 time.
✓ Branch 11 taken 1 time.
✗ Branch 16 not taken.
✓ Branch 17 taken 1 time.
✗ Branch 20 not taken.
✗ Branch 25 not taken.
✗ Branch 28 not taken.
|
1 | EXPECT_EQ(20, engine->module<PrimeController>()->getPrimeDuration()); | |
67 | ||||
68 | // Without coolant temp, no prime | |||
69 |
1/1✓ Branch 1 taken 1 time.
|
1 | Sensor::resetMockValue(SensorType::Clt); | |
70 |
4/8✓ Branch 3 taken 1 time.
✓ Branch 7 taken 1 time.
✓ Branch 11 taken 1 time.
✗ Branch 16 not taken.
✓ Branch 17 taken 1 time.
✗ Branch 20 not taken.
✗ Branch 25 not taken.
✗ Branch 28 not taken.
|
1 | EXPECT_EQ(0, engine->module<PrimeController>()->getPrimeDuration()); | |
71 | 2 | } | ||
72 |