File tree Expand file tree Collapse file tree 1 file changed +20
-0
lines changed Expand file tree Collapse file tree 1 file changed +20
-0
lines changed Original file line number Diff line number Diff line change @@ -21,10 +21,30 @@ unsafe impl<T: H5Type> H5Type for Complex<T> {
2121mod tests {
2222 use super :: * ;
2323 use num_complex:: { Complex32 , Complex64 } ;
24+ use std:: mem:: size_of_val;
2425
2526 #[ test]
2627 fn complex ( ) {
2728 assert_eq ! ( Complex32 :: type_descriptor( ) . size( ) , 8 ) ;
29+ assert_eq ! ( Complex32 :: type_descriptor( ) . size( ) , size_of:: <Complex32 >( ) ) ;
2830 assert_eq ! ( Complex64 :: type_descriptor( ) . size( ) , 16 ) ;
31+ assert_eq ! ( Complex64 :: type_descriptor( ) . size( ) , size_of:: <Complex64 >( ) ) ;
32+ }
33+
34+ #[ test]
35+ fn alignment ( ) {
36+ use std:: ptr:: addr_of;
37+
38+ let a = Complex { re : 0.0 , im : 1.0 } ;
39+
40+ assert_eq ! ( size_of_val( & a) , size_of_val( & a. re) + size_of_val( & a. im) ) ;
41+ assert_eq ! ( size_of_val( & a. re) , size_of_val( & a. im) ) ;
42+
43+ let base: * const u8 = addr_of ! ( a) . cast :: < u8 > ( ) ;
44+ let ptr_r = addr_of ! ( a. re) . cast :: < u8 > ( ) ;
45+ let ptr_i = addr_of ! ( a. im) . cast :: < u8 > ( ) ;
46+
47+ assert_eq ! ( unsafe { ptr_r. offset_from( base) } , 0 ) ;
48+ assert_eq ! ( unsafe { ptr_i. offset_from( base) } , size_of_val( & a. re) as isize ) ;
2949 }
3050}
You can’t perform that action at this time.
0 commit comments