Skip to content

Commit 23027dd

Browse files
committed
test(encoding): cover inline bitpacking value limit
1 parent 53c1f5c commit 23027dd

1 file changed

Lines changed: 17 additions & 8 deletions

File tree

rust/lance-encoding/src/encodings/physical/bitpacking.rs

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -609,11 +609,11 @@ mod test {
609609
assert_eq!(decoded_values.as_ref(), values);
610610
}
611611

612-
fn assert_corrupt_unchunk<T>(data: LanceBuffer, expected_message: &str)
612+
fn assert_corrupt_unchunk<T>(data: LanceBuffer, num_values: u64, expected_message: &str)
613613
where
614614
T: ArrowNativeType + BitPacking + Pod,
615615
{
616-
let err = InlineBitpacking::unchunk::<T>(data, 1).unwrap_err();
616+
let err = InlineBitpacking::unchunk::<T>(data, num_values).unwrap_err();
617617
assert!(matches!(err, lance_core::Error::CorruptFile { .. }));
618618
let err = err.to_string();
619619
assert!(
@@ -635,12 +635,21 @@ mod test {
635635
}
636636

637637
#[rstest]
638-
#[case::too_small_header(LanceBuffer::from(vec![1, 2, 3]), "too small")]
639-
#[case::misaligned_chunk_size(LanceBuffer::from(vec![0, 0, 0, 0, 0]), "multiple")]
640-
#[case::payload_size_mismatch(LanceBuffer::reinterpret_vec(vec![12_u32]), "payload")]
641-
#[case::invalid_bit_width(LanceBuffer::reinterpret_vec(vec![33_u32]), "exceeds")]
642-
fn unchunk_rejects(#[case] data: LanceBuffer, #[case] expected_message: &str) {
643-
assert_corrupt_unchunk::<u32>(data, expected_message);
638+
#[case::too_small_header(LanceBuffer::from(vec![1, 2, 3]), 1, "too small")]
639+
#[case::misaligned_chunk_size(LanceBuffer::from(vec![0, 0, 0, 0, 0]), 1, "multiple")]
640+
#[case::too_many_values(
641+
LanceBuffer::reinterpret_vec(vec![0_u32]),
642+
ELEMS_PER_CHUNK + 1,
643+
"expected at most"
644+
)]
645+
#[case::payload_size_mismatch(LanceBuffer::reinterpret_vec(vec![12_u32]), 1, "payload")]
646+
#[case::invalid_bit_width(LanceBuffer::reinterpret_vec(vec![33_u32]), 1, "exceeds")]
647+
fn unchunk_rejects(
648+
#[case] data: LanceBuffer,
649+
#[case] num_values: u64,
650+
#[case] expected_message: &str,
651+
) {
652+
assert_corrupt_unchunk::<u32>(data, num_values, expected_message);
644653
}
645654

646655
#[test_log::test(tokio::test)]

0 commit comments

Comments
 (0)