use std::time::Duration;
use super::{ReadinessFailure, check_readiness};
use crate::fake::{Fake, Signals};
const BOUND: Duration = Duration::from_secs(5);
const FAILING_BOUND: Duration = Duration::from_millis(200);
#[test]
fn the_readiness_check_passes_an_implementation_that_sets_on_every_transition() {
let mut fake = Fake::new(Signals::OnEveryTransition);
fake.complete_one();
let entries = check_readiness(&mut fake, Fake::complete_one, BOUND).expect("the rule is kept");
assert_eq!(
entries.len(),
3,
"the stale entry and one for each push, handed back for the caller's oracle"
);
}
#[test]
fn the_readiness_check_fails_an_implementation_that_never_sets() {
let mut fake = Fake::new(Signals::Never);
assert!(matches!(
check_readiness(&mut fake, Fake::complete_one, FAILING_BOUND),
Err(ReadinessFailure::NotSetForFirstEntry)
));
}
#[test]
fn the_readiness_check_fails_an_implementation_that_sets_only_once() {
let mut fake = Fake::new(Signals::OnceOnly);
assert!(matches!(
check_readiness(&mut fake, Fake::complete_one, FAILING_BOUND),
Err(ReadinessFailure::NotSetAgain)
));
}