Skip to content

Commit a885487

Browse files
committed
tests
Signed-off-by: Alexander Droste <[email protected]>
1 parent 18e1219 commit a885487

File tree

1 file changed

+39
-3
lines changed

1 file changed

+39
-3
lines changed

vortex-compute/src/expand/buffer.rs

Lines changed: 39 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,6 @@ impl<T: Copy> Expand for &mut BufferMut<T> {
7474
return;
7575
}
7676

77-
// Expand to the new buffer size which equals the length of the mask.
7877
self.reserve(mask_len - buf_len);
7978

8079
// SAFETY: We just reserved enough space above.
@@ -216,6 +215,7 @@ mod tests {
216215

217216
use super::*;
218217

218+
// Tests for Buffer<T>
219219
#[test]
220220
fn test_expand_scattered() {
221221
let buf = buffer![100u32, 200, 300];
@@ -278,7 +278,7 @@ mod tests {
278278
buf.expand(&mask);
279279
}
280280

281-
// Tests for &Buffer<T> impl
281+
// Tests for &Buffer<T>
282282
#[test]
283283
fn test_expand_ref_scattered() {
284284
let buf = buffer![100u32, 200, 300];
@@ -300,7 +300,7 @@ mod tests {
300300
assert_eq!(result, buffer![10u32, 20, 30]);
301301
}
302302

303-
// Tests for &mut BufferMut<T> impl
303+
// Tests for &mut BufferMut<T>
304304
#[test]
305305
fn test_expand_mut_scattered() {
306306
let mut buf = buffer_mut![100u32, 200, 300];
@@ -374,4 +374,40 @@ mod tests {
374374
let mask = Mask::from_iter([true, true, true, false]);
375375
(&mut buf).expand(&mask);
376376
}
377+
378+
#[test]
379+
fn test_expand_into_new_buffer() {
380+
let src = [10u32, 20, 30, 40, 50];
381+
// Alternating pattern with gaps: [T, F, T, F, T, F, T, F, T, F]
382+
let mask = Mask::from_iter([
383+
true, false, true, false, true, false, true, false, true, false,
384+
]);
385+
386+
let result = expand_into_new_buffer(&src, &mask);
387+
assert_eq!(result.len(), 10);
388+
assert_eq!(result.as_slice()[0], 10);
389+
assert_eq!(result.as_slice()[2], 20);
390+
assert_eq!(result.as_slice()[4], 30);
391+
assert_eq!(result.as_slice()[6], 40);
392+
assert_eq!(result.as_slice()[8], 50);
393+
}
394+
395+
#[test]
396+
fn test_scatter_into_slice_from() {
397+
let src = [1u32, 2, 3, 4, 5];
398+
let mut dest = vec![0u32; 8];
399+
let mask = Mask::from_iter([true, true, false, true, true, false, true, false]);
400+
401+
let mask_values = match &mask {
402+
Mask::Values(mv) => mv,
403+
_ => panic!("Expected Mask::Values"),
404+
};
405+
406+
scatter_into_slice_from(&src, &mut dest, mask_values);
407+
assert_eq!(dest[0], 1);
408+
assert_eq!(dest[1], 2);
409+
assert_eq!(dest[3], 3);
410+
assert_eq!(dest[4], 4);
411+
assert_eq!(dest[6], 5);
412+
}
377413
}

0 commit comments

Comments
 (0)