arci/clients/
dummy_laser_scan.rs1use std::sync::Mutex;
2
3use crate::{Error, LaserScan2D, Scan2D};
4
5#[derive(Debug, Default)]
6pub struct DummyLaserScan2D {
7 scan: Mutex<Scan2D>,
8}
9
10impl DummyLaserScan2D {
11 pub fn new() -> Self {
12 Self::default()
13 }
14
15 pub fn set_scan(&self, scan: Scan2D) {
16 *self.scan.lock().unwrap() = scan;
17 }
18}
19
20impl LaserScan2D for DummyLaserScan2D {
21 fn current_scan(&self) -> Result<Scan2D, Error> {
22 Ok(self.scan.lock().unwrap().clone())
23 }
24}
25
26#[cfg(test)]
27mod tests {
28 use super::*;
29
30 #[test]
31 fn test_scan() {
32 let laser_scan = DummyLaserScan2D::new();
33 assert_eq!(laser_scan.current_scan().unwrap(), Scan2D::default());
34 laser_scan.set_scan(Scan2D {
35 angle_min: 1.0,
36 angle_max: 2.0,
37 ..Default::default()
38 });
39 assert_eq!(
40 laser_scan.current_scan().unwrap(),
41 Scan2D {
42 angle_min: 1.0,
43 angle_max: 2.0,
44 ..Default::default()
45 }
46 );
47 }
48}