Skip to content

Commit c44dfce

Browse files
committed
* Added unit test to executor to confirm spinning will trigger a timer callback.
1 parent f2e02d3 commit c44dfce

File tree

1 file changed

+25
-0
lines changed

1 file changed

+25
-0
lines changed

rclrs/src/executor.rs

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,3 +86,28 @@ impl SingleThreadedExecutor {
8686
Ok(())
8787
}
8888
}
89+
90+
#[cfg(test)]
91+
mod tests {
92+
use crate::{spin_once, Context};
93+
94+
use super::*;
95+
96+
#[test]
97+
fn spin_once_fires_timer() -> Result<(), RclrsError> {
98+
let context = Context::new([])?;
99+
let node = Node::new(&context, "test_spin_timer")?;
100+
101+
let callback_triggered = Arc::new(Mutex::new(false));
102+
let callback_flag = Arc::clone(&callback_triggered);
103+
104+
let _timer = node.create_timer(Duration::from_secs(0), move |_| {
105+
*callback_flag.lock().unwrap() = true;
106+
})?;
107+
108+
spin_once(node, Some(Duration::ZERO))?;
109+
110+
assert!(*callback_triggered.lock().unwrap());
111+
Ok(())
112+
}
113+
}

0 commit comments

Comments
 (0)