1#![cfg(feature = "checked_conversions")] 2 3use std::borrow::Cow; 4use std::ffi::OsStr; 5 6use getrandom::getrandom; 7 8use os_str_bytes::OsStrBytes; 9use os_str_bytes::OsStringBytes; 10 11mod common; 12 13mod random_common; 14use random_common::ITERATIONS; 15use random_common::SMALL_LENGTH; 16 17const LARGE_LENGTH: usize = 1024; 18 19#[test] 20fn 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] 29fn 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] 38fn 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