#[cfg(test)]
mod tests {
use std::sync::Arc;
use re_chunk::Chunk;
use re_chunk_store::{ChunkStore, ChunkStoreConfig, ChunkStoreHandle};
use re_data_loader::loader_mcap::load_mcap;
use re_data_loader::{DataLoaderSettings, LoadedData};
use re_log_types::StoreId;
use re_mcap::decoders::SelectedDecoders;
fn load_mcap_chunks(path: impl AsRef<std::path::Path>) -> Vec<Chunk> {
let path = path.as_ref();
println!("Loading MCAP file: {}", path.display());
let mcap_data = std::fs::read(path).unwrap();
let (tx, rx) = crossbeam::channel::bounded(1024);
let settings = DataLoaderSettings::recommended("test");
load_mcap(
&mcap_data,
&settings,
&tx,
&SelectedDecoders::All,
false,
None,
)
.unwrap();
drop(tx);
rx.iter().filter_map(LoadedData::into_chunk).collect()
}
#[test]
fn test_mcap_loader_ros2() {
let chunks = load_mcap_chunks("tests/assets/supported_ros2_messages.mcap");
let store = ChunkStore::new(
StoreId::random(re_log_types::StoreKind::Recording, "test_mcap_loader"),
ChunkStoreConfig::default(),
);
let store_handle = ChunkStoreHandle::new(store);
{
let mut store = store_handle.write();
for chunk in chunks {
store.insert_chunk(&Arc::new(chunk)).unwrap();
}
}
let schema = store_handle.read().schema().chunk_column_descriptors();
insta::assert_debug_snapshot!("ros2", schema);
}
}