use crate::metis::Dotted;
use super::super::{Seq, clock, delete, insert, woven};
use super::{claim, condense};
#[test]
fn test_over_claimed_retirement_strands_a_laggards_anchor() {
let mut leader: Seq = Dotted::new();
let clk_leader = clock(1);
let d0 = insert(&mut leader, &clk_leader, 1, None);
let d1 = insert(&mut leader, &clk_leader, 1, Some(d0));
let mut laggard = leader.clone();
assert!(laggard.store().is_visible(d1));
delete(&mut leader, d1);
let excised = condense(&mut leader, &claim(&[d1]));
assert_eq!(excised, 1);
assert!(leader.store().locus(d1).is_none());
let clk_laggard = clock(2);
let d2 = insert(&mut laggard, &clk_laggard, 2, Some(d1));
assert!(laggard.store().order().contains(&d2));
assert!(laggard.store().order().contains(&d1));
let d2_locus = laggard.store().locus(d2).unwrap();
let delta = woven(d2, d2_locus);
leader = leader.merge(&delta);
assert!(leader.store().is_visible(d2));
assert!(!leader.store().order().contains(&d2));
assert!(laggard.store().order().contains(&d2));
}