1 use super::getrandom_impl
;
3 #[cfg(all(target_arch = "wasm32", target_os = "unknown"))]
4 use wasm_bindgen_test
::wasm_bindgen_test
as test
;
6 #[cfg(feature = "test-in-browser")]
7 wasm_bindgen_test
::wasm_bindgen_test_configure
!(run_in_browser
);
11 // Test that APIs are happy with zero-length requests
12 getrandom_impl(&mut [0u8; 0]).unwrap();
17 let mut v1
= [0u8; 1000];
18 getrandom_impl(&mut v1
).unwrap();
20 let mut v2
= [0u8; 1000];
21 getrandom_impl(&mut v2
).unwrap();
23 let mut n_diff_bits
= 0;
24 for i
in 0..v1
.len() {
25 n_diff_bits
+= (v1
[i
] ^ v2
[i
]).count_ones();
28 // Check at least 1 bit per byte differs. p(failure) < 1e-1000 with random input.
29 assert
!(n_diff_bits
>= v1
.len() as u32);
34 let mut huge
= [0u8; 100_000];
35 getrandom_impl(&mut huge
).unwrap();
38 // On WASM, the thread API always fails/panics
39 #[cfg(not(target_arch = "wasm32"))]
41 fn test_multithreading() {
43 use std
::{sync::mpsc::channel, thread, vec}
;
47 let (tx
, rx
) = channel();
50 thread
::spawn(move || {
51 // wait until all the tasks are ready to go.
53 let mut v
= [0u8; 1000];
56 getrandom_impl(&mut v
).unwrap();
62 // start all the tasks
63 for tx
in txs
.iter() {