11 #define STRINGIFY_( X ) #X
12 #define STRINGIFY( X ) STRINGIFY_( X )
15 #define DEFAULT_GEOM STRINGIFY( MESHDIR/irel/brick.stp )
16 #define DEFAULT_MESH STRINGIFY( MESHDIR/irel/brick.h5m )
18 #define DEFAULT_GEOM STRINGIFY( MESHDIR/irel/brick.facet )
19 #define DEFAULT_MESH STRINGIFY( MESHDIR/irel/brick.h5m )
22 #error Specify MESHDIR to compile test
25 #define CHECK_SIZE_C( type, array, allocated_size, size ) \
26 if( NULL == *(array) || *(allocated_size) == 0 ) \
28 *(array) = (type*)malloc( sizeof( type ) * (size) ); \
29 *(allocated_size) = size; \
31 else if( *(allocated_size) < (size) ) \
33 printf( " Array passed in is non-zero but too short.\n" ); \
43 void handle_error_code(
const int result,
int* number_failed,
int* ,
int* number_successful )
48 ( *number_successful )++;
62 const char* type_names[] = {
"Vertex",
"Edge",
"Face",
"Region" };
64 iGeom_getEntType(
geom, gent, &ent_type, &result );
68 printf(
"Trouble getting entity adjacencies or types." );
72 printf(
"%s 0x%lx\n", type_names[ent_type], (
unsigned long)gent );
83 int ent_types[50], *ent_types_ptr = ent_types;
84 int adj_ents_alloc = 50, adj_ents_size, ent_types_size, ent_types_allocated = 50;
88 int ment_tags_size, ment_tags_alloc;
93 const char* type_names[] = {
"Vertex",
"Edge",
"Face",
"Region" };
100 adj_ents[adj_ents_size] = ment;
105 printf(
"Trouble getting entity adjacencies or types." );
112 printf(
"Trouble getting tags on an entity or their names." );
116 tag_names = (
char**)malloc( ment_tags_size *
sizeof(
char* ) );
118 for( i = 0; i < ment_tags_size; i++ )
120 tag_names[i] = (
char*)malloc( 120 *
sizeof(
char ) );
125 printf(
"%s %ld:\n", type_names[ent_types[ent_types_size - 1]], (
long)ment );
126 printf(
"Adjacencies:" );
127 for( i = 0; i < adj_ents_size; i++ )
129 if( i > 0 ) printf(
", " );
130 printf(
"%s %ld", type_names[ent_types[i]], (
long)adj_ents[i] );
132 printf(
"\nTags: \n" );
133 for( i = 0; i < ment_tags_size; i++ )
137 printf(
"%s ", tag_names[i] );
140 printf(
"(trouble getting type...)\n" );
143 char* dum_handle = NULL;
144 int dum_handle_alloc = 0, dum_handle_size = 0;
153 printf(
"(Int value=%d)", int_data );
157 printf(
"(Dbl value=%f)", dbl_data );
161 printf(
"(EH value=%ld)", (
long)eh_data );
164 iMesh_getData(
mesh, ment, ment_tags[i], (
void**)&dum_handle, &dum_handle_alloc, &dum_handle_size,
166 if( NULL != dum_handle && dum_handle_size > 0 ) printf(
"(Opaque value=%c)", dum_handle[0] );
173 printf(
"(end tags)\n\n" );
185 const char* mesh_filename,
191 iGeom_load(
geom, geom_filename, 0, &result, strlen( geom_filename ), 0 );
194 printf(
"ERROR : can not load a geometry\n" );
199 iMesh_load(
mesh, 0, mesh_filename, 0, &result, strlen( mesh_filename ), 0 );
202 printf(
"ERROR : can not load a mesh\n" );
219 int ent_or_set1, ent_or_set2;
220 int status1, status2;
224 int pairs_alloc = 1, pairs_size;
231 printf(
"Couldn't create a new relation.\n" );
235 iRel_getPairInfo( assoc, *pair, &iface1, &ent_or_set1, &type1, &status1, &iface2, &ent_or_set2, &type2, &status2,
239 printf(
"Couldn't retrieve relation info.\n" );
245 printf(
"Unexpected relation info returned.\n" );
252 printf(
"Couldn't find relation pair when querying geom.\n" );
255 if( pairs_size != 1 || tmp_pair != *pair )
257 printf(
"Unexpected relation pairs returned when querying geom.\n" );
264 printf(
"Couldn't find relation pair when querying mesh.\n" );
267 if( pairs_size != 1 || tmp_pair != *pair )
269 printf(
"Unexpected relation pairs returned when querying mesh.\n" );
286 int gentities_size = 0, gentities_alloc = 0;
289 int mentity_handles_size = 0, mentity_handles_alloc = 0;
291 const char* dim_tag_name =
"GEOM_DIMENSION";
295 int mentities_vec_size = 0;
299 int out_mentities_size = 0, out_mentities_alloc = 0;
302 int out_mentities2_size = 0, out_mentities2_alloc = 0;
305 int out_gentities_size = 0, out_gentities_alloc = 0;
308 iGeom_getEntities(
geom, NULL,
iBase_VERTEX, &gentities, &gentities_alloc, &gentities_size, &result );
311 printf(
"Failed to get gentities by type in relate_geom_mesh_test.\n" );
318 printf(
"Failed to relate geom entities in relate_geom_mesh_test.\n" );
324 iMesh_getEntSets(
mesh, NULL, 1, &mentity_handles, &mentity_handles_alloc, &mentity_handles_size, &result );
327 printf(
"Problem to get all entity sets.\n" );
335 printf(
"Couldn't create geom dim tag for mesh entities.\n" );
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" );
370 iGeom_getEntities(
geom, NULL,
iBase_ALL_TYPES, &gentities, &gentities_alloc, &gentities_size, &result );
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" );
401 &out_mentities2_size, &result );
404 printf(
"Shouldn't have gotten mesh sets in relate_geom_mesh_test.\n" );
412 printf(
"Failed to restore relation in relate_geom_mesh_test.\n" );
418 &out_gentities_alloc, &out_gentities_size, &result );
421 printf(
"Failed to get mesh entities in relate_geom_mesh_test.\n" );
425 if( out_mentities_size != out_gentities_size )
427 printf(
"Number of input mesh entity sets and output geom entities should be same\n" );
430 free( mentity_handles );
431 mentity_handles = NULL;
434 free( mentity_handles );
435 mentity_handles = NULL;
436 free( out_mentities );
437 out_mentities = NULL;
438 free( mentities_vec );
439 mentities_vec = NULL;
440 free( out_gentities );
441 out_gentities = NULL;
456 int gentities_size = 0, gentities_alloc = 0;
459 int out_mentities_size, out_mentities_alloc = 0;
462 int out_gentities_size, out_gentities_alloc = 0;
465 iGeom_getEntities(
geom, NULL,
iBase_ALL_TYPES, &gentities, &gentities_alloc, &gentities_size, &result );
468 printf(
"Problem getting all geom entities.\n" );
473 &out_mentities_size, &result );
479 printf(
"Failed to get mesh entities related to geom entities in query_relations_test.\n" );
482 printf(
"Entities missing relations: %s\n", descr );
484 for( i = 0; i < gentities_size; i++ )
493 if( out_mentities_size != gentities_size )
495 printf(
"Number of mesh & related geom entities don't match.\n" );
500 for( i = 0; i < out_mentities_size; i++ )
506 printf(
"Entity set returned from classification wasn't valid.\n" );
513 &out_gentities_alloc, &out_gentities_size, &result );
516 printf(
"Failed to get geom entities related to mesh entities in query_relations_test.\n" );
521 if( out_mentities_size != out_gentities_size )
523 printf(
"Number of geom & related mesh entities don't match.\n" );
529 free( out_mentities );
530 out_mentities = NULL;
531 free( out_gentities );
532 out_gentities = NULL;
537 int main(
int argc,
char* argv[] )
540 const char* geom_filename = DEFAULT_GEOM;
541 const char* mesh_filename = DEFAULT_MESH;
546 int number_tests_not_implemented = 0;
554 printf(
"Usage: %s %s\n", geom_filename, mesh_filename );
556 if( argc == 2 && !strcmp( argv[1],
"-h" ) )
558 printf(
"Usage: %s <geom_filename> <mesh_filename>\n", argv[0] );
563 geom_filename = argv[1];
564 mesh_filename = argv[1];
568 geom_filename = argv[1];
569 mesh_filename = argv[2];
573 iGeom_newGeom( 0, &
geom, &result, 0 );
582 printf(
"\n\niRel TEST PROGRAM:\n\n" );
585 printf(
" load_geom_mesh: " );
592 printf(
" create_relation: " );
599 printf(
" relate_geom_mesh: " );
606 printf(
" query_relations: " );
614 printf(
"\niRel TEST SUMMARY: \n" );
617 printf(
" Number Not Implemented: %d\n", number_tests_not_implemented );
623 iGeom_dtor(
geom, &result );