//! Module containing unit tests. #![cfg(test)] /// This test is to make sure no code changes increase the sizes of critical data structures. #[test] fn check_struct_sizes() { use crate::*; use std::mem::size_of; const IS_32_BIT: bool = cfg!(target_pointer_width = "32"); const PACKED: bool = cfg!(all( target_pointer_width = "32", feature = "only_i32", any(feature = "no_float", feature = "f32_float") )); const WORD_SIZE: usize = size_of::(); assert_eq!(size_of::(), if PACKED { 8 } else { 16 }); assert_eq!(size_of::>(), if PACKED { 8 } else { 16 }); assert_eq!( size_of::(), if cfg!(feature = "no_position") { 0 } else { 4 } ); assert_eq!(size_of::(), 2 * WORD_SIZE); assert_eq!(size_of::(), if PACKED { 12 } else { 16 }); assert_eq!(size_of::>(), if PACKED { 12 } else { 16 }); assert_eq!(size_of::(), if IS_32_BIT { 12 } else { 16 }); assert_eq!( size_of::>(), if IS_32_BIT { 12 } else { 16 } ); #[cfg(feature = "internals")] { assert_eq!(size_of::(), 3 * WORD_SIZE); assert_eq!(size_of::(), 4 * WORD_SIZE); } // The following only on 64-bit platforms if !cfg!(target_pointer_width = "64") { return; } assert_eq!(size_of::(), 536); assert_eq!( size_of::(), 80 - if cfg!(feature = "no_function") { WORD_SIZE } else { 0 } ); assert_eq!(size_of::(), 56); assert_eq!( size_of::(), 16 - if cfg!(feature = "no_position") { WORD_SIZE } else { 0 } ); assert_eq!(size_of::(), 64); assert_eq!( size_of::(), 56 - if cfg!(feature = "no_position") { WORD_SIZE } else { 0 } ); }