mod common;
use common::*;
use std::io::Cursor;
use anyhow::Result;
use itertools::Itertools;
#[test]
fn auto_cut_chunks() -> Result<()> {
let mapped = mcap_test_file()?;
let messages = mcap::MessageStream::new(&mapped)?;
let mut tmp: Vec<u8> = Vec::new();
{
let mut writer = mcap::WriteOptions::new()
.chunk_size(Some(0))
.create(Cursor::new(&mut tmp))?;
for m in messages {
writer.write(&m?)?;
}
}
for (theirs, ours) in mcap::MessageStream::new(&tmp)?.zip_eq(mcap::MessageStream::new(&tmp)?) {
assert_eq!(ours?, theirs?)
}
let num_chunks = mcap::read::LinearReader::new(&mapped)?
.filter(|r| matches!(r, Ok(mcap::records::Record::Chunk { .. })))
.count();
assert!(num_chunks > 1);
Ok(())
}