MOAB: Mesh Oriented datABase  (version 5.5.0)
Test_MBMeshSet.cpp File Reference
#include "MeshSet.hpp"
#include "AEntityFactory.hpp"
#include "TestUtil.hpp"
#include "moab/Core.hpp"
#include "moab/SetIterator.hpp"
#include <iostream>
+ Include dependency graph for Test_MBMeshSet.cpp:

Go to the source code of this file.

Enumerations

enum  BoolOp { UNITE , INTERSECT , SUBTRACT }
 

Functions

void test_add_entities (unsigned flags)
 test add_entities, get_entities, num_entities More...
 
void test_remove_entities (unsigned flags)
 test remove_entities, get_entities, num_entities More...
 
void test_entities_by_type (unsigned flags)
 test get_entities_by_type, num_entities_by_type More...
 
void test_entities_by_dimension (unsigned flags)
 test get_entities_by_dimension, num_entities_by_dimension More...
 
void test_subtract (unsigned flags1, unsigned flags2)
 test subtract_meshset More...
 
void test_intersect (unsigned flags1, unsigned flags2)
 test intersect_meshset More...
 
void test_unite (unsigned flags1, unsigned flags2)
 test unite_meshset More...
 
void test_contains_entities (unsigned flags)
 test MeshSet::contains_entities More...
 
void test_clear (unsigned flags)
 test clear_meshset More...
 
void make_mesh (Interface &iface)
 Create 10x10x10 hex mesh. More...
 
void make_mesh (Interface &iface, EntityHandle &vstart, EntityHandle &vend, EntityHandle &hstart, EntityHandle &hend)
 Create 10x10x10 hex mesh, return ranges of handles. More...
 
void print_handle_vect (const char *prefix, const std::vector< EntityHandle > &vect)
 Print std::vector<EntityHandle> More...
 
void print_mbrange (const char *prefix, const Range &range)
 Print Range. More...
 
bool check_set_contents (Core &mb, EntityHandle set, const std::vector< EntityHandle > &expected)
 Compare set contents against passed vector, and if MESHSET_TRACK_OWNER then check adjacencies. More...
 
bool check_set_contents (Core &mb, EntityType type, EntityHandle set, unsigned flags)
 Compare result of get_entities_by_type to result of get_entities_by_handle. More...
 
bool check_set_contents (Core &mb, int dim, EntityHandle set, unsigned flags)
 Compare result of get_entities_by_dimension to result of get_entities_by_handle. More...
 
void remove_from_back (std::vector< EntityHandle > &vect, const Range &range)
 For each entry in range, if one or more occurances in vect, remove last occurance from vect. More...
 
bool test_boolean (Core &mb, BoolOp op, unsigned flags1, const Range &set1_ents, unsigned flags2, const Range &set2_ents)
 Perform boolean op on two entity sets and verify result. More...
 
void test_iterator (Interface &moab, SetIterator *iter, EntityHandle set, EntityType etype, int dim)
 
void test_iterators (unsigned int flags, bool type, bool dim)
 
void test_all_iterators ()
 
void test_add_entities_ordered ()
 
void test_add_entities_set ()
 
void test_add_entities_ordered_tracking ()
 
void test_add_entities_set_tracking ()
 
void test_remove_entities_ordered ()
 
void test_remove_entities_set ()
 
void test_remove_entities_ordered_tracking ()
 
void test_remove_entities_set_tracking ()
 
void test_entities_by_type_ordered ()
 
void test_entities_by_type_set ()
 
void test_entities_by_dim_ordered ()
 
void test_entities_by_dim_set ()
 
void test_subtract_set_set ()
 
void test_subtract_set_ordered ()
 
void test_subtract_ordered_set ()
 
void test_subtract_ordered_ordered ()
 
void test_subtract_set_set_tracking ()
 
void test_subtract_set_ordered_tracking ()
 
void test_subtract_ordered_set_tracking ()
 
void test_subtract_ordered_ordered_tracking ()
 
void test_itersect_set_set ()
 
void test_itersect_set_ordered ()
 
void test_itersect_ordered_set ()
 
void test_itersect_ordered_ordered ()
 
void test_itersect_set_set_tracking ()
 
void test_itersect_set_ordered_tracking ()
 
void test_itersect_ordered_set_tracking ()
 
void test_itersect_ordered_ordered_tracking ()
 
void test_unite_set_set ()
 
void test_unite_set_ordered ()
 
void test_unite_ordered_set ()
 
void test_unite_ordered_ordered ()
 
void test_unite_set_set_tracking ()
 
void test_unite_set_ordered_tracking ()
 
void test_unite_ordered_set_tracking ()
 
void test_unite_ordered_ordered_tracking ()
 
void test_contains_entities_ordered ()
 
void test_contains_entities_set ()
 
void test_clear_ordered ()
 
void test_clear_set ()
 
void test_clear_ordered_tracking ()
 
void test_clear_set_tracking ()
 
void regression_insert_set_1 ()
 
int main ()
 
template<typename iter_type >
void print_handles (std::ostream &str, const char *prefix, iter_type begin, iter_type end)
 
bool compare_set_contents (unsigned flags, const std::vector< EntityHandle > &expected, int set_count, std::vector< EntityHandle > &vect, const Range &range)
 

Enumeration Type Documentation

◆ BoolOp

enum BoolOp
Enumerator
UNITE 
INTERSECT 
SUBTRACT 

Definition at line 46 of file Test_MBMeshSet.cpp.

47 {
48  UNITE,
49  INTERSECT,
50  SUBTRACT
51 };

Function Documentation

◆ check_set_contents() [1/3]

bool check_set_contents ( Core mb,
EntityHandle  set,
const std::vector< EntityHandle > &  expected 
)

Compare set contents against passed vector, and if MESHSET_TRACK_OWNER then check adjacencies.

Definition at line 479 of file Test_MBMeshSet.cpp.

480 {
481  unsigned flags;
482  ErrorCode rval = mb.get_meshset_options( set, flags );CHECK_ERR( rval );
483 
484  int count;
485  std::vector< EntityHandle > vect;
486  Range range;
487  rval = mb.get_entities_by_handle( set, vect, false );CHECK_ERR( rval );
488  rval = mb.get_entities_by_handle( set, range, false );CHECK_ERR( rval );
489  rval = mb.get_number_entities_by_handle( set, count, false );CHECK_ERR( rval );
490 
491  if( !compare_set_contents( flags, expected, count, vect, range ) ) return false;
492 
493  if( !( flags & MESHSET_TRACK_OWNER ) ) return true;
494 
495  // get all entitites with an adjacency to the set
496  std::vector< EntityHandle > adj;
497  Range all, adjacent;
498  Range::iterator in = adjacent.begin();
499  mb.get_entities_by_handle( 0, all );
500  for( Range::iterator i = all.begin(); i != all.end(); ++i )
501  {
502  adj.clear();
503  rval = mb.a_entity_factory()->get_adjacencies( *i, adj );CHECK_ERR( rval );
504  std::vector< EntityHandle >::iterator j = std::lower_bound( adj.begin(), adj.end(), set );
505  if( j != adj.end() && *j == set ) in = adjacent.insert( in, *i, *i );
506  }
507 
508  if( range != adjacent )
509  {
510  std::cout << "Incorrect adjacent entities for tracking set" << std::endl;
511  print_mbrange( "Expected", range );
512  print_mbrange( "Actual", adjacent );
513  return false;
514  }
515 
516  return true;
517 }

References moab::Core::a_entity_factory(), moab::Range::begin(), CHECK_ERR, compare_set_contents(), moab::Range::end(), ErrorCode, moab::AEntityFactory::get_adjacencies(), moab::Core::get_entities_by_handle(), moab::Core::get_meshset_options(), moab::Core::get_number_entities_by_handle(), moab::Range::insert(), mb, MESHSET_TRACK_OWNER, and print_mbrange().

Referenced by test_add_entities(), test_boolean(), test_clear(), test_entities_by_dimension(), test_entities_by_type(), and test_remove_entities().

◆ check_set_contents() [2/3]

bool check_set_contents ( Core mb,
EntityType  type,
EntityHandle  set,
unsigned  flags 
)

Compare result of get_entities_by_type to result of get_entities_by_handle.

Definition at line 519 of file Test_MBMeshSet.cpp.

520 {
521  ErrorCode rval;
522  int count;
523  std::vector< EntityHandle > vect, expected;
524  Range range;
525 
526  rval = mb.get_entities_by_handle( set, expected, false );CHECK_ERR( rval );
527  std::vector< EntityHandle >::iterator i = expected.begin();
528  while( i != expected.end() )
529  {
530  if( TYPE_FROM_HANDLE( *i ) != type )
531  i = expected.erase( i );
532  else
533  ++i;
534  }
535 
536  rval = mb.get_entities_by_type( set, type, range, false );CHECK_ERR( rval );
537  rval = mb.get_number_entities_by_type( set, type, count, false );CHECK_ERR( rval );
538 
539  std::copy( range.begin(), range.end(), std::back_inserter( vect ) );
540  return compare_set_contents( flags, expected, count, vect, range );
541 }

References moab::Range::begin(), CHECK_ERR, compare_set_contents(), moab::Range::end(), ErrorCode, moab::Core::get_entities_by_handle(), moab::Core::get_entities_by_type(), moab::Core::get_number_entities_by_type(), mb, and moab::TYPE_FROM_HANDLE().

◆ check_set_contents() [3/3]

bool check_set_contents ( Core mb,
int  dim,
EntityHandle  set,
unsigned  flags 
)

Compare result of get_entities_by_dimension to result of get_entities_by_handle.

Definition at line 543 of file Test_MBMeshSet.cpp.

