Skip to content
Snippets Groups Projects
Verified Commit dddbf6d2 authored by Justin Carpentier's avatar Justin Carpentier
Browse files

test/ref: enforce testing of vector blocks

parent 7235c40a
No related branches found
No related tags found
No related merge requests found
Pipeline #23682 passed with warnings
......@@ -30,6 +30,12 @@ void setOnes(Eigen::Ref<MatType> mat) {
mat.setOnes();
}
template <typename VecType>
VecType copyVectorFromConstRef(const Eigen::Ref<const VecType> vec) {
std::cout << "copyVectorFromConstRef::vec: " << vec.transpose() << std::endl;
return VecType(vec);
}
template <typename MatType>
Eigen::Ref<MatType> getBlock(Eigen::Ref<MatType> mat, Eigen::DenseIndex i,
Eigen::DenseIndex j, Eigen::DenseIndex n,
......@@ -120,6 +126,9 @@ BOOST_PYTHON_MODULE(eigen_ref) {
bp::def("getBlock", &getBlock<MatrixXd>);
bp::def("editBlock", &editBlock<MatrixXd>);
bp::def("copyVectorFromConstRef", &copyVectorFromConstRef<VectorXd>);
bp::def("copyRowVectorFromConstRef", &copyVectorFromConstRef<RowVectorXd>);
bp::class_<modify_block_wrap, boost::noncopyable>("modify_block",
bp::init<>())
.def_readonly("J", &modify_block::J)
......
......@@ -9,6 +9,8 @@ from eigen_ref import (
editBlock,
modify_block,
has_ref_member,
copyVectorFromConstRef,
copyRowVectorFromConstRef,
)
......@@ -44,6 +46,18 @@ def test_create_ref_to_static(mat):
assert np.array_equal(A_ref, A_ref2)
def test_read_block():
data = np.array([[0, 0.2, 0.3, 0.4], [0, 1, 0, 0], [0, 0, 0, 0], [1, 0, 0, 0]])
data_strided = data[:, 0]
data_strided_copy = copyVectorFromConstRef(data_strided)
assert np.all(data_strided == data_strided_copy)
data_strided_copy = copyRowVectorFromConstRef(data_strided)
assert np.all(data_strided == data_strided_copy)
def test_create_ref(mat):
print("[asRef(mat)]")
ref = asRef(mat)
......@@ -116,6 +130,7 @@ def do_test(mat):
test_create_const_ref(mat)
test_create_ref(mat)
test_edit_block(rows, cols)
test_read_block()
print("=" * 10)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment