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;
fn round_trip(comp: Option<mcap::Compression>) -> Result<()> {
let mapped = map_mcap("tests/references/demo.mcap")?;
let mut tmp = tempfile()?;
let mut writer = mcap::WriteOptions::new()
.compression(comp)
.profile("fooey")
.create(BufWriter::new(&mut tmp))?;
for m in mcap::MessageStream::new(&mapped)? {
writer.write(&m?)?;
}
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(())
}
#[test]
fn uncompressed_round_trip() -> Result<()> {
round_trip(None)
}
#[test]
fn zstd_round_trip() -> Result<()> {
round_trip(Some(mcap::Compression::Zstd))
}
#[test]
fn lz4_round_trip() -> Result<()> {
round_trip(Some(mcap::Compression::Lz4))
}