544 {
545  ErrorCode rval;
546  int count;
547  std::vector< EntityHandle > vect, expected;
548  Range range;
549 
550  rval = mb.get_entities_by_handle( set, expected, false );CHECK_ERR( rval );
551  std::vector< EntityHandle >::iterator i = expected.begin();
552  while( i != expected.end() )
553  {
554  if( CN::Dimension( TYPE_FROM_HANDLE( *i ) ) != dim )
555  i = expected.erase( i );
556  else
557  ++i;
558  }
559 
560  rval = mb.get_entities_by_dimension( set, dim, range, false );CHECK_ERR( rval );
561  rval = mb.get_number_entities_by_dimension( set, dim, count, false );CHECK_ERR( rval );
562 
563  std::copy( range.begin(), range.end(), std::back_inserter( vect ) );
564  return compare_set_contents( flags, expected, count, vect, range );
565 }

References moab::Range::begin(), CHECK_ERR, compare_set_contents(), dim, moab::CN::Dimension(), moab::Range::end(), ErrorCode, moab::Core::get_entities_by_dimension(), moab::Core::get_entities_by_handle(), moab::Core::get_number_entities_by_dimension(), mb, and moab::TYPE_FROM_HANDLE().

◆ compare_set_contents()

bool compare_set_contents ( unsigned  flags,
const std::vector< EntityHandle > &  expected,
int  set_count,
std::vector< EntityHandle > &  vect,
const Range range 
)

Definition at line 422 of file Test_MBMeshSet.cpp.

427 {
428 
429  std::vector< EntityHandle > sorted( expected );
430  std::sort( sorted.begin(), sorted.end() );
431  sorted.erase( std::unique( sorted.begin(), sorted.end() ), sorted.end() );
432 
433  int expected_size = 0;
434  if( flags & MESHSET_ORDERED )
435  {
436  if( expected != vect )
437  {
438  std::cout << "Incorrect set contents from vector-based query" << std::endl;
439  print_handle_vect( "Expected", expected );
440  print_handle_vect( "Actual", vect );
441  return false;
442  }
443  expected_size = expected.size();
444  }
445  else
446  {
447  if( sorted != vect )
448  {
449  std::cout << "Incorrect set contents from vector-based query" << std::endl;
450  print_handle_vect( "Expected", sorted );
451  print_handle_vect( "Actual", vect );
452  return false;
453  }
454  expected_size = sorted.size();
455  }
456 
457  if( expected_size != set_count )
458  {
459  std::cout << "Incorrect size for entity set" << std::endl;
460  std::cout << "Expected: " << expected_size << std::endl;
461  std::cout << "Actual: " << set_count << std::endl;
462  return false;
463  }
464 
465  vect.clear();
466  vect.resize( range.size() );
467  std::copy( range.begin(), range.end(), vect.begin() );
468  if( sorted != vect )
469  {
470  std::cout << "Incorrect set contents from mbrange-based query" << std::endl;
471  print_handle_vect( "Expected", vect );
472  print_mbrange( "Actual", range );
473  return false;
474  }
475 
476  return true;
477 }

References moab::Range::begin(), moab::Range::end(), print_handle_vect(), print_mbrange(), and moab::Range::size().

Referenced by check_set_contents().

◆ main()

int main ( )

Definition at line 244 of file Test_MBMeshSet.cpp.

245 {
246  int err = 0;
247 
252 
257 
262 
271 
280 
281  err += RUN_TEST( test_unite_set_set );
289 
292 
293  err += RUN_TEST( test_clear_ordered );
294  err += RUN_TEST( test_clear_set );
297 
299 
300  err += RUN_TEST( test_all_iterators );
301 
302  if( !err )
303  printf( "ALL TESTS PASSED\n" );
304  else
305  printf( "%d TESTS FAILED\n", err );
306 
307  return err;
308 }

References regression_insert_set_1(), RUN_TEST, test_add_entities_ordered(), test_add_entities_ordered_tracking(), test_add_entities_set(), test_add_entities_set_tracking(), test_all_iterators(), test_clear_ordered(), test_clear_ordered_tracking(), test_clear_set(), test_clear_set_tracking(), test_contains_entities_ordered(), test_contains_entities_set(), test_entities_by_dim_ordered(), test_entities_by_dim_set(), test_entities_by_type_ordered(), test_entities_by_type_set(), test_itersect_ordered_ordered(), test_itersect_ordered_ordered_tracking(), test_itersect_ordered_set(), test_itersect_ordered_set_tracking(), test_itersect_set_ordered(), test_itersect_set_ordered_tracking(), test_itersect_set_set(), test_itersect_set_set_tracking(), test_remove_entities_ordered(), test_remove_entities_ordered_tracking(), test_remove_entities_set(), test_remove_entities_set_tracking(), test_subtract_ordered_ordered(), test_subtract_ordered_ordered_tracking(), test_subtract_ordered_set(), test_subtract_ordered_set_tracking(), test_subtract_set_ordered(), test_subtract_set_ordered_tracking(), test_subtract_set_set(), test_subtract_set_set_tracking(), test_unite_ordered_ordered(), test_unite_ordered_ordered_tracking(), test_unite_ordered_set(), test_unite_ordered_set_tracking(), test_unite_set_ordered(), test_unite_set_ordered_tracking(), test_unite_set_set(), and test_unite_set_set_tracking().

◆ make_mesh() [1/2]

void make_mesh ( Interface iface)

Create 10x10x10 hex mesh.

Definition at line 311 of file Test_MBMeshSet.cpp.

312 {
313  const int dim = 10;
314 
315  // create vertices
316  EntityHandle prev_handle = 0;
317  for( int z = 0; z <= dim; ++z )
318  {
319  for( int y = 0; y <= dim; ++y )
320  {
321  for( int x = 0; x <= dim; ++x )
322  {
323  const double coords[] = { static_cast< double >( x ), static_cast< double >( y ),
324  static_cast< double >( z ) };
325  EntityHandle new_handle = 0;
326  ErrorCode rval = iface.create_vertex( coords, new_handle );CHECK_ERR( rval );
327  CHECK_EQUAL( ++prev_handle, new_handle );
328  }
329  }
330  }
331 
332  // create hexes
333  const int dim1 = dim + 1;
334  const int dimq = dim1 * dim1;
335  prev_handle = FIRST_HANDLE( MBHEX );
336  for( int z = 0; z < dim; ++z )
337  {
338  for( int y = 0; y < dim; ++y )
339  {
340  for( int x = 0; x < dim; ++x )
341  {
342  const EntityHandle off = 1 + x + dim1 * y + dimq * z;
343  const EntityHandle conn[] = { off, off + 1, off + 1 + dim1, off + dim1,
344  off + dimq, off + 1 + dimq, off + 1 + dim1 + dimq, off + dim1 + dimq };
345  EntityHandle new_handle = 0;
346  ErrorCode rval = iface.create_element( MBHEX, conn, 8, new_handle );CHECK_ERR( rval );
347  CHECK_EQUAL( prev_handle++, new_handle );
348  }
349  }
350  }
351 }

References CHECK_EQUAL, CHECK_ERR, moab::Interface::create_element(), moab::Interface::create_vertex(), dim, ErrorCode, moab::FIRST_HANDLE(), iface, and MBHEX.

Referenced by make_mesh(), test_add_entities(), test_clear(), test_entities_by_dimension(), test_entities_by_type(), test_intersect(), test_iterators(), test_remove_entities(), test_subtract(), and test_unite().

◆ make_mesh() [2/2]

void make_mesh ( Interface iface,
EntityHandle vstart,
EntityHandle vend,
EntityHandle hstart,
EntityHandle hend 
)

Create 10x10x10 hex mesh, return ranges of handles.

Definition at line 353 of file Test_MBMeshSet.cpp.

358 {
359  make_mesh( mb );
360 
361  // Get handle ranges, and validate assumption that handles
362  // are contiguous.
363  Range range;
364  ErrorCode rval = mb.get_entities_by_type( 0, MBVERTEX, range );CHECK_ERR( rval );
365  first_vert = range.front();
366  last_vert = range.back();
367  CHECK_EQUAL( (EntityHandle)1331, last_vert - first_vert + 1 );
368  range.clear();
369  rval = mb.get_entities_by_type( 0, MBHEX, range );CHECK_ERR( rval );
370  first_hex = range.front();
371  last_hex = range.back();
372  CHECK_EQUAL( (EntityHandle)1000, last_hex - first_hex + 1 );
373 }

References moab::Range::back(), CHECK_EQUAL, CHECK_ERR, moab::Range::clear(), ErrorCode, moab::Range::front(), moab::Core::get_entities_by_type(), make_mesh(), mb, MBHEX, and MBVERTEX.

◆ print_handle_vect()

void print_handle_vect ( const char *  prefix,
const std::vector< EntityHandle > &  vect 
)

Print std::vector<EntityHandle>

Definition at line 412 of file Test_MBMeshSet.cpp.

413 {
414  print_handles( std::cout, prefix, vect.begin(), vect.end() );
415 }

References print_handles().

Referenced by compare_set_contents().

◆ print_handles()

template<typename iter_type >
void print_handles ( std::ostream &  str,
const char *  prefix,
iter_type  begin,
iter_type  end 
)

Definition at line 376 of file Test_MBMeshSet.cpp.

377 {
378  if( prefix ) str << prefix << ':';
379  if( begin == end )
380  {
381  str << " (empty)" << std::endl;
382  return;
383  }
384 
385  iter_type i = begin;
386  EntityType prev_type = TYPE_FROM_HANDLE( *i );
387  EntityHandle prev_ent = *i;
388  str << ' ' << CN::EntityTypeName( prev_type ) << ' ' << ID_FROM_HANDLE( *i );
389  for( ;; )
390  {
391  iter_type j = i;
392  for( ++j, ++prev_ent; j != end && *j == prev_ent; ++j, ++prev_ent )
393  ;
394  --prev_ent;
395  if( prev_ent - *i > 1 )
396  str << "-" << ID_FROM_HANDLE( prev_ent );
397  else if( prev_ent - *i == 1 )
398  str << ", " << ID_FROM_HANDLE( prev_ent );
399 
400  i = j;
401  if( i == end ) break;
402 
403  str << ',';
404  if( TYPE_FROM_HANDLE( *i ) != prev_type )
405  str << ' ' << CN::EntityTypeName( prev_type = TYPE_FROM_HANDLE( *i ) );
406  str << ' ' << ID_FROM_HANDLE( *i );
407  prev_ent = *i;
408  }
409  str << std::endl;
410 }

