use crate::prelude::*;
pub fn index_of<'a, 'b, T>(slice: &'a [T]) -> impl Die<usize> + 'b {
let len = slice.len();
dice::uni_usize(0..len)
}
#[cfg(test)]
mod tests {
use crate::prelude::*;
#[test]
fn index_of_generates_valid_index() {
Dicetest::repeatedly().run(|mut fate| {
let vec = fate.roll(dice::vec(dice::u8(..), 1..));
let index = fate.roll(dice::index_of(&vec));
assert!(index < vec.len());
})
}
#[test]
fn index_of_calc_stats() {
Dicetest::repeatedly()
.passes(0)
.stats_enabled(true)
.run(|mut fate| {
stat!(
"index_of(&[1, 2, 3, 4, 5])",
"{}",
fate.roll(dice::index_of(&[1, 2, 3, 4, 5])),
);
})
}
}