use super::super::super::support::dot;
use crate::metis::Composer;
use super::{Doc, add_under};
#[test]
fn test_absorb_learns_a_peers_delta() {
let mut writer: Composer<Doc> = Composer::new(1);
let (_, delta) = writer.compose(add_under(7));
let mut reader: Composer<Doc> = Composer::new(2);
let _ = reader.absorb(1, &delta);
assert!(
reader
.state()
.store()
.get(&7)
.is_some_and(|held| held.contains(dot(1, 1)))
);
assert_eq!(reader.state().next_dot(2), dot(2, 1));
}
#[test]
fn test_adopt_round_trips_and_continues_fresh() {
let mut composer: Composer<Doc> = Composer::new(1);
let _ = composer.compose(add_under(7));
let _ = composer.compose(add_under(9));
let persisted = composer.state().clone();
let resumed: Composer<Doc> = Composer::adopt(1, persisted.clone());
assert_eq!(resumed.state(), &persisted);
assert_eq!(resumed.station(), 1);
assert_eq!(resumed.state().next_dot(1), dot(1, 3));
let mut resumed = resumed;
let (_, after) = resumed.compose(add_under(7));
assert!(
after
.store()
.get(&7)
.is_some_and(|held| held.contains(dot(1, 3)))
);
}