#[derive(Debug, Clone)]
#[cfg_attr(feature = "serde-support", derive(serde::Serialize, serde::Deserialize))]
pub struct BatchStats {
pub count: usize,
pub original_bytes: usize,
pub compressed_bytes: usize,
pub compression_ratio: f64,
pub bits_per_value: f64,
}
#[derive(Debug, Clone)]
#[cfg_attr(feature = "serde-support", derive(serde::Serialize, serde::Deserialize))]
pub struct DistortionMetrics {
pub mse: f64,
pub bias: f64,
pub samples: u64,
pub healthy: bool,
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_batch_stats_fields() {
let stats = BatchStats {
count: 100,
original_bytes: 51200,
compressed_bytes: 12800,
compression_ratio: 4.0,
bits_per_value: 8.0,
};
assert_eq!(stats.count, 100);
assert!((stats.compression_ratio - 4.0).abs() < f64::EPSILON);
}
#[test]
fn test_distortion_metrics_fields() {
let metrics = DistortionMetrics {
mse: 0.01,
bias: -0.001,
samples: 5000,
healthy: true,
};
assert!(metrics.healthy);
assert!(metrics.mse < 0.1);
}
}