Skip to content

Commit 37b2ad1

Browse files
queue test update
- extend mixed test with periodic events - improve static event queue test
1 parent 0e3b3fa commit 37b2ad1

File tree

1 file changed

+55
-18
lines changed

1 file changed

+55
-18
lines changed

TESTS/events/queue/main.cpp

Lines changed: 55 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -362,14 +362,18 @@ void mixed_dynamic_static_events_queue_test()
362362

363363
EventTest e1_test;
364364
Event<void()> e1 = queue.event(&e1_test, &EventTest::f0);
365+
e1.delay(1);
366+
e1.period(1);
365367
int id1 = e1.post();
366368
TEST_ASSERT_NOT_EQUAL(0, id1);
367369
EventTest e2_test;
368370
Event<void()> e2 = queue.event(&e2_test, &EventTest::f1, 3);
371+
e2.period(1);
369372
int id2 = e2.post();
370373
TEST_ASSERT_NOT_EQUAL(0, id2);
371374
EventTest e3_test;
372375
Event<void()> e3 = queue.event(&e3_test, &EventTest::f5, 1, 2, 3, 4, 5);
376+
e3.period(1);
373377
int id3 = e3.post();
374378
TEST_ASSERT_NOT_EQUAL(0, id3);
375379

@@ -390,8 +394,11 @@ void mixed_dynamic_static_events_queue_test()
390394
TEST_ASSERT_EQUAL(false, ue0.try_call());
391395
ue1.call_on(&queue);
392396
TEST_ASSERT_EQUAL(false, ue1.try_call());
397+
ue2.period(1);
393398
ue2.call_on(&queue);
394399
TEST_ASSERT_EQUAL(false, ue2.try_call());
400+
ue3.period(1);
401+
ue3.delay(5);
395402
ue3.call_on(&queue);
396403
TEST_ASSERT_EQUAL(false, ue3.try_call());
397404
ue4.call_on(&queue);
@@ -400,21 +407,36 @@ void mixed_dynamic_static_events_queue_test()
400407
ue4.cancel();
401408
e2.cancel();
402409

403-
queue.dispatch(1);
410+
queue.dispatch(10);
404411

405412
TEST_ASSERT_EQUAL(true, touched);
406413
TEST_ASSERT_EQUAL(1, ue1_test.counter);
407-
TEST_ASSERT_EQUAL(3, ue2_test.counter);
408-
TEST_ASSERT_EQUAL(15, ue3_test.counter);
414+
TEST_ASSERT_EQUAL(33, ue2_test.counter);
415+
TEST_ASSERT_EQUAL(90, ue3_test.counter);
409416
TEST_ASSERT_EQUAL(0, ue4_test.counter);
410-
TEST_ASSERT_EQUAL(1, e1_test.counter);
417+
TEST_ASSERT_EQUAL(10, e1_test.counter);
411418
TEST_ASSERT_EQUAL(0, e2_test.counter);
412-
TEST_ASSERT_EQUAL(15, e3_test.counter);
419+
TEST_ASSERT_EQUAL(165, e3_test.counter);
420+
421+
// user allocated event have to be canceled(removed from the queue) before destruction
422+
// cancel all periodic user events
423+
ue2.cancel();
424+
ue3.cancel();
413425
}
414426
}
415427

416428

417429
static EventQueue g_queue(0);
430+
static auto ue0 = g_queue.make_user_allocated_event(func0);
431+
static EventTest test1;
432+
static auto ue1 = make_user_allocated_event(&test1, &EventTest::f0);
433+
static EventTest test2;
434+
static auto ue2 = g_queue.make_user_allocated_event(&test2, &EventTest::f1, 3);
435+
static EventTest test3;
436+
static auto ue3 = make_user_allocated_event(&test3, &EventTest::f5, 1, 2, 3, 4, 5);
437+
static EventTest test4;
438+
static auto ue4 = g_queue.make_user_allocated_event(&test4, &EventTest::f5, 1, 2, 3, 4, 5);
439+
418440

419441
/** Test that static queue executes user allocated events.
420442
*
@@ -428,15 +450,20 @@ void static_events_queue_test()
428450
Event<void()> e0 = g_queue.event(func0);
429451
TEST_ASSERT_EQUAL(0, e0.post());
430452

431-
auto ue0 = g_queue.make_user_allocated_event(func0);
432-
EventTest test1;
433-
auto ue1 = make_user_allocated_event(&test1, &EventTest::f0);
434-
EventTest test2;
435-
auto ue2 = g_queue.make_user_allocated_event(&test2, &EventTest::f1, 3);
436-
EventTest test3;
437-
auto ue3 = make_user_allocated_event(&test3, &EventTest::f5, 1, 2, 3, 4, 5);
438-
EventTest test4;
439-
auto ue4 = g_queue.make_user_allocated_event(&test4, &EventTest::f5, 1, 2, 3, 4, 5);
453+
ue0.delay(100);
454+
ue0.period(200);
455+
456+
ue1.delay(100);
457+
ue1.period(200);
458+
459+
ue2.delay(100);
460+
ue2.period(200);
461+
462+
ue3.delay(100);
463+
ue3.period(200);
464+
465+
ue4.delay(100);
466+
ue4.period(200);
440467

441468
ue0.call();
442469
TEST_ASSERT_EQUAL(false, ue0.try_call());
@@ -448,16 +475,26 @@ void static_events_queue_test()
448475
TEST_ASSERT_EQUAL(false, ue3.try_call());
449476
ue4.call();
450477
ue4.cancel();
478+
ue4.cancel();
451479
TEST_ASSERT_EQUAL(true, ue4.try_call());
452480
g_queue.cancel(&ue4);
481+
g_queue.cancel(&ue4);
453482

454-
g_queue.dispatch(1);
483+
g_queue.dispatch(400);
455484

456-
TEST_ASSERT_EQUAL(1, test1.counter);
457-
TEST_ASSERT_EQUAL(3, test2.counter);
458-
TEST_ASSERT_EQUAL(15, test3.counter);
485+
TEST_ASSERT_EQUAL(2, test1.counter);
486+
TEST_ASSERT_EQUAL(6, test2.counter);
487+
TEST_ASSERT_EQUAL(30, test3.counter);
459488
TEST_ASSERT_EQUAL(0, test4.counter);
460489

490+
ue4.delay(1);
491+
TEST_ASSERT_EQUAL(true, ue4.try_call());
492+
g_queue.dispatch(1);
493+
494+
TEST_ASSERT_EQUAL(2, test1.counter);
495+
TEST_ASSERT_EQUAL(6, test2.counter);
496+
TEST_ASSERT_EQUAL(30, test3.counter);
497+
TEST_ASSERT_EQUAL(15, test4.counter);
461498
}
462499

463500
// Test setup

0 commit comments

Comments
 (0)