#[cfg(target_pointer_width = "64")] type Inner = core::ffi::c_int;
#[cfg(not(target_pointer_width = "64"))]
type Inner = i16;
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> {
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);
}
}