Example #1
0
inline void testCI( const CellInterval & ci )
{
   WALBERLA_CHECK( !ci.empty() );

   Cell minCorner = ci.min();
   Cell maxCorner = ci.max();

   WALBERLA_CHECK_EQUAL( minCorner.x(), ci.xMin() );
   WALBERLA_CHECK_EQUAL( minCorner.y(), ci.yMin() );
   WALBERLA_CHECK_EQUAL( minCorner.z(), ci.zMin() );
   WALBERLA_CHECK_EQUAL( maxCorner.x(), ci.xMax() );
   WALBERLA_CHECK_EQUAL( maxCorner.y(), ci.yMax() );
   WALBERLA_CHECK_EQUAL( maxCorner.z(), ci.zMax() );

   WALBERLA_CHECK_EQUAL( ci.positiveIndicesOnly(), minCorner.positiveIndicesOnly() && maxCorner.positiveIndicesOnly() );

   WALBERLA_CHECK_EQUAL( ci, ci );
   WALBERLA_CHECK( !( ci != ci ) );
   WALBERLA_CHECK( ci.overlaps(ci) );

   WALBERLA_CHECK_EQUAL( ci.xSize(), ci.xMax() - ci.xMin() + 1 );
   WALBERLA_CHECK_EQUAL( ci.ySize(), ci.yMax() - ci.yMin() + 1 );
   WALBERLA_CHECK_EQUAL( ci.zSize(), ci.zMax() - ci.zMin() + 1 );

   WALBERLA_CHECK_EQUAL( ci.numCells(), ci.xSize() * ci.ySize() * ci.zSize() );

   CellInterval ci_copied( ci );
   CellInterval ci_assigned;
   ci_assigned = ci;

   WALBERLA_CHECK_EQUAL( ci, ci_copied );
   WALBERLA_CHECK_EQUAL( ci, ci_assigned );

   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() );
}