Skip to main content

tokenfold_core/
status.rs

1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
4#[serde(rename_all = "snake_case")]
5pub enum Status {
6    Compressed,
7    Passthrough,
8    BestEffort,
9    UnreachableTarget,
10}
11
12#[cfg(test)]
13mod tests {
14    use super::*;
15
16    #[test]
17    fn serializes_to_canonical_snake_case_strings() {
18        assert_eq!(
19            serde_json::to_string(&Status::Compressed).unwrap(),
20            "\"compressed\""
21        );
22        assert_eq!(
23            serde_json::to_string(&Status::Passthrough).unwrap(),
24            "\"passthrough\""
25        );
26        assert_eq!(
27            serde_json::to_string(&Status::BestEffort).unwrap(),
28            "\"best_effort\""
29        );
30        assert_eq!(
31            serde_json::to_string(&Status::UnreachableTarget).unwrap(),
32            "\"unreachable_target\""
33        );
34    }
35
36    #[test]
37    fn round_trips_through_json() {
38        for status in [
39            Status::Compressed,
40            Status::Passthrough,
41            Status::BestEffort,
42            Status::UnreachableTarget,
43        ] {
44            let json = serde_json::to_string(&status).unwrap();
45            let back: Status = serde_json::from_str(&json).unwrap();
46            assert_eq!(status, back);
47        }
48    }
49}