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

Function view_with_base_object

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

Source from the content-addressed store, hash-verified

555
556 #[test]
557 fn view_with_base_object() {
558 Python::attach(|py| {
559 let array = Array::<f64, _>::zeros((1, 2, 3)).into_pyarray(py);
560
561 let locals = [("array", &array)].into_py_dict(py).unwrap();
562 let view = py
563 .eval(c_str!("array[:,:,0]"), None, Some(&locals))
564 .unwrap()
565 .cast_into::<PyArray2<f64>>()
566 .unwrap();
567 assert_ne!(
568 view.as_ptr().cast::<c_void>(),
569 array.as_ptr().cast::<c_void>(),
570 );
571
572 let base = unsafe { (*view.as_array_ptr()).base };
573 assert_eq!(base.cast::<c_void>(), array.as_ptr().cast::<c_void>());
574
575 let base = unsafe { (*array.as_array_ptr()).base };
576 assert!(!base.is_null());
577
578 let base_address = base_address(py, view.as_array_ptr());
579 assert_ne!(base_address, view.as_ptr().cast::<c_void>());
580 assert_ne!(base_address, array.as_ptr().cast::<c_void>());
581 assert_eq!(base_address, base.cast::<c_void>());
582
583 let data_range = data_range(py, view.as_array_ptr());
584 assert_eq!(data_range.0, array.data().cast::<c_char>());
585 assert_eq!(data_range.1, unsafe {
586 array.data().add(4).cast::<c_char>()
587 });
588 });
589 }
590
591 #[test]
592 fn view_of_view_without_base_object() {

Callers

nothing calls this directly

Calls 5

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

Tested by

no test coverage detected