1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- // Copyright 2015-2019 Brian Smith.
- //
- // Permission to use, copy, modify, and/or distribute this software for any
- // purpose with or without fee is hereby granted, provided that the above
- // copyright notice and this permission notice appear in all copies.
- //
- // THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHORS DISCLAIM ALL WARRANTIES
- // WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
- // MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY
- // SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- // WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
- // OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- // CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- use ring::{
- rand::{self, SecureRandom as _},
- test,
- };
- #[cfg(target_arch = "wasm32")]
- use wasm_bindgen_test::{wasm_bindgen_test, wasm_bindgen_test_configure};
- #[cfg(target_arch = "wasm32")]
- wasm_bindgen_test_configure!(run_in_browser);
- #[test]
- #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test)]
- fn test_system_random_lengths() {
- const LINUX_LIMIT: usize = 256;
- const WEB_LIMIT: usize = 65536;
- // Test that `fill` succeeds for various interesting lengths. `256` and
- // multiples thereof are interesting because that's an edge case for
- // `getrandom` on Linux.
- let lengths = [
- 0,
- 1,
- 2,
- 3,
- 96,
- LINUX_LIMIT - 1,
- LINUX_LIMIT,
- LINUX_LIMIT + 1,
- LINUX_LIMIT * 2,
- 511,
- 512,
- 513,
- 4096,
- WEB_LIMIT - 1,
- WEB_LIMIT,
- WEB_LIMIT + 1,
- WEB_LIMIT * 2,
- ];
- for len in lengths.iter() {
- let mut buf = vec![0; *len];
- let rng = rand::SystemRandom::new();
- assert!(rng.fill(&mut buf).is_ok());
- // If `len` < 96 then there's a big chance of false positives, but
- // otherwise the likelihood of a false positive is so too low to
- // worry about.
- if *len >= 96 {
- assert!(buf.iter().any(|x| *x != 0));
- }
- }
- }
- #[test]
- #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test)]
- fn test_system_random_traits() {
- test::compile_time_assert_clone::<rand::SystemRandom>();
- test::compile_time_assert_send::<rand::SystemRandom>();
- assert_eq!(
- "SystemRandom(())",
- format!("{:?}", rand::SystemRandom::new())
- );
- }
|