References moab::CN::EntityTypeName(), moab::ID_FROM_HANDLE(), and moab::TYPE_FROM_HANDLE().

Referenced by print_handle_vect(), and print_mbrange().

◆ print_mbrange()

void print_mbrange ( const char *  prefix,
const Range range 
)

Print Range.

Definition at line 417 of file Test_MBMeshSet.cpp.

418 {
419  print_handles( std::cout, prefix, range.begin(), range.end() );
420 }

References moab::Range::begin(), moab::Range::end(), and print_handles().

Referenced by check_set_contents(), and compare_set_contents().

◆ regression_insert_set_1()

void regression_insert_set_1 ( )

Definition at line 1209 of file Test_MBMeshSet.cpp.

1210 {
1211  EntityHandle e = CREATE_HANDLE( MBEDGE, 0 );
1212  EntityHandle q = CREATE_HANDLE( MBQUAD, 0 );
1213  const EntityHandle initial_ranges[] = {
1214  0x7fe, 0x7fe, 0x802, 0x80b, 0xb3a, 0xb3c, 0xb6b, 0xb6b, 0xbed,
1215  0xbee, 0x19ff, 0x19ff, 0x1a0b, 0x1a0b, 0x1a16, 0x1a17, 0x1a56, 0x1a57,
1216  0x2554, 0x255c, e + 0x0099, e + 0x009b, e + 0x00c0, e + 0x00c2, e + 0x0729, e + 0x0732, e + 0x0a3b,
1217  e + 0x0a3d, e + 0x0ba9, e + 0x0bab, e + 0x2322, e + 0x232b, q + 0x00c, q + 0x017, q + 0x0e9, q + 0x112,
1218  q + 0x2f2, q + 0x303, q + 0x67e, q + 0x6a5, q + 0x866, q + 0x871, q + 0x8f5, q + 0x900, q + 0xc06,
1219  q + 0xc17, q + 0xc7e, q + 0xc9b, q + 0xce0, q + 0xd07 };
1220 
1221  const EntityHandle new_ranges[] = { 0x7e1, 0x829, 0xb37, 0xb63, 0xb6b, 0xb6b, 0xb73, 0xb75, 0xbed,
1222  0xbee, 0xc0b, 0xc10, 0x19fd, 0x19fd, 0x19ff, 0x19ff, 0x1a02, 0x1a04,
1223  0x1a0b, 0x1a0b, 0x1a11, 0x1a17, 0x1a1b, 0x1a23, 0x1a56, 0x1a57, 0x1a7c,
1224  0x1a96, 0x1bb5, 0x1bba, 0x254b, 0x2565, 0x25a5, 0x25bf };
1225 
1226  Core moab;
1227  Interface& mb = moab;
1228  ErrorCode rval;
1229 
1230  EntityHandle set;
1231  rval = mb.create_meshset( MESHSET_SET, set );CHECK_ERR( rval );
1232 
1233  Range init, add;
1234  for( size_t i = 0; i < sizeof( initial_ranges ) / sizeof( initial_ranges[0] ); i += 2 )
1235  init.insert( initial_ranges[i], initial_ranges[i + 1] );
1236  for( size_t i = 0; i < sizeof( new_ranges ) / sizeof( new_ranges[0] ); i += 2 )
1237  add.insert( new_ranges[i], new_ranges[i + 1] );
1238 
1239  rval = mb.add_entities( set, init );CHECK_ERR( rval );
1240  rval = mb.add_entities( set, add );CHECK_ERR( rval );
1241 
1242  std::vector< EntityHandle > contents;
1243  rval = mb.get_entities_by_handle( set, contents );CHECK_ERR( rval );
1244 
1245  init.merge( add );
1246  Range::iterator r = init.begin();
1247  std::vector< EntityHandle >::iterator v = contents.begin();
1248  for( ;; )
1249  {
1250  if( r == init.end() || v == contents.end() )
1251  {
1252  CHECK( r == init.end() );
1253  CHECK( v == contents.end() );
1254  break;
1255  }
1256  CHECK_EQUAL( *r, *v );
1257  ++r;
1258  ++v;
1259  }
1260 }

References moab::Core::add_entities(), CHECK, CHECK_EQUAL, CHECK_ERR, moab::CREATE_HANDLE(), moab::Core::create_meshset(), ErrorCode, moab::Core::get_entities_by_handle(), init(), moab::Range::insert(), mb, MBEDGE, MBQUAD, and MESHSET_SET.

Referenced by main().

◆ remove_from_back()

void remove_from_back ( std::vector< EntityHandle > &  vect,
const Range range 
)

For each entry in range, if one or more occurances in vect, remove last occurance from vect.

Definition at line 744 of file Test_MBMeshSet.cpp.

745 {
746  for( Range::const_iterator r = range.begin(); r != range.end(); ++r )
747  {
748  std::vector< EntityHandle >::reverse_iterator i = find( vect.rbegin(), vect.rend(), *r );
749  if( i != vect.rend() ) *i = 0;
750  }
751  std::vector< EntityHandle >::iterator j = vect.begin();
752  while( j != vect.end() )
753  {
754  if( *j == 0 )
755  j = vect.erase( j );
756  else
757  ++j;
758  }
759 }

References moab::Range::begin(), and moab::Range::end().

Referenced by test_remove_entities().

◆ test_add_entities()

void test_add_entities ( unsigned  flags)

test add_entities, get_entities, num_entities

Definition at line 567 of file Test_MBMeshSet.cpp.

568 {
569  Core mb;
570  make_mesh( mb );
571 
572  EntityHandle set;
573  ErrorCode rval = mb.create_meshset( flags, set );CHECK_ERR( rval );
574 
575  std::vector< EntityHandle > contents, vect;
576  Range range;
577 
578  range.clear();
579  range.insert( 11, 20 );
580  std::copy( range.begin(), range.end(), std::back_inserter( contents ) );
581  rval = mb.add_entities( set, range );CHECK_ERR( rval );
582  // [11,20]
583  CHECK( check_set_contents( mb, set, contents ) );
584 
585  range.clear();
586  range.insert( 31, 40 );
587  std::copy( range.begin(), range.end(), std::back_inserter( contents ) );
588  rval = mb.add_entities( set, range );CHECK_ERR( rval );
589  // [11,20],[31,40]
590  CHECK( check_set_contents( mb, set, contents ) );
591 
592  range.clear();
593  range.insert( 51, 60 );
594  std::copy( range.begin(), range.end(), std::back_inserter( contents ) );
595  rval = mb.add_entities( set, range );CHECK_ERR( rval );
596  // [11,20],[31,40],[51,60]
597  CHECK( check_set_contents( mb, set, contents ) );
598 
599  range.clear();
600  range.insert( 71, 80 );
601  std::copy( range.begin(), range.end(), std::back_inserter( contents ) );
602  rval = mb.add_entities( set, range );CHECK_ERR( rval );
603  // [11,20],[31,40],[51,60],[71,80]
604  CHECK( check_set_contents( mb, set, contents ) );
605 
606  range.clear();
607  range.insert( 91, 100 );
608  std::copy( range.begin(), range.end(), std::back_inserter( contents ) );
609  rval = mb.add_entities( set, range );CHECK_ERR( rval );
610  // [11,20],[31,40],[51,60],[71,80],[91,100]
611  CHECK( check_set_contents( mb, set, contents ) );
612 
613  range.clear();
614  range.insert( 111, 120 );
615  std::copy( range.begin(), range.end(), std::back_inserter( contents ) );
616  rval = mb.add_entities( set, range );CHECK_ERR( rval );
617  // [11,20],[31,40],[51,60],[71,80],[91,100],[111,120]
618  CHECK( check_set_contents( mb, set, contents ) );
619 
620  range.clear();
621  range.insert( 6, 12 );
622  std::copy( range.begin(), range.end(), std::back_inserter( contents ) );
623  rval = mb.add_entities( set, range );CHECK_ERR( rval );
624  // [6,20],[31,40],[51,60],[71,80],[91,100],[111,120]
625  CHECK( check_set_contents( mb, set, contents ) );
626 
627  range.clear();
628  range.insert( 1, 3 );
629  std::copy( range.begin(), range.end(), std::back_inserter( contents ) );
630  rval = mb.add_entities( set, range );CHECK_ERR( rval );
631  // [1,3],[6,20],[31,40],[51,60],[71,80],[91,100],[111,120]
632  CHECK( check_set_contents( mb, set, contents ) );
633 
634  range.clear();
635  range.insert( 25, 25 );
636  std::copy( range.begin(), range.end(), std::back_inserter( contents ) );
637  rval = mb.add_entities( set, range );CHECK_ERR( rval );
638  // [1,3],[6,20],[25,25],[31,40],[51,60],[71,80],[91,100],[111,120]
639  CHECK( check_set_contents( mb, set, contents ) );
640 
641  range.clear();
642  range.insert( 30, 30 );
643  std::copy( range.begin(), range.end(), std::back_inserter( contents ) );
644  rval = mb.add_entities( set, range );CHECK_ERR( rval );
645  // [1,3],[6,20],[25,25],[30,40],[51,60],[71,80],[91,100],[111,120]
646  CHECK( check_set_contents( mb, set, contents ) );
647 
648  range.clear();
649  range.insert( 29, 31 );
650  std::copy( range.begin(), range.end(), std::back_inserter( contents ) );
651  rval = mb.add_entities( set, range );CHECK_ERR( rval );
652  // [1,3],[6,20],[25,25],[29,40],[51,60],[71,80],[91,100],[111,120]
653  CHECK( check_set_contents( mb, set, contents ) );
654 
655  range.clear();
656  range.insert( 41, 41 );
657  std::copy( range.begin(), range.end(), std::back_inserter( contents ) );
658  rval = mb.add_entities( set, range );CHECK_ERR( rval );
659  // [1,3],[6,20],[25,25],[29,41],[51,60],[71,80],[91,100],[111,120]
660  CHECK( check_set_contents( mb, set, contents ) );
661 
662  range.clear();
663  range.insert( 41, 45 );
664  std::copy( range.begin(), range.end(), std::back_inserter( contents ) );
665  rval = mb.add_entities( set, range );CHECK_ERR( rval );
666  // [1,3],[6,20],[25,25],[29,45],[51,60],[71,80],[91,100],[111,120]
667  CHECK( check_set_contents( mb, set, contents ) );
668 
669  range.clear();
670  range.insert( 47, 47 );
671  std::copy( range.begin(), range.end(), std::back_inserter( contents ) );
672  rval = mb.add_entities( set, range );CHECK_ERR( rval );
673  // [1,3],[6,20],[25,25],[29,45],[47,47],[51,60],[71,80],[91,100],[111,120]
674  CHECK( check_set_contents( mb, set, contents ) );
675 
676  range.clear();
677  range.insert( 51, 80 );
678  std::copy( range.begin(), range.end(), std::back_inserter( contents ) );
679  rval = mb.add_entities( set, range );CHECK_ERR( rval );
680  // [1,3],[6,20],[25,25],[29,45],[47,47],[51,80],[91,100],[111,120]
681  CHECK( check_set_contents( mb, set, contents ) );
682 
683  range.clear();
684  range.insert( 49, 105 );
685  std::copy( range.begin(), range.end(), std::back_inserter( contents ) );
686  rval = mb.add_entities( set, range );CHECK_ERR( rval );
687  // [1,3],[6,20],[25,25],[29,45],[47,47],[49,105],[111,120]
688  CHECK( check_set_contents( mb, set, contents ) );
689 
690  vect.clear();
691  for( EntityHandle h = 1; h < 100; ++h )
692  {
693  vect.push_back( h );
694  contents.push_back( h );
695  }
696  rval = mb.add_entities( set, &vect[0], vect.size() );CHECK_ERR( rval );
697  // [1,105],[111,120]
698  CHECK( check_set_contents( mb, set, contents ) );
699 
700  vect.clear();
701  vect.push_back( 106 );
702  vect.push_back( 108 );
703  vect.push_back( 110 );
704  std::copy( vect.begin(), vect.end(), std::back_inserter( contents ) );
705  rval = mb.add_entities( set, &vect[0], vect.size() );CHECK_ERR( rval );
706  // [1,106],[108,108],[110,120]
707  CHECK( check_set_contents( mb, set, contents ) );
708 
709  range.clear();
710  range.insert( 107, 200 );
711  std::copy( range.begin(), range.end(), std::back_inserter( contents ) );
712  rval = mb.add_entities( set, range );CHECK_ERR( rval );
713  // [1,200]
714  CHECK( check_set_contents( mb, set, contents ) );
715 
716  range.clear();
717  range.insert( 1, 1 );
718  range.insert( 5, 6 );
719  range.insert( 199, 200 );
720  range.insert( 201, 202 );
721  std::copy( range.begin(), range.end(), std::back_inserter( contents ) );
722  rval = mb.add_entities( set, range );CHECK_ERR( rval );
723  // [1,202]
724  CHECK( check_set_contents( mb, set, contents ) );
725 
726  range.clear();
727  range.insert( 300, 301 );
728  std::copy( range.begin(), range.end(), std::back_inserter( contents ) );
729  rval = mb.add_entities( set, range );CHECK_ERR( rval );
730  // [1,202],[300,301]
731  CHECK( check_set_contents( mb, set, contents ) );
732 
733  range.clear();
734  range.insert( 203, 203 );
735  range.insert( 205, 205 );
736  range.insert( 207, 207 );
737  range.insert( 299, 299 );
738  std::copy( range.begin(), range.end(), std::back_inserter( contents ) );
739  rval = mb.add_entities( set, range );CHECK_ERR( rval );
740  // [1,203],[205,205],[207,207],[299,301]
741  CHECK( check_set_contents( mb, set, contents ) );
742 }

