arci/clients/
dummy_laser_scan.rs

1use 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}