vortex_array/
test_harness.rs1use std::io::Write;
5
6use goldenfile::Mint;
7use goldenfile::differs::binary_diff;
8use itertools::Itertools;
9use vortex_error::VortexResult;
10
11use crate::DeserializeMetadata;
12use crate::SerializeMetadata;
13use crate::arrays::BoolArray;
14
15#[allow(clippy::unwrap_used)]
19pub fn check_metadata<T>(name: &str, metadata: T)
20where
21 T: SerializeMetadata,
22 T: DeserializeMetadata,
23{
24 let mut mint = Mint::new("goldenfiles/");
25 let meta = metadata.serialize();
26 let mut f = mint
27 .new_goldenfile_with_differ(name, Box::new(binary_diff))
28 .unwrap();
29 f.write_all(&meta).unwrap();
30}
31
32pub fn to_int_indices(indices_bits: BoolArray) -> VortexResult<Vec<u64>> {
34 let buffer = indices_bits.bit_buffer();
35 let mask = indices_bits.validity_mask();
36 Ok(buffer
37 .iter()
38 .enumerate()
39 .filter_map(|(idx, v)| (v && mask.value(idx)).then_some(idx as u64))
40 .collect_vec())
41}