References moab::Core::add_entities(), moab::Range::begin(), CHECK, CHECK_ERR, check_set_contents(), moab::Range::clear(), moab::Core::create_meshset(), moab::Range::end(), ErrorCode, moab::Range::insert(), make_mesh(), and mb.

Referenced by test_add_entities_ordered(), test_add_entities_ordered_tracking(), test_add_entities_set(), and test_add_entities_set_tracking().

◆ test_add_entities_ordered()

void test_add_entities_ordered ( )

Definition at line 63 of file Test_MBMeshSet.cpp.

64 {
65  test_add_entities( MESHSET_ORDERED );
66 }

References test_add_entities().

Referenced by main().

◆ test_add_entities_ordered_tracking()

void test_add_entities_ordered_tracking ( )

Definition at line 71 of file Test_MBMeshSet.cpp.

72 {
73  test_add_entities( MESHSET_TRACK_OWNER | MESHSET_ORDERED );
74 }

References MESHSET_TRACK_OWNER, and test_add_entities().

Referenced by main().

◆ test_add_entities_set()

void test_add_entities_set ( )

Definition at line 67 of file Test_MBMeshSet.cpp.

68 {
70 }

References MESHSET_SET, and test_add_entities().

Referenced by main().

◆ test_add_entities_set_tracking()

void test_add_entities_set_tracking ( )

Definition at line 75 of file Test_MBMeshSet.cpp.

References MESHSET_SET, MESHSET_TRACK_OWNER, and test_add_entities().

Referenced by main().

◆ test_all_iterators()

void test_all_iterators ( )

Definition at line 1262 of file Test_MBMeshSet.cpp.

1263 {
1264  test_iterators( MESHSET_SET, true, false );
1265  test_iterators( MESHSET_SET, false, true );
1266 
1267  test_iterators( MESHSET_ORDERED, true, false );
1268  test_iterators( MESHSET_ORDERED, false, true );
1269 }

References MESHSET_SET, and test_iterators().

Referenced by main().

◆ test_boolean()

bool test_boolean ( Core mb,
BoolOp  op,
unsigned  flags1,
const Range set1_ents,
unsigned  flags2,
const Range set2_ents 
)

Perform boolean op on two entity sets and verify result.

Definition at line 1028 of file Test_MBMeshSet.cpp.

1034 {
1035  ErrorCode rval;
1036 
1037  // make sets
1038  EntityHandle set1, set2;
1039  rval = mb.create_meshset( flags1, set1 );CHECK_ERR( rval );
1040  rval = mb.create_meshset( flags2, set2 );CHECK_ERR( rval );
1041  rval = mb.add_entities( set1, set1_ents );CHECK_ERR( rval );
1042  rval = mb.add_entities( set2, set2_ents );CHECK_ERR( rval );
1043 
1044  Range tmp_range;
1045  std::vector< EntityHandle > expected;
1046  rval = MB_INDEX_OUT_OF_RANGE;
1047  switch( op )
1048  {
1049  case UNITE:
1050  if( flags1 & MESHSET_SET )
1051  {
1052  tmp_range = set1_ents;
1053  tmp_range.merge( set2_ents );
1054  expected.resize( tmp_range.size() );
1055  std::copy( tmp_range.begin(), tmp_range.end(), expected.begin() );
1056  }
1057  else
1058  {
1059  expected.clear();
1060  std::copy( set1_ents.begin(), set1_ents.end(), std::back_inserter( expected ) );
1061  std::copy( set2_ents.begin(), set2_ents.end(), std::back_inserter( expected ) );
1062  }
1063  rval = mb.unite_meshset( set1, set2 );
1064  break;
1065  case INTERSECT:
1066  tmp_range = intersect( set1_ents, set2_ents );
1067  expected.resize( tmp_range.size() );
1068  std::copy( tmp_range.begin(), tmp_range.end(), expected.begin() );
1069  rval = mb.intersect_meshset( set1, set2 );
1070  break;
1071  case SUBTRACT:
1072  tmp_range = subtract( set1_ents, set2_ents );
1073  expected.resize( tmp_range.size() );
1074  std::copy( tmp_range.begin(), tmp_range.end(), expected.begin() );
1075  rval = mb.subtract_meshset( set1, set2 );
1076  break;
1077  }
1078  CHECK_ERR( rval );
1079 
1080  return check_set_contents( mb, set1, expected );
1081 }

References moab::Core::add_entities(), moab::Range::begin(), CHECK_ERR, check_set_contents(), moab::Core::create_meshset(), moab::Range::end(), ErrorCode, moab::intersect(), INTERSECT, moab::Core::intersect_meshset(), mb, MB_INDEX_OUT_OF_RANGE, moab::Range::merge(), MESHSET_SET, moab::Range::size(), moab::subtract(), SUBTRACT, moab::Core::subtract_meshset(), UNITE, and moab::Core::unite_meshset().

Referenced by test_intersect(), test_subtract(), and test_unite().

◆ test_clear()

void test_clear ( unsigned  flags)

test clear_meshset

Definition at line 1195 of file Test_MBMeshSet.cpp.

1196 {
1197  std::vector< EntityHandle > contents( 4 );
1198  Core mb;
1199  make_mesh( mb, contents[0], contents[1], contents[2], contents[3] );
1200  EntityHandle set;
1201  ErrorCode rval = mb.create_meshset( flags, set );CHECK_ERR( rval );
1202  rval = mb.add_entities( set, &contents[0], contents.size() );CHECK_ERR( rval );
1203  CHECK( check_set_contents( mb, set, contents ) );
1204  rval = mb.clear_meshset( &set, 1 );CHECK_ERR( rval );
1205  contents.clear();
1206  CHECK( check_set_contents( mb, set, contents ) );
1207 }

References moab::Core::add_entities(), CHECK, CHECK_ERR, check_set_contents(), moab::Core::clear_meshset(), moab::Core::create_meshset(), ErrorCode, make_mesh(), and mb.

