use trace_doc::{Artifact, Realization, Realizes, Requirement, Status};
pub struct ReqCalculatePI;
impl Artifact for ReqCalculatePI {
const STATUS: Status = Status::Accepted;
}
impl Requirement for ReqCalculatePI {
const TITLE: &str = "Calculate mathematical constant π";
}
pub struct PICalculation; impl Artifact for PICalculation {}
impl Realization for PICalculation {}
impl Realizes<ReqCalculatePI> for PICalculation {}
impl PICalculation {
pub fn calculate_pi() -> f64 {
std::f64::consts::PI
}
}
#[cfg(test)]
mod tests {
use super::PICalculation;
#[test]
fn test_pi_calculation() {
let pi = PICalculation::calculate_pi();
assert!((pi - 3.14159).abs() < 0.00001);
}
#[test]
fn test_pi_bounds() {
let pi = PICalculation::calculate_pi();
assert!(pi > 3.0);
assert!(pi < 4.0);
}
}