|  | #[cfg(all(target_family = "wasm", not(target_os = "wasi")))] | 
|  | use wasm_bindgen_test::wasm_bindgen_test as test; | 
|  |  | 
|  | #[cfg(all(target_family = "wasm", not(target_os = "wasi")))] | 
|  | wasm_bindgen_test::wasm_bindgen_test_configure!(run_in_browser); | 
|  |  | 
|  | #[test] | 
|  | fn bool() { | 
|  | for x in &[false, true] { | 
|  | while fastrand::bool() != *x {} | 
|  | } | 
|  | } | 
|  |  | 
|  | #[test] | 
|  | fn u8() { | 
|  | for x in 0..10 { | 
|  | while fastrand::u8(..10) != x {} | 
|  | } | 
|  |  | 
|  | for x in 200..=u8::MAX { | 
|  | while fastrand::u8(200..) != x {} | 
|  | } | 
|  | } | 
|  |  | 
|  | #[test] | 
|  | fn i8() { | 
|  | for x in -128..-120 { | 
|  | while fastrand::i8(..-120) != x {} | 
|  | } | 
|  |  | 
|  | for x in 120..=127 { | 
|  | while fastrand::i8(120..) != x {} | 
|  | } | 
|  | } | 
|  |  | 
|  | #[test] | 
|  | fn u32() { | 
|  | for n in 1u32..10_000 { | 
|  | let n = n.wrapping_mul(n); | 
|  | let n = n.wrapping_mul(n); | 
|  | if n != 0 { | 
|  | for _ in 0..1000 { | 
|  | assert!(fastrand::u32(..n) < n); | 
|  | } | 
|  | } | 
|  | } | 
|  | } | 
|  |  | 
|  | #[test] | 
|  | fn u64() { | 
|  | for n in 1u64..10_000 { | 
|  | let n = n.wrapping_mul(n); | 
|  | let n = n.wrapping_mul(n); | 
|  | let n = n.wrapping_mul(n); | 
|  | if n != 0 { | 
|  | for _ in 0..1000 { | 
|  | assert!(fastrand::u64(..n) < n); | 
|  | } | 
|  | } | 
|  | } | 
|  | } | 
|  |  | 
|  | #[test] | 
|  | fn u128() { | 
|  | for n in 1u128..10_000 { | 
|  | let n = n.wrapping_mul(n); | 
|  | let n = n.wrapping_mul(n); | 
|  | let n = n.wrapping_mul(n); | 
|  | let n = n.wrapping_mul(n); | 
|  | if n != 0 { | 
|  | for _ in 0..1000 { | 
|  | assert!(fastrand::u128(..n) < n); | 
|  | } | 
|  | } | 
|  | } | 
|  | } | 
|  |  | 
|  | #[test] | 
|  | fn fill() { | 
|  | let mut r = fastrand::Rng::new(); | 
|  | let mut a = [0u8; 64]; | 
|  | let mut b = [0u8; 64]; | 
|  |  | 
|  | r.fill(&mut a); | 
|  | r.fill(&mut b); | 
|  |  | 
|  | assert_ne!(a, b); | 
|  | } | 
|  |  | 
|  | #[test] | 
|  | fn rng() { | 
|  | let mut r = fastrand::Rng::new(); | 
|  |  | 
|  | assert_ne!(r.u64(..), r.u64(..)); | 
|  |  | 
|  | r.seed(7); | 
|  | let a = r.u64(..); | 
|  | r.seed(7); | 
|  | let b = r.u64(..); | 
|  | assert_eq!(a, b); | 
|  | } | 
|  |  | 
|  | #[test] | 
|  | fn rng_init() { | 
|  | let mut a = fastrand::Rng::new(); | 
|  | let mut b = fastrand::Rng::new(); | 
|  | assert_ne!(a.u64(..), b.u64(..)); | 
|  |  | 
|  | a.seed(7); | 
|  | b.seed(7); | 
|  | assert_eq!(a.u64(..), b.u64(..)); | 
|  | } | 
|  |  | 
|  | #[test] | 
|  | fn with_seed() { | 
|  | let mut a = fastrand::Rng::with_seed(7); | 
|  | let mut b = fastrand::Rng::new(); | 
|  | b.seed(7); | 
|  | assert_eq!(a.u64(..), b.u64(..)); | 
|  | } | 
|  |  | 
|  | #[test] | 
|  | fn choose_multiple() { | 
|  | let mut a = fastrand::Rng::new(); | 
|  | let mut elements = (0..20).collect::<Vec<_>>(); | 
|  |  | 
|  | while !elements.is_empty() { | 
|  | let chosen = a.choose_multiple(0..20, 5); | 
|  | for &x in &chosen { | 
|  | elements.retain(|&y| y != x); | 
|  | } | 
|  | } | 
|  | } | 
|  |  | 
|  | #[test] | 
|  | fn choice() { | 
|  | let items = [1, 4, 9, 5, 2, 3, 6, 7, 8, 0]; | 
|  | let mut r = fastrand::Rng::new(); | 
|  |  | 
|  | for item in &items { | 
|  | while r.choice(&items).unwrap() != item {} | 
|  | } | 
|  | } |