#[cfg(target_pointer_width = "64")] // #if TARGET_RT_64_BIT type Inner = core::ffi::c_int; #[cfg(not(target_pointer_width = "64"))] type Inner = i16; // SInt16 /// [Apple's documentation](https://developer.apple.com/documentation/corefoundation/cfbundlerefnum?language=objc) pub type CFBundleRefNum = Inner; #[cfg(test)] #[cfg(all(feature = "CFString", feature = "CFURL"))] mod tests { use alloc::string::ToString; use crate::{CFBundle, CFRetained, CFString, CFURLPathStyle, CFURL}; fn url_from_str(s: &str, is_dir: bool) -> CFRetained { CFURL::with_file_system_path( None, Some(&CFString::from_str(s)), CFURLPathStyle::CFURLPOSIXPathStyle, is_dir as _, ) .unwrap() } #[test] fn safari_executable_url() { let path = url_from_str("/Applications/Safari.app", true); let bundle = CFBundle::new(None, Some(&path)).expect("Safari not present"); let executable = CFBundle::executable_url(&bundle).unwrap(); assert_eq!( CFURL::file_system_path( &CFURL::absolute_url(&executable).unwrap(), CFURLPathStyle::CFURLPOSIXPathStyle, ) .unwrap() .to_string(), "/Applications/Safari.app/Contents/MacOS/Safari" ); } #[test] fn safari_private_frameworks_url() { let path = url_from_str("/Applications/Safari.app", true); let bundle = CFBundle::new(None, Some(&path)).expect("Safari not present"); let frameworks = CFBundle::private_frameworks_url(&bundle).unwrap(); assert_eq!( CFURL::file_system_path( &CFURL::absolute_url(&frameworks).unwrap(), CFURLPathStyle::CFURLPOSIXPathStyle, ) .unwrap() .to_string(), "/Applications/Safari.app/Contents/Frameworks" ); } #[test] fn non_existent_bundle() { let path = url_from_str("/usr/local/non_existent", true); assert_eq!(CFBundle::new(None, Some(&path)), None); } }