mod cases;
mod properties;
use super::*;
use crate::metis::Vouched;
fn seal_mill(declarer: u32, boundary: &Cut, window: &[(u32, u64)]) -> (Adopted, SealedEpoch) {
let mut stability = Stability::new([1, 2]);
stability.report_cut(1, boundary).unwrap();
stability.report_cut(2, boundary).unwrap();
let mut epochs = Epochs::new([1, 2], NonZeroUsize::new(1).unwrap());
let dot = d(declarer, boundary.as_vector().get(declarer) + 1);
let declaration = epochs
.declare(dot, rank(dot.counter()), &stability, &Cut::bottom())
.unwrap();
let mut delivered = boundary.as_vector().clone();
delivered.observe(dot.station(), dot.counter());
for &(station, index) in window {
delivered.observe(station, index);
}
let delivered = Cut::from_witnessed(delivered);
stability.report_cut(1, &delivered).unwrap();
stability.report_cut(2, &delivered).unwrap();
epochs
.confirm(declaration.address(), &Vouched::trust(1, delivered.clone()))
.unwrap();
epochs
.confirm(declaration.address(), &Vouched::trust(2, delivered.clone()))
.unwrap();
let adopted = epochs
.adopt(1, delivered.as_vector().get(1), &stability)
.unwrap();
epochs
.adopt_report(
declaration.address(),
&Vouched::trust(2, delivered.as_vector().get(2)),
)
.unwrap();
let sealed = epochs
.try_seal(&stability)
.expect("a complete window seals")
.clone();
(adopted, sealed)
}