Skip to content

Commit a2954ea

Browse files
fix: reject mismatched insert batches (#213)
1 parent a02e382 commit a2954ea

1 file changed

Lines changed: 17 additions & 0 deletions

File tree

src/tree.rs

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -357,6 +357,11 @@ impl<const N: usize, S: NodeStorage<N>> Tree<N, S> for ProllyTree<N, S> {
357357
}
358358

359359
fn insert_batch(&mut self, keys: &[Vec<u8>], values: &[Vec<u8>]) {
360+
assert_eq!(
361+
keys.len(),
362+
values.len(),
363+
"insert_batch requires the same number of keys and values"
364+
);
360365
let batch = keys.iter().cloned().zip(values.iter().cloned().map(Some));
361366
self.apply_changes(batch);
362367
}
@@ -1476,6 +1481,18 @@ mod tests {
14761481
assert!(tree.find(b"key4").is_none());
14771482
}
14781483

1484+
#[test]
1485+
#[should_panic(expected = "insert_batch requires the same number of keys and values")]
1486+
fn test_insert_batch_rejects_length_mismatch() {
1487+
let storage = InMemoryNodeStorage::<32>::default();
1488+
let mut tree = ProllyTree::new(storage, TreeConfig::default());
1489+
1490+
let keys = vec![b"key1".to_vec(), b"key2".to_vec()];
1491+
let values = vec![b"value1".to_vec()];
1492+
1493+
tree.insert_batch(&keys, &values);
1494+
}
1495+
14791496
#[test]
14801497
fn test_delete() {
14811498
let storage = InMemoryNodeStorage::<32>::default();

0 commit comments

Comments
 (0)