1use derive_more::Display;
3#[derive(Debug, Clone, Copy, PartialEq, Eq, Display)]
5#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
6#[cfg_attr(feature = "serde", serde(rename_all = "kebab-case"))]
7pub enum SafetyLevel {
8 Finalized,
10 Safe,
12 LocalSafe,
14 CrossUnsafe,
16 Unsafe,
18 Invalid,
20}
21
22#[cfg(test)]
23#[cfg(feature = "serde")]
24mod tests {
25 use super::*;
26
27 #[test]
28 fn test_safety_level_serde() {
29 let level = SafetyLevel::Finalized;
30 let json = serde_json::to_string(&level).unwrap();
31 assert_eq!(json, r#""finalized""#);
32
33 let level: SafetyLevel = serde_json::from_str(&json).unwrap();
34 assert_eq!(level, SafetyLevel::Finalized);
35 }
36
37 #[test]
38 fn test_serde_safety_level_fails() {
39 let json = r#""failed""#;
40 let level: Result<SafetyLevel, _> = serde_json::from_str(json);
41 assert!(level.is_err());
42 }
43}