diff --git a/unittest/CMakeLists.txt b/unittest/CMakeLists.txt index 747401e2c28abdb796cff0dc0ccda2e592fb865d..17bf479fe818ee27c9e0997c626b4399b797b4ef 100644 --- a/unittest/CMakeLists.txt +++ b/unittest/CMakeLists.txt @@ -40,6 +40,7 @@ ENDIF() ADD_PYTHON_UNIT_TEST("py-matrix" "unittest/python/test_matrix.py" "unittest") ADD_PYTHON_UNIT_TEST("py-geometry" "unittest/python/test_geometry.py" "unittest") ADD_PYTHON_UNIT_TEST("py-complex" "unittest/python/test_complex.py" "unittest") +ADD_PYTHON_UNIT_TEST("py-return-by-ref" "unittest/python/test_return_by_ref.py" "unittest") ADD_PYTHON_UNIT_TEST("py-switch" "unittest/python/test_switch.py" "python/eigenpy") SET_TESTS_PROPERTIES("py-switch" PROPERTIES DEPENDS ${PYWRAP}) diff --git a/unittest/python/test_return_by_ref.py b/unittest/python/test_return_by_ref.py new file mode 100644 index 0000000000000000000000000000000000000000..969f84672335af20ec65b1d91cb64e26c17f1830 --- /dev/null +++ b/unittest/python/test_return_by_ref.py @@ -0,0 +1,34 @@ +from return_by_ref import Matrix, RowMatrix, Vector +import numpy as np + +def test(mat): + + m_ref = mat.ref() + m_ref.fill(0) + m_copy = mat.copy() + assert np.array_equal(m_ref,m_copy) + + m_const_ref = mat.const_ref() + assert np.array_equal(m_const_ref,m_copy) + assert np.array_equal(m_const_ref,m_ref) + + m_ref.fill(1) + assert not np.array_equal(m_ref,m_copy) + assert np.array_equal(m_const_ref,m_ref) + + try: + m_const_ref.fill(2) + assert False + except: + assert True + +rows = 10 +cols = 30 + +mat = Matrix(rows,cols) +row_mat = RowMatrix(rows,cols) +vec = Vector(rows,1) + +test(mat) +test(row_mat) +test(vec)