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