#![cfg(feature = "ndarray")]
use data_beans::sparse_io::*;
fn exercise(backend: Option<&SparseIoBackend>) -> anyhow::Result<()> {
let arr = ndarray::Array2::<f32>::from_elem((50, 40), 1.0);
let cost = 50 * 40 * 12;
let base = preload_reserved_bytes();
let mut data = create_sparse_from_ndarray(&arr, None, backend)?;
assert_eq!(preload_reserved_bytes(), base, "creating does not preload");
data.preload_columns()?;
assert!(data.csc_column_arrays().is_some());
assert_eq!(preload_reserved_bytes(), base + cost);
data.preload_columns()?;
assert_eq!(preload_reserved_bytes(), base + cost);
data.preload_rows()?;
data.preload_rows()?;
assert_eq!(preload_reserved_bytes(), base + 2 * cost);
data.clean_preloaded_columns();
assert!(data.csc_column_arrays().is_none());
assert_eq!(
preload_reserved_bytes(),
base + cost,
"cleaning gives it back"
);
data.preload_columns()?;
assert_eq!(preload_reserved_bytes(), base + 2 * cost);
drop(data);
assert_eq!(preload_reserved_bytes(), base, "dropping gives it back");
Ok(())
}
#[test]
fn preload_reservations_are_given_back() -> anyhow::Result<()> {
exercise(Some(&SparseIoBackend::Zarr))?;
#[cfg(feature = "hdf5")]
exercise(Some(&SparseIoBackend::HDF5))?;
Ok(())
}