extern crate alloc;
use super::super::support::dot;
use crate::metis::{Dot, DotMap, DotSet, Dotted};
mod exchange;
mod law_breaking;
mod write;
type Doc = DotMap<u8, DotSet>;
fn dots(pairs: &[(u32, u64)]) -> DotSet {
let mut set = DotSet::new();
for &(station, counter) in pairs {
assert!(set.insert(dot(station, counter)));
}
set
}
fn add_under(key: u8) -> impl FnOnce(Dot) -> (Doc, DotSet) {
move |assigned| {
let store = DotMap::singleton(key, dots(&[(assigned.station(), assigned.counter())]));
(store, DotSet::new())
}
}
fn assert_covered(delta: &Dotted<Doc>) {
let rebuilt = Dotted::try_new(delta.store().clone(), delta.context().clone());
assert!(
rebuilt.is_ok(),
"the facade's delta is covered by construction"
);
}