Skip to content

Commit 67c9079

Browse files
author
Chandra Pratap
committed
smite-ir: Add local tests for OperationParamMutator
1 parent fb8bcfe commit 67c9079

1 file changed

Lines changed: 35 additions & 0 deletions

File tree

smite-ir/src/mutators/operation_param.rs

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -380,3 +380,38 @@ fn interesting_u32(rng: &mut impl Rng) -> u32 {
380380
fn interesting_u64(rng: &mut impl Rng) -> u64 {
381381
INTERESTING_U64[rng.random_range(0..INTERESTING_U64.len())]
382382
}
383+
384+
#[cfg(test)]
385+
mod tests {
386+
use super::*;
387+
use rand::{SeedableRng, rngs::SmallRng};
388+
389+
#[test]
390+
fn shuffle_subrange_preserves_elements() {
391+
let mut rng = SmallRng::seed_from_u64(0);
392+
let sorted = vec![1, 2, 3, 4, 5, 6, 7, 8];
393+
let mut shuffled = sorted.clone();
394+
395+
for _ in 0..100 {
396+
shuffle_subrange(&mut shuffled, &mut rng);
397+
shuffled.sort_unstable();
398+
assert_eq!(
399+
shuffled, sorted,
400+
"shuffle_subrange must preserve all original elements"
401+
);
402+
}
403+
}
404+
405+
#[test]
406+
fn shuffle_subrange_empty_and_single() {
407+
let mut rng = SmallRng::seed_from_u64(0);
408+
409+
let mut empty: Vec<u8> = vec![];
410+
shuffle_subrange(&mut empty, &mut rng);
411+
assert!(empty.is_empty());
412+
413+
let mut single = vec![0xFF];
414+
shuffle_subrange(&mut single, &mut rng);
415+
assert_eq!(single, vec![0xFF]);
416+
}
417+
}

0 commit comments

Comments
 (0)