1use schemars::JsonSchema;
2use serde::{Deserialize, Serialize};
3
4#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, JsonSchema)]
9#[serde(rename_all = "snake_case")]
10pub enum SurfaceStatus {
11 AdvisoryOnly,
12 NonAdmitted,
13 Degraded,
14 HorizonOnly,
15}
16
17impl std::fmt::Display for SurfaceStatus {
18 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
19 let value = match self {
20 Self::AdvisoryOnly => "advisory_only",
21 Self::NonAdmitted => "non_admitted",
22 Self::Degraded => "degraded",
23 Self::HorizonOnly => "horizon_only",
24 };
25 f.write_str(value)
26 }
27}
28
29#[cfg(test)]
30mod tests {
31 use super::*;
32
33 #[test]
34 fn display_matches_wire_status_label() {
35 assert_eq!(SurfaceStatus::AdvisoryOnly.to_string(), "advisory_only");
36 assert_eq!(SurfaceStatus::NonAdmitted.to_string(), "non_admitted");
37 assert_eq!(SurfaceStatus::Degraded.to_string(), "degraded");
38 assert_eq!(SurfaceStatus::HorizonOnly.to_string(), "horizon_only");
39 }
40}