use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct TechnicalDebtRatio {
pub ratio: f64,
pub complexity_points: usize,
pub code_kloc: f64,
pub level: TechnicalDebtLevel,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum TechnicalDebtLevel {
Low,
Moderate,
High,
Critical,
}
#[cfg(test)]
mod tests {
use super::TechnicalDebtLevel;
#[test]
fn technical_debt_level_serde_roundtrip() -> Result<(), Box<dyn std::error::Error>> {
for variant in [
TechnicalDebtLevel::Low,
TechnicalDebtLevel::Moderate,
TechnicalDebtLevel::High,
TechnicalDebtLevel::Critical,
] {
let json = serde_json::to_string(&variant)?;
let back: TechnicalDebtLevel = serde_json::from_str(&json)?;
assert_eq!(back, variant);
}
Ok(())
}
}