From a3de3b2331f9b6692d7354a60092f2de88e25613 Mon Sep 17 00:00:00 2001 From: rusefi Date: Wed, 9 Jan 2019 16:42:34 -0500 Subject: [PATCH] The Big Refactoring of 2019: scheduler should not be global #655 --- unit_tests/global_execution_queue.cpp | 4 ++++ unit_tests/global_execution_queue.h | 1 + unit_tests/tests/test_pwm_generator.cpp | 24 ++++++++++++------------ 3 files changed, 17 insertions(+), 12 deletions(-) diff --git a/unit_tests/global_execution_queue.cpp b/unit_tests/global_execution_queue.cpp index a8fca64cd0..281ec49d9e 100644 --- a/unit_tests/global_execution_queue.cpp +++ b/unit_tests/global_execution_queue.cpp @@ -34,6 +34,10 @@ int TestExecutor::size() { return schedulingQueue.size(); } +scheduling_s* TestExecutor::getForUnitTest(int index) { + return schedulingQueue.getForUnitText(index); +} + void TestExecutor::scheduleByTimestamp(scheduling_s *scheduling, efitimeus_t timeUs, schfunc_t callback, void *param) { if (debugSignalExecutor) { printf("scheduleByTime %d\r\n", timeUs); diff --git a/unit_tests/global_execution_queue.h b/unit_tests/global_execution_queue.h index 96aad6d3e1..a632cf3f87 100644 --- a/unit_tests/global_execution_queue.h +++ b/unit_tests/global_execution_queue.h @@ -17,6 +17,7 @@ public: void scheduleForLater(scheduling_s *scheduling, int delayUs, schfunc_t callback, void *param); void clear(); int size(); + scheduling_s* getForUnitTest(int index); }; #endif /* GLOBAL_EXECUTION_QUEUE_H_ */ diff --git a/unit_tests/tests/test_pwm_generator.cpp b/unit_tests/tests/test_pwm_generator.cpp index 3d8af6c8a6..c70101c423 100644 --- a/unit_tests/tests/test_pwm_generator.cpp +++ b/unit_tests/tests/test_pwm_generator.cpp @@ -58,7 +58,7 @@ static void test100dutyCycle() { &testApplyPinState); expectedTimeOfNextEvent += 1000; - assertEqualsM2("1@1000/100", expectedTimeOfNextEvent, schedulingQueue.getForUnitText(0)->momentX, 0); + assertEqualsM2("1@1000/100", expectedTimeOfNextEvent, executor.getForUnitTest(0)->momentX, 0); assertNextEvent("exec@100", HIGH_VALUE, &executor); @@ -86,7 +86,7 @@ static void testSwitchToNanPeriod() { &testApplyPinState); expectedTimeOfNextEvent += 600; - assertEqualsM2("1@1000/70", expectedTimeOfNextEvent, schedulingQueue.getForUnitText(0)->momentX, 0); + assertEqualsM2("1@1000/70", expectedTimeOfNextEvent, executor.getForUnitTest(0)->momentX, 0); assertNextEvent("exec@70", LOW_VALUE, &executor); assertEqualsM("time1", 600, timeNowUs); @@ -97,11 +97,11 @@ static void testSwitchToNanPeriod() { pwm.setFrequency(NAN); expectedTimeOfNextEvent += 600; - assertEqualsM2("1@1000/NAN", expectedTimeOfNextEvent, schedulingQueue.getForUnitText(0)->momentX, 0); + assertEqualsM2("1@1000/NAN", expectedTimeOfNextEvent, executor.getForUnitTest(0)->momentX, 0); assertNextEvent("exec2@NAN", LOW_VALUE, &executor); expectedTimeOfNextEvent += MS2US(NAN_FREQUENCY_SLEEP_PERIOD_MS); - assertEqualsM2("2@1000/NAN", expectedTimeOfNextEvent, schedulingQueue.getForUnitText(0)->momentX, 0); + assertEqualsM2("2@1000/NAN", expectedTimeOfNextEvent, executor.getForUnitTest(0)->momentX, 0); assertNextEvent("exec3@NAN", LOW_VALUE, &executor); } @@ -127,42 +127,42 @@ void testPwmGenerator() { expectedTimeOfNextEvent += 800; - assertEqualsM2("1@1000/80", expectedTimeOfNextEvent, schedulingQueue.getForUnitText(0)->momentX, 0); + assertEqualsM2("1@1000/80", expectedTimeOfNextEvent, executor.getForUnitTest(0)->momentX, 0); assertNextEvent("exec@0", LOW_VALUE, &executor); assertEqualsM("time1", 800, timeNowUs); expectedTimeOfNextEvent += 200; - assertEqualsM2("2@1000/80", expectedTimeOfNextEvent, schedulingQueue.getForUnitText(0)->momentX, 0); + assertEqualsM2("2@1000/80", expectedTimeOfNextEvent, executor.getForUnitTest(0)->momentX, 0); // above we had vanilla duty cycle, now let's handle a special case pwm.setSimplePwmDutyCycle(0); - assertEqualsM2("2@1000/0", expectedTimeOfNextEvent, schedulingQueue.getForUnitText(0)->momentX, 0); + assertEqualsM2("2@1000/0", expectedTimeOfNextEvent, executor.getForUnitTest(0)->momentX, 0); assertNextEvent("exec@1", LOW_VALUE, &executor); assertEqualsM("time2", 1000, timeNowUs); expectedTimeOfNextEvent += 1000; - assertEqualsM2("3@1000/0", expectedTimeOfNextEvent, schedulingQueue.getForUnitText(0)->momentX, 0); + assertEqualsM2("3@1000/0", expectedTimeOfNextEvent, executor.getForUnitTest(0)->momentX, 0); assertNextEvent("exec@2", LOW_VALUE /* pin value */, &executor); assertEqualsM("time3", 2000, timeNowUs); expectedTimeOfNextEvent += 1000; - assertEqualsM2("4@1000/0", expectedTimeOfNextEvent, schedulingQueue.getForUnitText(0)->momentX, 0); + assertEqualsM2("4@1000/0", expectedTimeOfNextEvent, executor.getForUnitTest(0)->momentX, 0); assertNextEvent("exec@3", LOW_VALUE /* pin value */, &executor); assertEqualsM("time4", 3000, timeNowUs); expectedTimeOfNextEvent += 1000; - assertEqualsM2("5@1000/0", expectedTimeOfNextEvent, schedulingQueue.getForUnitText(0)->momentX, 0); + assertEqualsM2("5@1000/0", expectedTimeOfNextEvent, executor.getForUnitTest(0)->momentX, 0); assertNextEvent("exec@4", LOW_VALUE /* pin value */, &executor); expectedTimeOfNextEvent += 1000; - assertEqualsM2("6@1000/0", expectedTimeOfNextEvent, schedulingQueue.getForUnitText(0)->momentX, 0); + assertEqualsM2("6@1000/0", expectedTimeOfNextEvent, executor.getForUnitTest(0)->momentX, 0); assertNextEvent("exec@5", LOW_VALUE /* pin value */, &executor); expectedTimeOfNextEvent += 1000; assertEqualsM("time4", 5000, timeNowUs); - assertEqualsM2("7@1000/0", expectedTimeOfNextEvent, schedulingQueue.getForUnitText(0)->momentX, 0); + assertEqualsM2("7@1000/0", expectedTimeOfNextEvent, executor.getForUnitTest(0)->momentX, 0); assertNextEvent("exec@6", LOW_VALUE /* pin value */, &executor);