コード例 #1
0
ファイル: CellIntervalTest.cpp プロジェクト: lssfau/walberla
void testEmptyCI( const CellInterval & ci )
{
   WALBERLA_CHECK( ci.empty() );

   for(int i = 0; i < 100; ++i)
      WALBERLA_CHECK( !ci.contains(makeRandomCell()) );

   for(int i = 0; i < 100; ++i)
      WALBERLA_CHECK( !ci.overlaps(makeRandomInterval(1000000)) );

   std::stringstream ss;
   const int forty_two = 42;
   const int twenty_three = 23;
   ss << forty_two << ci << twenty_three;
   CellInterval rci;
   int i0, i1;
   ss >> i0 >> rci >> i1;
   WALBERLA_CHECK_EQUAL( ci, rci );
   WALBERLA_CHECK_EQUAL( i0, forty_two );
   WALBERLA_CHECK_EQUAL( i1, twenty_three );
   WALBERLA_CHECK( !ss.bad() );
   WALBERLA_CHECK( ss.eof() );

   size_t numIterations = 0;
   for( auto it = ci.begin(); it != ci.end() && numIterations < 1; ++it )
      ++numIterations;

   WALBERLA_CHECK_EQUAL( numIterations, 0 );
}
コード例 #2
0
ファイル: CellIntervalTest.cpp プロジェクト: lssfau/walberla
void testIterators( const CellInterval & ci )
{
   uint_t ctr = 0;
   auto it = ci.begin();
   for( cell_idx_t z = ci.zMin(); z <= ci.zMax(); ++z)
      for( cell_idx_t y = ci.yMin(); y <= ci.yMax(); ++y)
         for( cell_idx_t x = ci.xMin(); x <= ci.xMax(); ++x, ++it)
         {
            WALBERLA_CHECK( ci.contains( *it ) );

            WALBERLA_CHECK_EQUAL( x, it->x() );
            WALBERLA_CHECK_EQUAL( y, it->y() );
            WALBERLA_CHECK_EQUAL( z, it->z() );

            ++ctr;
         }

   WALBERLA_CHECK_EQUAL( it, ci.end() );
   WALBERLA_CHECK_EQUAL( ctr, ci.numCells() );
   WALBERLA_CHECK_EQUAL( std::distance( ci.begin(), ci.end() ), ci.numCells() );

   ctr = 0;
   auto it2 = ci.end();
   --it2;
   for( cell_idx_t z = ci.zMax(); z >= ci.zMin(); --z)
      for( cell_idx_t y = ci.yMax(); y >= ci.yMin(); --y)
         for( cell_idx_t x = ci.xMax(); x >= ci.xMin(); --x, --it2)
         {
            WALBERLA_CHECK( ci.contains( *it2 ) );

            WALBERLA_CHECK_EQUAL( x, it2->x() );
            WALBERLA_CHECK_EQUAL( y, it2->y() );
            WALBERLA_CHECK_EQUAL( z, it2->z() );

            ++ctr;
         }

         WALBERLA_CHECK_EQUAL( ctr, ci.numCells() );
         WALBERLA_CHECK_EQUAL( it2, --ci.begin() );
}