Changeset 4131


Ignore:
Timestamp:
Jan 21, 2022, 1:53:44 AM (20 months ago)
Author:
Peter
Message:

tests for Matrix View iterators; refs #975 and #202.

Location:
trunk/test
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/test/Makefile.am

    r4130 r4131  
    145145
    146146# tests not passing through yet
    147 XFAIL_TESTS =
     147XFAIL_TESTS = test/matrix_view.test
    148148
    149149DISTRIBUTED_TESTS = \
  • trunk/test/matrix_view.cc

    r4129 r4131  
    145145
    146146
     147template<class VIEW>
     148void test_iterators(test::Suite& suite, utility::Matrix m)
     149{
     150  suite.out () << __func__ << "\n";
     151  size_t n1 = 2;
     152  size_t n2 = 4;
     153  VIEW view(m, 1, 3, n1, n2);
     154
     155  suite.test_random_access_iterator(view.begin());
     156  suite.test_random_access_iterator(view.begin_row(0));
     157  suite.test_random_access_iterator(view.begin_column(0));
     158
     159  suite.out() << "testing ::row_iterator\n";
     160  size_t n = view.end_row(0) - view.begin_row(0);
     161  if (n != n2) {
     162    suite.add(false);
     163    suite.err() << "end - begin: " << n << "; expected " << n2 << "\n";
     164  }
     165  if (view.begin_row(0)[1] != view(0,1)) {
     166    suite.add(false);
     167    suite.err() << "error: view.begin_row(0)[1]: " << view.begin_row(0)[1]
     168                << "; expected: " << view(0,1) << "\n";
     169  }
     170
     171  suite.out() << "testing ::column_iterator\n";
     172  n = view.end_column(0) - view.begin_column(0);
     173  if (n != n1) {
     174    suite.add(false);
     175    suite.err() << "end - begin: " << n << "; expected " << n1 << "\n";
     176  }
     177  if (view.begin_column(0)[1] != view(1,0)) {
     178    suite.add(false);
     179    suite.err() << "error: view.begin_column(0)[1]: " << view.begin_column(0)[1]
     180                << "; expected: " << view(1,0) << "\n";
     181  }
     182
     183  suite.out() << "testing ::iterator\n";
     184  n = view.end() - view.begin();
     185  if (n != n1*n2) {
     186    suite.add(false);
     187    suite.err() << "end - begin: " << n << "; expected " << n1*n2 << "\n";
     188  }
     189  if (view.begin()[n2] != view(1,0)) {
     190    suite.add(false);
     191    suite.err() << "error: view.begin(n2)[1]: " << view.begin()[n2]
     192                << "; expected: " << view(1,0) << "\n";
     193  }
     194}
     195
     196
    147197void test_matrix_view(test::Suite& suite)
    148198{
     
    157207  test_constructors<MatrixView>(suite, m);
    158208  test_assignment<MatrixView>(suite, m);
     209  test_iterators<MatrixView>(suite, m);
    159210}
    160211
     
    170221      m(i,j) = 10*i + j;
    171222  test_constructors<MatrixConstView>(suite, m);
    172 }
     223  test_iterators<MatrixConstView>(suite, m);
     224}
Note: See TracChangeset for help on using the changeset viewer.