#[cfg(test)]
use crate::statistical::{mean, variance, standard_deviation, median, mode};
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_mean() {
let data = vec![1.0, 2.0, 3.0, 4.0, 5.0];
let expected_mean = 3.0;
let calculated_mean = mean(&data);
assert!((calculated_mean - expected_mean).abs() < f64::EPSILON);
}
#[test]
fn test_variance() {
let data = vec![1.0, 2.0, 3.0, 4.0, 5.0];
let expected_variance = 2.0;
let calculated_variance = variance(&data);
assert!((calculated_variance - expected_variance).abs() < f64::EPSILON);
}
#[test]
fn test_standard_deviation() {
let data = vec![1.0, 2.0, 3.0, 4.0, 5.0];
let expected_std_dev = 1.4142135623730951; let calculated_std_dev = standard_deviation(&data);
assert!((calculated_std_dev - expected_std_dev).abs() < f64::EPSILON);
}
#[test]
fn test_median() {
let data = vec![1.0, 2.0, 3.0, 4.0, 5.0];
let expected_median = 3.0;
let calculated_median = median(&data);
assert!((calculated_median - expected_median).abs() < f64::EPSILON);
}
#[test]
fn test_mode() {
let data = vec![1.0, 2.0, 2.0, 3.0, 4.0];
let expected_mode = Some(2.0);
let calculated_mode = mode(&data);
assert_eq!(calculated_mode, expected_mode);
}
}
pub fn calculate_mean(data: &[f64]) -> f64 {
crate::statistical::mean(data)
}