use std::mem::{align_of, size_of};
#[cfg(feature = "cg")]
#[test]
fn cg_value_type_layout() {
use apple_cf::cg::{CGAffineTransform, CGPoint, CGRect, CGSize, CGVector};
assert_eq!(size_of::<CGPoint>(), 16, "CGPoint size drifted");
assert_eq!(align_of::<CGPoint>(), 8, "CGPoint alignment drifted");
assert_eq!(size_of::<CGSize>(), 16, "CGSize size drifted");
assert_eq!(align_of::<CGSize>(), 8, "CGSize alignment drifted");
assert_eq!(size_of::<CGRect>(), 32, "CGRect size drifted");
assert_eq!(align_of::<CGRect>(), 8, "CGRect alignment drifted");
assert_eq!(size_of::<CGVector>(), 16, "CGVector size drifted");
assert_eq!(align_of::<CGVector>(), 8, "CGVector alignment drifted");
assert_eq!(
size_of::<CGAffineTransform>(),
48,
"CGAffineTransform size drifted"
);
assert_eq!(
align_of::<CGAffineTransform>(),
8,
"CGAffineTransform alignment drifted"
);
}
#[cfg(feature = "cv")]
#[test]
fn cv_value_type_layout() {
use apple_cf::cv::{CVImageRect, CVImageSize, CVPixelBufferLockFlags};
assert_eq!(size_of::<CVImageSize>(), 16, "CVImageSize size drifted");
assert_eq!(
align_of::<CVImageSize>(),
8,
"CVImageSize alignment drifted"
);
assert_eq!(size_of::<CVImageRect>(), 32, "CVImageRect size drifted");
assert_eq!(
align_of::<CVImageRect>(),
8,
"CVImageRect alignment drifted"
);
assert_eq!(
size_of::<CVPixelBufferLockFlags>(),
8,
"CVPixelBufferLockFlags size drifted"
);
assert_eq!(
align_of::<CVPixelBufferLockFlags>(),
8,
"CVPixelBufferLockFlags alignment drifted"
);
assert_eq!(
CVPixelBufferLockFlags::from_bits(1_u64 << 40).bits(),
1_u64 << 40,
"CVPixelBufferLockFlags truncated upper CVOptionFlags bits"
);
}
#[cfg(feature = "cm")]
#[test]
fn cm_value_type_layout() {
use apple_cf::cm::{CMSampleTimingInfo, CMTime, CMTimeRange};
assert_eq!(size_of::<CMTime>(), 24, "CMTime size drifted");
assert_eq!(align_of::<CMTime>(), 8, "CMTime alignment drifted");
assert_eq!(
size_of::<CMSampleTimingInfo>(),
72,
"CMSampleTimingInfo size drifted"
);
assert_eq!(
align_of::<CMSampleTimingInfo>(),
8,
"CMSampleTimingInfo alignment drifted"
);
assert_eq!(size_of::<CMTimeRange>(), 48, "CMTimeRange size drifted");
assert_eq!(
align_of::<CMTimeRange>(),
8,
"CMTimeRange alignment drifted"
);
}
#[test]
fn ffi_layout_matches_pinned_values() {
assert!(
apple_cf::ffi::verify_ffi_layout(),
"an FFI value type's size/alignment drifted from its pinned ABI layout"
);
}