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