10 #define DEFAULT_TEST_FILE shell.h5m
11 #define DEFAULT_TEST_FILE1 shellQuad.h5m
15 #define STRINGIFY_( X ) #X
16 #define STRINGIFY( X ) STRINGIFY_( X )
17 #if defined( MESHDIR ) && defined( MOAB_HAVE_HDF5 )
18 #define DEFAULT_INPUT_FILE STRINGIFY( MESHDIR/fbigeom/DEFAULT_TEST_FILE )
19 #define DEFAULT_INPUT_FILE1 STRINGIFY( MESHDIR/fbigeom/DEFAULT_TEST_FILE1 )
21 #error Specify MESHDIR to compile test
24 #define CHECK_SIZE_C( type, array, allocated_size, size ) \
25 if( NULL == *(array) || *(allocated_size) == 0 ) \
27 *(array) = (type*)malloc( sizeof( type ) * (size) ); \
28 *(allocated_size) = size; \
30 else if( *(allocated_size) < (size) ) \
32 printf( " Array passed in is non-zero but too short.\n" ); \
42 void handle_error_code(
const int result,
int* number_failed,
int* number_not_implemented,
int* number_successful )
47 ( *number_successful )++;
61 const char* type_names[] = {
"Vertex",
"Edge",
"Face",
"Region" };
67 printf(
"Trouble getting entity adjacencies or types." );
71 printf(
"%s 0x%lx\n", type_names[ent_type], (
unsigned long)gent );
82 int ent_types[50], *ent_types_ptr = ent_types;
83 int adj_ents_alloc = 50, adj_ents_size, ent_types_size, ent_types_allocated = 50;
86 int ment_tags_size, ment_tags_alloc;
89 const char* type_names[] = {
"Vertex",
"Edge",
"Face",
"Region" };
92 char* dum_handle = NULL;
93 int dum_handle_alloc = 0, dum_handle_size = 0;
103 adj_ents[adj_ents_size] = ment;
108 printf(
"Trouble getting entity adjacencies or types." );
115 printf(
"Trouble getting tags on an entity or their names." );
119 tag_names = (
char**)malloc( ment_tags_size *
sizeof(
char* ) );
121 for( i = 0; i < ment_tags_size; i++ )
123 tag_names[i] = (
char*)malloc( 120 *
sizeof(
char ) );
128 printf(
"%s %ld:\n", type_names[ent_types[ent_types_size - 1]], (
long)ment );
129 printf(
"Adjacencies:" );
130 for( i = 0; i < adj_ents_size; i++ )
132 if( i > 0 ) printf(
", " );
133 printf(
"%s %ld", type_names[ent_types[i]], (
long)adj_ents[i] );
135 printf(
"\nTags: \n" );
136 for( i = 0; i < ment_tags_size; i++ )
138 printf(
"%s ", tag_names[i] );
141 printf(
"(trouble getting type...)\n" );
145 dum_handle_alloc = 0, dum_handle_size = 0;
151 printf(
"(Int value=%d)", int_data );
155 printf(
"(Dbl value=%f)", dbl_data );
159 printf(
"(EH value=%ld)", (
long)eh_data );
162 iMesh_getData(
mesh, ment, ment_tags[i], (
void**)&dum_handle, &dum_handle_alloc, &dum_handle_size,
164 if( NULL != dum_handle && dum_handle_size > 0 ) printf(
"(Opaque value=%c)", dum_handle[0] );
171 printf(
"(end tags)\n\n" );
182 const char* mesh_filename,
188 FBiGeom_load(
geom, geom_filename, 0, &result, strlen( geom_filename ), 0 );
191 printf(
"ERROR : can not load a geometry\n" );
196 iMesh_load(
mesh, 0, mesh_filename, 0, &result, strlen( mesh_filename ), 0 );
199 printf(
"ERROR : can not load a mesh\n" );
217 int ent_or_set1, ent_or_set2;
218 int status1, status2;
222 int pairs_alloc = 1, pairs_size;
229 printf(
"Couldn't create a new relation.\n" );
233 iRel_getPairInfo( assoc, *pair, &iface1, &ent_or_set1, &type1, &status1, &iface2, &ent_or_set2, &type2, &status2,
237 printf(
"Couldn't retrieve relation info.\n" );
243 printf(
"Unexpected relation info returned.\n" );
250 printf(
"Couldn't find relation pair when querying geom.\n" );
253 if( pairs_size != 1 || tmp_pair != *pair )
255 printf(
"Unexpected relation pairs returned when querying geom.\n" );
262 printf(
"Couldn't find relation pair when querying mesh.\n" );
265 if( pairs_size != 1 || tmp_pair != *pair )
267 printf(
"Unexpected relation pairs returned when querying mesh.\n" );
283 int gentities_size = 0, gentities_alloc = 0;
287 int mentity_handles_size = 0, mentity_handles_alloc = 0;
289 const char* dim_tag_name =
"GEOM_DIMENSION";
293 int mentities_vec_size;
297 int out_mentities_size = 0, out_mentities_alloc = 0;
300 int out_mentities2_size = 0, out_mentities2_alloc = 0;
303 int out_gentities_size = 0, out_gentities_alloc = 0;
308 printf(
"Failed to get gentities by type in relate_geom_mesh_test.\n" );
315 printf(
"Failed to relate geom entities in relate_geom_mesh_test.\n" );
322 iMesh_getEntSets(
mesh, NULL, 1, &mentity_handles, &mentity_handles_alloc, &mentity_handles_size, &result );
325 printf(
"Problem to get all entity sets.\n" );
333 printf(
"Couldn't create geom dim tag for mesh entities.\n" );
339 mentities_vec_size = 0;
341 for( i = 0; i < mentity_handles_size; i++ )
347 if(
dim == 1 ) mentities_vec[mentities_vec_size++] = mentity_handles[i];
353 printf(
"Failed to relate mesh entities in relate_geom_mesh_test.\n" );
361 printf(
"Failed to relate all geom and mesh entities in relate_geom_mesh_test.\n" );
373 printf(
"Failed to get gentities by type in relate_geom_mesh_test.\n" );
379 &out_mentities_size, &result );
382 printf(
"Failed to get geom entities in relate_geom_mesh_test.\n" );
386 if( out_mentities_size != gentities_size )
388 printf(
"Number of input geom entities and output mesh entity sets should be same\n" );
396 printf(
"Failed to remove relation in relate_geom_mesh_test.\n" );
400 &out_mentities2_size, &result );
403 printf(
"Shouldn't have gotten mesh sets in relate_geom_mesh_test.\n" );
411 printf(
"Failed to restore relation in relate_geom_mesh_test.\n" );
417 &out_gentities_alloc, &out_gentities_size, &result );
420 printf(
"Failed to get mesh entities in relate_geom_mesh_test.\n" );
424 if( out_mentities_size != out_gentities_size )
426 printf(
"Number of input mesh entity sets and output geom entities should be same\n" );
429 free( mentity_handles );
430 mentity_handles = NULL;
433 free( mentity_handles );
434 mentity_handles = NULL;
435 free( out_mentities );
436 out_mentities = NULL;
437 free( mentities_vec );
438 mentities_vec = NULL;
439 free( out_gentities );
440 out_gentities = NULL;
453 int gentities_size = 0, gentities_alloc = 0;
457 int out_mentities_size, out_mentities_alloc = 0;
464 int out_gentities_size, out_gentities_alloc = 0;
469 printf(
"Problem getting all geom entities.\n" );
474 &out_mentities_size, &result );
478 printf(
"Failed to get mesh entities related to geom entities in query_relations_test.\n" );
481 printf(
"Entities missing relations: %s\n", descr );
483 for( i = 0; i < gentities_size; i++ )
492 if( out_mentities_size != gentities_size )
494 printf(
"Number of mesh & related geom entities don't match.\n" );
499 for( i = 0; i < out_mentities_size; i++ )
504 printf(
"Entity set returned from classification wasn't valid.\n" );
511 &out_gentities_alloc, &out_gentities_size, &result );
514 printf(
"Failed to get geom entities related to mesh entities in query_relations_test.\n" );
519 if( out_mentities_size != out_gentities_size )
521 printf(
"Number of geom & related mesh entities don't match.\n" );
527 free( out_mentities );
528 out_mentities = NULL;
529 free( out_gentities );
530 out_gentities = NULL;
535 int main(
int argc,
char* argv[] )
539 const char* mesh_filename = DEFAULT_INPUT_FILE1;
544 int number_tests_not_implemented = 0;
552 if( argc == 2 && !strcmp( argv[1],
"-h" ) )
554 printf(
"Usage: %s <geom_filename> <mesh_filename>\n", argv[0] );
559 geom_filename = argv[1];
560 mesh_filename = argv[1];
564 geom_filename = argv[1];
565 mesh_filename = argv[2];
578 printf(
"\n\niRel TEST PROGRAM:\n\n" );
581 printf(
" load_geom_mesh: " );
588 printf(
" create_relation: " );
595 printf(
" relate_geom_mesh: " );
602 printf(
" query_relations: " );
610 printf(
"\niRel TEST SUMMARY: \n" );
613 printf(
" Number Not Implemented: %d\n", number_tests_not_implemented );