use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub enum ServerStatus {
Running,
Stopped,
Crashed,
Restarting,
Disabled,
FailedToStart,
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_server_status_clone() {
let status = ServerStatus::Running;
let cloned = status;
assert_eq!(status, cloned);
}
#[test]
fn test_server_status_debug() {
let status = ServerStatus::Crashed;
let debug_str = format!("{status:?}");
assert_eq!(debug_str, "Crashed");
}
#[test]
fn test_server_status_eq() {
assert_eq!(ServerStatus::Running, ServerStatus::Running);
assert_ne!(ServerStatus::Running, ServerStatus::Stopped);
}
#[test]
fn test_server_status_hash() {
use std::collections::HashSet;
let mut set = HashSet::new();
set.insert(ServerStatus::Running);
set.insert(ServerStatus::Stopped);
set.insert(ServerStatus::Running); assert_eq!(set.len(), 2);
}
#[test]
fn test_server_status_serde_round_trip() {
let statuses = [
ServerStatus::Running,
ServerStatus::Stopped,
ServerStatus::Crashed,
ServerStatus::Restarting,
ServerStatus::Disabled,
ServerStatus::FailedToStart,
];
for status in &statuses {
let json = serde_json::to_string(status).unwrap();
let deserialized: ServerStatus = serde_json::from_str(&json).unwrap();
assert_eq!(*status, deserialized);
}
}
}