use super::Provenance;
#[test]
fn the_default_is_the_untrusted_value() {
assert_eq!(Provenance::default(), Provenance::Synthetic);
assert!(!Provenance::default().is_measured());
}
#[test]
fn the_ordering_is_the_trust_order() {
assert!(Provenance::Synthetic < Provenance::Restored);
assert!(Provenance::Restored < Provenance::Measured);
}
#[test]
fn only_measured_reports_as_measured() {
assert!(Provenance::Measured.is_measured());
assert!(!Provenance::Restored.is_measured());
assert!(!Provenance::Synthetic.is_measured());
}
#[test]
fn downgrading_lowers_a_higher_claim() {
assert_eq!(
Provenance::Measured.downgraded_to(Provenance::Restored),
Provenance::Restored
);
}
#[test]
fn downgrading_leaves_an_equal_or_lower_claim_alone() {
assert_eq!(
Provenance::Restored.downgraded_to(Provenance::Restored),
Provenance::Restored
);
assert_eq!(
Provenance::Synthetic.downgraded_to(Provenance::Restored),
Provenance::Synthetic
);
}
fn every_variant() -> [Provenance; 3] {
match Provenance::Synthetic {
Provenance::Synthetic | Provenance::Restored | Provenance::Measured => [
Provenance::Synthetic,
Provenance::Restored,
Provenance::Measured,
],
}
}
#[test]
fn downgrading_never_raises_for_any_pair() {
let all = every_variant();
for value in all {
for ceiling in all {
let result = value.downgraded_to(ceiling);
assert!(
result <= value,
"{value:?} downgraded to {ceiling:?} produced the higher {result:?}"
);
assert!(
result <= ceiling,
"{value:?} downgraded to {ceiling:?} exceeded the ceiling"
);
}
}
}
#[test]
fn the_untrusted_labels_are_louder_than_the_trusted_one() {
assert_eq!(Provenance::Synthetic.to_string(), "SYNTHETIC");
assert_eq!(Provenance::Restored.to_string(), "RESTORED");
assert_eq!(Provenance::Measured.to_string(), "measured");
for tainted in [Provenance::Synthetic, Provenance::Restored] {
let rendered = tainted.to_string();
assert_eq!(
rendered,
rendered.to_uppercase(),
"{tainted:?} does not render in capitals"
);
}
assert_ne!(
Provenance::Measured.to_string(),
Provenance::Measured.to_string().to_uppercase()
);
}