use crate::state::modal::DependencyStatus;
pub(super) const fn dependency_priority(status: &DependencyStatus) -> u8 {
match status {
DependencyStatus::Conflict { .. } => 0,
DependencyStatus::Missing => 1,
DependencyStatus::ToInstall => 2,
DependencyStatus::ToUpgrade { .. } => 3,
DependencyStatus::Installed { .. } => 4,
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn dependency_priority_orders_by_severity() {
let conflict = dependency_priority(&DependencyStatus::Conflict {
reason: String::new(),
});
let missing = dependency_priority(&DependencyStatus::Missing);
let install = dependency_priority(&DependencyStatus::ToInstall);
let upgrade = dependency_priority(&DependencyStatus::ToUpgrade {
current: "1".into(),
required: "2".into(),
});
let installed = dependency_priority(&DependencyStatus::Installed {
version: "1".into(),
});
assert!(conflict < missing);
assert!(missing < install);
assert!(install < upgrade);
assert!(upgrade < installed);
}
}