use super::*;
#[test]
fn a_ready_fence_owes_the_root_question_once_and_a_new_fence_owes_it_again()
-> Result<(), Box<dyn std::error::Error>> {
let state = StreamState::for_log(log());
let mut engine = engine::Engine::for_tests(Arc::clone(&state))?;
assert!(!engine.take_root_owed(), "nothing is owed before ready");
engine.page(baseline(2))?;
assert!(engine.take_root_owed(), "the first ready owes the question");
assert!(!engine.take_root_owed(), "it is owed once");
engine.lost()?;
engine.page(ChangesPage {
log: baseline(2).log,
frames: vec![
ChangeFrame::Watermark { revision: 3 },
ChangeFrame::PlacementMark {
revision: 3,
placement: 0,
},
ChangeFrame::Ready { revision: 3 },
],
})?;
assert!(engine.take_root_owed(), "a new ready fence owes it again");
Ok(())
}