Referenced by test_clear_ordered(), test_clear_ordered_tracking(), test_clear_set(), and test_clear_set_tracking().

◆ test_clear_ordered()

void test_clear_ordered ( )

Definition at line 222 of file Test_MBMeshSet.cpp.

223 {
224  test_clear( MESHSET_ORDERED );
225 }

References test_clear().

Referenced by main().

◆ test_clear_ordered_tracking()

void test_clear_ordered_tracking ( )

Definition at line 230 of file Test_MBMeshSet.cpp.

231 {
232  test_clear( MESHSET_TRACK_OWNER | MESHSET_ORDERED );
233 }

References MESHSET_TRACK_OWNER, and test_clear().

Referenced by main().

◆ test_clear_set()

void test_clear_set ( )

Definition at line 226 of file Test_MBMeshSet.cpp.

227 {
229 }

References MESHSET_SET, and test_clear().

Referenced by main().

◆ test_clear_set_tracking()

void test_clear_set_tracking ( )

Definition at line 234 of file Test_MBMeshSet.cpp.

235 {
237 }

References MESHSET_SET, MESHSET_TRACK_OWNER, and test_clear().

Referenced by main().

◆ test_contains_entities()

void test_contains_entities ( unsigned  flags)

test MeshSet::contains_entities

Definition at line 1167 of file Test_MBMeshSet.cpp.

1168 {
1169  CHECK( !( flags & MESHSET_TRACK_OWNER ) );
1170  MeshSet set( flags );
1171  bool result;
1172 
1173  const EntityHandle entities[] = { 1, 2, 3, 6, 10, 11, 25, 100 };
1174  const int num_ents = sizeof( entities ) / sizeof( EntityHandle );
1175  ErrorCode rval = set.add_entities( entities, num_ents, 0, 0 );CHECK_ERR( rval );
1176 
1177  result = set.contains_entities( entities, num_ents, Interface::UNION );
1178  CHECK( result );
1179  result = set.contains_entities( entities, num_ents, Interface::INTERSECT );
1180  CHECK( result );
1181 
1182  result = set.contains_entities( entities, 1, Interface::UNION );
1183  CHECK( result );
1184  result = set.contains_entities( entities, 1, Interface::INTERSECT );
1185  CHECK( result );
1186 
1187  const EntityHandle entities2[] = { 3, 4, 5 };
1188  const int num_ents2 = sizeof( entities2 ) / sizeof( EntityHandle );
1189  result = set.contains_entities( entities2, num_ents2, Interface::UNION );
1190  CHECK( result );
1191  result = set.contains_entities( entities2, num_ents2, Interface::INTERSECT );
1192  CHECK( !result );
1193 }

References moab::MeshSet::add_entities(), CHECK, CHECK_ERR, moab::MeshSet::contains_entities(), entities, ErrorCode, moab::Interface::INTERSECT, MESHSET_TRACK_OWNER, and moab::Interface::UNION.

Referenced by test_contains_entities_ordered(), and test_contains_entities_set().

◆ test_contains_entities_ordered()

void test_contains_entities_ordered ( )

Definition at line 213 of file Test_MBMeshSet.cpp.

214 {
215  test_contains_entities( MESHSET_ORDERED );
216 }

References test_contains_entities().

Referenced by main().

◆ test_contains_entities_set()

void test_contains_entities_set ( )

Definition at line 217 of file Test_MBMeshSet.cpp.

218 {
220 }

References MESHSET_SET, and test_contains_entities().

Referenced by main().

◆ test_entities_by_dim_ordered()

void test_entities_by_dim_ordered ( )

Definition at line 105 of file Test_MBMeshSet.cpp.

106 {
107  test_entities_by_dimension( MESHSET_ORDERED );
108 }

References test_entities_by_dimension().

Referenced by main().

◆ test_entities_by_dim_set()

void test_entities_by_dim_set ( )

Definition at line 109 of file Test_MBMeshSet.cpp.

110 {
112 }

References MESHSET_SET, and test_entities_by_dimension().

Referenced by main().

◆ test_entities_by_dimension()

void test_entities_by_dimension ( unsigned  flags)

test get_entities_by_dimension, num_entities_by_dimension

Definition at line 997 of file Test_MBMeshSet.cpp.

998 {
999  EntityHandle first_vert, last_vert, first_hex, last_hex;
1000  Core mb;
1001  make_mesh( mb, first_vert, last_vert, first_hex, last_hex );
1002 
1003  // Create an entity set
1004  EntityHandle set;
1005  ErrorCode rval = mb.create_meshset( flags, set );CHECK_ERR( rval );
1006 
1007  // Test empty set
1008  CHECK( check_set_contents( mb, 0, set, flags ) );
1009  CHECK( check_set_contents( mb, 1, set, flags ) );
1010  CHECK( check_set_contents( mb, 2, set, flags ) );
1011  CHECK( check_set_contents( mb, 3, set, flags ) );
1012 
1013  // Add stuff to set
1014  Range range;
1015  range.insert( first_vert, first_vert + 10 );
1016  range.insert( first_vert + 100, first_vert + 110 );
1017  range.insert( first_hex + 200, first_hex + 299 );
1018  range.insert( last_hex, last_hex - 99 );
1019  rval = mb.add_entities( set, range );CHECK_ERR( rval );
1020 
1021  // Test
1022  CHECK( check_set_contents( mb, 0, set, flags ) );
1023  CHECK( check_set_contents( mb, 1, set, flags ) );
1024  CHECK( check_set_contents( mb, 2, set, flags ) );
1025  CHECK( check_set_contents( mb, 3, set, flags ) );
1026 }

References moab::Core::add_entities(), CHECK, CHECK_ERR, check_set_contents(), moab::Core::create_meshset(), ErrorCode, moab::Range::insert(), make_mesh(), and mb.

Referenced by test_entities_by_dim_ordered(), and test_entities_by_dim_set().

◆ test_entities_by_type()

void test_entities_by_type ( unsigned  flags)

test get_entities_by_type, num_entities_by_type

Definition at line 968 of file Test_MBMeshSet.cpp.

969 {
970  EntityHandle first_vert, last_vert, first_hex, last_hex;
971  Core mb;
972  make_mesh( mb, first_vert, last_vert, first_hex, last_hex );
973 
974  // Create an entity set
975  EntityHandle set;
976  ErrorCode rval = mb.create_meshset( flags, set );CHECK_ERR( rval );
977 
978  // Test empty set
979  CHECK( check_set_contents( mb, MBVERTEX, set, flags ) );
980  CHECK( check_set_contents( mb, MBEDGE, set, flags ) );
981  CHECK( check_set_contents( mb, MBHEX, set, flags ) );
982 
983  // Add stuff to set
984  Range range;
985  range.insert( first_vert, first_vert + 10 );
986  range.insert( first_vert + 100, first_vert + 110 );
987  range.insert( first_hex + 200, first_hex + 299 );
988  range.insert( last_hex, last_hex - 99 );
989  rval = mb.add_entities( set, range );CHECK_ERR( rval );
990 
991  // Test
992  CHECK( check_set_contents( mb, MBVERTEX, set, flags ) );
993  CHECK( check_set_contents( mb, MBEDGE, set, flags ) );
994  CHECK( check_set_contents( mb, MBHEX, set, flags ) );
995 }

References moab::Core::add_entities(), CHECK, CHECK_ERR, check_set_contents(), moab::Core::create_meshset(), ErrorCode, moab::Range::insert(), make_mesh(), mb, MBEDGE, MBHEX, and MBVERTEX.

Referenced by test_entities_by_type_ordered(), and test_entities_by_type_set().

◆ test_entities_by_type_ordered()

void test_entities_by_type_ordered ( )

Definition at line 97 of file Test_MBMeshSet.cpp.

98 {
99  test_entities_by_type( MESHSET_ORDERED );
100 }

References test_entities_by_type().

Referenced by main().

◆ test_entities_by_type_set()

void test_entities_by_type_set ( )

Definition at line 101 of file Test_MBMeshSet.cpp.

102 {
104 }

References MESHSET_SET, and test_entities_by_type().

Referenced by main().

◆ test_intersect()

void test_intersect ( unsigned  flags1,
unsigned  flags2 
)

test intersect_meshset

Definition at line 1083 of file Test_MBMeshSet.cpp.

1084 {
1085  Range empty, set1_ents, set2_ents;
1086  EntityHandle first_vert, last_vert, first_hex, last_hex;
1087  Core mb;
1088  make_mesh( mb, first_vert, last_vert, first_hex, last_hex );
1089 
1090  // define contents of first set
1091  set1_ents.insert( first_vert, first_vert + 10 );
1092  set1_ents.insert( first_vert + 100, first_vert + 199 );
1093  set1_ents.insert( first_hex + 100, first_hex + 200 );
1094 
1095  // define contents of second set
1096  set2_ents.insert( first_vert, first_vert );
1097  set2_ents.insert( first_vert + 10, first_vert + 10 );
1098  set2_ents.insert( first_vert + 90, first_vert + 209 );
1099  set2_ents.insert( first_hex + 50, first_hex + 300 );
1100 
1101  // check empty sets
1102  CHECK( test_boolean( mb, INTERSECT, flags1, empty, flags2, empty ) );
1103  // check intersection with 1 empty
1104  CHECK( test_boolean( mb, INTERSECT, flags1, empty, flags2, set2_ents ) );
1105  CHECK( test_boolean( mb, INTERSECT, flags1, set1_ents, flags2, empty ) );
1106  // check intersection of non-empty sets
1107  CHECK( test_boolean( mb, INTERSECT, flags1, set1_ents, flags2, set2_ents ) );
1108 }

References CHECK, moab::Range::insert(), INTERSECT, make_mesh(), mb, and test_boolean().

Referenced by test_itersect_ordered_ordered(), test_itersect_ordered_ordered_tracking(), test_itersect_ordered_set(), test_itersect_ordered_set_tracking(), test_itersect_set_ordered(), test_itersect_set_ordered_tracking(), test_itersect_set_set(), and test_itersect_set_set_tracking().

