1 // Copyright (c) 2011 David Bellot
3 // Distributed under the Boost Software License, Version 1.0. (See
4 // accompanying file LICENSE_1_0.txt or copy at
5 // http://www.boost.org/LICENSE_1_0.txt)
7 #include "boost/numeric/ublas/matrix_sparse.hpp"
9 #define BOOST_TEST_MODULE SparseMatrixErasureTest
10 #include <boost/test/included/unit_test.hpp>
13 BOOST_AUTO_TEST_CASE( compressed_matrix_erase_after_end )
15 boost::numeric::ublas::compressed_matrix<int, boost::numeric::ublas::row_major > A(2, 2);
17 BOOST_CHECK_EQUAL( A.filled1(), (std::size_t) 1 );
18 BOOST_CHECK_EQUAL( A.index1_data()[0], (std::size_t) 0 );
22 BOOST_CHECK_EQUAL( A.nnz(), (std::size_t) 1 );
23 BOOST_CHECK_EQUAL( A.filled1(), (std::size_t) 2 );
26 BOOST_CHECK_EQUAL( A.index1_data()[0], (std::size_t) 0 );
27 BOOST_CHECK_EQUAL( A.index2_data()[0], (std::size_t) 0 );
28 BOOST_CHECK_EQUAL( A.value_data()[0], 1 );
29 // check end of list marker
30 BOOST_CHECK_EQUAL( A.index1_data()[1], (std::size_t) 1 );
34 BOOST_CHECK_EQUAL( A.nnz(), (std::size_t) 1 );
35 BOOST_CHECK_EQUAL( A.filled1(), (std::size_t) 2 );
36 BOOST_CHECK_EQUAL( A.filled2(), (std::size_t) 1 );
39 BOOST_CHECK_EQUAL( A.index1_data()[0], (std::size_t) 0 );
40 BOOST_CHECK_EQUAL( A.index2_data()[0], (std::size_t) 0 );
41 BOOST_CHECK_EQUAL( A.value_data()[0], 1 );
42 // check end of list marker
43 BOOST_CHECK_EQUAL( A.index1_data()[1], (std::size_t) 1 );
47 BOOST_CHECK_EQUAL( A.nnz(), (std::size_t) 0 );
48 BOOST_CHECK_EQUAL( A.filled1(), (std::size_t) 2 );
49 BOOST_CHECK_EQUAL( A.filled2(),(std::size_t) 0 );
50 BOOST_CHECK_EQUAL( A.index1_data()[0], (std::size_t) 0 );
54 BOOST_AUTO_TEST_CASE( compressed_matrix_erase_in_the_middle )
56 boost::numeric::ublas::compressed_matrix<int, boost::numeric::ublas::row_major > A(2, 2);
58 BOOST_CHECK_EQUAL( A.filled1(), (std::size_t) 1 );
59 BOOST_CHECK_EQUAL( A.filled2(), (std::size_t) 0 );
60 BOOST_CHECK_EQUAL( A.index1_data()[0], (std::size_t) 0 );
62 A.insert_element(0,1,5);
64 BOOST_CHECK_EQUAL( A.filled1(), (std::size_t) 2 );
65 BOOST_CHECK_EQUAL( A.filled2(), (std::size_t) 1 );
68 BOOST_CHECK_EQUAL( A.index1_data()[0], (std::size_t) 0 );
69 BOOST_CHECK_EQUAL( A.index2_data()[0], (std::size_t) 1 );
70 BOOST_CHECK_EQUAL( A.value_data()[0], 5 );
71 // check end of list marker
72 BOOST_CHECK_EQUAL( A.index1_data()[1], (std::size_t) 1 );
74 A.insert_element(0,0,4);
76 BOOST_CHECK_EQUAL( A.filled1(), (std::size_t) 2 );
77 BOOST_CHECK_EQUAL( A.filled2(), (std::size_t) 2 );
80 BOOST_CHECK_EQUAL( A.index2_data()[0], (std::size_t) 0 );
81 BOOST_CHECK_EQUAL( A.value_data()[0], 4 );
82 // check previous element
83 BOOST_CHECK_EQUAL( A.index2_data()[1], (std::size_t) 1 );
84 BOOST_CHECK_EQUAL( A.value_data()[1], 5 );
85 // check end of list marker
86 BOOST_CHECK_EQUAL( A.index1_data()[1], (std::size_t) 2 );
90 BOOST_CHECK_EQUAL( A.filled1(), (std::size_t) 2 );
91 BOOST_CHECK_EQUAL( A.filled2(), (std::size_t) 1 );
93 BOOST_CHECK_EQUAL( A.index2_data()[0], (std::size_t) 1 );
94 BOOST_CHECK_EQUAL( A.value_data()[0], 5 );
96 BOOST_CHECK_EQUAL( A.index1_data()[0], (std::size_t) 0 );
97 BOOST_CHECK_EQUAL( A.index1_data()[1], (std::size_t) 1 );
101 BOOST_CHECK_EQUAL( A.filled1(), (std::size_t) 2 );
102 BOOST_CHECK_EQUAL( A.filled2(), (std::size_t) 0 );
103 BOOST_CHECK_EQUAL( A.index1_data()[0], (std::size_t) 0 );
104 BOOST_CHECK_EQUAL( A.index1_data()[1], (std::size_t) 0 );