Skip to content

Commit f2f3a44

Browse files
committed
Add a few tests for split_re_im
1 parent 39beb76 commit f2f3a44

File tree

1 file changed

+39
-0
lines changed

1 file changed

+39
-0
lines changed

tests/array.rs

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,14 @@
77
clippy::float_cmp
88
)]
99

10+
use approx::assert_relative_eq;
1011
use defmac::defmac;
1112
use itertools::{zip, Itertools};
1213
use ndarray::prelude::*;
1314
use ndarray::{arr3, rcarr2};
1415
use ndarray::indices;
1516
use ndarray::{Slice, SliceInfo, SliceInfoElem};
17+
use num_complex::Complex;
1618
use std::convert::TryFrom;
1719

1820
macro_rules! assert_panics {
@@ -2501,3 +2503,40 @@ fn test_remove_index_oob3() {
25012503
let mut a = array![[10], [4], [1]];
25022504
a.remove_index(Axis(2), 0);
25032505
}
2506+
2507+
#[test]
2508+
fn test_split_re_im_view() {
2509+
let a = Array3::from_shape_fn((3, 4, 5), |(i, j, k)| {
2510+
Complex::<f32>::new(i as f32 * j as f32, k as f32)
2511+
});
2512+
let Complex { re, im } = a.view().split_re_im();
2513+
assert_relative_eq!(re.sum(), 90.);
2514+
assert_relative_eq!(im.sum(), 120.);
2515+
}
2516+
2517+
#[test]
2518+
fn test_split_re_im_view_roundtrip() {
2519+
let a_re = Array3::from_shape_fn((3,4,5), |(i, j, _k)| {
2520+
i * j
2521+
});
2522+
let a_im = Array3::from_shape_fn((3,4,5), |(_i, _j, k)| {
2523+
k
2524+
});
2525+
let a = Array3::from_shape_fn((3,4,5), |(i,j,k)| {
2526+
Complex::new(a_re[[i,j,k]], a_im[[i,j,k]])
2527+
});
2528+
let Complex { re, im } = a.view().split_re_im();
2529+
assert_eq!(a_re, re);
2530+
assert_eq!(a_im, im);
2531+
}
2532+
2533+
#[test]
2534+
fn test_split_re_im_view_mut() {
2535+
let eye_scalar = Array2::<u32>::eye(4);
2536+
let eye_complex = Array2::<Complex<u32>>::eye(4);
2537+
let mut a = Array2::<Complex<u32>>::zeros((4, 4));
2538+
let Complex { mut re, im } = a.view_mut().split_re_im();
2539+
re.assign(&eye_scalar);
2540+
assert_eq!(im.sum(), 0);
2541+
assert_eq!(a, eye_complex);
2542+
}

0 commit comments

Comments
 (0)