threshold 0.9.1

Threshold data structures
Documentation
use crate::tests::arbitrary::Musk;
use crate::*;
use quickcheck_macros::quickcheck;

#[quickcheck]
fn add_dot(actor: Musk, event: u64, beclock: BEClock<Musk>) -> bool {
    let mut beclock = beclock.clone();
    beclock.add(&actor, event);

    // prop: a newly added dot is now part of the clock
    beclock.contains(&actor, event)
}

#[quickcheck]
fn join(mut beclock_a: BEClock<Musk>, beclock_b: BEClock<Musk>) -> bool {
    beclock_a.join(&beclock_b);

    // prop: after merging b into a, all events in b are events in a
    beclock_b.into_iter().all(|(actor, eset)| {
        eset.event_iter().all(|seq| beclock_a.contains(&actor, seq))
    })
}