pub mod json;
pub mod text;
pub(crate) fn externalized_pct(externalized: usize, embedded: usize) -> usize {
let total = externalized + embedded;
if total == 0 {
return 0;
}
(externalized as f64 / total as f64 * 100.0).round() as usize
}
#[cfg(test)]
mod tests {
use super::externalized_pct;
#[test]
fn zero_total_is_zero() {
assert_eq!(externalized_pct(0, 0), 0);
}
#[test]
fn all_externalized_is_one_hundred() {
assert_eq!(externalized_pct(7, 0), 100);
}
#[test]
fn none_externalized_is_zero() {
assert_eq!(externalized_pct(0, 7), 0);
}
#[test]
fn rounds_half_up() {
assert_eq!(externalized_pct(1, 2), 33);
assert_eq!(externalized_pct(2, 1), 67);
assert_eq!(externalized_pct(1, 1), 50);
}
}