◆ test_iterator()

void test_iterator ( Interface moab,
SetIterator iter,
EntityHandle  set,
EntityType  etype,
int  dim 
)

Definition at line 1449 of file Test_MBMeshSet.cpp.

1450 {
1451  // iterate over the set, adding to contents
1452  std::vector< EntityHandle > entities, entities2;
1453  bool atend = false;
1454  ErrorCode rval;
1455 
1456  while( !atend )
1457  {
1458  rval = iter->get_next_arr( entities, atend );CHECK_ERR( rval );
1459  }
1460 
1461  // check contents against what's in the set
1462  if( MBMAXTYPE != etype )
1463  {
1464  rval = moab.get_entities_by_type( set, etype, entities2 );CHECK_ERR( rval );
1465  }
1466  else if( MBMAXTYPE == etype && -1 == dim )
1467  {
1468  rval = moab.get_entities_by_handle( set, entities2 );CHECK_ERR( rval );
1469  }
1470  else if( -1 != dim )
1471  {
1472  rval = moab.get_entities_by_dimension( set, dim, entities2 );CHECK_ERR( rval );
1473  }
1474  else
1475  {
1476  // error, one of those needs to be true
1477  CHECK_ERR( MB_FAILURE );
1478  }
1479 
1480  CHECK_EQUAL( entities.size(), entities2.size() );
1481 }

References CHECK_EQUAL, CHECK_ERR, dim, entities, ErrorCode, moab::SetIterator::get_next_arr(), and MBMAXTYPE.

Referenced by test_iterators().

◆ test_iterators()

void test_iterators ( unsigned int  flags,
bool  type,
bool  dim 
)

Definition at line 1271 of file Test_MBMeshSet.cpp.

1272 {
1273  if( test_type && test_dim ) CHECK_ERR( MB_FAILURE );
1274 
1275  EntityHandle first_vert, last_vert, first_hex, last_hex;
1276  Core mb;
1277  make_mesh( mb, first_vert, last_vert, first_hex, last_hex );
1278 
1279  // Create an entity set
1280  EntityHandle set;
1281  ErrorCode rval = mb.create_meshset( flags, set );CHECK_ERR( rval );
1282 
1283  // Test iteration over empty set
1284  SetIterator* iter = NULL;
1285  rval = mb.create_set_iterator( set, MBMAXTYPE, -1, 1, false, iter );CHECK_ERR( rval );
1286  if( NULL != iter )
1287  {
1288  test_iterator( mb, iter, set, MBMAXTYPE, -1 );
1289  delete iter;
1290  iter = NULL;
1291  }
1292 
1293  rval = mb.create_set_iterator( set, MBMAXTYPE, -1, 100, false, iter );CHECK_ERR( rval );
1294  if( NULL != iter )
1295  {
1296  test_iterator( mb, iter, set, MBMAXTYPE, -1 );
1297  delete iter;
1298  iter = NULL;
1299  }
1300 
1301  rval = mb.create_set_iterator( set, MBMAXTYPE, 0, 1, false, iter );CHECK_ERR( rval );
1302  if( NULL != iter )
1303  {
1304  test_iterator( mb, iter, set, MBMAXTYPE, 0 );
1305  delete iter;
1306  iter = NULL;
1307  }
1308 
1309  rval = mb.create_set_iterator( set, MBMAXTYPE, 3, 1, false, iter );CHECK_ERR( rval );
1310  if( NULL != iter )
1311  {
1312  test_iterator( mb, iter, set, MBMAXTYPE, 3 );
1313  delete iter;
1314  iter = NULL;
1315  }
1316 
1317  // Add stuff to set
1318  Range range;
1319  range.insert( first_vert, first_vert + 10 );
1320  range.insert( first_vert + 100, first_vert + 110 );
1321  range.insert( first_hex + 200, first_hex + 299 );
1322  range.insert( last_hex, last_hex - 99 );
1323  rval = mb.add_entities( set, range );CHECK_ERR( rval );
1324 
1325  EntityType etype = MBVERTEX;
1326  int edim = -1;
1327  if( test_dim && !test_type )
1328  {
1329  edim = 0;
1330  etype = MBMAXTYPE;
1331  }
1332 
1333  // Test
1334  // chunk size 1
1335  rval = mb.create_set_iterator( set, etype, edim, 1, false, iter );CHECK_ERR( rval );
1336  if( NULL != iter )
1337  {
1338  test_iterator( mb, iter, set, etype, edim );
1339  delete iter;
1340  iter = NULL;
1341  }
1342 
1343  // chunk size 3
1344  rval = mb.create_set_iterator( set, etype, edim, 3, false, iter );CHECK_ERR( rval );
1345  if( NULL != iter )
1346  {
1347  test_iterator( mb, iter, set, etype, edim );
1348  delete iter;
1349  iter = NULL;
1350  }
1351 
1352  // chunk size 11
1353  rval = mb.create_set_iterator( set, etype, edim, 11, false, iter );CHECK_ERR( rval );
1354  if( NULL != iter )
1355  {
1356  test_iterator( mb, iter, set, etype, edim );
1357  delete iter;
1358  iter = NULL;
1359  }
1360 
1361  // chunk size 100
1362  rval = mb.create_set_iterator( set, etype, edim, 100, false, iter );CHECK_ERR( rval );
1363  if( NULL != iter )
1364  {
1365  test_iterator( mb, iter, set, etype, edim );
1366  delete iter;
1367  iter = NULL;
1368  }
1369 
1370  if( test_type )
1371  {
1372  // chunk size 1, all ents
1373  rval = mb.create_set_iterator( set, MBMAXTYPE, -1, 1, false, iter );CHECK_ERR( rval );
1374  if( NULL != iter )
1375  {
1376  test_iterator( mb, iter, set, MBMAXTYPE, -1 );
1377  delete iter;
1378  iter = NULL;
1379  }
1380 
1381  // chunk size 3, all ents
1382  rval = mb.create_set_iterator( set, MBMAXTYPE, -1, 3, false, iter );CHECK_ERR( rval );
1383  if( NULL != iter )
1384  {
1385  test_iterator( mb, iter, set, MBMAXTYPE, -1 );
1386  delete iter;
1387  iter = NULL;
1388  }
1389 
1390  // chunk size large, all ents
1391  rval = mb.create_set_iterator( set, MBMAXTYPE, -1, 100000, false, iter );CHECK_ERR( rval );
1392  if( NULL != iter )
1393  {
1394  test_iterator( mb, iter, set, MBMAXTYPE, -1 );
1395  delete iter;
1396  iter = NULL;
1397  }
1398 
1399  etype = MBEDGE;
1400  // edges, chunk size 1
1401  rval = mb.create_set_iterator( set, etype, edim, 1, false, iter );CHECK_ERR( rval );
1402  if( NULL != iter )
1403  {
1404  test_iterator( mb, iter, set, etype, edim );
1405  delete iter;
1406  iter = NULL;
1407  }
1408 
1409  // edges, chunk size 100
1410  rval = mb.create_set_iterator( set, etype, edim, 100, false, iter );CHECK_ERR( rval );
1411  if( NULL != iter )
1412  {
1413  test_iterator( mb, iter, set, etype, edim );
1414  delete iter;
1415  iter = NULL;
1416  }
1417 
1418  etype = MBHEX;
1419 
1420  // hexes, chunk size 1
1421  rval = mb.create_set_iterator( set, etype, edim, 1, false, iter );CHECK_ERR( rval );
1422  if( NULL != iter )
1423  {
1424  test_iterator( mb, iter, set, etype, edim );
1425  delete iter;
1426  iter = NULL;
1427  }
1428 
1429  // hexes, chunk size 3
1430  rval = mb.create_set_iterator( set, etype, edim, 3, false, iter );CHECK_ERR( rval );
1431  if( NULL != iter )
1432  {
1433  test_iterator( mb, iter, set, etype, edim );
1434  delete iter;
1435  iter = NULL;
1436  }
1437 
1438  // hexes, chunk size 1000
1439  rval = mb.create_set_iterator( set, etype, edim, 1000, false, iter );CHECK_ERR( rval );
1440  if( NULL != iter )
1441  {
1442  test_iterator( mb, iter, set, etype, edim );
1443  delete iter;
1444  iter = NULL;
1445  }
1446  }
1447 }

References moab::Core::add_entities(), CHECK_ERR, moab::Core::create_meshset(), moab::Core::create_set_iterator(), ErrorCode, moab::Range::insert(), make_mesh(), mb, MBEDGE, MBHEX, MBMAXTYPE, MBVERTEX, and test_iterator().

Referenced by test_all_iterators().

◆ test_itersect_ordered_ordered()

void test_itersect_ordered_ordered ( )

Definition at line 159 of file Test_MBMeshSet.cpp.

160 {
161  test_intersect( MESHSET_ORDERED, MESHSET_ORDERED );
162 }

References test_intersect().

Referenced by main().

◆ test_itersect_ordered_ordered_tracking()

void test_itersect_ordered_ordered_tracking ( )

Definition at line 175 of file Test_MBMeshSet.cpp.

176 {
177  test_intersect( MESHSET_TRACK_OWNER | MESHSET_ORDERED, MESHSET_TRACK_OWNER | MESHSET_ORDERED );
178 }

References MESHSET_TRACK_OWNER, and test_intersect().

Referenced by main().

◆ test_itersect_ordered_set()

void test_itersect_ordered_set ( )

Definition at line 155 of file Test_MBMeshSet.cpp.

156 {
157  test_intersect( MESHSET_ORDERED, MESHSET_SET );
158 }

References MESHSET_SET, and test_intersect().

Referenced by main().

◆ test_itersect_ordered_set_tracking()

void test_itersect_ordered_set_tracking ( )

Definition at line 171 of file Test_MBMeshSet.cpp.

172 {
174 }

References MESHSET_SET, MESHSET_TRACK_OWNER, and test_intersect().

Referenced by main().

◆ test_itersect_set_ordered()

void test_itersect_set_ordered ( )

