use super::super::super::support::vv;
use super::{dots, seen};
use crate::metis::{DotSet, Purview, VersionVector};
#[test]
fn test_empty_roster_common_is_bottom() {
let purview = Purview::new(core::iter::empty::<u32>());
assert_eq!(purview.common(), DotSet::new());
assert_eq!(purview.common_floor(), VersionVector::new());
assert!(purview.roster().next().is_none());
}
#[test]
fn test_one_lagging_peer_pins_common_until_it_reports() {
let shared = [(5, 1), (5, 2)];
let mut purview = Purview::new([1, 2, 3]);
purview.note(&seen(1, &shared)).unwrap();
purview.note(&seen(2, &shared)).unwrap();
assert_eq!(purview.common(), DotSet::new());
purview.note(&seen(3, &shared)).unwrap();
assert_eq!(purview.common(), dots(&shared));
assert_eq!(purview.common_floor(), vv(&[(5, 2)]));
}
#[test]
fn test_common_is_the_intersection_of_rows() {
let mut purview = Purview::new([1, 2, 3]);
purview.note(&seen(1, &[(9, 1), (9, 2), (9, 3)])).unwrap();
purview.note(&seen(2, &[(9, 1), (9, 2)])).unwrap();
purview.note(&seen(3, &[(9, 1), (9, 2), (9, 4)])).unwrap();
assert_eq!(purview.common(), dots(&[(9, 1), (9, 2)]));
}