Skip to content

Commit b50319d

Browse files
committed
Add tests for the various failure modes of PyArray::try_as_matrix_shape_strides.
1 parent 85901c1 commit b50319d

File tree

1 file changed

+72
-0
lines changed

1 file changed

+72
-0
lines changed

tests/borrow.rs

+72
Original file line numberDiff line numberDiff line change
@@ -407,4 +407,76 @@ fn matrix_from_numpy() {
407407
assert_eq!(matrix, nalgebra::Matrix3x1::new(0, 1, 2));
408408
}
409409
});
410+
411+
Python::with_gil(|py| {
412+
let array = PyArray::<i32, _>::zeros(py, (2, 2, 2), false);
413+
let array = array.readonly();
414+
415+
let matrix: Option<nalgebra::DMatrixSlice<i32, nalgebra::Dynamic, nalgebra::Dynamic>> =
416+
array.try_as_matrix();
417+
assert!(matrix.is_none());
418+
});
419+
420+
Python::with_gil(|py| {
421+
let array = numpy::pyarray![py, [0, 1, 2], [3, 4, 5], [6, 7, 8]];
422+
let array: &PyArray2<i32> = py
423+
.eval("a[::-1]", Some([("a", array)].into_py_dict(py)), None)
424+
.unwrap()
425+
.downcast()
426+
.unwrap();
427+
let array = array.readonly();
428+
429+
let matrix: Option<nalgebra::DMatrixSlice<i32, nalgebra::Dynamic, nalgebra::Dynamic>> =
430+
array.try_as_matrix();
431+
assert!(matrix.is_none());
432+
});
433+
434+
Python::with_gil(|py| {
435+
let array = numpy::pyarray![py, [0, 1, 2], [3, 4, 5], [6, 7, 8]];
436+
let array = array.readonly();
437+
438+
let matrix: Option<
439+
nalgebra::MatrixSlice<
440+
i32,
441+
nalgebra::Const<2>,
442+
nalgebra::Const<3>,
443+
nalgebra::Const<3>,
444+
nalgebra::Const<1>,
445+
>,
446+
> = array.try_as_matrix();
447+
assert!(matrix.is_none());
448+
449+
let matrix: Option<
450+
nalgebra::MatrixSlice<
451+
i32,
452+
nalgebra::Const<3>,
453+
nalgebra::Const<2>,
454+
nalgebra::Const<3>,
455+
nalgebra::Const<1>,
456+
>,
457+
> = array.try_as_matrix();
458+
assert!(matrix.is_none());
459+
460+
let matrix: Option<
461+
nalgebra::MatrixSlice<
462+
i32,
463+
nalgebra::Const<3>,
464+
nalgebra::Const<3>,
465+
nalgebra::Const<2>,
466+
nalgebra::Const<1>,
467+
>,
468+
> = array.try_as_matrix();
469+
assert!(matrix.is_none());
470+
471+
let matrix: Option<
472+
nalgebra::MatrixSlice<
473+
i32,
474+
nalgebra::Const<3>,
475+
nalgebra::Const<3>,
476+
nalgebra::Const<3>,
477+
nalgebra::Const<2>,
478+
>,
479+
> = array.try_as_matrix();
480+
assert!(matrix.is_none());
481+
});
410482
}

0 commit comments

Comments
 (0)