()
| 692 | |
| 693 | #[test] |
| 694 | fn view_with_negative_strides() { |
| 695 | Python::attach(|py| { |
| 696 | let array = PyArray::<f64, _>::zeros(py, (1, 2, 3), false); |
| 697 | |
| 698 | let locals = [("array", &array)].into_py_dict(py).unwrap(); |
| 699 | let view = py |
| 700 | .eval(c_str!("array[::-1,:,::-1]"), None, Some(&locals)) |
| 701 | .unwrap() |
| 702 | .cast_into::<PyArray3<f64>>() |
| 703 | .unwrap(); |
| 704 | assert_ne!( |
| 705 | view.as_ptr().cast::<c_void>(), |
| 706 | array.as_ptr().cast::<c_void>() |
| 707 | ); |
| 708 | |
| 709 | let base = unsafe { (*view.as_array_ptr()).base }; |
| 710 | assert_eq!(base.cast::<c_void>(), array.as_ptr().cast::<c_void>()); |
| 711 | |
| 712 | let base_address = base_address(py, view.as_array_ptr()); |
| 713 | assert_ne!(base_address, view.as_ptr().cast::<c_void>()); |
| 714 | assert_eq!(base_address, base.cast::<c_void>()); |
| 715 | |
| 716 | let data_range = data_range(py, view.as_array_ptr()); |
| 717 | assert_eq!(view.data(), unsafe { array.data().offset(2) }); |
| 718 | assert_eq!(data_range.0, unsafe { view.data().offset(-2) } |
| 719 | as *mut c_char); |
| 720 | assert_eq!(data_range.1, unsafe { view.data().offset(4) } |
| 721 | as *mut c_char); |
| 722 | }); |
| 723 | } |
| 724 | |
| 725 | #[test] |
| 726 | fn array_with_zero_dimensions() { |
nothing calls this directly
no test coverage detected