in parquet/src/util/bit_pack.rs [102:136]
fn test_basic() {
let input = [0xFF; 4096];
for i in 0..=8 {
let mut output = [0; 8];
unpack8(&input, &mut output, i);
for (idx, out) in output.iter().enumerate() {
assert_eq!(out.trailing_ones() as usize, i, "out[{idx}] = {out}");
}
}
for i in 0..=16 {
let mut output = [0; 16];
unpack16(&input, &mut output, i);
for (idx, out) in output.iter().enumerate() {
assert_eq!(out.trailing_ones() as usize, i, "out[{idx}] = {out}");
}
}
for i in 0..=32 {
let mut output = [0; 32];
unpack32(&input, &mut output, i);
for (idx, out) in output.iter().enumerate() {
assert_eq!(out.trailing_ones() as usize, i, "out[{idx}] = {out}");
}
}
for i in 0..=64 {
let mut output = [0; 64];
unpack64(&input, &mut output, i);
for (idx, out) in output.iter().enumerate() {
assert_eq!(out.trailing_ones() as usize, i, "out[{idx}] = {out}");
}
}
}