use super::super::support::dot;
use crate::metis::{DotMap, DotSet, Dotted, Received};
mod common;
mod owed;
mod rows;
type Doc = Dotted<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 seen(peer: u32, pairs: &[(u32, u64)]) -> Received {
Received::trust(peer, dots(pairs))
}
fn write(doc: &mut Doc, station: u32, key: u8) {
let fresh = doc.next_dot(station);
let mut held = DotSet::new();
assert!(held.insert(fresh));
let delta = Dotted::from_store(DotMap::singleton(key, held));
*doc = doc.merge(&delta);
}