void testSignalExecutor(void) { testSignalExecutor3(); print("*************************************** testSignalExecutor\r\n"); eq.clear(); assertEquals(EMPTY_QUEUE, eq.getNextEventTime(0)); scheduling_s s1; scheduling_s s2; scheduling_s s3; scheduling_s s4; eq.insertTask(&s1, 10, callback, NULL); eq.insertTask(&s4, 10, callback, NULL); eq.insertTask(&s3, 12, callback, NULL); eq.insertTask(&s2, 11, callback, NULL); assertEquals(4, eq.size()); assertEquals(10, eq.getHead()->momentX); assertEquals(10, eq.getHead()->next->momentX); assertEquals(11, eq.getHead()->next->next->momentX); assertEquals(12, eq.getHead()->next->next->next->momentX); callbackCounter = 0; eq.executeAll(10); assertEqualsM("callbackCounter/2", 2, callbackCounter); callbackCounter = 0; eq.executeAll(11); assertEqualsM("callbackCounter/1#1", 1, callbackCounter); eq.executeAll(100); assertEquals(0, eq.size()); eq.insertTask(&s1, 12, callback, NULL); eq.insertTask(&s2, 11, callback, NULL); eq.insertTask(&s3, 10, callback, NULL); callbackCounter = 0; eq.executeAll(10); assertEqualsM("callbackCounter/1#2", 1, callbackCounter); callbackCounter = 0; eq.executeAll(11); assertEquals(1, callbackCounter); eq.executeAll(100); assertEquals(0, eq.size()); callbackCounter = 0; eq.insertTask(&s1, 10, callback, NULL); assertEquals(10, eq.getNextEventTime(0)); eq.executeAll(1); assertEqualsM("callbacks not expected", 0, callbackCounter); eq.executeAll(11); assertEquals(1, callbackCounter); assertEquals(EMPTY_QUEUE, eq.getNextEventTime(0)); eq.insertTask(&s1, 10, callback, NULL); eq.insertTask(&s2, 13, callback, NULL); assertEquals(10, eq.getNextEventTime(0)); eq.executeAll(1); assertEquals(10, eq.getNextEventTime(0)); eq.executeAll(100); assertEquals(0, eq.size()); callbackCounter = 0; // both events are scheduled for the same time eq.insertTask(&s1, 10, callback, NULL); eq.insertTask(&s2, 10, callback, NULL); eq.executeAll(11); assertEquals(2, callbackCounter); testSignalExecutor2(); }