use super::super::super::support::vv;
use super::hash_of;
use crate::metis::VersionVector;
#[test]
fn test_zero_entry_is_canonical() {
let mut a = VersionVector::new();
a.observe(7, 0);
assert_eq!(a, VersionVector::new());
let base = vv(&[(3, 5)]);
let mut with_zero = base.clone();
with_zero.observe(9, 0);
assert_eq!(base, with_zero);
assert_eq!(hash_of(&base), hash_of(&with_zero));
}
#[test]
fn test_observe_raises_only() {
let mut v = VersionVector::new();
v.observe(1, 5);
v.observe(1, 3);
assert_eq!(v.get(1), 5);
v.observe(1, 8);
assert_eq!(v.get(1), 8);
}
#[test]
fn test_counter_saturates() {
let mut v = VersionVector::new();
v.observe(1, u64::MAX);
assert_eq!(v.get(1), u64::MAX);
let after = v.increment(1);
assert_eq!(after, u64::MAX);
assert_eq!(v.get(1), u64::MAX);
}