Definition at line 151 of file Test_MBMeshSet.cpp.

152 {
153  test_intersect( MESHSET_SET, MESHSET_ORDERED );
154 }

References MESHSET_SET, and test_intersect().

Referenced by main().

◆ test_itersect_set_ordered_tracking()

void test_itersect_set_ordered_tracking ( )

Definition at line 167 of file Test_MBMeshSet.cpp.

168 {
170 }

References MESHSET_SET, MESHSET_TRACK_OWNER, and test_intersect().

Referenced by main().

◆ test_itersect_set_set()

void test_itersect_set_set ( )

Definition at line 147 of file Test_MBMeshSet.cpp.

148 {
150 }

References MESHSET_SET, and test_intersect().

Referenced by main().

◆ test_itersect_set_set_tracking()

void test_itersect_set_set_tracking ( )

Definition at line 163 of file Test_MBMeshSet.cpp.

References MESHSET_SET, MESHSET_TRACK_OWNER, and test_intersect().

Referenced by main().

◆ test_remove_entities()

void test_remove_entities ( unsigned  flags)

test remove_entities, get_entities, num_entities

Definition at line 761 of file Test_MBMeshSet.cpp.

762 {
763  Core mb;
764  make_mesh( mb );
765 
766  EntityHandle set;
767  ErrorCode rval = mb.create_meshset( flags, set );CHECK_ERR( rval );
768 
769  std::vector< EntityHandle > contents;
770  Range range;
771 
772  range.clear();
773  range.insert( 1, 1000 );
774  std::copy( range.begin(), range.end(), std::back_inserter( contents ) );
775  rval = mb.add_entities( set, range );CHECK_ERR( rval );
776  // [1,1000]
777  CHECK( check_set_contents( mb, set, contents ) );
778 
779  range.clear();
780  range.insert( 1, 5 );
781  remove_from_back( contents, range );
782  rval = mb.remove_entities( set, range );CHECK_ERR( rval );
783  // [6,1000]
784  CHECK( check_set_contents( mb, set, contents ) );
785 
786  range.clear();
787  range.insert( 6, 6 );
788  remove_from_back( contents, range );
789  rval = mb.remove_entities( set, range );CHECK_ERR( rval );
790  // [7,1000]
791  CHECK( check_set_contents( mb, set, contents ) );
792 
793  range.clear();
794  range.insert( 7, 10 );
795  remove_from_back( contents, range );
796  rval = mb.remove_entities( set, range );CHECK_ERR( rval );
797  // [11,1000]
798  CHECK( check_set_contents( mb, set, contents ) );
799 
800  range.clear();
801  range.insert( 1, 20 );
802  remove_from_back( contents, range );
803  rval = mb.remove_entities( set, range );CHECK_ERR( rval );
804  // [21,1000]
805  CHECK( check_set_contents( mb, set, contents ) );
806 
807  range.clear();
808  range.insert( 1, 5 );
809  remove_from_back( contents, range );
810  rval = mb.remove_entities( set, range );CHECK_ERR( rval );
811  // [21,1000]
812  CHECK( check_set_contents( mb, set, contents ) );
813 
814  range.clear();
815  range.insert( 22, 30 );
816  remove_from_back( contents, range );
817  rval = mb.remove_entities( set, range );CHECK_ERR( rval );
818  // [21,21],[31,1000]
819  CHECK( check_set_contents( mb, set, contents ) );
820 
821  range.clear();
822  range.insert( 1000, 1000 );
823  remove_from_back( contents, range );
824  rval = mb.remove_entities( set, range );CHECK_ERR( rval );
825  // [21,21],[31,999]
826  CHECK( check_set_contents( mb, set, contents ) );
827 
828  range.clear();
829  range.insert( 901, 999 );
830  remove_from_back( contents, range );
831  rval = mb.remove_entities( set, range );CHECK_ERR( rval );
832  // [21,21],[31,900]
833  CHECK( check_set_contents( mb, set, contents ) );
834 
835  range.clear();
836  range.insert( 900, 999 );
837  remove_from_back( contents, range );
838  rval = mb.remove_entities( set, range );CHECK_ERR( rval );
839  // [21,21],[31,899]
840  CHECK( check_set_contents( mb, set, contents ) );
841 
842  range.clear();
843  range.insert( 1000, 1001 );
844  remove_from_back( contents, range );
845  rval = mb.remove_entities( set, range );CHECK_ERR( rval );
846  // [21,21],[31,899]
847  CHECK( check_set_contents( mb, set, contents ) );
848 
849  range.clear();
850  range.insert( 890, 898 );
851  remove_from_back( contents, range );
852  rval = mb.remove_entities( set, range );CHECK_ERR( rval );
853  // [21,21],[31,889],[899,899]
854  CHECK( check_set_contents( mb, set, contents ) );
855 
856  range.clear();
857  range.insert( 100, 149 );
858  remove_from_back( contents, range );
859  rval = mb.remove_entities( set, range );CHECK_ERR( rval );
860  // [21,21],[31,99],[150,889],[899,899]
861  CHECK( check_set_contents( mb, set, contents ) );
862 
863  range.clear();
864  range.insert( 31, 99 );
865  remove_from_back( contents, range );
866  rval = mb.remove_entities( set, range );CHECK_ERR( rval );
867  // [21,21],[150,889],[899,899]
868  CHECK( check_set_contents( mb, set, contents ) );
869 
870  range.clear();
871  range.insert( 200, 249 );
872  remove_from_back( contents, range );
873  rval = mb.remove_entities( set, range );CHECK_ERR( rval );
874  // [21,21],[150,199],[250,889],[899,899]
875  CHECK( check_set_contents( mb, set, contents ) );
876 
877  range.clear();
878  range.insert( 300, 349 );
879  remove_from_back( contents, range );
880  rval = mb.remove_entities( set, range );CHECK_ERR( rval );
881  // [21,21],[150,199],[250,299],[350,889],[899,899]
882  CHECK( check_set_contents( mb, set, contents ) );
883 
884  range.clear();
885  range.insert( 159, 399 );
886  remove_from_back( contents, range );
887  rval = mb.remove_entities( set, range );CHECK_ERR( rval );
888  // [21,21],[150,158],[400,889],[899,899]
889  CHECK( check_set_contents( mb, set, contents ) );
890 
891  range.clear();
892  range.insert( 450, 499 );
893  remove_from_back( contents, range );
894  rval = mb.remove_entities( set, range );CHECK_ERR( rval );
895  // [21,21],[150,158],[400,449],[500,889],[899,899]
896  CHECK( check_set_contents( mb, set, contents ) );
897 
898  range.clear();
899  range.insert( 550, 599 );
900  remove_from_back( contents, range );
901  rval = mb.remove_entities( set, range );CHECK_ERR( rval );
902  // [21,21],[150,158],[400,449],[500,549],[600,889],[899,899]
903  CHECK( check_set_contents( mb, set, contents ) );
904 
905  range.clear();
906  range.insert( 150, 549 );
907  remove_from_back( contents, range );
908  rval = mb.remove_entities( set, range );CHECK_ERR( rval );
909  // [21,21],[600,889],[899,899]
910  CHECK( check_set_contents( mb, set, contents ) );
911 
912  range.clear();
913  range.insert( 650, 699 );
914  remove_from_back( contents, range );
915  rval = mb.remove_entities( set, range );CHECK_ERR( rval );
916  // [21,21],[600,649],[700,889],[899,899]
917  CHECK( check_set_contents( mb, set, contents ) );
918 
919  // test vector-based remove
920  assert( contents.size() == 242 );
921  std::vector< EntityHandle > remlist( 5 );
922  remlist[0] = contents[240];
923  contents.erase( contents.begin() + 240 );
924  remlist[1] = contents[200];
925  contents.erase( contents.begin() + 200 );
926  remlist[2] = contents[100];
927  contents.erase( contents.begin() + 100 );
928  remlist[3] = contents[25];
929  contents.erase( contents.begin() + 25 );
930  remlist[4] = contents[0];
931  contents.erase( contents.begin() + 0 );
932  rval = mb.remove_entities( set, &remlist[0], remlist.size() );CHECK_ERR( rval );
933  // [600,623],[625,649],[700,748],[750,848],[850,888],[899,899]
934  CHECK( check_set_contents( mb, set, contents ) );
935 
936  // remove everything
937  std::reverse( contents.begin(), contents.begin() + contents.size() / 2 ); // mix up a bit
938  rval = mb.remove_entities( set, &contents[0], contents.size() );CHECK_ERR( rval );
939  contents.clear();
940  CHECK( check_set_contents( mb, set, contents ) );
941 
942  // try complicated range-based remove
943  range.clear();
944  contents.clear();
945  range.insert( 100, 200 );
946  std::copy( range.begin(), range.end(), std::back_inserter( contents ) );
947  rval = mb.add_entities( set, range );CHECK_ERR( rval );
948  // [1000,2000]
949  CHECK( check_set_contents( mb, set, contents ) );
950 
951  Range remove;
952  remove.insert( 1, 3 );
953  remove.insert( 10, 100 );
954  remove.insert( 110, 120 );
955  remove.insert( 130, 140 );
956  remove.insert( 150, 160 );
957  remove.insert( 190, 200 );
958  remove.insert( 210, 220 );
959  remove.insert( 230, 240 );
960  range = subtract( range, remove );
961 
962  contents.clear();
963  std::copy( range.begin(), range.end(), std::back_inserter( contents ) );
964  rval = mb.remove_entities( set, remove );CHECK_ERR( rval );
965  CHECK( check_set_contents( mb, set, contents ) );
966 }

References moab::Core::add_entities(), moab::Range::begin(), CHECK, CHECK_ERR, check_set_contents(), moab::Range::clear(), moab::Core::create_meshset(), moab::Range::end(), ErrorCode, moab::Range::insert(), make_mesh(), mb, moab::Core::remove_entities(), remove_from_back(), and moab::subtract().

Referenced by test_remove_entities_ordered(), test_remove_entities_ordered_tracking(), test_remove_entities_set(), and test_remove_entities_set_tracking().

