MCPcopy Create free account
hub / github.com/PyO3/rust-numpy / view_with_negative_strides

Function view_with_negative_strides

src/borrow/shared.rs:694–723  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

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() {

Callers

nothing calls this directly

Calls 4

zerosFunction · 0.85
base_addressFunction · 0.85
data_rangeFunction · 0.85
as_array_ptrMethod · 0.80

Tested by

no test coverage detected