use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct OnboardConfig {
#[serde(default)]
pub mode: OnboardMode,
}
#[derive(Debug, Clone, Copy, Default, Serialize, Deserialize, PartialEq, Eq)]
#[serde(rename_all = "snake_case")]
pub enum OnboardMode {
#[default]
Inter,
Intra,
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_default_mode_is_inter() {
let config = OnboardConfig::default();
assert_eq!(config.mode, OnboardMode::Inter);
}
#[test]
fn test_mode_serde_roundtrip() {
let json = r#"{"mode": "inter"}"#;
let config: OnboardConfig = serde_json::from_str(json).unwrap();
assert_eq!(config.mode, OnboardMode::Inter);
let json = r#"{"mode": "intra"}"#;
let config: OnboardConfig = serde_json::from_str(json).unwrap();
assert_eq!(config.mode, OnboardMode::Intra);
}
#[test]
fn test_empty_json_uses_default() {
let json = r#"{}"#;
let config: OnboardConfig = serde_json::from_str(json).unwrap();
assert_eq!(config.mode, OnboardMode::Inter);
}
}