Skip to content

Commit 533466f

Browse files
emmatypingbluss
authored andcommitted
Add test that fails on negative stride
1 parent c37b309 commit 533466f

File tree

1 file changed

+34
-3
lines changed

1 file changed

+34
-3
lines changed

tests/array.rs

Lines changed: 34 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2516,13 +2516,13 @@ fn test_split_re_im_view() {
25162516

25172517
#[test]
25182518
fn test_split_re_im_view_roundtrip() {
2519-
let a_re = Array3::from_shape_fn((3,4,5), |(i, j, _k)| {
2519+
let a_re = Array3::from_shape_fn((3,1,5), |(i, j, _k)| {
25202520
i * j
25212521
});
2522-
let a_im = Array3::from_shape_fn((3,4,5), |(_i, _j, k)| {
2522+
let a_im = Array3::from_shape_fn((3,1,5), |(_i, _j, k)| {
25232523
k
25242524
});
2525-
let a = Array3::from_shape_fn((3,4,5), |(i,j,k)| {
2525+
let a = Array3::from_shape_fn((3,1,5), |(i,j,k)| {
25262526
Complex::new(a_re[[i,j,k]], a_im[[i,j,k]])
25272527
});
25282528
let Complex { re, im } = a.view().split_re_im();
@@ -2540,3 +2540,34 @@ fn test_split_re_im_view_mut() {
25402540
assert_eq!(im.sum(), 0);
25412541
assert_eq!(a, eye_complex);
25422542
}
2543+
2544+
#[test]
2545+
fn test_split_re_im_zerod() {
2546+
let mut a = Array0::from_elem((), Complex::new(42, 32));
2547+
let Complex { re, im } = a.view().split_re_im();
2548+
assert_eq!(re.get(()), Some(&42));
2549+
assert_eq!(im.get(()), Some(&32));
2550+
let cmplx = a.view_mut().split_re_im();
2551+
cmplx.re.assign_to(cmplx.im);
2552+
assert_eq!(a.get(()).unwrap().im, 42);
2553+
}
2554+
2555+
#[test]
2556+
fn test_split_re_im_permuted() {
2557+
let a = Array3::from_shape_fn((3, 4, 5), |(i, j, k)| {
2558+
Complex::new(i * k + j, k)
2559+
});
2560+
let permuted = a.view().permuted_axes([1,0,2]);
2561+
let Complex { re, im } = permuted.split_re_im();
2562+
assert_eq!(re.get((3,2,4)).unwrap(), &11);
2563+
assert_eq!(im.get((3,2,4)).unwrap(), &4);
2564+
}
2565+
2566+
#[test]
2567+
fn test_split_re_im_invert_axis() {
2568+
let mut a = Array::from_shape_fn((2, 3, 2), |(i, j, k)| Complex::new(i as f64 + j as f64, i as f64 + k as f64));
2569+
a.invert_axis(Axis(1));
2570+
let cmplx = a.view().split_re_im();
2571+
assert_eq!(cmplx.re, a.mapv(|z| z.re));
2572+
assert_eq!(cmplx.im, a.mapv(|z| z.im));
2573+
}

0 commit comments

Comments
 (0)