1 #[cfg(all(target_family = "wasm", not(target_os = "wasi")))]
2 use wasm_bindgen_test::wasm_bindgen_test as test;
3
4 #[cfg(all(target_family = "wasm", not(target_os = "wasi")))]
5 wasm_bindgen_test::wasm_bindgen_test_configure!(run_in_browser);
6
7 #[test]
bool()8 fn bool() {
9 for x in &[false, true] {
10 while fastrand::bool() != *x {}
11 }
12 }
13
14 #[test]
u8()15 fn u8() {
16 for x in 0..10 {
17 while fastrand::u8(..10) != x {}
18 }
19
20 for x in 200..=u8::MAX {
21 while fastrand::u8(200..) != x {}
22 }
23 }
24
25 #[test]
i8()26 fn i8() {
27 for x in -128..-120 {
28 while fastrand::i8(..-120) != x {}
29 }
30
31 for x in 120..=127 {
32 while fastrand::i8(120..) != x {}
33 }
34 }
35
36 #[test]
u32()37 fn u32() {
38 for n in 1u32..10_000 {
39 let n = n.wrapping_mul(n);
40 let n = n.wrapping_mul(n);
41 if n != 0 {
42 for _ in 0..1000 {
43 assert!(fastrand::u32(..n) < n);
44 }
45 }
46 }
47 }
48
49 #[test]
u64()50 fn u64() {
51 for n in 1u64..10_000 {
52 let n = n.wrapping_mul(n);
53 let n = n.wrapping_mul(n);
54 let n = n.wrapping_mul(n);
55 if n != 0 {
56 for _ in 0..1000 {
57 assert!(fastrand::u64(..n) < n);
58 }
59 }
60 }
61 }
62
63 #[test]
u128()64 fn u128() {
65 for n in 1u128..10_000 {
66 let n = n.wrapping_mul(n);
67 let n = n.wrapping_mul(n);
68 let n = n.wrapping_mul(n);
69 let n = n.wrapping_mul(n);
70 if n != 0 {
71 for _ in 0..1000 {
72 assert!(fastrand::u128(..n) < n);
73 }
74 }
75 }
76 }
77
78 #[test]
fill()79 fn fill() {
80 let mut r = fastrand::Rng::new();
81 let mut a = [0u8; 64];
82 let mut b = [0u8; 64];
83
84 r.fill(&mut a);
85 r.fill(&mut b);
86
87 assert_ne!(a, b);
88 }
89
90 #[test]
rng()91 fn rng() {
92 let mut r = fastrand::Rng::new();
93
94 assert_ne!(r.u64(..), r.u64(..));
95
96 r.seed(7);
97 let a = r.u64(..);
98 r.seed(7);
99 let b = r.u64(..);
100 assert_eq!(a, b);
101 }
102
103 #[test]
rng_init()104 fn rng_init() {
105 let mut a = fastrand::Rng::new();
106 let mut b = fastrand::Rng::new();
107 assert_ne!(a.u64(..), b.u64(..));
108
109 a.seed(7);
110 b.seed(7);
111 assert_eq!(a.u64(..), b.u64(..));
112 }
113
114 #[test]
with_seed()115 fn with_seed() {
116 let mut a = fastrand::Rng::with_seed(7);
117 let mut b = fastrand::Rng::new();
118 b.seed(7);
119 assert_eq!(a.u64(..), b.u64(..));
120 }
121
122 #[test]
choose_multiple()123 fn choose_multiple() {
124 let mut a = fastrand::Rng::new();
125 let mut elements = (0..20).collect::<Vec<_>>();
126
127 while !elements.is_empty() {
128 let chosen = a.choose_multiple(0..20, 5);
129 for &x in &chosen {
130 elements.retain(|&y| y != x);
131 }
132 }
133 }
134
135 #[test]
choice()136 fn choice() {
137 let items = [1, 4, 9, 5, 2, 3, 6, 7, 8, 0];
138 let mut r = fastrand::Rng::new();
139
140 for item in &items {
141 while r.choice(&items).unwrap() != item {}
142 }
143 }
144