• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 #![cfg(feature = "checked_conversions")]
2 
3 use std::borrow::Cow;
4 use std::ffi::OsStr;
5 
6 use getrandom::getrandom;
7 
8 use os_str_bytes::OsStrBytes;
9 use os_str_bytes::OsStringBytes;
10 
11 mod common;
12 
13 mod random_common;
14 use random_common::ITERATIONS;
15 use random_common::SMALL_LENGTH;
16 
17 const LARGE_LENGTH: usize = 1024;
18 
19 #[test]
test_bytes() -> Result<(), getrandom::Error>20 fn test_bytes() -> Result<(), getrandom::Error> {
21     let os_string = random_common::random_os_string(LARGE_LENGTH)?;
22     let string = os_string.to_raw_bytes();
23     assert_eq!(os_string.len(), string.len());
24     assert_eq!(Ok(Cow::Borrowed(&*os_string)), common::from_bytes(&string));
25     Ok(())
26 }
27 
28 #[test]
test_vec() -> Result<(), getrandom::Error>29 fn test_vec() -> Result<(), getrandom::Error> {
30     let os_string = random_common::random_os_string(LARGE_LENGTH)?;
31     let string = os_string.clone().into_raw_vec();
32     assert_eq!(os_string.len(), string.len());
33     assert_eq!(Ok(os_string), common::from_vec(string));
34     Ok(())
35 }
36 
37 #[test]
test_lossless() -> Result<(), getrandom::Error>38 fn test_lossless() -> Result<(), getrandom::Error> {
39     for _ in 0..ITERATIONS {
40         let mut string = vec![0; SMALL_LENGTH];
41         getrandom(&mut string)?;
42         if let Ok(os_string) = OsStr::from_raw_bytes(&string) {
43             assert_eq!(string, &*os_string.to_raw_bytes());
44         }
45     }
46     Ok(())
47 }
48