| Line | Branch | Decision | Exec | Source |
|---|---|---|---|---|
| 1 | /** | |||
| 2 | * @file test_trigger_decoder.cpp | |||
| 3 | * | |||
| 4 | * @date Dec 24, 2013 | |||
| 5 | * @author Andrey Belomutskiy, (c) 2012-2020 | |||
| 6 | */ | |||
| 7 | ||||
| 8 | #include "pch.h" | |||
| 9 | ||||
| 10 | #include "trigger_decoder.h" | |||
| 11 | #include "ford_aspire.h" | |||
| 12 | #include "dodge_neon.h" | |||
| 13 | #include "ford_1995_inline_6.h" | |||
| 14 | #include "event_queue.h" | |||
| 15 | #include "trigger_mazda.h" | |||
| 16 | #include "trigger_chrysler.h" | |||
| 17 | #include "speed_density.h" | |||
| 18 | #include "fuel_math.h" | |||
| 19 | #include "spark_logic.h" | |||
| 20 | #include "trigger_universal.h" | |||
| 21 | #include "engine_configuration_defaults.h" | |||
| 22 | ||||
| 23 | using ::testing::_; | |||
| 24 | ||||
| 25 | 2 | static int getTriggerZeroEventIndex(engine_type_e engineType) { | ||
| 26 |
1/1✓ Branch 2 taken 2 times.
|
2 | EngineTestHelper eth(engineType); | |
| 27 | ||||
| 28 |
1/1✓ Branch 1 taken 2 times.
|
2 | initDataStructures(); | |
| 29 | ||||
| 30 | 2 | const auto& triggerConfiguration = engine->triggerCentral.primaryTriggerConfiguration; | ||
| 31 | ||||
| 32 | 2 | TriggerWaveform& shape = eth.engine.triggerCentral.triggerShape; | ||
| 33 |
1/1✓ Branch 1 taken 2 times.
|
4 | return eth.engine.triggerCentral.triggerState.findTriggerZeroEventIndex(shape, triggerConfiguration); | |
| 34 | 2 | } | ||
| 35 | ||||
| 36 | 4 | TEST(trigger, testSkipped2_0) { | ||
| 37 |
1/1✓ Branch 2 taken 1 time.
|
1 | EngineTestHelper eth(engine_type_e::TEST_ENGINE); | |
| 38 | // for this test we need a trigger with isSynchronizationNeeded=true | |||
| 39 | 1 | engineConfiguration->trigger.customTotalToothCount = 2; | ||
| 40 | 1 | engineConfiguration->trigger.customSkippedToothCount = 0; | ||
| 41 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.setTriggerType(trigger_type_e::TT_TOOTHED_WHEEL); | |
| 42 |
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, round(Sensor::getOrZero(SensorType::Rpm))) << "testNoStartUpWarnings RPM"; | |
| 43 | 1 | } | ||
| 44 | ||||
| 45 | 4 | TEST(trigger, testSomethingWeird) { | ||
| 46 |
1/1✓ Branch 2 taken 1 time.
|
1 | EngineTestHelper eth(engine_type_e::FORD_INLINE_6_1995); | |
| 47 | ||||
| 48 |
1/1✓ Branch 2 taken 1 time.
|
1 | TriggerDecoderBase state_("test"); | |
| 49 | ||||
| 50 | 1 | const auto& triggerConfiguration = engine->triggerCentral.primaryTriggerConfiguration; | ||
| 51 | ||||
| 52 |
2/9✗ Branch 5 not taken.
✓ Branch 6 taken 1 time.
✗ Branch 9 not taken.
✗ Branch 12 not taken.
✗ Branch 17 not taken.
✗ Branch 21 not taken.
✗ Branch 24 not taken.
✓ Branch 33 taken 1 time.
✗ Branch 34 not taken.
|
1 | ASSERT_FALSE(state_.shaft_is_synchronized) << "shaft_is_synchronized"; | |
| 53 | 1 | int r = 10; | ||
| 54 |
1/1✓ Branch 1 taken 1 time.
|
1 | state_.decodeTriggerEvent("t", engine->triggerCentral.triggerShape, /* override */ nullptr, triggerConfiguration, SHAFT_PRIMARY_RISING, ++r); | |
| 55 |
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(state_.shaft_is_synchronized); // first signal rise synchronize | |
| 56 |
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(0, state_.getCurrentIndex()); | |
| 57 | ||||
| 58 |
2/2✓ Branch 0 taken 4 times.
✓ Branch 1 taken 1 time.
|
2/2✓ Decision 'true' taken 4 times.
✓ Decision 'false' taken 1 time.
|
5 | for (int i = 2; i < 10; i += 2) { |
| 59 |
1/1✓ Branch 1 taken 4 times.
|
4 | state_.decodeTriggerEvent("t", engine->triggerCentral.triggerShape, /* override */ nullptr, triggerConfiguration, SHAFT_PRIMARY_RISING, r++); | |
| 60 |
4/10✓ Branch 2 taken 4 times.
✓ Branch 5 taken 4 times.
✗ Branch 8 not taken.
✓ Branch 9 taken 4 times.
✗ Branch 12 not taken.
✗ Branch 15 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✓ Branch 30 taken 4 times.
✗ Branch 31 not taken.
|
4 | ASSERT_NEAR(i, state_.getCurrentIndex(), 0.0001) << "even"; | |
| 61 | } | |||
| 62 | ||||
| 63 |
1/1✓ Branch 1 taken 1 time.
|
1 | state_.decodeTriggerEvent("test", engine->triggerCentral.triggerShape, /* override */ nullptr, triggerConfiguration, SHAFT_PRIMARY_RISING, r++); | |
| 64 |
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(10, state_.getCurrentIndex()); | |
| 65 | ||||
| 66 |
1/1✓ Branch 1 taken 1 time.
|
1 | state_.decodeTriggerEvent("test", engine->triggerCentral.triggerShape, /* override */ nullptr, triggerConfiguration, SHAFT_PRIMARY_RISING, r++); | |
| 67 |
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(0, state_.getCurrentIndex()); // new revolution | |
| 68 | 1 | } | ||
| 69 | ||||
| 70 | 4 | TEST(trigger, test1995FordInline6TriggerDecoder) { | ||
| 71 |
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, getTriggerZeroEventIndex(engine_type_e::FORD_INLINE_6_1995)) << "triggerIndex "; | |
| 72 | ||||
| 73 |
1/1✓ Branch 2 taken 1 time.
|
1 | EngineTestHelper eth(engine_type_e::FORD_INLINE_6_1995); | |
| 74 | 1 | setTable(config->ignitionIatCorrTable, 0); | ||
| 75 | 1 | engineConfiguration->isFasterEngineSpinUpEnabled = false; | ||
| 76 | ||||
| 77 | 1 | engineConfiguration->minimumIgnitionTiming = -15; | ||
| 78 |
1/1✓ Branch 1 taken 1 time.
|
1 | setWholeTimingTable(-13); | |
| 79 | ||||
| 80 |
1/1✓ Branch 1 taken 1 time.
|
1 | Sensor::setMockValue(SensorType::Iat, 49.579071f); | |
| 81 | ||||
| 82 | 1 | TriggerWaveform * shape = &engine->triggerCentral.triggerShape; | ||
| 83 | ||||
| 84 |
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, shape->getTriggerWaveformSynchPointIndex()) << "triggerShapeSynchPointIndex"; | |
| 85 | ||||
| 86 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.applyTriggerWaveform(); | |
| 87 | ||||
| 88 |
1/1✓ Branch 1 taken 1 time.
|
1 | engine->periodicFastCallback(); | |
| 89 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.fireTriggerEvents(48); | |
| 90 |
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(2000, Sensor::getOrZero(SensorType::Rpm)); | |
| 91 |
1/1✓ Branch 1 taken 1 time.
|
1 | engine->periodicFastCallback(); | |
| 92 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.fireTriggerEvents(48); | |
| 93 | ||||
| 94 | 1 | IgnitionEventList *ecl = &engine->ignitionEvents; | ||
| 95 |
3/9✓ Branch 3 taken 1 time.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 time.
✗ Branch 11 not taken.
✗ Branch 14 not taken.
✗ Branch 19 not taken.
✗ Branch 22 not taken.
✓ Branch 29 taken 1 time.
✗ Branch 30 not taken.
|
1 | ASSERT_EQ(true, ecl->isReady) << "ford inline ignition events size"; | |
| 96 | ||||
| 97 |
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(ecl->elements[0].dwellAngle, 7, 1e-3); | |
| 98 |
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(ecl->elements[0].sparkAngle, 13, 1e-3); | |
| 99 |
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(ecl->elements[5].dwellAngle, 607, 1e-3); | |
| 100 |
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(ecl->elements[5].sparkAngle, 613.0f, 1e-3); | |
| 101 | ||||
| 102 |
1/1✓ Branch 1 taken 1 time.
|
1 | engine->ignitionState.updateDwell(2000, false); | |
| 103 |
4/10✓ Branch 2 taken 1 time.
✓ Branch 5 taken 1 time.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 time.
✗ Branch 12 not taken.
✗ Branch 15 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✓ Branch 30 taken 1 time.
✗ Branch 31 not taken.
|
1 | ASSERT_FLOAT_EQ(0.5, engine->ignitionState.getDwell()) << "running dwell"; | |
| 104 | } | |||
| 105 | ||||
| 106 | 4 | TEST(misc, testGetCoilDutyCycleIssue977) { | ||
| 107 |
1/1✓ Branch 2 taken 1 time.
|
1 | EngineTestHelper eth(engine_type_e::TEST_ENGINE); | |
| 108 |
1/1✓ Branch 1 taken 1 time.
|
1 | setSingleCoilDwell(); | |
| 109 | 1 | engineConfiguration->ignitionMode = IM_ONE_COIL; | ||
| 110 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.setTriggerType(trigger_type_e::TT_FORD_ASPIRE); | |
| 111 | ||||
| 112 | 1 | float rpm = 2000; | ||
| 113 |
1/1✓ Branch 1 taken 1 time.
|
1 | engine->rpmCalculator.setRpmValue(rpm); | |
| 114 |
1/1✓ Branch 1 taken 1 time.
|
1 | engine->ignitionState.updateDwell(rpm, false); | |
| 115 |
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->ignitionState.getDwell()) << "running dwell"; | |
| 116 | ||||
| 117 |
4/9✓ Branch 2 taken 1 time.
✓ Branch 5 taken 1 time.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 time.
✗ Branch 12 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✓ Branch 27 taken 1 time.
✗ Branch 28 not taken.
|
1 | ASSERT_NEAR( 26.66666, getCoilDutyCycle(rpm), 0.0001); | |
| 118 | 1 | } | ||
| 119 | ||||
| 120 | 4 | TEST(misc, testFordAspire) { | ||
| 121 |
1/1✓ Branch 1 taken 1 time.
|
1 | printf("*************************************************** testFordAspire\r\n"); | |
| 122 | ||||
| 123 |
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, getTriggerZeroEventIndex(engine_type_e::FORD_ASPIRE_1996)) << "getTriggerZeroEventIndex"; | |
| 124 | ||||
| 125 |
1/1✓ Branch 2 taken 1 time.
|
1 | EngineTestHelper eth(engine_type_e::FORD_ASPIRE_1996); | |
| 126 | ||||
| 127 |
5/11✓ Branch 3 taken 1 time.
✓ Branch 6 taken 1 time.
✓ Branch 10 taken 1 time.
✗ Branch 15 not taken.
✓ Branch 16 taken 1 time.
✗ Branch 19 not taken.
✗ Branch 22 not taken.
✗ Branch 27 not taken.
✗ Branch 30 not taken.
✓ Branch 37 taken 1 time.
✗ Branch 38 not taken.
|
1 | ASSERT_EQ( 4, getTriggerCentral()->triggerShape.getTriggerWaveformSynchPointIndex()) << "getTriggerWaveformSynchPointIndex"; | |
| 128 | ||||
| 129 | 1 | engineConfiguration->crankingTimingAngle = 31; | ||
| 130 | ||||
| 131 | 1 | int rpm = 2000; | ||
| 132 |
1/1✓ Branch 1 taken 1 time.
|
1 | engine->rpmCalculator.setRpmValue(rpm); | |
| 133 |
1/1✓ Branch 1 taken 1 time.
|
1 | engine->ignitionState.updateDwell(rpm, false); | |
| 134 |
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->ignitionState.getDwell()) << "running dwell"; | |
| 135 | ||||
| 136 |
1/1✓ Branch 1 taken 1 time.
|
1 | engine->rpmCalculator.setRpmValue(6000); | |
| 137 |
1/1✓ Branch 1 taken 1 time.
|
1 | engine->ignitionState.updateDwell(6000, false); | |
| 138 |
4/10✓ Branch 2 taken 1 time.
✓ Branch 5 taken 1 time.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 time.
✗ Branch 12 not taken.
✗ Branch 15 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✓ Branch 30 taken 1 time.
✗ Branch 31 not taken.
|
1 | ASSERT_NEAR(3.25, engine->ignitionState.getDwell(), 0.0001) << "higher rpm dwell"; | |
| 139 | ||||
| 140 | } | |||
| 141 | ||||
| 142 | extern TriggerDecoderBase initState; | |||
| 143 | ||||
| 144 | 13 | static void testTriggerDecoder2(const char *msg, engine_type_e type, int synchPointIndex, float channel1duty, float channel2duty, float expectedGapRatio = NAN) { | ||
| 145 |
1/1✓ Branch 1 taken 13 times.
|
13 | printf("====================================================================================== testTriggerDecoder2 msg=%s\r\n", msg); | |
| 146 | ||||
| 147 | // Some configs use aux valves, which requires this sensor | |||
| 148 |
1/1✓ Branch 6 taken 13 times.
|
39 | std::unordered_map<SensorType, float> sensorVals = {{SensorType::DriverThrottleIntent, 0}}; | |
| 149 |
1/1✓ Branch 2 taken 13 times.
|
13 | EngineTestHelper eth(type, sensorVals); | |
| 150 | ||||
| 151 | 13 | TriggerWaveform *t = &engine->triggerCentral.triggerShape; | ||
| 152 | ||||
| 153 |
2/9✗ Branch 5 not taken.
✓ Branch 6 taken 13 times.
✗ Branch 9 not taken.
✗ Branch 12 not taken.
✗ Branch 17 not taken.
✗ Branch 21 not taken.
✗ Branch 24 not taken.
✓ Branch 33 taken 13 times.
✗ Branch 34 not taken.
|
13 | ASSERT_FALSE(t->shapeDefinitionError) << "isError"; | |
| 154 | ||||
| 155 |
4/11✓ Branch 3 taken 13 times.
✓ Branch 6 taken 13 times.
✗ Branch 10 not taken.
✓ Branch 11 taken 13 times.
✗ Branch 14 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 25 not taken.
✗ Branch 28 not taken.
✓ Branch 35 taken 13 times.
✗ Branch 36 not taken.
|
13 | ASSERT_EQ(synchPointIndex, t->getTriggerWaveformSynchPointIndex()) << "synchPointIndex " << msg; | |
| 156 |
2/2✓ Branch 1 taken 1 time.
✓ Branch 2 taken 12 times.
|
2/2✓ Decision 'true' taken 1 time.
✓ Decision 'false' taken 12 times.
|
13 | if (!std::isnan(expectedGapRatio)) { |
| 157 |
3/9✓ Branch 2 taken 1 time.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 time.
✗ Branch 9 not taken.
✗ Branch 12 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✓ Branch 27 taken 1 time.
✗ Branch 28 not taken.
|
1 | ASSERT_NEAR(expectedGapRatio, initState.triggerSyncGapRatio, 0.001) << "actual gap ratio"; | |
| 158 | } | |||
| 159 | 13 | } | ||
| 160 | ||||
| 161 | //same as testTriggerDecoder2 but using trigger type not engine type | |||
| 162 | 2 | static void testTriggerDecoderByTriggerType(const char *msg, trigger_type_e type, int synchPointIndex, float channel1duty, float channel2duty, float expectedGapRatio = NAN) { | ||
| 163 |
1/1✓ Branch 1 taken 2 times.
|
2 | printf("====================================================================================== testTriggerDecoderByTriggerName msg=%s\r\n", msg); | |
| 164 | ||||
| 165 | // Some configs use aux valves, which requires this sensor | |||
| 166 |
1/1✓ Branch 6 taken 2 times.
|
6 | std::unordered_map<SensorType, float> sensorVals = {{SensorType::DriverThrottleIntent, 0}}; | |
| 167 |
1/1✓ Branch 2 taken 2 times.
|
2 | EngineTestHelper eth(engine_type_e::TEST_ENGINE, sensorVals); | |
| 168 |
1/1✓ Branch 1 taken 2 times.
|
2 | eth.setTriggerType(type); | |
| 169 | ||||
| 170 | 2 | TriggerWaveform *t = &engine->triggerCentral.triggerShape; | ||
| 171 | ||||
| 172 |
2/9✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 12 not taken.
✗ Branch 17 not taken.
✗ Branch 21 not taken.
✗ Branch 24 not taken.
✓ Branch 33 taken 2 times.
✗ Branch 34 not taken.
|
2 | ASSERT_FALSE(t->shapeDefinitionError) << "isError"; | |
| 173 | ||||
| 174 |
4/11✓ Branch 3 taken 2 times.
✓ Branch 6 taken 2 times.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
✗ Branch 14 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 25 not taken.
✗ Branch 28 not taken.
✓ Branch 35 taken 2 times.
✗ Branch 36 not taken.
|
2 | ASSERT_EQ(synchPointIndex, t->getTriggerWaveformSynchPointIndex()) << "synchPointIndex " << msg; | |
| 175 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 2 times.
|
1/2✗ Decision 'true' not taken.
✓ Decision 'false' taken 2 times.
|
2 | if (!std::isnan(expectedGapRatio)) { |
| 176 | ✗ | ASSERT_NEAR(expectedGapRatio, initState.triggerSyncGapRatio, 0.001) << "actual gap ratio"; | ||
| 177 | } | |||
| 178 | 2 | } | ||
| 179 | ||||
| 180 | 2 | static void assertActionCallbacksEqual(const char *msg, action_s const& expected_action, action_s const& actual_action) { | ||
| 181 |
3/9✓ Branch 6 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(expected_action.getCallback(), actual_action.getCallback()) << msg; | |
| 182 | } | |||
| 183 | ||||
| 184 | extern bool debugSignalExecutor; | |||
| 185 | ||||
| 186 | 1 | void configureTestDefaultLambdas() { | ||
| 187 | 1 | constexpr size_t TEST_LAMBDA_TABLE_COLUMN_COUNT = efi::size(engine_configuration_defaults::DEFAULT_LAMBDA_TABLE_ROW); | ||
| 188 | static_assert(TEST_LAMBDA_TABLE_COLUMN_COUNT == efi::size(engine_configuration_defaults::DEFAULT_LAMBDA_LOAD_BINS)); | |||
| 189 | static_assert(TEST_LAMBDA_TABLE_COLUMN_COUNT <= FUEL_LOAD_COUNT); | |||
| 190 | 1 | copyArray(config->lambdaLoadBins, engine_configuration_defaults::DEFAULT_LAMBDA_LOAD_BINS); | ||
| 191 | ||||
| 192 | // Set each row to the corresponding value from rowValues | |||
| 193 |
2/2✓ Branch 1 taken 16 times.
✓ Branch 2 taken 1 time.
|
2/2✓ Decision 'true' taken 16 times.
✓ Decision 'false' taken 1 time.
|
17 | for (size_t i = 0; i < efi::size(config->lambdaTable); i++) { |
| 194 |
2/2✓ Branch 2 taken 256 times.
✓ Branch 3 taken 16 times.
|
2/2✓ Decision 'true' taken 256 times.
✓ Decision 'false' taken 16 times.
|
272 | for (size_t j = 0; j < efi::size(config->lambdaTable[i]); j++) { |
| 195 | 256 | config->lambdaTable[i][j] = engine_configuration_defaults::DEFAULT_LAMBDA_TABLE_ROW[i]; | ||
| 196 | } | |||
| 197 | } | |||
| 198 | 1 | } | ||
| 199 | ||||
| 200 | 4 | TEST(misc, testRpmCalculator) { | ||
| 201 |
1/1✓ Branch 2 taken 1 time.
|
1 | EngineTestHelper eth(engine_type_e::FORD_INLINE_6_1995); | |
| 202 |
1/3✗ Branch 0 not taken.
✓ Branch 1 taken 1 time.
✗ Branch 3 not taken.
|
1 | efiAssertVoid(ObdCode::CUSTOM_ERR_6670, engineConfiguration!=NULL, "null config in engine"); | |
| 203 | ||||
| 204 |
1/1✓ Branch 1 taken 1 time.
|
1 | configureTestDefaultLambdas(); | |
| 205 | 1 | setTable(config->injectionPhase, -180.0f); | ||
| 206 | ||||
| 207 | 1 | engine->tdcMarkEnabled = false; | ||
| 208 | ||||
| 209 | // These tests were written when the default target AFR was 14.0, so replicate that | |||
| 210 | 1 | engineConfiguration->stoichRatioPrimary = 14; | ||
| 211 | ||||
| 212 |
5/5✓ Branch 3 taken 1 time.
✓ Branch 7 taken 1 time.
✓ Branch 10 taken 1 time.
✓ Branch 13 taken 1 time.
✓ Branch 17 taken 1 time.
|
3 | EXPECT_CALL(*eth.mockAirmass, getAirmass(_, _)) | |
| 213 |
3/3✓ Branch 5 taken 1 time.
✓ Branch 8 taken 1 time.
✓ Branch 11 taken 1 time.
|
3 | .WillRepeatedly(Return(AirmassResult{0.3024f, 50.0f})); | |
| 214 | ||||
| 215 | 1 | IgnitionEventList *ilist = &engine->ignitionEvents; | ||
| 216 |
3/9✓ Branch 3 taken 1 time.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 time.
✗ Branch 11 not taken.
✗ Branch 14 not taken.
✗ Branch 19 not taken.
✗ Branch 22 not taken.
✓ Branch 29 taken 1 time.
✗ Branch 30 not taken.
|
1 | ASSERT_EQ( 0, ilist->isReady) << "size #1"; | |
| 217 | ||||
| 218 |
3/9✓ Branch 3 taken 1 time.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 time.
✗ Branch 11 not taken.
✗ Branch 14 not taken.
✗ Branch 19 not taken.
✗ Branch 22 not taken.
✓ Branch 29 taken 1 time.
✗ Branch 30 not taken.
|
1 | ASSERT_EQ( 720, engine->engineState.engineCycle) << "engineCycle"; | |
| 219 | ||||
| 220 | 1 | engineConfiguration->minimumIgnitionTiming = -15; | ||
| 221 | 1 | float timingAdvance = -13; | ||
| 222 |
1/1✓ Branch 1 taken 1 time.
|
1 | setWholeTimingTable(timingAdvance); | |
| 223 | ||||
| 224 | 1 | engineConfiguration->trigger.customTotalToothCount = 8; | ||
| 225 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.applyTriggerWaveform(); | |
| 226 | ||||
| 227 |
1/1✓ Branch 1 taken 1 time.
|
1 | setFlatInjectorLag(0); | |
| 228 | ||||
| 229 |
1/1✓ Branch 1 taken 1 time.
|
1 | engine->updateSlowSensors(); | |
| 230 | ||||
| 231 |
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(0, round(Sensor::getOrZero(SensorType::Rpm))); | |
| 232 | ||||
| 233 | // triggerIndexByAngle update is now fixed! prepareOutputSignals() wasn't reliably called | |||
| 234 |
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(4, engine->triggerCentral.triggerShape.findAngleIndex(&engine->triggerCentral.triggerFormDetails, 240)); | |
| 235 |
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(4, engine->triggerCentral.triggerShape.findAngleIndex(&engine->triggerCentral.triggerFormDetails, 241)); | |
| 236 | ||||
| 237 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.fireTriggerEvents(/* count */ 48); | |
| 238 | ||||
| 239 |
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(1500, Sensor::getOrZero(SensorType::Rpm)); | |
| 240 |
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( 14, engine->triggerCentral.triggerState.getCurrentIndex()) << "index #1"; | |
| 241 | ||||
| 242 | ||||
| 243 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.executeActions(); | |
| 244 | ||||
| 245 | // debugSignalExecutor = true; | |||
| 246 | ||||
| 247 |
4/9✓ Branch 4 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(engine->triggerCentral.triggerState.getShaftSynchronized(), 1); | |
| 248 | ||||
| 249 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.moveTimeForwardMs(5 /*ms*/); | |
| 250 | ||||
| 251 |
1/1✓ Branch 2 taken 1 time.
|
1 | int start = getTimeNowUs(); | |
| 252 |
3/9✓ Branch 3 taken 1 time.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 time.
✗ Branch 11 not taken.
✗ Branch 14 not taken.
✗ Branch 19 not taken.
✗ Branch 22 not taken.
✓ Branch 29 taken 1 time.
✗ Branch 30 not taken.
|
1 | ASSERT_EQ( 485000, start) << "start value"; | |
| 253 | ||||
| 254 |
1/1✓ Branch 1 taken 1 time.
|
1 | engine->periodicFastCallback(); | |
| 255 | ||||
| 256 |
3/8✓ 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.
✓ Branch 24 taken 1 time.
✗ Branch 25 not taken.
|
1 | ASSERT_NEAR(engine->engineState.timingAdvance[0], 720 + timingAdvance, 0.1f); | |
| 257 | ||||
| 258 |
3/9✓ Branch 2 taken 1 time.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 time.
✗ Branch 9 not taken.
✗ Branch 12 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✓ Branch 27 taken 1 time.
✗ Branch 28 not taken.
|
1 | ASSERT_NEAR(4.5450, engine->engineState.injectionDuration, EPS4D) << "fuel #1"; | |
| 259 | 1 | InjectionEvent *ie0 = &engine->injectionEvents.elements[0]; | ||
| 260 |
3/9✓ Branch 2 taken 1 time.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 time.
✗ Branch 9 not taken.
✗ Branch 12 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✓ Branch 27 taken 1 time.
✗ Branch 28 not taken.
|
1 | ASSERT_NEAR(499.095, ie0->injectionStartAngle, EPS4D) << "injection angle"; | |
| 261 | ||||
| 262 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.firePrimaryTriggerRise(); | |
| 263 |
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(1500, Sensor::getOrZero(SensorType::Rpm)); | |
| 264 | ||||
| 265 |
4/10✓ Branch 2 taken 1 time.
✓ Branch 5 taken 1 time.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 time.
✗ Branch 12 not taken.
✗ Branch 15 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✓ Branch 30 taken 1 time.
✗ Branch 31 not taken.
|
1 | ASSERT_NEAR(eth.timeToAngle(FORD_INLINE_DWELL), engine->ignitionState.dwellDurationAngle, EPS4D) << "dwell"; | |
| 266 |
3/9✓ Branch 2 taken 1 time.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 time.
✗ Branch 9 not taken.
✗ Branch 12 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✓ Branch 27 taken 1 time.
✗ Branch 28 not taken.
|
1 | ASSERT_NEAR(4.5450, engine->engineState.injectionDuration, EPS4D) << "fuel #2"; | |
| 267 |
3/9✓ Branch 2 taken 1 time.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 time.
✗ Branch 9 not taken.
✗ Branch 12 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✓ Branch 27 taken 1 time.
✗ Branch 28 not taken.
|
1 | ASSERT_NEAR(111.1111, engine->rpmCalculator.oneDegreeUs, EPS4D) << "one degree"; | |
| 268 |
3/9✓ Branch 3 taken 1 time.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 time.
✗ Branch 11 not taken.
✗ Branch 14 not taken.
✗ Branch 19 not taken.
✗ Branch 22 not taken.
✓ Branch 29 taken 1 time.
✗ Branch 30 not taken.
|
1 | ASSERT_EQ( 1, ilist->isReady) << "size #2"; | |
| 269 |
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(ilist->elements[0].dwellAngle, 8.5f, 1e-3); | |
| 270 |
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(ilist->elements[0].sparkAngle, 13.0f, 1e-3); | |
| 271 | ||||
| 272 |
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, engine->triggerCentral.triggerState.getCurrentIndex()) << "index #2"; | |
| 273 |
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()) << "queue size/2"; | |
| 274 | { | |||
| 275 |
1/1✓ Branch 1 taken 1 time.
|
1 | auto const ev0{ engine->scheduler.getForUnitTest(0) }; | |
| 276 | 1 | auto const turnSparkPinHighStartChargingAction{ action_s::make<turnSparkPinHighStartCharging>((IgnitionEvent*){}) }; | ||
| 277 |
1/1✓ Branch 1 taken 1 time.
|
1 | assertActionCallbacksEqual("Call@0", ev0->action, turnSparkPinHighStartChargingAction); | |
| 278 |
3/9✓ Branch 5 taken 1 time.
✗ Branch 10 not taken.
✓ Branch 11 taken 1 time.
✗ Branch 14 not taken.
✗ Branch 17 not taken.
✗ Branch 22 not taken.
✗ Branch 25 not taken.
✓ Branch 32 taken 1 time.
✗ Branch 33 not taken.
|
1 | ASSERT_EQ(start + 944, ev0->getMomentUs()) << "ev 0"; | |
| 279 |
2/7✓ Branch 4 taken 1 time.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 time.
✗ Branch 12 not taken.
✗ Branch 15 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_EQ(&enginePins.coils[0], ev0->action.getArgument<IgnitionEvent*>()->outputs[0]) << "coil 0"; | |
| 280 | ||||
| 281 |
1/1✓ Branch 1 taken 1 time.
|
1 | auto const ev1{ engine->scheduler.getForUnitTest(1) }; | |
| 282 | 1 | auto const fireSparkAndPrepareNextScheduleAction{ action_s::make<fireSparkAndPrepareNextSchedule>((IgnitionEvent*){}) }; | ||
| 283 |
1/1✓ Branch 1 taken 1 time.
|
1 | assertActionCallbacksEqual("Call@1", ev1->action, fireSparkAndPrepareNextScheduleAction); | |
| 284 |
3/9✓ Branch 5 taken 1 time.
✗ Branch 10 not taken.
✓ Branch 11 taken 1 time.
✗ Branch 14 not taken.
✗ Branch 17 not taken.
✗ Branch 22 not taken.
✗ Branch 25 not taken.
✓ Branch 32 taken 1 time.
✗ Branch 33 not taken.
|
1 | ASSERT_EQ(start + 944 + 1000 * FORD_INLINE_DWELL, ev1->getMomentUs()) << "ev 1"; | |
| 285 |
2/7✓ Branch 4 taken 1 time.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 time.
✗ Branch 12 not taken.
✗ Branch 15 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_EQ(&enginePins.coils[0], ev1->action.getArgument<IgnitionEvent*>()->outputs[0]) << "coil 1"; | |
| 286 | } | |||
| 287 | ||||
| 288 |
1/1✓ Branch 1 taken 1 time.
|
1 | engine->scheduler.clear(); | |
| 289 | ||||
| 290 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.fireFall(5); | |
| 291 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.fireRise(5); | |
| 292 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.fireFall(5); | |
| 293 |
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( 2, engine->triggerCentral.triggerState.getCurrentIndex()) << "index #3"; | |
| 294 |
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()) << "queue size 3"; | |
| 295 | ||||
| 296 |
4/10✓ Branch 3 taken 1 time.
✓ Branch 8 taken 1 time.
✗ Branch 13 not taken.
✓ Branch 14 taken 1 time.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 25 not taken.
✗ Branch 28 not taken.
✓ Branch 35 taken 1 time.
✗ Branch 36 not taken.
|
1 | ASSERT_EQ(start + 13333 - 1515 + 2459, engine->scheduler.getForUnitTest(0)->getMomentUs()) << "ev 3"; | |
| 297 |
4/10✓ Branch 3 taken 1 time.
✓ Branch 8 taken 1 time.
✗ Branch 13 not taken.
✓ Branch 14 taken 1 time.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 25 not taken.
✗ Branch 28 not taken.
✓ Branch 35 taken 1 time.
✗ Branch 36 not taken.
|
1 | ASSERT_EQ(start + 14277 + 500, engine->scheduler.getForUnitTest(1)->getMomentUs()) << "ev 5"; | |
| 298 |
4/10✓ Branch 3 taken 1 time.
✓ Branch 8 taken 1 time.
✗ Branch 13 not taken.
✓ Branch 14 taken 1 time.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 25 not taken.
✗ Branch 28 not taken.
✓ Branch 35 taken 1 time.
✗ Branch 36 not taken.
|
1 | ASSERT_EQ(start + 14777 + 677, engine->scheduler.getForUnitTest(2)->getMomentUs()) << "3/3"; | |
| 299 |
1/1✓ Branch 1 taken 1 time.
|
1 | engine->scheduler.clear(); | |
| 300 | ||||
| 301 |
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(4, engine->triggerCentral.triggerShape.findAngleIndex(&engine->triggerCentral.triggerFormDetails, 240)); | |
| 302 |
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(4, engine->triggerCentral.triggerShape.findAngleIndex(&engine->triggerCentral.triggerFormDetails, 241)); | |
| 303 | ||||
| 304 | ||||
| 305 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.fireFall(5); | |
| 306 |
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, engine->scheduler.size()) << "queue size 4.1"; | |
| 307 | ||||
| 308 | ||||
| 309 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.fireRise(5); | |
| 310 |
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()) << "queue size 4.2"; | |
| 311 | ||||
| 312 | ||||
| 313 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.fireRise(5); | |
| 314 |
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()) << "queue size 4.3"; | |
| 315 | ||||
| 316 |
4/10✓ Branch 2 taken 1 time.
✓ Branch 5 taken 1 time.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 time.
✗ Branch 12 not taken.
✗ Branch 15 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✓ Branch 30 taken 1 time.
✗ Branch 31 not taken.
|
1 | ASSERT_NEAR(eth.timeToAngle(FORD_INLINE_DWELL), engine->ignitionState.dwellDurationAngle, EPS4D) << "dwell"; | |
| 317 |
3/9✓ Branch 2 taken 1 time.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 time.
✗ Branch 9 not taken.
✗ Branch 12 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✓ Branch 27 taken 1 time.
✗ Branch 28 not taken.
|
1 | ASSERT_NEAR(4.5450, engine->engineState.injectionDuration, EPS4D) << "fuel #3"; | |
| 318 |
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(1500, Sensor::getOrZero(SensorType::Rpm)); | |
| 319 | ||||
| 320 | ||||
| 321 |
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( 6, engine->triggerCentral.triggerState.getCurrentIndex()) << "index #4"; | |
| 322 |
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()) << "queue size 4"; | |
| 323 |
1/1✓ Branch 1 taken 1 time.
|
1 | engine->scheduler.clear(); | |
| 324 | ||||
| 325 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.fireFall(5); | |
| 326 |
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, engine->scheduler.size()) << "queue size 5"; | |
| 327 | // todo: assert queue elements | |||
| 328 |
1/1✓ Branch 1 taken 1 time.
|
1 | engine->scheduler.clear(); | |
| 329 | ||||
| 330 | ||||
| 331 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.fireRise(5); | |
| 332 |
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()) << "queue size 6"; | |
| 333 |
4/10✓ Branch 3 taken 1 time.
✓ Branch 8 taken 1 time.
✗ Branch 13 not taken.
✓ Branch 14 taken 1 time.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 25 not taken.
✗ Branch 28 not taken.
✓ Branch 35 taken 1 time.
✗ Branch 36 not taken.
|
1 | ASSERT_EQ(start + 40944, engine->scheduler.getForUnitTest(0)->getMomentUs()) << "6/0"; | |
| 334 |
4/10✓ Branch 3 taken 1 time.
✓ Branch 8 taken 1 time.
✗ Branch 13 not taken.
✓ Branch 14 taken 1 time.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 25 not taken.
✗ Branch 28 not taken.
✓ Branch 35 taken 1 time.
✗ Branch 36 not taken.
|
1 | ASSERT_EQ(start + 41444, engine->scheduler.getForUnitTest(1)->getMomentUs()) << "6/1"; | |
| 335 |
1/1✓ Branch 1 taken 1 time.
|
1 | engine->scheduler.clear(); | |
| 336 | ||||
| 337 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.fireFall(5); | |
| 338 |
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, engine->scheduler.size()) << "queue size 7"; | |
| 339 |
1/1✓ Branch 1 taken 1 time.
|
1 | engine->scheduler.clear(); | |
| 340 | ||||
| 341 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.fireRise(5 /*ms*/); | |
| 342 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.fireFall(5); | |
| 343 | ||||
| 344 |
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()) << "queue size 8"; | |
| 345 |
4/10✓ Branch 3 taken 1 time.
✓ Branch 8 taken 1 time.
✗ Branch 13 not taken.
✓ Branch 14 taken 1 time.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 25 not taken.
✗ Branch 28 not taken.
✓ Branch 35 taken 1 time.
✗ Branch 36 not taken.
|
1 | ASSERT_EQ(start + 53333 - 1515 + 2459, engine->scheduler.getForUnitTest(0)->getMomentUs()) << "8/0"; | |
| 346 |
4/10✓ Branch 3 taken 1 time.
✓ Branch 8 taken 1 time.
✗ Branch 13 not taken.
✓ Branch 14 taken 1 time.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 25 not taken.
✗ Branch 28 not taken.
✓ Branch 35 taken 1 time.
✗ Branch 36 not taken.
|
1 | ASSERT_EQ(start + 54277 + 2459 - 1959, engine->scheduler.getForUnitTest(1)->getMomentUs()) << "8/1"; | |
| 347 |
1/1✓ Branch 1 taken 1 time.
|
1 | engine->scheduler.clear(); | |
| 348 | 1 | } | ||
| 349 | ||||
| 350 | 4 | TEST(trigger, testAnotherTriggerDecoder) { | ||
| 351 | 1 | testTriggerDecoder2("Miata 2003", engine_type_e::MAZDA_MIATA_NB2, 3, 0.38888889, 0.0); | ||
| 352 | 1 | } | ||
| 353 | ||||
| 354 | 4 | TEST(trigger, testTriggerDecoder) { | ||
| 355 | 1 | printf("====================================================================================== testTriggerDecoder\r\n"); | ||
| 356 | ||||
| 357 | { | |||
| 358 |
1/1✓ Branch 2 taken 1 time.
|
1 | EngineTestHelper eth(engine_type_e::TEST_ENGINE); | |
| 359 | 1 | TriggerWaveform * s = &engine->triggerCentral.triggerShape; | ||
| 360 | ||||
| 361 |
1/1✓ Branch 1 taken 1 time.
|
1 | initializeSkippedToothTrigger(s, 2, 0, FOUR_STROKE_CAM_SENSOR, SyncEdge::Rise); | |
| 362 |
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(4u, s->getSize()) << "shape size"; | |
| 363 |
3/8✓ 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.
✓ Branch 29 taken 1 time.
✗ Branch 30 not taken.
|
1 | ASSERT_EQ(s->wave.getSwitchTime(0), 0.25); | |
| 364 |
3/8✓ 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.
✓ Branch 29 taken 1 time.
✗ Branch 30 not taken.
|
1 | ASSERT_EQ(s->wave.getSwitchTime(1), 0.5); | |
| 365 |
3/8✓ 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.
✓ Branch 29 taken 1 time.
✗ Branch 30 not taken.
|
1 | ASSERT_EQ(s->wave.getSwitchTime(2), 0.75); | |
| 366 |
3/8✓ 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.
✓ Branch 29 taken 1 time.
✗ Branch 30 not taken.
|
1 | ASSERT_EQ(s->wave.getSwitchTime(3), 1); | |
| 367 | 1 | } | ||
| 368 | ||||
| 369 | 1 | printf("====================================================================================== testTriggerDecoder part 2\r\n"); | ||
| 370 | 1 | testTriggerDecoder2("Dodge Neon 1995", engine_type_e::DODGE_NEON_1995, 0, 0.4931, 0.2070); | ||
| 371 | ||||
| 372 | 1 | testTriggerDecoder2("ford aspire", engine_type_e::FORD_ASPIRE_1996, 4, 0.0000, 0.5); | ||
| 373 | ||||
| 374 | 1 | testTriggerDecoder2("dodge ram", engine_type_e::DODGE_RAM, 16, 0.5000, 0.06); | ||
| 375 | ||||
| 376 | 1 | testTriggerDecoder2("Miata NB2", engine_type_e::MAZDA_MIATA_NB2, 3, 0.3888888955, 0); | ||
| 377 | ||||
| 378 | 1 | printf("====================================================================================== testTriggerDecoder part 3\r\n"); | ||
| 379 | ||||
| 380 | 1 | testTriggerDecoder2("test 2/1 both", engine_type_e::TEST_ISSUE_366_BOTH, 0, 0.2500, 0.0); | ||
| 381 | 1 | testTriggerDecoder2("test 2/1 rise", engine_type_e::TEST_ISSUE_366_RISE, 0, 0.0000, 0.0); | ||
| 382 | ||||
| 383 | 1 | testTriggerDecoder2("test engine", engine_type_e::TEST_ENGINE, 0, 0.7500, 0.2500); | ||
| 384 | 1 | testTriggerDecoder2("testGY6_139QMB", engine_type_e::GY6_139QMB, 0, 0.4375, 0.0); | ||
| 385 | ||||
| 386 | 1 | testTriggerDecoderByTriggerType("testFordEscortGt", trigger_type_e::TT_MAZDA_DOHC_1_4, 0, 0.8096, 0.3844); | ||
| 387 | ||||
| 388 | 1 | testTriggerDecoderByTriggerType("NISSAN_PRIMERA", trigger_type_e::TT_NISSAN_SR20VE, 2, 0.9611, 0.0); | ||
| 389 | ||||
| 390 | 1 | testTriggerDecoder2("test1+1", engine_type_e::DEFAULT_FRANKENSO, 0, 0.7500, 0.2500); | ||
| 391 | ||||
| 392 | 1 | testTriggerDecoder2("neon NGC4", engine_type_e::DODGE_NEON_2003_CRANK, 6, 0.5000, 0.0, CHRYSLER_NGC4_GAP); | ||
| 393 | ||||
| 394 | { | |||
| 395 |
1/1✓ Branch 2 taken 1 time.
|
1 | EngineTestHelper eth(engine_type_e::DODGE_NEON_2003_CRANK); | |
| 396 | ||||
| 397 |
1/1✓ Branch 1 taken 1 time.
|
1 | printf("!!!!!!!!!!!!!!!!!! Now trying with only rising edges !!!!!!!!!!!!!!!!!\r\n"); | |
| 398 | ||||
| 399 |
1/1✓ Branch 1 taken 1 time.
|
1 | applyNonPersistentConfiguration(); | |
| 400 |
1/1✓ Branch 1 taken 1 time.
|
1 | prepareOutputSignals(); | |
| 401 | ||||
| 402 | 1 | } | ||
| 403 | ||||
| 404 | 1 | testTriggerDecoder2("sachs", engine_type_e::SACHS, 0, 0.4800, 0.000); | ||
| 405 | ||||
| 406 | 1 | testTriggerDecoder2("vw ABA", engine_type_e::VW_ABA, 0, 0.51666, 0.0); | ||
| 407 | } | |||
| 408 | ||||
| 409 | 54 | static void assertInjectionEventBase(const char *msg, InjectionEvent *ev, int injectorIndex, int eventIndex, angle_t angleOffset) { | ||
| 410 |
2/8✓ Branch 2 taken 54 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 54 times.
✗ Branch 9 not taken.
✗ Branch 12 not taken.
✗ Branch 15 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
|
54 | EXPECT_EQ(injectorIndex, ev->outputs[0]->injectorIndex) << msg << "inj index"; | |
| 411 |
2/8✓ Branch 2 taken 54 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 54 times.
✗ Branch 9 not taken.
✗ Branch 12 not taken.
✗ Branch 15 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
|
54 | EXPECT_NEAR_M4(angleOffset, ev->injectionStartAngle) << msg << "inj index"; | |
| 412 | 54 | } | ||
| 413 | ||||
| 414 | 8 | static void assertInjectionEvent(const char *msg, InjectionEvent *ev, int injectorIndex, int eventIndex, angle_t angleOffset) { | ||
| 415 | 8 | assertInjectionEventBase(msg, ev, injectorIndex, eventIndex, angleOffset); | ||
| 416 | ||||
| 417 | // There should NOT be a second injector configured | |||
| 418 |
2/6✓ Branch 2 taken 8 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 8 times.
✗ Branch 9 not taken.
✗ Branch 14 not taken.
✗ Branch 17 not taken.
|
8 | EXPECT_EQ(nullptr, ev->outputs[1]); | |
| 419 | 8 | } | ||
| 420 | ||||
| 421 | 46 | static void assertInjectionEventBatch(const char *msg, InjectionEvent *ev, int injectorIndex, int secondInjectorIndex, int eventIndex, angle_t angleOffset) { | ||
| 422 | 46 | assertInjectionEventBase(msg, ev, injectorIndex, eventIndex, angleOffset); | ||
| 423 | ||||
| 424 | // There should be a second injector - confirm it's the correct one | |||
| 425 |
3/8✓ Branch 3 taken 46 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 46 times.
✗ Branch 11 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✓ Branch 26 taken 46 times.
✗ Branch 27 not taken.
|
46 | ASSERT_NE(nullptr, ev->outputs[1]); | |
| 426 |
2/6✓ Branch 2 taken 46 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 46 times.
✗ Branch 9 not taken.
✗ Branch 14 not taken.
✗ Branch 17 not taken.
|
46 | EXPECT_EQ(secondInjectorIndex, ev->outputs[1]->injectorIndex); | |
| 427 | } | |||
| 428 | ||||
| 429 | // https://sourceforge.net/p/rusefi/tickets/299/ | |||
| 430 | 3 | static void setTestBug299(EngineTestHelper *eth) { | ||
| 431 | 3 | setupSimpleTestEngineWithMafAndTT_ONE_trigger(eth); | ||
| 432 |
5/5✓ Branch 3 taken 3 times.
✓ Branch 7 taken 3 times.
✓ Branch 10 taken 3 times.
✓ Branch 13 taken 3 times.
✓ Branch 17 taken 3 times.
|
9 | EXPECT_CALL(*eth->mockAirmass, getAirmass(_, _)) | |
| 433 |
3/3✓ Branch 5 taken 3 times.
✓ Branch 8 taken 3 times.
✓ Branch 11 taken 3 times.
|
9 | .WillRepeatedly(Return(AirmassResult{0.1008001f, 50.0f})); | |
| 434 | ||||
| 435 | 3 | Engine *engine = ð->engine; | ||
| 436 | ||||
| 437 | ||||
| 438 |
4/9✓ Branch 3 taken 3 times.
✓ Branch 7 taken 3 times.
✗ Branch 12 not taken.
✓ Branch 13 taken 3 times.
✗ Branch 16 not taken.
✗ Branch 21 not taken.
✗ Branch 24 not taken.
✓ Branch 31 taken 3 times.
✗ Branch 32 not taken.
|
3 | ASSERT_EQ(0, Sensor::getOrZero(SensorType::Rpm)); | |
| 439 | ||||
| 440 | 3 | eth->fireTriggerEventsWithDuration(20); | ||
| 441 | // still no RPM since need to cycles measure cycle duration | |||
| 442 |
4/9✓ Branch 3 taken 3 times.
✓ Branch 7 taken 3 times.
✗ Branch 12 not taken.
✓ Branch 13 taken 3 times.
✗ Branch 16 not taken.
✗ Branch 21 not taken.
✗ Branch 24 not taken.
✓ Branch 31 taken 3 times.
✗ Branch 32 not taken.
|
3 | ASSERT_EQ(0, Sensor::getOrZero(SensorType::Rpm)); | |
| 443 | 3 | eth->fireTriggerEventsWithDuration(20); | ||
| 444 |
4/9✓ Branch 3 taken 3 times.
✓ Branch 7 taken 3 times.
✗ Branch 12 not taken.
✓ Branch 13 taken 3 times.
✗ Branch 16 not taken.
✗ Branch 21 not taken.
✗ Branch 24 not taken.
✓ Branch 31 taken 3 times.
✗ Branch 32 not taken.
|
3 | ASSERT_EQ(3000, Sensor::getOrZero(SensorType::Rpm)); | |
| 445 | ||||
| 446 | 3 | eth->clearQueue(); | ||
| 447 | ||||
| 448 | /** | |||
| 449 | * Trigger up - scheduling fuel for full engine cycle | |||
| 450 | */ | |||
| 451 | 3 | eth->fireRise(20); | ||
| 452 | // fuel schedule - short pulses. | |||
| 453 | // time...|0.......|10......|20......|30......|40 | |||
| 454 | // inj #0 |.......#|........|.......#|........| | |||
| 455 | // inj #1 |........|.......#|........|.......#| | |||
| 456 |
4/10✓ Branch 3 taken 3 times.
✓ Branch 7 taken 3 times.
✗ Branch 12 not taken.
✓ Branch 13 taken 3 times.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✓ Branch 34 taken 3 times.
✗ Branch 35 not taken.
|
3 | ASSERT_EQ( 4, engine->scheduler.size()) << "qs#00"; | |
| 457 |
4/10✓ Branch 3 taken 3 times.
✓ Branch 7 taken 3 times.
✗ Branch 12 not taken.
✓ Branch 13 taken 3 times.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✓ Branch 34 taken 3 times.
✗ Branch 35 not taken.
|
3 | ASSERT_EQ( 3u, getRevolutionCounter()) << "rev cnt#3"; | |
| 458 | 3 | eth->assertInjectorUpEvent("setTestBug299: 1@0", 0, MS2US(8.5), 2); | ||
| 459 | 3 | eth->assertInjectorDownEvent("@1", 1, MS2US(10), 2); | ||
| 460 | 3 | eth->assertInjectorUpEvent("1@2", 2, MS2US(18.5), 3); | ||
| 461 | 3 | eth->assertInjectorDownEvent("1@3", 3, MS2US(20), 3); | ||
| 462 |
4/10✓ Branch 3 taken 3 times.
✓ Branch 7 taken 3 times.
✗ Branch 12 not taken.
✓ Branch 13 taken 3 times.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✓ Branch 34 taken 3 times.
✗ Branch 35 not taken.
|
3 | ASSERT_EQ( 0, eth->executeActions()) << "exec#0"; | |
| 463 | ||||
| 464 | 3 | FuelSchedule * t = &engine->injectionEvents; | ||
| 465 | ||||
| 466 | 3 | assertInjectionEventBatch("#0", &t->elements[0], 0, 3, 1, 153 + 360); | ||
| 467 | 3 | assertInjectionEventBatch("#1_i_@", &t->elements[1], 2, 1, 1, 333 + 360); | ||
| 468 | 3 | assertInjectionEventBatch("#2@", &t->elements[2], 3, 0, 0, 153); | ||
| 469 | 3 | assertInjectionEventBatch("inj#3@", &t->elements[3], 1, 2, 0, 153 + 180); | ||
| 470 | ||||
| 471 | /** | |||
| 472 | * Trigger down - no new events, executing some | |||
| 473 | */ | |||
| 474 | 3 | eth->fireFall(20); | ||
| 475 | // same exact picture | |||
| 476 | // time...|-20.....|-10.....|0.......|10......|20 | |||
| 477 | // inj #0 |.......#|........|.......#|........| | |||
| 478 | // inj #1 |........|.......#|........|.......#| | |||
| 479 |
4/10✓ Branch 3 taken 3 times.
✓ Branch 7 taken 3 times.
✗ Branch 12 not taken.
✓ Branch 13 taken 3 times.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✓ Branch 34 taken 3 times.
✗ Branch 35 not taken.
|
3 | ASSERT_EQ( 8, engine->scheduler.size()) << "qs#0"; | |
| 480 |
4/10✓ Branch 3 taken 3 times.
✓ Branch 7 taken 3 times.
✗ Branch 12 not taken.
✓ Branch 13 taken 3 times.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✓ Branch 34 taken 3 times.
✗ Branch 35 not taken.
|
3 | ASSERT_EQ( 3u, getRevolutionCounter()) << "rev cnt#3"; | |
| 481 | 3 | eth->assertInjectorUpEvent("02@0", 0, MS2US(-11.5), 2); | ||
| 482 | 3 | eth->assertInjectorDownEvent("@1", 1, MS2US(-10), 2); | ||
| 483 | 3 | eth->assertInjectorUpEvent("@2", 2, MS2US(-1.5), 3); | ||
| 484 | 3 | eth->assertInjectorDownEvent("02@3", 3, MS2US(0), 3); | ||
| 485 | 3 | eth->assertInjectorUpEvent("02@4", 4, MS2US(8.5), 0); | ||
| 486 | 3 | eth->assertInjectorDownEvent("@5", 5, MS2US(10), 0); | ||
| 487 | 3 | eth->assertInjectorUpEvent("02@6", 6, MS2US(18.5), 1); | ||
| 488 | 3 | eth->assertInjectorDownEvent("@7", 7, MS2US(20), 1); | ||
| 489 |
4/10✓ Branch 3 taken 3 times.
✓ Branch 7 taken 3 times.
✗ Branch 12 not taken.
✓ Branch 13 taken 3 times.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✓ Branch 34 taken 3 times.
✗ Branch 35 not taken.
|
3 | ASSERT_EQ( 4, eth->executeActions()) << "exec#1"; | |
| 490 | ||||
| 491 | ||||
| 492 | /** | |||
| 493 | * Trigger up again | |||
| 494 | */ | |||
| 495 | 3 | eth->moveTimeForwardMs(20 /*ms*/); | ||
| 496 | 3 | eth->assertInjectorUpEvent("22@0", 0, MS2US(-11.5), 0); | ||
| 497 | 3 | eth->assertInjectorDownEvent("22@1", 1, MS2US(-10), 0); | ||
| 498 | 3 | eth->assertInjectorUpEvent("22@2", 2, MS2US(-1.5), 1); | ||
| 499 | 3 | eth->assertInjectorDownEvent("22@3", 3, MS2US(0), 1); | ||
| 500 |
4/10✓ Branch 3 taken 3 times.
✓ Branch 7 taken 3 times.
✗ Branch 12 not taken.
✓ Branch 13 taken 3 times.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✓ Branch 34 taken 3 times.
✗ Branch 35 not taken.
|
3 | ASSERT_EQ( 4, eth->executeActions()) << "exec#20"; | |
| 501 | ||||
| 502 | 3 | eth->firePrimaryTriggerRise(); | ||
| 503 |
4/10✓ Branch 3 taken 3 times.
✓ Branch 7 taken 3 times.
✗ Branch 12 not taken.
✓ Branch 13 taken 3 times.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✓ Branch 34 taken 3 times.
✗ Branch 35 not taken.
|
3 | ASSERT_EQ( 4, engine->scheduler.size()) << "qs#0-2"; | |
| 504 | // fuel schedule - short pulses. and more realistic schedule this time | |||
| 505 | // time...|-20.....|-10.....|0.......|10......|20 | |||
| 506 | // inj #0 |.......#|........|.......#|........| | |||
| 507 | // inj #1 |........|.......#|........|.......#| | |||
| 508 | 3 | eth->assertInjectorUpEvent("2@0", 0, MS2US(8.5), 2); | ||
| 509 | 3 | eth->assertInjectorDownEvent("@1", 1, MS2US(10), 2); | ||
| 510 | 3 | eth->assertInjectorUpEvent("@2", 2, MS2US(18.5), 3); | ||
| 511 | 3 | eth->assertInjectorDownEvent("2@3", 3, MS2US(20), 3); | ||
| 512 |
4/10✓ Branch 3 taken 3 times.
✓ Branch 7 taken 3 times.
✗ Branch 12 not taken.
✓ Branch 13 taken 3 times.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✓ Branch 34 taken 3 times.
✗ Branch 35 not taken.
|
3 | ASSERT_EQ( 0, eth->executeActions()) << "exec#2"; | |
| 513 | ||||
| 514 | ||||
| 515 | 3 | eth->moveTimeForwardUs(MS2US(20)); | ||
| 516 | 3 | eth->executeActions(); | ||
| 517 | 3 | eth->firePrimaryTriggerFall(); | ||
| 518 | // fuel schedule - short pulses. and more realistic schedule this time | |||
| 519 | // time...|-20.....|-10.....|0.......|10......|20 | |||
| 520 | // inj #0 |.......#|........|........|........| | |||
| 521 | // inj #1 |........|.......#|........|........| | |||
| 522 |
4/10✓ Branch 3 taken 3 times.
✓ Branch 7 taken 3 times.
✗ Branch 12 not taken.
✓ Branch 13 taken 3 times.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✓ Branch 34 taken 3 times.
✗ Branch 35 not taken.
|
3 | ASSERT_EQ( 4, engine->scheduler.size()) << "qs#0-2"; | |
| 523 |
4/10✓ Branch 3 taken 3 times.
✓ Branch 7 taken 3 times.
✗ Branch 12 not taken.
✓ Branch 13 taken 3 times.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✓ Branch 34 taken 3 times.
✗ Branch 35 not taken.
|
3 | ASSERT_EQ( 4u, getRevolutionCounter()) << "rev cnt#4"; | |
| 524 | 3 | eth->assertInjectorUpEvent("0@0", 0, MS2US(8.5), 0); | ||
| 525 | 3 | eth->assertInjectorDownEvent("0@1", 1, MS2US(10), 0); | ||
| 526 | 3 | eth->assertInjectorUpEvent("0@2", 2, MS2US(18.5), 1); | ||
| 527 | 3 | eth->assertInjectorDownEvent("0@3", 3, MS2US(20), 1); | ||
| 528 |
4/10✓ Branch 3 taken 3 times.
✓ Branch 7 taken 3 times.
✗ Branch 12 not taken.
✓ Branch 13 taken 3 times.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✓ Branch 34 taken 3 times.
✗ Branch 35 not taken.
|
3 | ASSERT_EQ( 0, eth->executeActions()) << "exec#3"; | |
| 529 | ||||
| 530 | ||||
| 531 |
3/9✓ Branch 3 taken 3 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 3 times.
✗ Branch 11 not taken.
✗ Branch 14 not taken.
✗ Branch 19 not taken.
✗ Branch 22 not taken.
✓ Branch 29 taken 3 times.
✗ Branch 30 not taken.
|
3 | ASSERT_EQ( 1, engine->fuelComputer.running.intakeTemperatureCoefficient) << "iatC"; | |
| 532 |
3/9✓ Branch 3 taken 3 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 3 times.
✗ Branch 11 not taken.
✗ Branch 14 not taken.
✗ Branch 19 not taken.
✗ Branch 22 not taken.
✓ Branch 29 taken 3 times.
✗ Branch 30 not taken.
|
3 | ASSERT_EQ( 1, engine->fuelComputer.running.coolantTemperatureCoefficient) << "cltC"; | |
| 533 |
5/11✓ Branch 3 taken 3 times.
✓ Branch 7 taken 3 times.
✓ Branch 11 taken 3 times.
✗ Branch 16 not taken.
✓ Branch 17 taken 3 times.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✗ Branch 28 not taken.
✗ Branch 31 not taken.
✓ Branch 38 taken 3 times.
✗ Branch 39 not taken.
|
3 | ASSERT_EQ( 0, engine->module<InjectorModelPrimary>()->getDeadtime()) << "lag"; | |
| 534 | ||||
| 535 |
4/10✓ Branch 3 taken 3 times.
✓ Branch 7 taken 3 times.
✗ Branch 12 not taken.
✓ Branch 13 taken 3 times.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✓ Branch 34 taken 3 times.
✗ Branch 35 not taken.
|
3 | ASSERT_EQ( 3000, round(Sensor::getOrZero(SensorType::Rpm))) << "setTestBug299: RPM"; | |
| 536 | ||||
| 537 |
3/9✓ Branch 2 taken 3 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 3 times.
✗ Branch 9 not taken.
✗ Branch 12 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✓ Branch 27 taken 3 times.
✗ Branch 28 not taken.
|
3 | ASSERT_NEAR(1.5, engine->engineState.injectionDuration, EPS4D) << "fuel #1"; | |
| 538 |
5/11✓ Branch 2 taken 3 times.
✓ Branch 5 taken 3 times.
✓ Branch 8 taken 3 times.
✗ Branch 11 not taken.
✓ Branch 12 taken 3 times.
✗ Branch 15 not taken.
✗ Branch 18 not taken.
✗ Branch 23 not taken.
✗ Branch 26 not taken.
✓ Branch 33 taken 3 times.
✗ Branch 34 not taken.
|
0/1? Decision couldn't be analyzed.
|
3 | ASSERT_NEAR(7.5, getInjectorDutyCycle(round(Sensor::getOrZero(SensorType::Rpm))), EPS4D) << "duty for maf=0"; |
| 539 | } | |||
| 540 | ||||
| 541 | #define assertInjectors(msg, value0, value1) \ | |||
| 542 | { \ | |||
| 543 | EXPECT_EQ(value0, enginePins.injectors[0].currentLogicValue) << msg; \ | |||
| 544 | EXPECT_EQ(value1, enginePins.injectors[1].currentLogicValue) << msg; \ | |||
| 545 | } | |||
| 546 | ||||
| 547 | ✗ | static void setArray(float* p, size_t count, float value) { | ||
| 548 | ✗ | while (count--) { | ||
| 549 | ✗ | *p++ = value; | ||
| 550 | } | |||
| 551 | ✗ | } | ||
| 552 | ||||
| 553 | 2 | void doTestFuelSchedulerBug299smallAndMedium(int startUpDelayMs) { | ||
| 554 |
1/1✓ Branch 1 taken 2 times.
|
2 | printf("*************************************************** testFuelSchedulerBug299 small to medium\r\n"); | |
| 555 | ||||
| 556 |
1/1✓ Branch 2 taken 2 times.
|
2 | EngineTestHelper eth(engine_type_e::TEST_ENGINE); | |
| 557 | extern bool unitTestBusyWaitHack; | |||
| 558 | 2 | unitTestBusyWaitHack = true; | ||
| 559 | 2 | setTable(config->injectionPhase, -180.0f); | ||
| 560 | 2 | engineConfiguration->isFasterEngineSpinUpEnabled = false; | ||
| 561 | 2 | engine->tdcMarkEnabled = false; | ||
| 562 |
1/1✓ Branch 1 taken 2 times.
|
2 | eth.moveTimeForwardMs(startUpDelayMs); // nice to know that same test works the same with different anount of idle time on start | |
| 563 |
1/1✓ Branch 1 taken 2 times.
|
2 | setTestBug299(ð); | |
| 564 | ||||
| 565 | FuelSchedule * t; | |||
| 566 | ||||
| 567 |
4/14✓ Branch 3 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 11 not taken.
✗ Branch 14 not taken.
✗ Branch 19 not taken.
✗ Branch 22 not taken.
✓ Branch 32 taken 2 times.
✗ Branch 36 not taken.
✓ Branch 37 taken 2 times.
✗ Branch 40 not taken.
✗ Branch 43 not taken.
✗ Branch 48 not taken.
✗ Branch 51 not taken.
|
4 | assertInjectors("#0_inj", 0, 0); | |
| 568 | ||||
| 569 |
1/1✓ Branch 1 taken 2 times.
|
2 | engine->periodicFastCallback(); | |
| 570 | ||||
| 571 | 2 | engine->engineState.injectionDuration = 12.5f; | ||
| 572 | // Injection duration of 12.5ms | |||
| 573 |
1/1✓ Branch 2 taken 2 times.
|
2 | MockInjectorModel2 im; | |
| 574 |
7/7✓ Branch 3 taken 2 times.
✓ Branch 6 taken 2 times.
✓ Branch 10 taken 2 times.
✓ Branch 14 taken 2 times.
✓ Branch 19 taken 2 times.
✓ Branch 22 taken 2 times.
✓ Branch 25 taken 2 times.
|
2 | EXPECT_CALL(im, getInjectionDuration(_)).WillRepeatedly(Return(12.5f)); | |
| 575 |
1/1✓ Branch 1 taken 2 times.
|
2 | engine->module<InjectorModelPrimary>().set(&im); | |
| 576 | ||||
| 577 |
5/11✓ Branch 2 taken 2 times.
✓ Branch 5 taken 2 times.
✓ Branch 8 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.
|
0/1? Decision couldn't be analyzed.
|
2 | ASSERT_NEAR(62.5, getInjectorDutyCycle(round(Sensor::getOrZero(SensorType::Rpm))), EPS4D) << "duty for maf=3"; |
| 578 | ||||
| 579 |
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 19 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✓ Branch 34 taken 2 times.
✗ Branch 35 not taken.
|
2 | ASSERT_EQ( 4, engine->scheduler.size()) << "qs#1"; | |
| 580 |
1/1✓ Branch 1 taken 2 times.
|
2 | eth.moveTimeForwardUs(MS2US(20)); | |
| 581 |
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 19 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✓ Branch 34 taken 2 times.
✗ Branch 35 not taken.
|
2 | ASSERT_EQ( 4, eth.executeActions()) << "exec#2#0"; | |
| 582 |
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 19 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✓ Branch 34 taken 2 times.
✗ Branch 35 not taken.
|
2 | ASSERT_EQ( 0, engine->scheduler.size()) << "qs#1#2"; | |
| 583 | ||||
| 584 | ||||
| 585 |
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 19 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✓ Branch 34 taken 2 times.
✗ Branch 35 not taken.
|
2 | ASSERT_EQ( 4u, getRevolutionCounter()) << "rev cnt#4#0"; | |
| 586 |
1/1✓ Branch 1 taken 2 times.
|
2 | eth.firePrimaryTriggerRise(); | |
| 587 |
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 19 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✓ Branch 34 taken 2 times.
✗ Branch 35 not taken.
|
2 | ASSERT_EQ( 5u, getRevolutionCounter()) << "rev cnt#4#1"; | |
| 588 | // time...|0.......|10......|20......|30......|40......|50......|60......| | |||
| 589 | // inj #0 |########|##...###|########|.....###|########|........|........| | |||
| 590 | // inj #1 |.....###|########|....####|########|........|........|........| | |||
| 591 |
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 19 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✓ Branch 34 taken 2 times.
✗ Branch 35 not taken.
|
2 | ASSERT_EQ( 6, engine->scheduler.size()) << "qs#4"; | |
| 592 | //todo assertInjectorUpEvent("04@0", 0, MS2US(0), 0); | |||
| 593 | // assertInjectorUpEvent("04@1", 1, MS2US(7.5), 1); | |||
| 594 | // assertInjectorDownEvent("04@2", 2, MS2US(12.5), 0); | |||
| 595 | // assertInjectorUpEvent("04@3", 3, MS2US(17.5), 0); | |||
| 596 | // assertInjectorDownEvent("04@4", 4, MS2US(20), 1); | |||
| 597 | // assertInjectorDownEvent("04@5", 5, MS2US(30), 0); | |||
| 598 | // assertInjectorDownEvent("04@6", 6, MS2US(30), 0); | |||
| 599 | // assertInjectorUpEvent("04@7", 7, MS2US(37.5), 0); | |||
| 600 | // assertInjectorDownEvent("04@8", 8, MS2US(40.0), 1); | |||
| 601 | // assertInjectorDownEvent("04@9", 9, MS2US(50.0), 0); | |||
| 602 | ||||
| 603 | // { | |||
| 604 | // scheduling_s *ev = engine->scheduler.getForUnitTest(9); | |||
| 605 | // ASSERT_EQ( 5, getRevolutionCounter()) << "rev cnt#4#2"; | |||
| 606 | // ASSERT_TRUE(ev == &engineConfiguration->fuelActuators[2].signalPair[1].signalTimerDown) << "down 50"; | |||
| 607 | // } | |||
| 608 | ||||
| 609 | ||||
| 610 |
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 19 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✓ Branch 34 taken 2 times.
✗ Branch 35 not taken.
|
2 | ASSERT_EQ( 0, eth.executeActions()) << "exec#4"; | |
| 611 | ||||
| 612 | ||||
| 613 |
1/1✓ Branch 1 taken 2 times.
|
2 | eth.fireFall(20); | |
| 614 |
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 19 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✓ Branch 34 taken 2 times.
✗ Branch 35 not taken.
|
2 | ASSERT_EQ( 8, engine->scheduler.size()) << "qs#2#1"; | |
| 615 |
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 19 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✓ Branch 34 taken 2 times.
✗ Branch 35 not taken.
|
2 | ASSERT_EQ( 5u, getRevolutionCounter()) << "rev cnt#5"; | |
| 616 | // using old fuel schedule - but already wider pulses | |||
| 617 | // time...|-20.....|-10.....|0.......|10......|20......|30......|40......| | |||
| 618 | // inj #0 |........|.....###|########|.....###|########|........|........| | |||
| 619 | // inj #1 |.....###|########|.....###|########|........|........|........| | |||
| 620 | // assertInjectorUpEvent("5@0", 0, MS2US(-12.5), 1); | |||
| 621 | // assertInjectorDownEvent("5@1", 1, MS2US(-7.5), 0); | |||
| 622 | // assertInjectorUpEvent("5@2", 2, MS2US(-2.5), 0); | |||
| 623 | // assertInjectorDownEvent("5@3", 3, MS2US(0), 1); | |||
| 624 | // assertInjectorUpEvent("5@4", 4, MS2US(7.5), 1); | |||
| 625 | // | |||
| 626 | // assertInjectorDownEvent("5@4", 5, MS2US(10), 0); | |||
| 627 | // assertInjectorUpEvent("5@6", 6, MS2US(17.5), 0); | |||
| 628 | // assertInjectorDownEvent("5@7", 7, MS2US(20.0), 1); | |||
| 629 | // assertInjectorDownEvent("5@8", 8, MS2US(30.0), 0); | |||
| 630 |
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 19 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✓ Branch 34 taken 2 times.
✗ Branch 35 not taken.
|
2 | ASSERT_EQ( 3, eth.executeActions()) << "exec#5"; | |
| 631 | ||||
| 632 | /** | |||
| 633 | * one more revolution | |||
| 634 | */ | |||
| 635 | ||||
| 636 | 2 | t = &engine->injectionEvents; | ||
| 637 | ||||
| 638 |
1/1✓ Branch 1 taken 2 times.
|
2 | assertInjectionEventBatch("#0", &t->elements[0], 0, 3, 0, 315); | |
| 639 |
1/1✓ Branch 1 taken 2 times.
|
2 | assertInjectionEventBatch("#1__", &t->elements[1], 2, 1, 1, 495); | |
| 640 |
1/1✓ Branch 1 taken 2 times.
|
2 | assertInjectionEventBatch("inj#2", &t->elements[2], 3, 0, 0, 153); | |
| 641 |
1/1✓ Branch 1 taken 2 times.
|
2 | assertInjectionEventBatch("inj#3", &t->elements[3], 1, 2, 0, 333); | |
| 642 | ||||
| 643 |
1/1✓ Branch 1 taken 2 times.
|
2 | eth.moveTimeForwardUs(MS2US(20)); | |
| 644 |
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 19 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✓ Branch 34 taken 2 times.
✗ Branch 35 not taken.
|
2 | ASSERT_EQ( 5, engine->scheduler.size()) << "qs#02"; | |
| 645 | // assertInjectorUpEvent("6@0", 0, MS2US(-12.5), 1); | |||
| 646 | // assertInjectorDownEvent("6@1", 1, MS2US(-10.0), 0); | |||
| 647 | // assertInjectorUpEvent("6@2", 2, MS2US(-2.5), 0); | |||
| 648 | // assertInjectorDownEvent("6@3", 3, MS2US(0), 1); | |||
| 649 | // assertInjectorDownEvent("6@4", 4, MS2US(10.0), 0); | |||
| 650 | ||||
| 651 | // so placing this 'executeAll' changes much? | |||
| 652 |
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 19 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✓ Branch 34 taken 2 times.
✗ Branch 35 not taken.
|
2 | ASSERT_EQ( 5, eth.executeActions()) << "exec#07"; | |
| 653 |
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 19 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✓ Branch 34 taken 2 times.
✗ Branch 35 not taken.
|
2 | ASSERT_EQ( 0, engine->scheduler.size()) << "qs#07"; | |
| 654 | // assertInjectorDownEvent("26@0", 0, MS2US(10.0), 0); | |||
| 655 | ||||
| 656 |
1/1✓ Branch 1 taken 2 times.
|
2 | eth.firePrimaryTriggerRise(); | |
| 657 |
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 19 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✓ Branch 34 taken 2 times.
✗ Branch 35 not taken.
|
2 | ASSERT_EQ( 4, engine->scheduler.size()) << "qs#2#2"; | |
| 658 |
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 19 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✓ Branch 34 taken 2 times.
✗ Branch 35 not taken.
|
2 | ASSERT_EQ( 6u, getRevolutionCounter()) << "rev cnt6"; | |
| 659 | // time...|-20.....|-10.....|0.......|10......|20......|30......|40......| | |||
| 660 | // inj #0 |########|.....###|########|....####|........|........|........| | |||
| 661 | // inj #1 |.....###|########|.....###|########|........|........|........| | |||
| 662 | // assertInjectorDownEvent("06@5", 5, MS2US(30.0), 0); | |||
| 663 | // assertInjectorUpEvent("06@6", 6, MS2US(37.5), 0); | |||
| 664 | // assertInjectorDownEvent("06@7", 7, MS2US(40.0), 1); | |||
| 665 | ||||
| 666 |
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 19 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✓ Branch 34 taken 2 times.
✗ Branch 35 not taken.
|
2 | ASSERT_EQ( 0, eth.executeActions()) << "exec#7"; | |
| 667 | ||||
| 668 |
4/14✓ Branch 3 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 11 not taken.
✗ Branch 14 not taken.
✗ Branch 19 not taken.
✗ Branch 22 not taken.
✓ Branch 32 taken 2 times.
✗ Branch 36 not taken.
✓ Branch 37 taken 2 times.
✗ Branch 40 not taken.
✗ Branch 43 not taken.
✗ Branch 48 not taken.
✗ Branch 51 not taken.
|
4 | assertInjectors("#1_ij_", 0, 0); | |
| 669 | ||||
| 670 |
1/1✓ Branch 1 taken 2 times.
|
2 | eth.moveTimeForwardUs(MS2US(20)); | |
| 671 | ||||
| 672 | // time...|-20.....|-10.....|0.......|10......|20......|30......|40......| | |||
| 673 | // inj #0 |########|.......#|........|........|........|........|........| | |||
| 674 | // inj #1 |....####|########|........|........|........|........|........| | |||
| 675 |
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 19 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✓ Branch 34 taken 2 times.
✗ Branch 35 not taken.
|
2 | ASSERT_EQ( 4, engine->scheduler.size()) << "qs#022"; | |
| 676 | // assertInjectorUpEvent("7@0", 0, MS2US(-12.5), 1); | |||
| 677 | // assertInjectorDownEvent("7@1", 1, MS2US(-10.0), 0); | |||
| 678 | // assertInjectorUpEvent("7@2", 2, MS2US(-2.5), 0); | |||
| 679 | // assertInjectorDownEvent("7@3", 3, MS2US(0), 1); | |||
| 680 | // assertInjectorDownEvent("7@4", 4, MS2US(10), 0); | |||
| 681 | //// assertInjectorDownEvent("i7@5", 5, MS2US(20.0), 0); | |||
| 682 | //// assertInjectorUpEvent("7@6", 6, MS2US(17.5), 0); | |||
| 683 | //// assertInjectorDownEvent("7@7", 7, MS2US(20), 1); | |||
| 684 | // // todo index 8 | |||
| 685 | ||||
| 686 |
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 19 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✓ Branch 34 taken 2 times.
✗ Branch 35 not taken.
|
2 | ASSERT_EQ( 3, eth.executeActions()) << "executed #06"; | |
| 687 |
4/14✓ Branch 3 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 11 not taken.
✗ Branch 14 not taken.
✗ Branch 19 not taken.
✗ Branch 22 not taken.
✓ Branch 32 taken 2 times.
✗ Branch 36 not taken.
✓ Branch 37 taken 2 times.
✗ Branch 40 not taken.
✗ Branch 43 not taken.
✗ Branch 48 not taken.
✗ Branch 51 not taken.
|
4 | assertInjectors("#4", 1, 0); | |
| 688 |
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 19 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✓ Branch 34 taken 2 times.
✗ Branch 35 not taken.
|
2 | ASSERT_EQ( 1, engine->scheduler.size()) << "qs#06"; | |
| 689 |
1/1✓ Branch 1 taken 2 times.
|
2 | eth.assertInjectorDownEvent("17@0", 0, MS2US(10), 0); | |
| 690 | // assertInjectorDownEvent("17@1", 1, MS2US(10.0), 0); | |||
| 691 | // assertInjectorUpEvent("17@2", 2, MS2US(17.5), 0); | |||
| 692 | // assertInjectorDownEvent("17@3", 3, MS2US(20), 1); | |||
| 693 | // todo index 4 | |||
| 694 | ||||
| 695 |
1/1✓ Branch 1 taken 2 times.
|
2 | eth.firePrimaryTriggerFall(); | |
| 696 | ||||
| 697 |
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 19 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✓ Branch 34 taken 2 times.
✗ Branch 35 not taken.
|
2 | ASSERT_EQ( 5, engine->scheduler.size()) << "qs#3"; | |
| 698 |
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 19 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✓ Branch 34 taken 2 times.
✗ Branch 35 not taken.
|
2 | ASSERT_EQ( 6u, getRevolutionCounter()) << "rev cnt6"; | |
| 699 |
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 19 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✓ Branch 34 taken 2 times.
✗ Branch 35 not taken.
|
2 | ASSERT_EQ( 0, eth.executeActions()) << "executed #6"; | |
| 700 | ||||
| 701 | ||||
| 702 |
1/1✓ Branch 1 taken 2 times.
|
2 | eth.moveTimeForwardUs(MS2US(20)); | |
| 703 |
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 19 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✓ Branch 34 taken 2 times.
✗ Branch 35 not taken.
|
2 | ASSERT_EQ( 4, eth.executeActions()) << "executed #06"; | |
| 704 |
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 19 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✓ Branch 34 taken 2 times.
✗ Branch 35 not taken.
|
2 | ASSERT_EQ( 1, engine->scheduler.size()) << "qs#06"; | |
| 705 |
4/14✓ Branch 3 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 11 not taken.
✗ Branch 14 not taken.
✗ Branch 19 not taken.
✗ Branch 22 not taken.
✓ Branch 32 taken 2 times.
✗ Branch 36 not taken.
✓ Branch 37 taken 2 times.
✗ Branch 40 not taken.
✗ Branch 43 not taken.
✗ Branch 48 not taken.
✗ Branch 51 not taken.
|
4 | assertInjectors("inj#2", 1, 0); | |
| 706 | ||||
| 707 |
1/1✓ Branch 1 taken 2 times.
|
2 | eth.firePrimaryTriggerRise(); | |
| 708 |
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 19 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✓ Branch 34 taken 2 times.
✗ Branch 35 not taken.
|
2 | ASSERT_EQ( 5, engine->scheduler.size()) << "Queue.size#03"; | |
| 709 | ||||
| 710 |
1/1✓ Branch 1 taken 2 times.
|
2 | eth.assertInjectorUpEvent("07@0", 0, MS2US(7.5), 3); | |
| 711 |
1/1✓ Branch 1 taken 2 times.
|
2 | eth.assertInjectorDownEvent("07@1", 1, MS2US(10), 2); | |
| 712 |
1/1✓ Branch 1 taken 2 times.
|
2 | eth.assertInjectorUpEvent("07@2", 2, MS2US(17.5), 0); | |
| 713 |
1/1✓ Branch 1 taken 2 times.
|
2 | eth.assertInjectorDownEvent("07@3", 3, MS2US(20), 3); | |
| 714 |
1/1✓ Branch 1 taken 2 times.
|
2 | eth.assertInjectorDownEvent("07@4", 4, MS2US(30), 0); | |
| 715 | // assertInjectorDownEvent("07@5", 5, MS2US(30), 0); | |||
| 716 | // assertInjectorUpEvent("07@6", 6, MS2US(37.5), 0); | |||
| 717 | // assertInjectorDownEvent("07@7", 7, MS2US(40), 1); | |||
| 718 | // assertInjectorDownEvent("07@8", 8, MS2US(50), 0); | |||
| 719 | ||||
| 720 |
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 19 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✓ Branch 34 taken 2 times.
✗ Branch 35 not taken.
|
2 | ASSERT_EQ( 0, eth.executeActions()) << "executeAll#3"; | |
| 721 |
1/1✓ Branch 1 taken 2 times.
|
2 | eth.moveTimeForwardUs(MS2US(20)); | |
| 722 |
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 19 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✓ Branch 34 taken 2 times.
✗ Branch 35 not taken.
|
2 | ASSERT_EQ( 4, eth.executeActions()) << "executeAll#4"; | |
| 723 | ||||
| 724 | 2 | t = &engine->injectionEvents; | ||
| 725 | ||||
| 726 |
1/1✓ Branch 1 taken 2 times.
|
2 | assertInjectionEventBatch("#0#", &t->elements[0], 0, 3, 0, 135 + 180); | |
| 727 |
1/1✓ Branch 1 taken 2 times.
|
2 | assertInjectionEventBatch("#1#", &t->elements[1], 2, 1, 1, 135 + 360); | |
| 728 |
1/1✓ Branch 1 taken 2 times.
|
2 | assertInjectionEventBatch("#2#", &t->elements[2], 3, 0, 1, 135 + 540); | |
| 729 |
1/1✓ Branch 1 taken 2 times.
|
2 | assertInjectionEventBatch("#3#", &t->elements[3], 1, 2, 0, 135); | |
| 730 | ||||
| 731 | 2 | engine->engineState.injectionDuration = 17.5; | ||
| 732 | // Injection duration of 17.5ms | |||
| 733 |
1/1✓ Branch 2 taken 2 times.
|
2 | MockInjectorModel2 im2; | |
| 734 |
7/7✓ Branch 3 taken 2 times.
✓ Branch 6 taken 2 times.
✓ Branch 10 taken 2 times.
✓ Branch 14 taken 2 times.
✓ Branch 19 taken 2 times.
✓ Branch 22 taken 2 times.
✓ Branch 25 taken 2 times.
|
2 | EXPECT_CALL(im2, getInjectionDuration(_)).WillRepeatedly(Return(17.5f)); | |
| 735 |
1/1✓ Branch 1 taken 2 times.
|
2 | engine->module<InjectorModelPrimary>().set(&im2); | |
| 736 | ||||
| 737 | // duty cycle above 75% is a special use-case because 'special' fuel event overlappes the next normal event in batch mode | |||
| 738 |
5/11✓ Branch 2 taken 2 times.
✓ Branch 5 taken 2 times.
✓ Branch 8 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.
|
0/1? Decision couldn't be analyzed.
|
2 | ASSERT_NEAR(87.5, getInjectorDutyCycle(round(Sensor::getOrZero(SensorType::Rpm))), EPS4D) << "duty for maf=3"; |
| 739 | ||||
| 740 | ||||
| 741 |
1/1✓ Branch 1 taken 2 times.
|
2 | assertInjectionEventBatch("#03", &t->elements[0], 0, 3, 0, 315); | |
| 742 | ||||
| 743 | ||||
| 744 |
3/9✓ Branch 3 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 11 not taken.
✗ Branch 14 not taken.
✗ Branch 19 not taken.
✗ Branch 22 not taken.
✓ Branch 29 taken 2 times.
✗ Branch 30 not taken.
|
2 | ASSERT_EQ( 1, enginePins.injectors[0].currentLogicValue) << "inj#0"; | |
| 745 | ||||
| 746 |
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 19 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✓ Branch 34 taken 2 times.
✗ Branch 35 not taken.
|
2 | ASSERT_EQ( 1, engine->scheduler.size()) << "Queue.size#04"; | |
| 747 |
1/1✓ Branch 1 taken 2 times.
|
2 | eth.assertInjectorDownEvent("08@0", 0, MS2US(10), 0); | |
| 748 | // assertInjectorDownEvent("08@1", 1, MS2US(10), 0); | |||
| 749 | // assertInjectorUpEvent("08@2", 2, MS2US(17.5), 0); | |||
| 750 | // assertInjectorDownEvent("08@3", 3, MS2US(20), 1); | |||
| 751 | // assertInjectorDownEvent("08@4", 4, MS2US(30), 0); | |||
| 752 | ||||
| 753 |
1/1✓ Branch 1 taken 2 times.
|
2 | eth.firePrimaryTriggerFall(); | |
| 754 | ||||
| 755 | ||||
| 756 |
1/1✓ Branch 1 taken 2 times.
|
2 | eth.executeActions(); | |
| 757 |
1/1✓ Branch 1 taken 2 times.
|
2 | eth.fireRise(20); | |
| 758 |
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 19 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✓ Branch 34 taken 2 times.
✗ Branch 35 not taken.
|
2 | ASSERT_EQ(9, engine->scheduler.size()) << "Queue.size#05"; | |
| 759 |
1/1✓ Branch 1 taken 2 times.
|
2 | eth.executeActions(); | |
| 760 | ||||
| 761 | ||||
| 762 |
1/1✓ Branch 1 taken 2 times.
|
2 | eth.fireFall(20); | |
| 763 |
1/1✓ Branch 1 taken 2 times.
|
2 | eth.executeActions(); | |
| 764 | ||||
| 765 |
1/1✓ Branch 1 taken 2 times.
|
2 | eth.moveTimeForwardUs(MS2US(20)); | |
| 766 |
1/1✓ Branch 1 taken 2 times.
|
2 | eth.executeActions(); | |
| 767 |
1/1✓ Branch 1 taken 2 times.
|
2 | eth.firePrimaryTriggerRise(); | |
| 768 | ||||
| 769 | 2 | t = &engine->injectionEvents; | ||
| 770 | ||||
| 771 |
1/1✓ Branch 1 taken 2 times.
|
2 | assertInjectionEventBatch("#00", &t->elements[0], 0, 3, 0, 225); // 87.5 duty cycle | |
| 772 |
1/1✓ Branch 1 taken 2 times.
|
2 | assertInjectionEventBatch("#10", &t->elements[1], 2, 1, 1, 45 + 360); | |
| 773 |
1/1✓ Branch 1 taken 2 times.
|
2 | assertInjectionEventBatch("#20", &t->elements[2], 3, 0, 1, 225 + 360); | |
| 774 |
1/1✓ Branch 1 taken 2 times.
|
2 | assertInjectionEventBatch("#30", &t->elements[3], 1, 2, 0, 45); | |
| 775 | ||||
| 776 | // todo: what's what? a mix of new something and old something? | |||
| 777 |
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 19 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✓ Branch 34 taken 2 times.
✗ Branch 35 not taken.
|
2 | ASSERT_EQ(6, engine->scheduler.size()) << "qs#5"; | |
| 778 | // assertInjectorDownEvent("8@0", 0, MS2US(5.0), 1); | |||
| 779 | // assertInjectorUpEvent("8@1", 1, MS2US(7.5), 1); | |||
| 780 | // assertInjectorDownEvent("8@2", 2, MS2US(15.0), 0); | |||
| 781 | // assertInjectorUpEvent("8@3", 3, MS2US(17.5), 0); | |||
| 782 | // assertInjectorDownEvent("8@4", 4, MS2US(25), 1); | |||
| 783 | // assertInjectorDownEvent("8@5", 5, MS2US(35), 0); | |||
| 784 | //// assertInjectorDownEvent("8@6", 6, MS2US(35), 0); | |||
| 785 | //// assertInjectorUpEvent("8@7", 7, MS2US(37.5), 0); | |||
| 786 | //// assertInjectorDownEvent("8@8", 8, MS2US(45), 1); | |||
| 787 | //// assertInjectorDownEvent("8@9", 9, MS2US(55), 0); | |||
| 788 | ||||
| 789 |
4/10✓ Branch 3 taken 2 times.
✓ Branch 8 taken 2 times.
✗ Branch 13 not taken.
✓ Branch 14 taken 2 times.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 25 not taken.
✗ Branch 28 not taken.
✓ Branch 35 taken 2 times.
✗ Branch 36 not taken.
|
2 | ASSERT_EQ( 0u, getRecentWarnings()->getCount()) << "warningCounter#testFuelSchedulerBug299smallAndMedium"; | |
| 790 | 2 | } | ||
| 791 | ||||
| 792 | 4 | void setInjectionMode(int value) { | ||
| 793 | 4 | engineConfiguration->injectionMode = (injection_mode_e) value; | ||
| 794 | 4 | incrementGlobalConfigurationVersion(); | ||
| 795 | 4 | } | ||
| 796 | ||||
| 797 | #if FUEL_RPM_COUNT == 16 | |||
| 798 | 4 | TEST(big, testFuelSchedulerBug299smallAndMedium) { | ||
| 799 | 1 | doTestFuelSchedulerBug299smallAndMedium(0); | ||
| 800 | 1 | doTestFuelSchedulerBug299smallAndMedium(1000); | ||
| 801 | 1 | } | ||
| 802 | #endif //FUEL_RPM_COUNT == 16 | |||
| 803 | ||||
| 804 | #if FUEL_RPM_COUNT == 16 | |||
| 805 | 4 | TEST(big, testTwoWireBatch) { | ||
| 806 |
1/1✓ Branch 2 taken 1 time.
|
1 | EngineTestHelper eth(engine_type_e::TEST_ENGINE); | |
| 807 | 1 | setTable(config->injectionPhase, -180.0f); | ||
| 808 |
1/1✓ Branch 1 taken 1 time.
|
1 | setupSimpleTestEngineWithMafAndTT_ONE_trigger(ð); | |
| 809 |
5/5✓ Branch 3 taken 1 time.
✓ Branch 7 taken 1 time.
✓ Branch 10 taken 1 time.
✓ Branch 13 taken 1 time.
✓ Branch 17 taken 1 time.
|
3 | EXPECT_CALL(*eth.mockAirmass, getAirmass(_, _)) | |
| 810 |
3/3✓ Branch 5 taken 1 time.
✓ Branch 8 taken 1 time.
✓ Branch 11 taken 1 time.
|
3 | .WillRepeatedly(Return(AirmassResult{0.1008f, 50.0f})); | |
| 811 | ||||
| 812 | 1 | engineConfiguration->injectionMode = IM_BATCH; | ||
| 813 | ||||
| 814 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.fireTriggerEventsWithDuration(20); | |
| 815 | // still no RPM since need to cycles measure cycle duration | |||
| 816 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.fireTriggerEventsWithDuration(20); | |
| 817 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.executeActions(); | |
| 818 | ||||
| 819 | /** | |||
| 820 | * Trigger up - scheduling fuel for full engine cycle | |||
| 821 | */ | |||
| 822 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.fireRise(20); | |
| 823 | ||||
| 824 | 1 | FuelSchedule * t = &engine->injectionEvents; | ||
| 825 | ||||
| 826 |
1/1✓ Branch 1 taken 1 time.
|
1 | assertInjectionEventBatch("#0", &t->elements[0], 0, 3, 1, 153 + 360); // Cyl 1 and 4 | |
| 827 |
1/1✓ Branch 1 taken 1 time.
|
1 | assertInjectionEventBatch("#1_i_@", &t->elements[1], 2, 1, 1, 153 + 540); // Cyl 3 and 2 | |
| 828 |
1/1✓ Branch 1 taken 1 time.
|
1 | assertInjectionEventBatch("#2@", &t->elements[2], 3, 0, 0, 153); // Cyl 4 and 1 | |
| 829 |
1/1✓ Branch 1 taken 1 time.
|
1 | assertInjectionEventBatch("inj#3@", &t->elements[3], 1, 2, 0, 153 + 180); // Cyl 2 and 3 | |
| 830 | 2 | } | ||
| 831 | #endif //FUEL_RPM_COUNT == 16 | |||
| 832 | ||||
| 833 | #if FUEL_RPM_COUNT == 16 | |||
| 834 | 4 | TEST(big, testSequential) { | ||
| 835 |
1/1✓ Branch 2 taken 1 time.
|
1 | EngineTestHelper eth(engine_type_e::TEST_ENGINE); | |
| 836 | 1 | setTable(config->injectionPhase, -180.0f); | ||
| 837 |
5/5✓ Branch 3 taken 1 time.
✓ Branch 7 taken 1 time.
✓ Branch 10 taken 1 time.
✓ Branch 13 taken 1 time.
✓ Branch 17 taken 1 time.
|
3 | EXPECT_CALL(*eth.mockAirmass, getAirmass(_, _)) | |
| 838 |
3/3✓ Branch 5 taken 1 time.
✓ Branch 8 taken 1 time.
✓ Branch 11 taken 1 time.
|
3 | .WillRepeatedly(Return(AirmassResult{0.1008f, 50.0f})); | |
| 839 | ||||
| 840 |
1/1✓ Branch 1 taken 1 time.
|
1 | setupSimpleTestEngineWithMafAndTT_ONE_trigger(ð); | |
| 841 | ||||
| 842 | 1 | engineConfiguration->injectionMode = IM_SEQUENTIAL; | ||
| 843 | ||||
| 844 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.fireTriggerEventsWithDuration(20); | |
| 845 | // still no RPM since need to cycles measure cycle duration | |||
| 846 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.fireTriggerEventsWithDuration(20); | |
| 847 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.executeActions(); | |
| 848 | ||||
| 849 | /** | |||
| 850 | * Trigger up - scheduling fuel for full engine cycle | |||
| 851 | */ | |||
| 852 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.fireRise(20); | |
| 853 | ||||
| 854 | 1 | FuelSchedule * t = &engine->injectionEvents; | ||
| 855 | ||||
| 856 |
1/1✓ Branch 1 taken 1 time.
|
1 | assertInjectionEvent("#0", &t->elements[0], 0, 1, 126 + 360); // Cyl 1 | |
| 857 |
1/1✓ Branch 1 taken 1 time.
|
1 | assertInjectionEvent("#1_i_@", &t->elements[1], 2, 1, 126 + 540); // Cyl 3 | |
| 858 |
1/1✓ Branch 1 taken 1 time.
|
1 | assertInjectionEvent("#2@", &t->elements[2], 3, 0, 126); // Cyl 4 | |
| 859 |
1/1✓ Branch 1 taken 1 time.
|
1 | assertInjectionEvent("inj#3@", &t->elements[3], 1, 0, 126 + 180); // Cyl 2 | |
| 860 | 2 | } | ||
| 861 | #endif //FUEL_RPM_COUNT == 16 | |||
| 862 | ||||
| 863 | #if FUEL_RPM_COUNT == 16 | |||
| 864 | 4 | TEST(big, testBatch) { | ||
| 865 |
1/1✓ Branch 2 taken 1 time.
|
1 | EngineTestHelper eth(engine_type_e::TEST_ENGINE); | |
| 866 | 1 | setTable(config->injectionPhase, -180.0f); | ||
| 867 |
5/5✓ Branch 3 taken 1 time.
✓ Branch 7 taken 1 time.
✓ Branch 10 taken 1 time.
✓ Branch 13 taken 1 time.
✓ Branch 17 taken 1 time.
|
3 | EXPECT_CALL(*eth.mockAirmass, getAirmass(_, _)) | |
| 868 |
3/3✓ Branch 5 taken 1 time.
✓ Branch 8 taken 1 time.
✓ Branch 11 taken 1 time.
|
3 | .WillRepeatedly(Return(AirmassResult{0.1008f, 50.0f})); | |
| 869 | ||||
| 870 |
1/1✓ Branch 1 taken 1 time.
|
1 | setupSimpleTestEngineWithMafAndTT_ONE_trigger(ð); | |
| 871 | ||||
| 872 | 1 | engineConfiguration->injectionMode = IM_BATCH; | ||
| 873 | ||||
| 874 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.fireTriggerEventsWithDuration(20); | |
| 875 | // still no RPM since need to cycles measure cycle duration | |||
| 876 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.fireTriggerEventsWithDuration(20); | |
| 877 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.executeActions(); | |
| 878 | ||||
| 879 | /** | |||
| 880 | * Trigger up - scheduling fuel for full engine cycle | |||
| 881 | */ | |||
| 882 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.fireRise(20); | |
| 883 | ||||
| 884 | 1 | FuelSchedule * t = &engine->injectionEvents; | ||
| 885 | ||||
| 886 |
1/1✓ Branch 1 taken 1 time.
|
1 | assertInjectionEventBatch("#0", &t->elements[0], 0, 3, 1, 153 + 360); // Cyl 1 + 4 | |
| 887 |
1/1✓ Branch 1 taken 1 time.
|
1 | assertInjectionEventBatch("#1_i_@", &t->elements[1], 2, 1, 1, 153 + 540); // Cyl 3 + 2 | |
| 888 |
1/1✓ Branch 1 taken 1 time.
|
1 | assertInjectionEventBatch("#2@", &t->elements[2], 3, 0, 0, 153); // Cyl 4 + 1 | |
| 889 |
1/1✓ Branch 1 taken 1 time.
|
1 | assertInjectionEventBatch("inj#3@", &t->elements[3], 1, 2, 0, 153 + 180); // Cyl 2 + 3 | |
| 890 | 2 | } | ||
| 891 | #endif //FUEL_RPM_COUNT == 16 | |||
| 892 | ||||
| 893 | #if FUEL_RPM_COUNT == 16 | |||
| 894 | 4 | TEST(big, testSinglePoint) { | ||
| 895 |
1/1✓ Branch 2 taken 1 time.
|
1 | EngineTestHelper eth(engine_type_e::TEST_ENGINE); | |
| 896 | 1 | engineConfiguration->hpfpCamLobes = 0; | ||
| 897 | 1 | setTable(config->injectionPhase, -180.0f); | ||
| 898 |
5/5✓ Branch 3 taken 1 time.
✓ Branch 7 taken 1 time.
✓ Branch 10 taken 1 time.
✓ Branch 13 taken 1 time.
✓ Branch 17 taken 1 time.
|
3 | EXPECT_CALL(*eth.mockAirmass, getAirmass(_, _)) | |
| 899 |
3/3✓ Branch 5 taken 1 time.
✓ Branch 8 taken 1 time.
✓ Branch 11 taken 1 time.
|
3 | .WillRepeatedly(Return(AirmassResult{0.1008f, 50.0f})); | |
| 900 | ||||
| 901 |
1/1✓ Branch 1 taken 1 time.
|
1 | setupSimpleTestEngineWithMafAndTT_ONE_trigger(ð); | |
| 902 | ||||
| 903 | 1 | engineConfiguration->injectionMode = IM_SINGLE_POINT; | ||
| 904 | ||||
| 905 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.fireTriggerEventsWithDuration(20); | |
| 906 | // still no RPM since need to cycles measure cycle duration | |||
| 907 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.fireTriggerEventsWithDuration(20); | |
| 908 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.executeActions(); | |
| 909 | ||||
| 910 | /** | |||
| 911 | * Trigger up - scheduling fuel for full engine cycle | |||
| 912 | */ | |||
| 913 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.fireRise(20); | |
| 914 | ||||
| 915 | 1 | FuelSchedule * t = &engine->injectionEvents; | ||
| 916 | ||||
| 917 |
1/1✓ Branch 1 taken 1 time.
|
1 | assertInjectionEvent("#0", &t->elements[0], 0, 1, 126 + 360); // Cyl 1 | |
| 918 |
1/1✓ Branch 1 taken 1 time.
|
1 | assertInjectionEvent("#1_i_@", &t->elements[1], 0, 1, 126 + 540); // Cyl 3 | |
| 919 |
1/1✓ Branch 1 taken 1 time.
|
1 | assertInjectionEvent("#2@", &t->elements[2], 0, 0, 126); // Cyl 4 | |
| 920 |
1/1✓ Branch 1 taken 1 time.
|
1 | assertInjectionEvent("inj#3@", &t->elements[3], 0, 0, 126 + 180); // Cyl 2 | |
| 921 | 2 | } | ||
| 922 | #endif //FUEL_RPM_COUNT == 16 | |||
| 923 | ||||
| 924 | #if FUEL_RPM_COUNT == 16 | |||
| 925 | 4 | TEST(big, testFuelSchedulerBug299smallAndLarge) { | ||
| 926 |
1/1✓ Branch 2 taken 1 time.
|
1 | EngineTestHelper eth(engine_type_e::TEST_ENGINE); | |
| 927 | extern bool unitTestBusyWaitHack; | |||
| 928 | 1 | unitTestBusyWaitHack = true; | ||
| 929 | 1 | engineConfiguration->hpfpCamLobes = 0; | ||
| 930 | 1 | setTable(config->injectionPhase, -180.0f); | ||
| 931 | 1 | engineConfiguration->isFasterEngineSpinUpEnabled = false; | ||
| 932 | 1 | engine->tdcMarkEnabled = false; | ||
| 933 |
1/1✓ Branch 1 taken 1 time.
|
1 | setTestBug299(ð); | |
| 934 |
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()) << "Lqs#0"; | |
| 935 | ||||
| 936 |
1/1✓ Branch 1 taken 1 time.
|
1 | engine->periodicFastCallback(); | |
| 937 | ||||
| 938 | 1 | engine->engineState.injectionDuration = 17.5f; | ||
| 939 | // Injection duration of 17.5ms | |||
| 940 |
1/1✓ Branch 2 taken 1 time.
|
1 | MockInjectorModel2 im; | |
| 941 |
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(im, getInjectionDuration(_)).WillRepeatedly(Return(17.5f)); | |
| 942 |
1/1✓ Branch 1 taken 1 time.
|
1 | engine->module<InjectorModelPrimary>().set(&im); | |
| 943 | ||||
| 944 |
5/11✓ Branch 2 taken 1 time.
✓ Branch 5 taken 1 time.
✓ Branch 8 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.
|
0/1? Decision couldn't be analyzed.
|
1 | ASSERT_NEAR(87.5, getInjectorDutyCycle(round(Sensor::getOrZero(SensorType::Rpm))), EPS4D) << "Lduty for maf=3"; |
| 945 | ||||
| 946 | ||||
| 947 |
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()) << "Lqs#1"; | |
| 948 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.moveTimeForwardUs(MS2US(20)); | |
| 949 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.executeActions(); | |
| 950 | ||||
| 951 | // injector #1 is low before the test | |||
| 952 |
2/9✗ Branch 5 not taken.
✓ Branch 6 taken 1 time.
✗ Branch 9 not taken.
✗ Branch 12 not taken.
✗ Branch 17 not taken.
✗ Branch 21 not taken.
✗ Branch 24 not taken.
✓ Branch 33 taken 1 time.
✗ Branch 34 not taken.
|
1 | ASSERT_FALSE(enginePins.injectors[0].currentLogicValue) << "injector@0"; | |
| 953 | ||||
| 954 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.firePrimaryTriggerRise(); | |
| 955 | ||||
| 956 | // time...|0.......|10......|20......|30......|40......|50......|60......| | |||
| 957 | // inj #0 |########|########|########|.....###|########|........|........| | |||
| 958 | // inj #1 |..######|########|....####|########|........|........|........| | |||
| 959 |
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( 6, engine->scheduler.size()) << "Lqs#4"; | |
| 960 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.assertInjectorUpEvent("L04@0", 0, MS2US(8.5), 2); | |
| 961 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.assertInjectorUpEvent("L04@1", 1, MS2US(12.5), 0); | |
| 962 | // special overlapping injection is merged with one of the scheduled injections | |||
| 963 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.assertInjectorUpEvent("L04@2", 2, MS2US(18.5), 3); | |
| 964 | ||||
| 965 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.assertInjectorDownEvent("L04@3", 3, MS2US(26), 2); | |
| 966 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.assertInjectorDownEvent("L04@4", 4, MS2US(30), 0); | |
| 967 | ||||
| 968 | // assertInjectorDownEvent("L04@5", 5, MS2US(30), 0); | |||
| 969 | // assertInjectorUpEvent("L04@6", 6, MS2US(32.5), 0); | |||
| 970 | // assertInjectorDownEvent("L04@7", 7, MS2US(40.0), 1); | |||
| 971 | // assertInjectorDownEvent("L04@8", 8, MS2US(50.0), 0); | |||
| 972 | ||||
| 973 | ||||
| 974 |
2/2✓ Branch 1 taken 1 time.
✓ Branch 4 taken 1 time.
|
1 | engine->scheduler.executeAll(getTimeNowUs() + 1); | |
| 975 | // injector goes high... | |||
| 976 |
2/9✗ Branch 5 not taken.
✓ Branch 6 taken 1 time.
✗ Branch 9 not taken.
✗ Branch 12 not taken.
✗ Branch 17 not taken.
✗ Branch 21 not taken.
✗ Branch 24 not taken.
✓ Branch 33 taken 1 time.
✗ Branch 34 not taken.
|
1 | ASSERT_FALSE(enginePins.injectors[0].currentLogicValue) << "injector@1"; | |
| 977 | ||||
| 978 |
2/2✓ Branch 1 taken 1 time.
✓ Branch 4 taken 1 time.
|
1 | engine->scheduler.executeAll(getTimeNowUs() + MS2US(17.5) + 1); | |
| 979 | // injector does not go low too soon, that's a feature :) | |||
| 980 |
2/9✗ Branch 3 not taken.
✓ Branch 4 taken 1 time.
✗ Branch 7 not taken.
✗ Branch 10 not taken.
✗ Branch 15 not taken.
✗ Branch 19 not taken.
✗ Branch 22 not taken.
✓ Branch 31 taken 1 time.
✗ Branch 32 not taken.
|
1 | ASSERT_TRUE(enginePins.injectors[0].currentLogicValue) << "injector@2"; | |
| 981 | ||||
| 982 | ||||
| 983 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.fireFall(20); | |
| 984 | ||||
| 985 |
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( 6, engine->scheduler.size()) << "Lqs#04"; | |
| 986 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.assertInjectorUpEvent("L015@0", 0, MS2US(-1.5), 3); | |
| 987 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.assertInjectorUpEvent("L015@1", 1, MS2US(2.5), 1); | |
| 988 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.assertInjectorDownEvent("L015@2", 2, MS2US(6), 2); | |
| 989 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.assertInjectorDownEvent("L015@3", 3, MS2US(10), 0); | |
| 990 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.assertInjectorDownEvent("L015@4", 4, MS2US(16), 3); | |
| 991 | //todo assertInjectorDownEvent("L015@5", 5, MS2US(30), 0); | |||
| 992 | ||||
| 993 | ||||
| 994 |
2/2✓ Branch 1 taken 1 time.
✓ Branch 4 taken 1 time.
|
1 | engine->scheduler.executeAll(getTimeNowUs() + MS2US(10) + 1); | |
| 995 | // end of combined injection | |||
| 996 |
2/9✗ Branch 5 not taken.
✓ Branch 6 taken 1 time.
✗ Branch 9 not taken.
✗ Branch 12 not taken.
✗ Branch 17 not taken.
✗ Branch 21 not taken.
✗ Branch 24 not taken.
✓ Branch 33 taken 1 time.
✗ Branch 34 not taken.
|
1 | ASSERT_FALSE(enginePins.injectors[0].currentLogicValue) << "injector@3"; | |
| 997 | ||||
| 998 | ||||
| 999 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.moveTimeForwardUs(MS2US(20)); | |
| 1000 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.executeActions(); | |
| 1001 |
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, engine->scheduler.size()) << "Lqs#04"; | |
| 1002 | ||||
| 1003 |
1/1✓ Branch 1 taken 1 time.
|
1 | engine->periodicFastCallback(); | |
| 1004 | ||||
| 1005 | // Injection duration of 2ms | |||
| 1006 | 1 | engine->engineState.injectionDuration = 2.0f; | ||
| 1007 |
1/1✓ Branch 2 taken 1 time.
|
1 | MockInjectorModel2 im2; | |
| 1008 |
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(im2, getInjectionDuration(_)).WillRepeatedly(Return(2.0f)); | |
| 1009 |
1/1✓ Branch 1 taken 1 time.
|
1 | engine->module<InjectorModelPrimary>().set(&im2); | |
| 1010 | ||||
| 1011 |
5/11✓ Branch 3 taken 1 time.
✓ Branch 6 taken 1 time.
✓ Branch 10 taken 1 time.
✗ Branch 15 not taken.
✓ Branch 16 taken 1 time.
✗ Branch 19 not taken.
✗ Branch 22 not taken.
✗ Branch 27 not taken.
✗ Branch 30 not taken.
✓ Branch 37 taken 1 time.
✗ Branch 38 not taken.
|
0/1? Decision couldn't be analyzed.
|
1 | ASSERT_EQ( 10, getInjectorDutyCycle(round(Sensor::getOrZero(SensorType::Rpm)))) << "Lduty for maf=3"; |
| 1012 | ||||
| 1013 | ||||
| 1014 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.firePrimaryTriggerRise(); | |
| 1015 | ||||
| 1016 | //todoASSERT_EQ( 5, engine->scheduler.size()) << "Lqs#05"; | |||
| 1017 | //todo assertInjectorUpEvent("L016@0", 0, MS2US(8), 0); | |||
| 1018 | //todo assertInjectorDownEvent("L016@1", 1, MS2US(10), 0); | |||
| 1019 | //todo assertInjectorDownEvent("L016@2", 2, MS2US(10), 0); | |||
| 1020 | ||||
| 1021 | ||||
| 1022 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.moveTimeForwardUs(MS2US(20)); | |
| 1023 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.executeActions(); // issue here | |
| 1024 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.firePrimaryTriggerFall(); | |
| 1025 | ||||
| 1026 | ||||
| 1027 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.moveTimeForwardUs(MS2US(20)); | |
| 1028 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.executeActions(); | |
| 1029 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.firePrimaryTriggerRise(); | |
| 1030 | ||||
| 1031 |
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()) << "Lqs#5"; | |
| 1032 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.assertInjectorUpEvent("L05@0", 0, MS2US(8), 2); | |
| 1033 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.assertInjectorDownEvent("L05@1", 1, MS2US(10), 2); | |
| 1034 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.assertInjectorUpEvent("L05@2", 2, MS2US(18), 3); | |
| 1035 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.assertInjectorDownEvent("L05@3", 3, MS2US(20), 3); | |
| 1036 | ||||
| 1037 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.moveTimeForwardUs(MS2US(20)); | |
| 1038 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.executeActions(); | |
| 1039 |
4/10✓ Branch 3 taken 1 time.
✓ Branch 8 taken 1 time.
✗ Branch 13 not taken.
✓ Branch 14 taken 1 time.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 25 not taken.
✗ Branch 28 not taken.
✓ Branch 35 taken 1 time.
✗ Branch 36 not taken.
|
1 | ASSERT_EQ( 0u, getRecentWarnings()->getCount()) << "warningCounter#testFuelSchedulerBug299smallAndLarge"; | |
| 1040 | 1 | } | ||
| 1041 | #endif //FUEL_RPM_COUNT == 16 | |||
| 1042 | ||||
| 1043 | 4 | TEST(big, testSparkReverseOrderBug319) { | ||
| 1044 |
1/1✓ Branch 1 taken 1 time.
|
1 | printf("*************************************************** testSparkReverseOrderBug319 small to medium\r\n"); | |
| 1045 | ||||
| 1046 |
1/1✓ Branch 2 taken 1 time.
|
1 | EngineTestHelper eth(engine_type_e::TEST_ENGINE); | |
| 1047 | 1 | engineConfiguration->isFasterEngineSpinUpEnabled = false; | ||
| 1048 | 1 | engine->tdcMarkEnabled = false; | ||
| 1049 | ||||
| 1050 | 1 | engineConfiguration->isInjectionEnabled = false; | ||
| 1051 | 1 | engineConfiguration->cylindersCount = 4; | ||
| 1052 | 1 | engineConfiguration->ignitionMode = IM_INDIVIDUAL_COILS; | ||
| 1053 | ||||
| 1054 |
1/1✓ Branch 1 taken 1 time.
|
1 | setConstantDwell(45); | |
| 1055 | ||||
| 1056 |
1/1✓ Branch 1 taken 1 time.
|
1 | engine->triggerCentral.syncEnginePhaseAndReport(2, 0); | |
| 1057 | ||||
| 1058 | // this is needed to update injectorLag | |||
| 1059 |
1/1✓ Branch 1 taken 1 time.
|
1 | engine->updateSlowSensors(); | |
| 1060 | ||||
| 1061 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.setTriggerType(trigger_type_e::TT_HALF_MOON); | |
| 1062 |
1/1✓ Branch 1 taken 1 time.
|
1 | engine->periodicFastCallback(); | |
| 1063 | ||||
| 1064 |
1/1✓ Branch 1 taken 1 time.
|
1 | setWholeTimingTable(0); | |
| 1065 | ||||
| 1066 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.fireRise(20); | |
| 1067 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.fireFall(20); | |
| 1068 | ||||
| 1069 |
1/1✓ Branch 1 taken 1 time.
|
1 | engine->triggerCentral.syncEnginePhaseAndReport(2, 0); | |
| 1070 | ||||
| 1071 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.executeActions(); | |
| 1072 | ||||
| 1073 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.fireRise(20); | |
| 1074 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.fireFall(20); | |
| 1075 | ||||
| 1076 |
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( 3000, round(Sensor::getOrZero(SensorType::Rpm))) << "testSparkReverseOrderBug319: RPM"; | |
| 1077 | ||||
| 1078 | ||||
| 1079 |
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( 8, engine->scheduler.size()) << "testSparkReverseOrderBug319: queue size"; | |
| 1080 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.executeActions(); | |
| 1081 |
1/1✓ Branch 1 taken 1 time.
|
1 | printf("***************************************************\r\n"); | |
| 1082 |
3/9✓ Branch 3 taken 1 time.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 time.
✗ Branch 11 not taken.
✗ Branch 14 not taken.
✗ Branch 19 not taken.
✗ Branch 22 not taken.
✓ Branch 29 taken 1 time.
✗ Branch 30 not taken.
|
1 | ASSERT_EQ( 0, engine->engineState.sparkOutOfOrderCounter) << "out-of-order #1"; | |
| 1083 | ||||
| 1084 | ||||
| 1085 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.fireRise(20); | |
| 1086 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.executeActions(); | |
| 1087 | ||||
| 1088 | /** | |||
| 1089 | * here we throw scheduling logic off | |||
| 1090 | */ | |||
| 1091 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.fireFall(0.1); // executing new signal too early | |
| 1092 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.executeActions(); | |
| 1093 | ||||
| 1094 | ||||
| 1095 | ||||
| 1096 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.moveTimeForwardUs(MS2US(200)); // moving time forward to execute all pending actions | |
| 1097 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.executeActions(); | |
| 1098 | ||||
| 1099 |
3/9✓ Branch 3 taken 1 time.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 time.
✗ Branch 11 not taken.
✗ Branch 14 not taken.
✗ Branch 19 not taken.
✗ Branch 22 not taken.
✓ Branch 29 taken 1 time.
✗ Branch 30 not taken.
|
1 | ASSERT_EQ( 1, engine->engineState.sparkOutOfOrderCounter) << "out-of-order #2"; | |
| 1100 | ||||
| 1101 |
1/1✓ Branch 1 taken 1 time.
|
1 | printf("*************************************************** now let's have a good engine cycle and confirm things work\r\n"); | |
| 1102 | ||||
| 1103 | ||||
| 1104 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.fireRise(20); | |
| 1105 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.executeActions(); | |
| 1106 | ||||
| 1107 |
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( 545, round(Sensor::getOrZero(SensorType::Rpm))) << "RPM#2"; | |
| 1108 | ||||
| 1109 |
3/9✓ Branch 3 taken 1 time.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 time.
✗ Branch 11 not taken.
✗ Branch 14 not taken.
✗ Branch 19 not taken.
✗ Branch 22 not taken.
✓ Branch 29 taken 1 time.
✗ Branch 30 not taken.
|
1 | ASSERT_EQ( 1, engine->engineState.sparkOutOfOrderCounter) << "out-of-order #3"; | |
| 1110 | ||||
| 1111 | ||||
| 1112 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.fireFall(20); | |
| 1113 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.executeActions(); | |
| 1114 |
3/9✓ Branch 3 taken 1 time.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 time.
✗ Branch 11 not taken.
✗ Branch 14 not taken.
✗ Branch 19 not taken.
✗ Branch 22 not taken.
✓ Branch 29 taken 1 time.
✗ Branch 30 not taken.
|
1 | ASSERT_EQ( 1u, engine->engineState.sparkOutOfOrderCounter) << "out-of-order #4"; | |
| 1115 | ||||
| 1116 |
1/1✓ Branch 1 taken 1 time.
|
1 | printf("*************************************************** (rpm is back) now let's have a good engine cycle and confirm things work\r\n"); | |
| 1117 | ||||
| 1118 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.fireRise(20); | |
| 1119 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.executeActions(); | |
| 1120 | ||||
| 1121 |
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( 3000, round(Sensor::getOrZero(SensorType::Rpm))) << "RPM#3"; | |
| 1122 | ||||
| 1123 |
3/9✓ Branch 3 taken 1 time.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 time.
✗ Branch 11 not taken.
✗ Branch 14 not taken.
✗ Branch 19 not taken.
✗ Branch 22 not taken.
✓ Branch 29 taken 1 time.
✗ Branch 30 not taken.
|
1 | ASSERT_EQ( 1, engine->engineState.sparkOutOfOrderCounter) << "out-of-order #5 on c4"; | |
| 1124 | ||||
| 1125 | ||||
| 1126 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.fireFall(20); | |
| 1127 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.executeActions(); | |
| 1128 |
3/9✓ Branch 3 taken 1 time.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 time.
✗ Branch 11 not taken.
✗ Branch 14 not taken.
✗ Branch 19 not taken.
✗ Branch 22 not taken.
✓ Branch 29 taken 1 time.
✗ Branch 30 not taken.
|
1 | ASSERT_EQ( 1, engine->engineState.sparkOutOfOrderCounter) << "out-of-order #6 on c4"; | |
| 1129 | ||||
| 1130 |
1/1✓ Branch 1 taken 1 time.
|
1 | printf("*************************************************** (rpm is back 2) now let's have a good engine cycle and confirm things work\r\n"); | |
| 1131 | ||||
| 1132 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.fireRise(20); | |
| 1133 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.executeActions(); | |
| 1134 | ||||
| 1135 |
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( 3000, round(Sensor::getOrZero(SensorType::Rpm))) << "RPM#4"; | |
| 1136 | ||||
| 1137 |
3/9✓ Branch 3 taken 1 time.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 time.
✗ Branch 11 not taken.
✗ Branch 14 not taken.
✗ Branch 19 not taken.
✗ Branch 22 not taken.
✓ Branch 29 taken 1 time.
✗ Branch 30 not taken.
|
1 | ASSERT_EQ( 1, engine->engineState.sparkOutOfOrderCounter) << "out-of-order #7"; | |
| 1138 | ||||
| 1139 | ||||
| 1140 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.fireFall(20); | |
| 1141 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.executeActions(); | |
| 1142 |
3/9✓ Branch 3 taken 1 time.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 time.
✗ Branch 11 not taken.
✗ Branch 14 not taken.
✗ Branch 19 not taken.
✗ Branch 22 not taken.
✓ Branch 29 taken 1 time.
✗ Branch 30 not taken.
|
1 | ASSERT_EQ( 1, engine->engineState.sparkOutOfOrderCounter) << "out-of-order #8"; | |
| 1143 |
4/10✓ Branch 3 taken 1 time.
✓ Branch 8 taken 1 time.
✗ Branch 13 not taken.
✓ Branch 14 taken 1 time.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 25 not taken.
✗ Branch 28 not taken.
✓ Branch 35 taken 1 time.
✗ Branch 36 not taken.
|
1 | ASSERT_EQ( 3u, getRecentWarnings()->getCount()) << "warningCounter#SparkReverseOrderBug319"; | |
| 1144 |
4/10✓ Branch 2 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(ObdCode::CUSTOM_DWELL_TOO_LONG, getRecentWarnings()->get(0).Code) << "warning @0"; | |
| 1145 |
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_OUT_OF_ORDER_COIL, getRecentWarnings()->get(1).Code); | |
| 1146 |
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_Ignition_Coil_Overcharge_1, getRecentWarnings()->get(2).Code); | |
| 1147 | 1 | } | ||
| 1148 | ||||
| 1149 | // https://sourceforge.net/p/rusefi/tickets/299/ | |||
| 1150 | // this is not a test of wasted spark! | |||
| 1151 | 4 | TEST(big, testAssertWeAreNotMissingASpark299) { | ||
| 1152 |
1/1✓ Branch 1 taken 1 time.
|
1 | printf("*************************************************** testMissedSpark299\r\n"); | |
| 1153 | ||||
| 1154 |
1/1✓ Branch 2 taken 1 time.
|
1 | EngineTestHelper eth(engine_type_e::TEST_ENGINE); | |
| 1155 | 1 | engineConfiguration->ignitionMode = IM_WASTED_SPARK; | ||
| 1156 |
1/1✓ Branch 1 taken 1 time.
|
1 | setupSimpleTestEngineWithMafAndTT_ONE_trigger(ð); | |
| 1157 | 1 | engineConfiguration->isIgnitionEnabled = true; | ||
| 1158 | 1 | engineConfiguration->isInjectionEnabled = false; | ||
| 1159 | ||||
| 1160 |
4/10✓ Branch 3 taken 1 time.
✓ Branch 8 taken 1 time.
✗ Branch 13 not taken.
✓ Branch 14 taken 1 time.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 25 not taken.
✗ Branch 28 not taken.
✓ Branch 35 taken 1 time.
✗ Branch 36 not taken.
|
1 | ASSERT_EQ( 0u, getRecentWarnings()->getCount()) << "warningCounter#0"; | |
| 1161 | ||||
| 1162 | // todo: migrate to 'smartFireRise' see header which explains the difference | |||
| 1163 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.fireRise(20); | |
| 1164 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.executeActions(); | |
| 1165 |
3/9✓ Branch 3 taken 1 time.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 time.
✗ Branch 11 not taken.
✗ Branch 14 not taken.
✗ Branch 19 not taken.
✗ Branch 22 not taken.
✓ Branch 29 taken 1 time.
✗ Branch 30 not taken.
|
1 | ASSERT_EQ( 0u, engine->triggerCentral.triggerState.currentCycle.current_index) << "ci#0"; | |
| 1166 | ||||
| 1167 | ||||
| 1168 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.fireFall(20); | |
| 1169 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.executeActions(); | |
| 1170 |
3/9✓ Branch 3 taken 1 time.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 time.
✗ Branch 11 not taken.
✗ Branch 14 not taken.
✗ Branch 19 not taken.
✗ Branch 22 not taken.
✓ Branch 29 taken 1 time.
✗ Branch 30 not taken.
|
1 | ASSERT_EQ( 1u, engine->triggerCentral.triggerState.currentCycle.current_index) << "ci#1"; | |
| 1171 | ||||
| 1172 | ||||
| 1173 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.fireRise(20); | |
| 1174 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.executeActions(); | |
| 1175 |
3/9✓ Branch 3 taken 1 time.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 time.
✗ Branch 11 not taken.
✗ Branch 14 not taken.
✗ Branch 19 not taken.
✗ Branch 22 not taken.
✓ Branch 29 taken 1 time.
✗ Branch 30 not taken.
|
1 | ASSERT_EQ( 0u, engine->triggerCentral.triggerState.currentCycle.current_index) << "ci#2"; | |
| 1176 | ||||
| 1177 | ||||
| 1178 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.fireFall(20); | |
| 1179 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.executeActions(); | |
| 1180 |
3/9✓ Branch 3 taken 1 time.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 time.
✗ Branch 11 not taken.
✗ Branch 14 not taken.
✗ Branch 19 not taken.
✗ Branch 22 not taken.
✓ Branch 29 taken 1 time.
✗ Branch 30 not taken.
|
1 | ASSERT_EQ( 1u, engine->triggerCentral.triggerState.currentCycle.current_index) << "ci#3"; | |
| 1181 | ||||
| 1182 | ||||
| 1183 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.fireRise(20); | |
| 1184 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.executeActions(); | |
| 1185 | ||||
| 1186 | ||||
| 1187 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.fireFall(20); | |
| 1188 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.executeActions(); | |
| 1189 |
3/9✓ Branch 3 taken 1 time.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 time.
✗ Branch 11 not taken.
✗ Branch 14 not taken.
✗ Branch 19 not taken.
✗ Branch 22 not taken.
✓ Branch 29 taken 1 time.
✗ Branch 30 not taken.
|
1 | ASSERT_EQ( 1u, eth.engine.triggerCentral.triggerState.currentCycle.current_index) << "ci#5"; | |
| 1190 | ||||
| 1191 | ||||
| 1192 |
1/1✓ Branch 1 taken 1 time.
|
1 | printf("*************************************************** testMissedSpark299 start\r\n"); | |
| 1193 | ||||
| 1194 |
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(3000, Sensor::getOrZero(SensorType::Rpm)); | |
| 1195 | ||||
| 1196 | // positive advance scenario which is the typical case | |||
| 1197 |
1/1✓ Branch 1 taken 1 time.
|
1 | setWholeTimingTable(3); | |
| 1198 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.engine.periodicFastCallback(); | |
| 1199 | ||||
| 1200 | ||||
| 1201 | ||||
| 1202 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.fireRise(20); | |
| 1203 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.executeActions(); | |
| 1204 | ||||
| 1205 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.fireFall(20); | |
| 1206 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.executeActions(); | |
| 1207 | ||||
| 1208 | ||||
| 1209 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.fireRise(20); | |
| 1210 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.executeActions(); | |
| 1211 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.fireFall(20); | |
| 1212 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.executeActions(); | |
| 1213 | ||||
| 1214 | // negative advance is rarely used but worth testing considering all out angleWrap. | |||
| 1215 |
1/1✓ Branch 1 taken 1 time.
|
1 | setWholeTimingTable(-5); | |
| 1216 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.engine.periodicFastCallback(); | |
| 1217 | ||||
| 1218 | ||||
| 1219 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.fireRise(20); | |
| 1220 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.executeActions(); | |
| 1221 | ||||
| 1222 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.fireFall(20); | |
| 1223 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.executeActions(); | |
| 1224 | ||||
| 1225 | ||||
| 1226 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.fireRise(20); | |
| 1227 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.executeActions(); | |
| 1228 | ||||
| 1229 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.fireFall(20); | |
| 1230 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.executeActions(); | |
| 1231 | ||||
| 1232 |
4/10✓ Branch 3 taken 1 time.
✓ Branch 8 taken 1 time.
✗ Branch 13 not taken.
✓ Branch 14 taken 1 time.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 25 not taken.
✗ Branch 28 not taken.
✓ Branch 35 taken 1 time.
✗ Branch 36 not taken.
|
1 | ASSERT_EQ( 0u, getRecentWarnings()->getCount()) << "warningCounter#1"; | |
| 1233 | 1 | } | ||
| 1234 |