use easyrand::{choose, random, randrange, with_seed};
#[test]
fn test_readme() {
doc_comment::doctest!("../README.md");
}
#[test]
fn test_random() {
for _ in 0..1000 {
let r = random();
assert!(r >= 0.0 && r <= 1.0);
for _ in 1..1000 {
assert!(r != random());
}
}
}
#[test]
fn test_range() {
for _ in 0..1000 {
let r = randrange(1.0, 2.0);
assert!(r >= 1.0 && r <= 2.0);
for _ in 1..1000 {
assert!(r != randrange(1.0, 2.0));
}
}
}
#[test]
fn test_choose() {
let things = vec!["abc", "def"];
let r = choose(&things).unwrap();
assert!(*r == "abc" || *r == "def");
}
#[test]
fn test_seeded() {
let mut s = with_seed(42);
let r1 = dbg!(s.random());
let r2 = dbg!(s.random());
let r3 = dbg!(s.random());
assert!(r1.abs() - 0.9728880888443334 < 1e-8);
assert!(r2.abs() - 0.5240921244397169 < 1e-8);
assert!(r3.abs() - 0.12255363798249008 < 1e-8);
let mut s2 = with_seed(42);
assert!(s2.random() == r1);
assert!(s2.random() == r2);
assert!(s2.random() == r3);
let mut s3 = with_seed(43);
assert!(s3.random() != r1);
assert!(s3.random() != r2);
assert!(s3.random() != r3);
}