mirror of
https://github.com/openharmony/third_party_rust_os_str_bytes.git
synced 2026-07-22 21:15:29 -04:00
48 lines
1.2 KiB
Rust
48 lines
1.2 KiB
Rust
#![cfg(feature = "checked_conversions")]
|
|
|
|
use std::borrow::Cow;
|
|
use std::ffi::OsStr;
|
|
|
|
use getrandom::getrandom;
|
|
|
|
use os_str_bytes::OsStrBytes;
|
|
use os_str_bytes::OsStringBytes;
|
|
|
|
mod common;
|
|
|
|
mod random_common;
|
|
use random_common::ITERATIONS;
|
|
use random_common::SMALL_LENGTH;
|
|
|
|
const LARGE_LENGTH: usize = 1024;
|
|
|
|
#[test]
|
|
fn test_bytes() -> Result<(), getrandom::Error> {
|
|
let os_string = random_common::random_os_string(LARGE_LENGTH)?;
|
|
let string = os_string.to_raw_bytes();
|
|
assert_eq!(os_string.len(), string.len());
|
|
assert_eq!(Ok(Cow::Borrowed(&*os_string)), common::from_bytes(&string));
|
|
Ok(())
|
|
}
|
|
|
|
#[test]
|
|
fn test_vec() -> Result<(), getrandom::Error> {
|
|
let os_string = random_common::random_os_string(LARGE_LENGTH)?;
|
|
let string = os_string.clone().into_raw_vec();
|
|
assert_eq!(os_string.len(), string.len());
|
|
assert_eq!(Ok(os_string), common::from_vec(string));
|
|
Ok(())
|
|
}
|
|
|
|
#[test]
|
|
fn test_lossless() -> Result<(), getrandom::Error> {
|
|
for _ in 0..ITERATIONS {
|
|
let mut string = vec![0; SMALL_LENGTH];
|
|
getrandom(&mut string)?;
|
|
if let Ok(os_string) = OsStr::from_raw_bytes(&string) {
|
|
assert_eq!(string, &*os_string.to_raw_bytes());
|
|
}
|
|
}
|
|
Ok(())
|
|
}
|