use crate::{
datagram::*,
error::AUTDInternalError,
geometry::*,
operation::{ConfigSilencerOp, StopOp},
};
#[derive(Default)]
pub struct Stop {}
impl Stop {
pub const fn new() -> Self {
Self {}
}
}
impl<T: Transducer> Datagram<T> for Stop {
type O1 = ConfigSilencerOp;
type O2 = StopOp;
fn operation(self) -> Result<(Self::O1, Self::O2), AUTDInternalError> {
Ok((Self::O1::new(10), Self::O2::default()))
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_stop_timeout() {
let stop = Stop::new();
let timeout = <Stop as Datagram<LegacyTransducer>>::timeout(&stop);
assert!(timeout.is_none());
}
#[test]
fn test_stop_operation() {
let stop = Stop::default();
let r = <Stop as Datagram<LegacyTransducer>>::operation(stop);
assert!(r.is_ok());
let _: (crate::operation::ConfigSilencerOp, crate::operation::StopOp) = r.unwrap();
}
}