use super::*;
use crate::commands::doctor::Severity;
const GIB: u64 = 1024 * 1024 * 1024;
#[test]
fn budget_larger_than_volume_is_fine_now() {
let f = evaluate_disk(100 * GIB, 8 * GIB, 50 * GIB, 40 * GIB, 0);
assert_eq!(f.severity, Severity::Pass);
assert_eq!(f.id, "disk.budget_vs_free");
}
#[test]
fn headroom_exceeds_whole_volume_warns_not_fails() {
let f = evaluate_disk(100 * GIB, 60 * GIB, 50 * GIB, 40 * GIB, 0);
assert_eq!(f.severity, Severity::Warn);
assert!(f.remediation.is_some());
}
#[test]
fn disk_findings_never_fail_even_when_headroom_dwarfs_the_volume() {
for (budget, headroom, total, avail) in [
(1 * GIB, 8 * GIB, 4 * GIB, 3 * GIB), (100 * GIB, 100 * GIB, 1 * GIB, 0), (1 * GIB, 0, 1 * GIB, 0), ] {
let f = evaluate_disk(budget, headroom, total, avail, 0);
assert_ne!(f.severity, Severity::Fail, "{}", f.title);
}
}
#[test]
fn headroom_above_free_disk_only_warns() {
let f = evaluate_disk(100 * GIB, 8 * GIB, 50 * GIB, 3 * GIB, 0);
assert_eq!(f.severity, Severity::Warn);
}
#[test]
fn healthy_headroom_passes() {
let f = evaluate_disk(10 * GIB, 8 * GIB, 50 * GIB, 40 * GIB, 0);
assert_eq!(f.severity, Severity::Pass);
}
#[test]
fn little_room_above_headroom_warns() {
let f = evaluate_disk(100 * GIB, 8 * GIB, 50 * GIB, 9 * GIB, 0);
assert_eq!(f.severity, Severity::Warn);
}