24 void test_unite(
unsigned flags1,
unsigned flags2 );
35 void print_handle_vect(
const char* prefix,
const std::vector< EntityHandle >& vect );
56 const Range& set1_ents,
58 const Range& set2_ents );
194 test_unite( MESHSET_ORDERED, MESHSET_ORDERED );
303 printf(
"ALL TESTS PASSED\n" );
305 printf(
"%d TESTS FAILED\n", err );
317 for(
int z = 0; z <=
dim; ++z )
319 for(
int y = 0; y <=
dim; ++y )
321 for(
int x = 0; x <=
dim; ++x )
323 const double coords[] = {
static_cast< double >( x ),
static_cast< double >( y ),
324 static_cast< double >( z ) };
333 const int dim1 =
dim + 1;
334 const int dimq = dim1 * dim1;
336 for(
int z = 0; z <
dim; ++z )
338 for(
int y = 0; y <
dim; ++y )
340 for(
int x = 0; x <
dim; ++x )
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 };
365 first_vert = range.
front();
366 last_vert = range.
back();
370 first_hex = range.
front();
371 last_hex = range.
back();
375 template <
typename iter_type >
376 void print_handles( std::ostream& str,
const char* prefix, iter_type begin, iter_type end )
378 if( prefix ) str << prefix <<
':';
381 str <<
" (empty)" << std::endl;
392 for( ++j, ++prev_ent; j != end && *j == prev_ent; ++j, ++prev_ent )
395 if( prev_ent - *i > 1 )
397 else if( prev_ent - *i == 1 )
401 if( i == end )
break;
414 print_handles( std::cout, prefix, vect.begin(), vect.end() );
423 const std::vector< EntityHandle >& expected,
425 std::vector< EntityHandle >& vect,
429 std::vector< EntityHandle > sorted( expected );
430 std::sort( sorted.begin(), sorted.end() );
431 sorted.erase( std::unique( sorted.begin(), sorted.end() ), sorted.end() );
433 int expected_size = 0;
434 if( flags & MESHSET_ORDERED )
436 if( expected != vect )
438 std::cout <<
"Incorrect set contents from vector-based query" << std::endl;
443 expected_size = expected.size();
449 std::cout <<
"Incorrect set contents from vector-based query" << std::endl;
454 expected_size = sorted.size();
457 if( expected_size != set_count )
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;
466 vect.resize( range.
size() );
467 std::copy( range.
begin(), range.
end(), vect.begin() );
470 std::cout <<
"Incorrect set contents from mbrange-based query" << std::endl;
485 std::vector< EntityHandle > vect;
496 std::vector< EntityHandle > adj;
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 );
508 if( range != adjacent )
510 std::cout <<
"Incorrect adjacent entities for tracking set" << std::endl;
523 std::vector< EntityHandle > vect, expected;
527 std::vector< EntityHandle >::iterator i = expected.begin();
528 while( i != expected.end() )
531 i = expected.erase( i );
539 std::copy( range.
begin(), range.
end(), std::back_inserter( vect ) );
547 std::vector< EntityHandle > vect, expected;
551 std::vector< EntityHandle >::iterator i = expected.begin();
552 while( i != expected.end() )
555 i = expected.erase( i );
563 std::copy( range.
begin(), range.
end(), std::back_inserter( vect ) );
575 std::vector< EntityHandle > contents, vect;
580 std::copy( range.
begin(), range.
end(), std::back_inserter( contents ) );
587 std::copy( range.
begin(), range.
end(), std::back_inserter( contents ) );
594 std::copy( range.
begin(), range.
end(), std::back_inserter( contents ) );
601 std::copy( range.
begin(), range.
end(), std::back_inserter( contents ) );
608 std::copy( range.
begin(), range.
end(), std::back_inserter( contents ) );
615 std::copy( range.
begin(), range.
end(), std::back_inserter( contents ) );
622 std::copy( range.
begin(), range.
end(), std::back_inserter( contents ) );
629 std::copy( range.
begin(), range.
end(), std::back_inserter( contents ) );
636 std::copy( range.
begin(), range.
end(), std::back_inserter( contents ) );
643 std::copy( range.
begin(), range.
end(), std::back_inserter( contents ) );
650 std::copy( range.
begin(), range.
end(), std::back_inserter( contents ) );
657 std::copy( range.
begin(), range.
end(), std::back_inserter( contents ) );
664 std::copy( range.
begin(), range.
end(), std::back_inserter( contents ) );
671 std::copy( range.
begin(), range.
end(), std::back_inserter( contents ) );
678 std::copy( range.
begin(), range.
end(), std::back_inserter( contents ) );
685 std::copy( range.
begin(), range.
end(), std::back_inserter( contents ) );
694 contents.push_back( h );
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 ) );
711 std::copy( range.
begin(), range.
end(), std::back_inserter( contents ) );
721 std::copy( range.
begin(), range.
end(), std::back_inserter( contents ) );
728 std::copy( range.
begin(), range.
end(), std::back_inserter( contents ) );
738 std::copy( range.
begin(), range.
end(), std::back_inserter( contents ) );
748 std::vector< EntityHandle >::reverse_iterator i = find( vect.rbegin(), vect.rend(), *r );
749 if( i != vect.rend() ) *i = 0;
751 std::vector< EntityHandle >::iterator j = vect.begin();
752 while( j != vect.end() )
769 std::vector< EntityHandle > contents;
774 std::copy( range.
begin(), range.
end(), std::back_inserter( contents ) );
822 range.
insert( 1000, 1000 );
843 range.
insert( 1000, 1001 );
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 );
937 std::reverse( contents.begin(), contents.begin() + contents.size() / 2 );
946 std::copy( range.
begin(), range.
end(), std::back_inserter( contents ) );
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 );
963 std::copy( range.
begin(), range.
end(), std::back_inserter( contents ) );
970 EntityHandle first_vert, last_vert, first_hex, last_hex;
972 make_mesh(
mb, first_vert, last_vert, first_hex, last_hex );
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 );
999 EntityHandle first_vert, last_vert, first_hex, last_hex;
1001 make_mesh(
mb, first_vert, last_vert, first_hex, last_hex );
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 );
1031 const Range& set1_ents,
1033 const Range& set2_ents )
1045 std::vector< EntityHandle > expected;
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() );
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 ) );
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() );
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() );
1085 Range empty, set1_ents, set2_ents;
1086 EntityHandle first_vert, last_vert, first_hex, last_hex;
1088 make_mesh(
mb, first_vert, last_vert, first_hex, last_hex );
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 );
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 );
1112 Range empty, set1_ents, set2_ents;
1113 EntityHandle first_vert, last_vert, first_hex, last_hex;
1115 make_mesh(
mb, first_vert, last_vert, first_hex, last_hex );
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 );
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 );
1140 Range empty, set1_ents, set2_ents;
1141 EntityHandle first_vert, last_vert, first_hex, last_hex;
1143 make_mesh(
mb, first_vert, last_vert, first_hex, last_hex );
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 );
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 );
1188 const int num_ents2 =
sizeof( entities2 ) /
sizeof(
EntityHandle );
1197 std::vector< EntityHandle > contents( 4 );
1199 make_mesh(
mb, contents[0], contents[1], contents[2], contents[3] );
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 };
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 };
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] );
1242 std::vector< EntityHandle > contents;
1247 std::vector< EntityHandle >::iterator v = contents.begin();
1250 if( r ==
init.end() || v == contents.end() )
1253 CHECK( v == contents.end() );
1273 if( test_type && test_dim )
CHECK_ERR( MB_FAILURE );
1275 EntityHandle first_vert, last_vert, first_hex, last_hex;
1277 make_mesh(
mb, first_vert, last_vert, first_hex, last_hex );
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 );
1327 if( test_dim && !test_type )
1452 std::vector< EntityHandle >
entities, entities2;
1464 rval =
moab.get_entities_by_type( set, etype, entities2 );
CHECK_ERR( rval );
1468 rval =
moab.get_entities_by_handle( set, entities2 );
CHECK_ERR( rval );
1470 else if( -1 !=
dim )
1472 rval =
moab.get_entities_by_dimension( set,
dim, entities2 );
CHECK_ERR( rval );