use std::{ffi::CString, path::Path}; use unixstring::UnixString; #[test] fn empty_extend_from_ptr() { let mut unx = UnixString::new(); let home = CString::new("/home/vrmiguel").unwrap(); let ptr = home.as_ptr(); unsafe { unx.extend_from_ptr(ptr) }.unwrap(); assert_eq!(home.as_c_str(), unx.as_c_str()); assert_eq!(home.as_bytes(), unx.as_bytes()); assert_eq!(b"/home/vrmiguel\0".to_vec(), unx.as_bytes_with_nul()); } #[test] fn extend_from_ptr() { let mut unx = UnixString::new(); unx.push("/home/").unwrap(); assert_eq!(Path::new("/home/"), unx.as_path()); assert_eq!(b"/home/\0".to_vec(), unx.as_bytes_with_nul()); let username = CString::new("user").unwrap(); let ptr = username.as_ptr(); unsafe { unx.extend_from_ptr(ptr) }.unwrap(); dbg!(unx.as_path()); assert_eq!(Path::new("/home/user"), unx.as_path()); assert_eq!(b"/home/user\0".to_vec(), unx.as_bytes_with_nul()); }