aboutsummaryrefslogtreecommitdiff
path: root/rtic-time
diff options
context:
space:
mode:
authordatdenkikniet <jcdra1@gmail.com>2023-04-10 13:39:22 +0200
committerdatdenkikniet <jcdra1@gmail.com>2023-04-10 13:40:01 +0200
commit413b985f12b980dd89f892a3b7dc084aa2cbd164 (patch)
tree5b01da68cbea659e33adf905187c9b77689d56f8 /rtic-time
parent53fbf3051458fe249aa51fdeea9c000b719f23ba (diff)
Small cleanup
Diffstat (limited to 'rtic-time')
-rw-r--r--rtic-time/tests/timer_queue.rs44
1 files changed, 26 insertions, 18 deletions
diff --git a/rtic-time/tests/timer_queue.rs b/rtic-time/tests/timer_queue.rs
index 4f285e0..9ad7175 100644
--- a/rtic-time/tests/timer_queue.rs
+++ b/rtic-time/tests/timer_queue.rs
@@ -7,7 +7,7 @@ use std::{
task::{Poll, Waker},
};
-use cassette::{pin_mut, Cassette};
+use cassette::Cassette;
use parking_lot::Mutex;
use rtic_time::{Monotonic, TimerQueue};
@@ -218,39 +218,47 @@ fn timer_queue() {
}
};
+ macro_rules! cassette {
+ ($($x:ident),* $(,)?) => { $(
+ // Move the value to ensure that it is owned
+ let mut $x = $x;
+ // Shadow the original binding so that it can't be directly accessed
+ // ever again.
+ #[allow(unused_mut)]
+ let mut $x = unsafe {
+ core::pin::Pin::new_unchecked(&mut $x)
+ };
+
+ let mut $x = Cassette::new($x);
+ )* }
+ }
+
let d1 = build_delay_test(Some(100), 100);
- pin_mut!(d1);
- let mut d1 = Cassette::new(d1);
+ cassette!(d1);
let d2 = build_delay_test(None, 300);
- pin_mut!(d2);
- let mut d2 = Cassette::new(d2);
+ cassette!(d2);
let d3 = build_delay_test(None, 400);
- pin_mut!(d3);
- let mut d3 = Cassette::new(d3);
+ cassette!(d3);
- macro_rules! try_poll {
- ($fut:ident) => {
- if !$fut.is_done() {
- $fut.poll_on();
- }
+ macro_rules! poll {
+ ($($fut:ident),*) => {
+ $(if !$fut.is_done() {
+ $fut.poll_on();
+ })*
};
}
// Do an initial poll to set up all of the waiting futures
- try_poll!(d1);
- try_poll!(d2);
- try_poll!(d3);
+ poll!(d1, d2, d3);
for _ in 0..500 {
// We only poll the waiting futures if an
// interrupt occured or if an artificial delay
// has passed.
if Instant::tick() {
- try_poll!(d1);
- try_poll!(d2);
- try_poll!(d3);
+ poll!(d1, d2, d3);
}
if Instant::now() == 0.into() {