mod common;
use common::*;
use std::io::BufWriter;
use anyhow::Result;
use itertools::Itertools;
use mcap_rs as mcap;
use memmap::Mmap;
use tempfile::tempfile;
#[test]
fn flush_and_cut_chunks() -> Result<()> {
let mapped = map_mcap("tests/references/demo.mcap")?;
let messages = mcap::MessageStream::new(&mapped)?;
let mut tmp = tempfile()?;
let mut writer = mcap::Writer::new(BufWriter::new(&mut tmp))?;
for (i, m) in messages.enumerate() {
writer.write(&m?)?;
if i % 2 == 0 {
writer.flush()?;
}
}
drop(writer);
let ours = unsafe { Mmap::map(&tmp) }?;
for (theirs, ours) in
mcap::MessageStream::new(&mapped)?.zip_eq(mcap::MessageStream::new(&ours)?)
{
assert_eq!(ours?, theirs?)
}
Ok(())
}