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