diff --git a/unit_tests/tests/trigger/test_trigger_decoder.cpp b/unit_tests/tests/trigger/test_trigger_decoder.cpp index 77c3843f66..f58099ca54 100644 --- a/unit_tests/tests/trigger/test_trigger_decoder.cpp +++ b/unit_tests/tests/trigger/test_trigger_decoder.cpp @@ -803,7 +803,6 @@ TEST(big, testTwoWireBatch) { assertInjectionEventBatch("inj#3@", &t->elements[3], 1, 2, 0, 153 + 180); // Cyl 2 and 3 } - TEST(big, testSequential) { EngineTestHelper eth(engine_type_e::TEST_ENGINE); setTable(config->injectionPhase, -180.0f); @@ -832,6 +831,62 @@ TEST(big, testSequential) { assertInjectionEvent("inj#3@", &t->elements[3], 1, 0, 126 + 180); // Cyl 2 } +TEST(big, testBatch) { + EngineTestHelper eth(engine_type_e::TEST_ENGINE); + setTable(config->injectionPhase, -180.0f); + EXPECT_CALL(*eth.mockAirmass, getAirmass(_, _)) + .WillRepeatedly(Return(AirmassResult{0.1008f, 50.0f})); + + setupSimpleTestEngineWithMafAndTT_ONE_trigger(ð); + + engineConfiguration->injectionMode = IM_BATCH; + + eth.fireTriggerEventsWithDuration(20); + // still no RPM since need to cycles measure cycle duration + eth.fireTriggerEventsWithDuration(20); + eth.executeActions(); + + /** + * Trigger up - scheduling fuel for full engine cycle + */ + eth.fireRise(20); + + FuelSchedule * t = &engine->injectionEvents; + + assertInjectionEventBatch("#0", &t->elements[0], 0, 3, 1, 153 + 360); // Cyl 1 + 4 + assertInjectionEventBatch("#1_i_@", &t->elements[1], 2, 1, 1, 153 + 540); // Cyl 3 + 2 + assertInjectionEventBatch("#2@", &t->elements[2], 3, 0, 0, 153); // Cyl 4 + 1 + assertInjectionEventBatch("inj#3@", &t->elements[3], 1, 2, 0, 153 + 180); // Cyl 2 + 3 +} + +TEST(big, testSinglePoint) { + EngineTestHelper eth(engine_type_e::TEST_ENGINE); + setTable(config->injectionPhase, -180.0f); + EXPECT_CALL(*eth.mockAirmass, getAirmass(_, _)) + .WillRepeatedly(Return(AirmassResult{0.1008f, 50.0f})); + + setupSimpleTestEngineWithMafAndTT_ONE_trigger(ð); + + engineConfiguration->injectionMode = IM_SINGLE_POINT; + + eth.fireTriggerEventsWithDuration(20); + // still no RPM since need to cycles measure cycle duration + eth.fireTriggerEventsWithDuration(20); + eth.executeActions(); + + /** + * Trigger up - scheduling fuel for full engine cycle + */ + eth.fireRise(20); + + FuelSchedule * t = &engine->injectionEvents; + + assertInjectionEvent("#0", &t->elements[0], 0, 1, 126 + 360); // Cyl 1 + assertInjectionEvent("#1_i_@", &t->elements[1], 0, 1, 126 + 540); // Cyl 3 + assertInjectionEvent("#2@", &t->elements[2], 0, 0, 126); // Cyl 4 + assertInjectionEvent("inj#3@", &t->elements[3], 0, 0, 126 + 180); // Cyl 2 +} + TEST(big, testFuelSchedulerBug299smallAndLarge) { EngineTestHelper eth(engine_type_e::TEST_ENGINE); setTable(config->injectionPhase, -180.0f);