cfdp_simplified/transaction/
fault_handler.rs1use std::str::FromStr;
2
3#[repr(u8)]
4#[derive(Clone, Debug, PartialEq, Eq)]
5pub enum FaultHandlerAction {
7 Ignore,
9 Abandon,
11}
12impl FromStr for FaultHandlerAction {
13 type Err = ();
14
15 fn from_str(input: &str) -> Result<Self, Self::Err> {
16 match input.trim().to_lowercase().as_str() {
17 "ignore" => Ok(Self::Ignore),
18 "abandon" => Ok(Self::Abandon),
19 _ => Err(()),
20 }
21 }
22}
23
24#[cfg(test)]
25mod test {
26 use super::*;
27 use rstest::rstest;
28
29 #[rstest]
30 #[case("Ignore", FaultHandlerAction::Ignore)]
31 #[case("Abandon", FaultHandlerAction::Abandon)]
32 #[case("IGNORE", FaultHandlerAction::Ignore)]
33 #[case("ABANDON", FaultHandlerAction::Abandon)]
34 fn fault_action(#[case] input: &str, #[case] action: FaultHandlerAction) {
35 assert_eq!(action, FaultHandlerAction::from_str(input).unwrap())
36 }
37
38 #[test]
39 fn fault_error() {
40 assert!(FaultHandlerAction::from_str("Hello, World").is_err())
41 }
42}