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_bytesnull20fn 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_vecnull29fn 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_losslessnull38fn 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