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}