◆ test_remove_entities_ordered()

void test_remove_entities_ordered ( )

Definition at line 80 of file Test_MBMeshSet.cpp.

81 {
82  test_remove_entities( MESHSET_ORDERED );
83 }

References test_remove_entities().

Referenced by main().

◆ test_remove_entities_ordered_tracking()

void test_remove_entities_ordered_tracking ( )

Definition at line 88 of file Test_MBMeshSet.cpp.

89 {
90  test_remove_entities( MESHSET_TRACK_OWNER | MESHSET_ORDERED );
91 }

References MESHSET_TRACK_OWNER, and test_remove_entities().

Referenced by main().

◆ test_remove_entities_set()

void test_remove_entities_set ( )

Definition at line 84 of file Test_MBMeshSet.cpp.

85 {
87 }

References MESHSET_SET, and test_remove_entities().

Referenced by main().

◆ test_remove_entities_set_tracking()

void test_remove_entities_set_tracking ( )

Definition at line 92 of file Test_MBMeshSet.cpp.

References MESHSET_SET, MESHSET_TRACK_OWNER, and test_remove_entities().

Referenced by main().

◆ test_subtract()

void test_subtract ( unsigned  flags1,
unsigned  flags2 
)

test subtract_meshset

Definition at line 1138 of file Test_MBMeshSet.cpp.

1139 {
1140  Range empty, set1_ents, set2_ents;
1141  EntityHandle first_vert, last_vert, first_hex, last_hex;
1142  Core mb;
1143  make_mesh( mb, first_vert, last_vert, first_hex, last_hex );
1144 
1145  // define contents of first set
1146  set1_ents.insert( first_vert, first_vert + 10 );
1147  set1_ents.insert( first_vert + 100, first_vert + 199 );
1148  set1_ents.insert( first_hex + 100, first_hex + 200 );
1149 
1150  // define contents of second set
1151  set2_ents.insert( first_vert, first_vert );
1152  set2_ents.insert( first_vert + 9, first_vert + 9 );
1153  set2_ents.insert( first_vert + 11, first_vert + 99 );
1154  set2_ents.insert( first_vert + 150, first_vert + 199 );
1155  set2_ents.insert( first_hex + 50, first_hex + 60 );
1156  set2_ents.insert( first_hex + 90, first_hex + 220 );
1157 
1158  // check empty sets
1159  CHECK( test_boolean( mb, SUBTRACT, flags1, empty, flags2, empty ) );
1160  // check union with 1 empty
1161  CHECK( test_boolean( mb, SUBTRACT, flags1, empty, flags2, set2_ents ) );
1162  CHECK( test_boolean( mb, SUBTRACT, flags1, set1_ents, flags2, empty ) );
1163  // check union of non-empty sets
1164  CHECK( test_boolean( mb, SUBTRACT, flags1, set1_ents, flags2, set2_ents ) );
1165 }

References CHECK, moab::Range::insert(), make_mesh(), mb, SUBTRACT, and test_boolean().

Referenced by test_subtract_ordered_ordered(), test_subtract_ordered_ordered_tracking(), test_subtract_ordered_set(), test_subtract_ordered_set_tracking(), test_subtract_set_ordered(), test_subtract_set_ordered_tracking(), test_subtract_set_set(), and test_subtract_set_set_tracking().

◆ test_subtract_ordered_ordered()

void test_subtract_ordered_ordered ( )

Definition at line 126 of file Test_MBMeshSet.cpp.

127 {
128  test_subtract( MESHSET_ORDERED, MESHSET_ORDERED );
129 }

References test_subtract().

Referenced by main().

◆ test_subtract_ordered_ordered_tracking()

void test_subtract_ordered_ordered_tracking ( )

Definition at line 142 of file Test_MBMeshSet.cpp.

143 {
144  test_subtract( MESHSET_TRACK_OWNER | MESHSET_ORDERED, MESHSET_TRACK_OWNER | MESHSET_ORDERED );
145 }

References MESHSET_TRACK_OWNER, and test_subtract().

Referenced by main().

◆ test_subtract_ordered_set()

void test_subtract_ordered_set ( )

Definition at line 122 of file Test_MBMeshSet.cpp.

123 {
124  test_subtract( MESHSET_ORDERED, MESHSET_SET );
125 }

References MESHSET_SET, and test_subtract().

Referenced by main().

◆ test_subtract_ordered_set_tracking()

void test_subtract_ordered_set_tracking ( )

Definition at line 138 of file Test_MBMeshSet.cpp.

139 {
141 }

References MESHSET_SET, MESHSET_TRACK_OWNER, and test_subtract().

Referenced by main().

◆ test_subtract_set_ordered()

void test_subtract_set_ordered ( )

Definition at line 118 of file Test_MBMeshSet.cpp.

119 {
120  test_subtract( MESHSET_SET, MESHSET_ORDERED );
121 }

References MESHSET_SET, and test_subtract().

Referenced by main().

◆ test_subtract_set_ordered_tracking()

void test_subtract_set_ordered_tracking ( )

Definition at line 134 of file Test_MBMeshSet.cpp.

135 {
137 }

References MESHSET_SET, MESHSET_TRACK_OWNER, and test_subtract().

Referenced by main().

◆ test_subtract_set_set()

void test_subtract_set_set ( )

Definition at line 114 of file Test_MBMeshSet.cpp.

115 {
117 }

References MESHSET_SET, and test_subtract().

Referenced by main().

◆ test_subtract_set_set_tracking()

void test_subtract_set_set_tracking ( )

Definition at line 130 of file Test_MBMeshSet.cpp.

References MESHSET_SET, MESHSET_TRACK_OWNER, and test_subtract().

Referenced by main().

◆ test_unite()

void test_unite ( unsigned  flags1,
unsigned  flags2 
)

test unite_meshset

Definition at line 1110 of file Test_MBMeshSet.cpp.

1111 {
1112  Range empty, set1_ents, set2_ents;
1113  EntityHandle first_vert, last_vert, first_hex, last_hex;
1114  Core mb;
1115  make_mesh( mb, first_vert, last_vert, first_hex, last_hex );
1116 
1117  // define contents of first set
1118  set1_ents.insert( first_vert, first_vert + 10 );
1119  set1_ents.insert( first_vert + 100, first_vert + 199 );
1120  set1_ents.insert( first_hex + 100, first_hex + 200 );
1121 
1122  // define contents of second set
1123  set2_ents.insert( first_vert, first_vert );
1124  set2_ents.insert( first_vert + 11, first_vert + 99 );
1125  set2_ents.insert( first_vert + 150, first_vert + 209 );
1126  set2_ents.insert( first_vert + 211, first_vert + 211 );
1127  set2_ents.insert( first_hex + 50, first_hex + 99 );
1128 
1129  // check empty sets
1130  CHECK( test_boolean( mb, UNITE, flags1, empty, flags2, empty ) );
1131  // check union with 1 empty
1132  CHECK( test_boolean( mb, UNITE, flags1, empty, flags2, set2_ents ) );
1133  CHECK( test_boolean( mb, UNITE, flags1, set1_ents, flags2, empty ) );
1134  // check union of non-empty sets
1135  CHECK( test_boolean( mb, UNITE, flags1, set1_ents, flags2, set2_ents ) );
1136 }

References CHECK, moab::Range::insert(), make_mesh(), mb, test_boolean(), and UNITE.

Referenced by test_unite_ordered_ordered(), test_unite_ordered_ordered_tracking(), test_unite_ordered_set(), test_unite_ordered_set_tracking(), test_unite_set_ordered(), test_unite_set_ordered_tracking(), test_unite_set_set(), and test_unite_set_set_tracking().

◆ test_unite_ordered_ordered()

void test_unite_ordered_ordered ( )

Definition at line 192 of file Test_MBMeshSet.cpp.

193 {
194  test_unite( MESHSET_ORDERED, MESHSET_ORDERED );
195 }

References test_unite().

Referenced by main().

◆ test_unite_ordered_ordered_tracking()

void test_unite_ordered_ordered_tracking ( )

Definition at line 208 of file Test_MBMeshSet.cpp.

209 {
210  test_unite( MESHSET_TRACK_OWNER | MESHSET_ORDERED, MESHSET_TRACK_OWNER | MESHSET_ORDERED );
211 }

References MESHSET_TRACK_OWNER, and test_unite().

Referenced by main().

◆ test_unite_ordered_set()

void test_unite_ordered_set ( )

Definition at line 188 of file Test_MBMeshSet.cpp.

189 {
190  test_unite( MESHSET_ORDERED, MESHSET_SET );
191 }

References MESHSET_SET, and test_unite().

Referenced by main().

◆ test_unite_ordered_set_tracking()

void test_unite_ordered_set_tracking ( )

Definition at line 204 of file Test_MBMeshSet.cpp.

205 {
207 }

References MESHSET_SET, MESHSET_TRACK_OWNER, and test_unite().

Referenced by main().

◆ test_unite_set_ordered()

void test_unite_set_ordered ( )

Definition at line 184 of file Test_MBMeshSet.cpp.

185 {
186  test_unite( MESHSET_SET, MESHSET_ORDERED );
187 }

References MESHSET_SET, and test_unite().

Referenced by main().

◆ test_unite_set_ordered_tracking()

void test_unite_set_ordered_tracking ( )

Definition at line 200 of file Test_MBMeshSet.cpp.

201 {
203 }

References MESHSET_SET, MESHSET_TRACK_OWNER, and test_unite().

Referenced by main().

◆ test_unite_set_set()

void test_unite_set_set ( )

Definition at line 180 of file Test_MBMeshSet.cpp.

181 {
183 }

References MESHSET_SET, and test_unite().

Referenced by main().

◆ test_unite_set_set_tracking()

void test_unite_set_set_tracking ( )

Definition at line 196 of file Test_MBMeshSet.cpp.

References MESHSET_SET, MESHSET_TRACK_OWNER, and test_unite().

Referenced by main().