use super::*;
#[test]
fn a_witnessed_watermark_must_rise_to_the_declared_basis() {
let basis = cut(&[(1, 2), (2, 1)]);
let mut epochs = machine();
let fresh = tracker();
assert_eq!(
fresh.watermark_cut(),
Some(Cut::bottom()),
"witnessed is not risen: the hazard this pin exists for"
);
assert_eq!(
epochs.declare(d(1, 3), Kairos::new(1, 0, 1, 0u16), &fresh, &basis),
Err(EpochRefusal::Unrisen {
station: 1,
required: 2,
witnessed: 0,
})
);
assert_eq!(epochs.candidates().count(), 0, "no window opened");
let mut risen = tracker();
for station in ROSTER {
risen.report_cut(station, &basis).unwrap();
}
assert!(
epochs
.declare(d(1, 3), Kairos::new(1, 0, 1, 0u16), &risen, &basis)
.is_ok(),
"a watermark exactly at the basis is risen"
);
}
#[test]
fn a_bottom_basis_licenses_the_first_epoch() {
let mut epochs = machine();
assert!(
epochs
.declare(
d(1, 1),
Kairos::new(1, 0, 1, 0u16),
&tracker(),
&Cut::bottom()
)
.is_ok()
);
}
#[test]
fn an_unrisen_peer_declaration_refuses_identically_everywhere() {
let vacuous = machine()
.declare(
d(1, 1),
Kairos::new(1, 0, 1, 0u16),
&tracker(),
&Cut::bottom(),
)
.unwrap();
let basis = cut(&[(2, 3)]);
for _ in 0..2 {
let mut receiver = machine();
assert_eq!(
receiver.deliver(vacuous.clone(), &tracker(), &basis),
Err(EpochRefusal::Unrisen {
station: 2,
required: 3,
witnessed: 0,
})
);
assert_eq!(receiver.candidates().count(), 0, "no window opened");
}
}