1 #include "boost/numeric/ublas/matrix_sparse.hpp"
3 #define BOOST_TEST_MODULE SparseMatrixErasureTest
4 #include <boost/test/included/unit_test.hpp>
7 BOOST_AUTO_TEST_CASE( compressed_matrix_erase_after_end )
9 boost::numeric::ublas::compressed_matrix<int, boost::numeric::ublas::row_major > A(2, 2);
11 BOOST_CHECK_EQUAL( A.filled1(), (int) 1 );
12 BOOST_CHECK_EQUAL( A.index1_data()[0], 0 );
16 BOOST_CHECK_EQUAL( A.nnz(), 1 );
17 BOOST_CHECK_EQUAL( A.filled1(), 2 );
20 BOOST_CHECK_EQUAL( A.index1_data()[0], 0 );
21 BOOST_CHECK_EQUAL( A.index2_data()[0], 0 );
22 BOOST_CHECK_EQUAL( A.value_data()[0], 1 );
23 // check end of list marker
24 BOOST_CHECK_EQUAL( A.index1_data()[1], 1 );
28 BOOST_CHECK_EQUAL( A.nnz(), 1 );
29 BOOST_CHECK_EQUAL( A.filled1(), 2 );
30 BOOST_CHECK_EQUAL( A.filled2(), 1 );
33 BOOST_CHECK_EQUAL( A.index1_data()[0], 0 );
34 BOOST_CHECK_EQUAL( A.index2_data()[0], 0 );
35 BOOST_CHECK_EQUAL( A.value_data()[0], 1 );
36 // check end of list marker
37 BOOST_CHECK_EQUAL( A.index1_data()[1], 1 );
41 BOOST_CHECK_EQUAL( A.nnz(), 0 );
42 BOOST_CHECK_EQUAL( A.filled1(), 2 );
43 BOOST_CHECK_EQUAL( A.filled2(), 0 );
44 BOOST_CHECK_EQUAL( A.index1_data()[0], 0 );
48 BOOST_AUTO_TEST_CASE( compressed_matrix_erase_in_the_middle )
50 boost::numeric::ublas::compressed_matrix<int, boost::numeric::ublas::row_major > A(2, 2);
52 BOOST_CHECK_EQUAL( A.filled1(), 1 );
53 BOOST_CHECK_EQUAL( A.filled2(), 0 );
54 BOOST_CHECK_EQUAL( A.index1_data()[0], 0 );
56 A.insert_element(0,1,5);
58 BOOST_CHECK_EQUAL( A.filled1(), 2 );
59 BOOST_CHECK_EQUAL( A.filled2(), 1 );
62 BOOST_CHECK_EQUAL( A.index1_data()[0], 0 );
63 BOOST_CHECK_EQUAL( A.index2_data()[0], 1 );
64 BOOST_CHECK_EQUAL( A.value_data()[0], 5 );
65 // check end of list marker
66 BOOST_CHECK_EQUAL( A.index1_data()[1], 1 );
68 A.insert_element(0,0,4);
70 BOOST_CHECK_EQUAL( A.filled1(), 2 );
71 BOOST_CHECK_EQUAL( A.filled2(), 2 );
74 BOOST_CHECK_EQUAL( A.index2_data()[0], 0 );
75 BOOST_CHECK_EQUAL( A.value_data()[0], 4 );
76 // check previous element
77 BOOST_CHECK_EQUAL( A.index2_data()[1], 1 );
78 BOOST_CHECK_EQUAL( A.value_data()[1], 5 );
79 // check end of list marker
80 BOOST_CHECK_EQUAL( A.index1_data()[1], 2 );
84 BOOST_CHECK_EQUAL( A.filled1(), 2 );
85 BOOST_CHECK_EQUAL( A.filled2(), 1 );
87 BOOST_CHECK_EQUAL( A.index2_data()[0], 1 );
88 BOOST_CHECK_EQUAL( A.value_data()[0], 5 );
90 BOOST_CHECK_EQUAL( A.index1_data()[0], 0 );
91 BOOST_CHECK_EQUAL( A.index1_data()[1], 1 );
95 BOOST_CHECK_EQUAL( A.filled1(), 2 );
96 BOOST_CHECK_EQUAL( A.filled2(), 0 );
97 BOOST_CHECK_EQUAL( A.index1_data()[0], 0 );
98 BOOST_CHECK_EQUAL( A.index1_data()[1], 0 );