Mesh Oriented datABase
(version 5.4.1)
Array-based unstructured mesh datastructure
|
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include "iMesh.h"
#include "iMesh_extensions.h"
#include "moab/Types.hpp"
#include "TestUtil.hpp"
Go to the source code of this file.
#define ASSERT | ( | COND | ) |
assert_pass = true; \ if( !( COND ) ) \ { \ PRINT_ASSERT_FAILURE( #COND, __FILE__, __LINE__ ); \ assert_pass = false; \ }
Definition at line 82 of file testc_cbind.cpp.
Referenced by entity_connectivity_test().
#define CHK | ( | err | ) |
if( (err) != iBase_SUCCESS ) do \ { \ printf( "%s:%d ITAPS error %d\n", __FILE__, __LINE__, err ); \ return 0; \ } while( 0 )
Definition at line 96 of file testc_cbind.cpp.
Referenced by array_allocation(), ordered_set_regression(), test_iterator(), and test_iterator_common().
#define DEFAULT_INPUT_FILE STRINGIFY( DEFAULT_TEST_FILE ) |
Definition at line 78 of file testc_cbind.cpp.
Referenced by main().
#define DEFAULT_TEST_FILE brick.vtk |
Definition at line 71 of file testc_cbind.cpp.
#define FALSE 0 |
Definition at line 68 of file testc_cbind.cpp.
Referenced by check_esets(), entity_connectivity_test(), entity_sets_subtest(), entityset_double_tag_test(), entityset_int_tag_test(), entityset_struct_tag_test(), entityset_tag_delete_test(), entityset_tag_test(), load_mesh_test(), mesh_double_tag_test(), mesh_int_tag_test(), mesh_struct_tag_test(), mesh_tag_delete_test(), tag_info_test(), topology_adjacency_test(), topology_dimension_test(), vertex_coordinates_test(), vertex_double_tag_test(), vertex_int_tag_test(), vertex_struct_tag_test(), vertex_tag_delete_test(), and vertex_tag_test().
#define TEST_ERROR_CODE | ( | A, | |
B | |||
) |
if( iBase_ERROR_MAP[( A )] != ( B ) ) \ { \ printf( "ERROR: Invalid mapping for MOAB error code %s\n", #A ); \ printf( " Expected %d, actual is %d\n", (int)iBase_ERROR_MAP[( A )], (int)( B ) ); \ return FALSE; \ }
Definition at line 143 of file testc_cbind.cpp.
Referenced by error_code_test().
#define TRUE 1 |
Definition at line 69 of file testc_cbind.cpp.
Referenced by check_esets(), moab::WriteCCMIO::create_ccmio_structure(), entity_connectivity_test(), entity_sets_subtest(), entity_sets_test(), entityset_double_tag_test(), entityset_int_tag_test(), entityset_struct_tag_test(), entityset_tag_delete_test(), error_code_test(), load_mesh_test(), mesh_double_tag_test(), mesh_int_tag_test(), mesh_struct_tag_test(), mesh_tag_delete_test(), tag_info_test(), topology_adjacency_test(), topology_dimension_test(), vertex_coordinates_test(), vertex_double_tag_test(), vertex_int_tag_test(), vertex_struct_tag_test(), and vertex_tag_delete_test().
int all_adjacency_regression | ( | iMesh_Instance | mesh | ) |
Definition at line 2659 of file testc_cbind.cpp.
References iBase_ALL_TYPES, iBase_INTERLEAVED, iBase_NEW, iBase_SUCCESS, iMesh_createEnt, iMesh_createVtxArr, iMesh_dtor, iMesh_getEntAdj, iMesh_LINE_SEGMENT, and iMesh_newMesh.
Referenced by main().
{ int err; double coords[] = { 0, 0, 0, 1, 1, 1 }; iBase_EntityHandle* verts = NULL; int verts_alloc = 0, verts_size; iBase_EntityHandle line; int status; iBase_EntityHandle* adj = NULL; int adj_alloc = 0, adj_size; iMesh_newMesh( "", &mesh, &err, 0 ); if( iBase_SUCCESS != err ) return 0; iMesh_createVtxArr( mesh, 2, iBase_INTERLEAVED, coords, 6, &verts, &verts_alloc, &verts_size, &err ); if( iBase_SUCCESS != err ) return 0; iMesh_createEnt( mesh, iMesh_LINE_SEGMENT, verts, 2, &line, &status, &err ); if( iBase_SUCCESS != err || status != iBase_NEW ) return 0; iMesh_getEntAdj( mesh, verts[0], iBase_ALL_TYPES, &adj, &adj_alloc, &adj_size, &err ); if( iBase_SUCCESS != err ) return 0; if( adj_size != 1 || adj[0] != line ) { printf( "Bad: couldn't find adjacency for vertex\n" ); return 0; } free( adj ); adj_alloc = 0; adj = NULL; iMesh_getEntAdj( mesh, line, iBase_ALL_TYPES, &adj, &adj_alloc, &adj_size, &err ); if( iBase_SUCCESS != err ) return 0; if( adj_size != 2 || ( ( adj[0] != verts[0] || adj[1] != verts[1] ) && ( adj[0] != verts[1] || adj[1] != verts[0] ) ) ) { printf( "Bad: couldn't find adjacencies for line\n" ); free( adj ); free( verts ); return 0; } free( adj ); free( verts ); iMesh_dtor( mesh, &err ); if( iBase_SUCCESS != err ) return 0; return 1; }
int array_allocation | ( | iMesh_Instance | mesh | ) |
Definition at line 2749 of file testc_cbind.cpp.
References CHK, iBase_ALL_TYPES, iBase_BAD_ARRAY_DIMENSION, iBase_BAD_ARRAY_SIZE, iBase_FAILURE, iBase_INTERLEAVED, iBase_SUCCESS, iMesh_ALL_TOPOLOGIES, iMesh_createVtxArr, iMesh_dtor, iMesh_getEntities, iMesh_getRootSet, iMesh_newMesh, and root_set.
Referenced by main().
{ int err; double coords[] = { 0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3 }; iBase_EntityHandle* verts = NULL; int verts_alloc = 0, verts_size; iBase_EntityHandle* ents; int ents_alloc, ents_size; iMesh_newMesh( "", &mesh, &err, 0 ); if( iBase_SUCCESS != err ) return 0; iMesh_getRootSet( mesh, &root_set, &err ); if( iBase_SUCCESS != err ) { printf( "Failed to return a root set.\n" ); return 0; } iMesh_createVtxArr( mesh, 4, iBase_INTERLEAVED, coords, 12, &verts, &verts_alloc, &verts_size, &err ); if( iBase_SUCCESS != err ) return 0; free( verts ); /* test for proper allocation when array pointer passed in null but alloc'd size not */ ents_alloc = 3; ents = NULL; iMesh_getEntities( mesh, root_set, iBase_ALL_TYPES, iMesh_ALL_TOPOLOGIES, &ents, &ents_alloc, &ents_size, &err ); CHK( err ); free( ents ); /* test for proper allocation when array pointer passed in non-null but alloc'd size 0 */ ents_alloc = 0; iMesh_getEntities( mesh, root_set, iBase_ALL_TYPES, iMesh_ALL_TOPOLOGIES, &ents, &ents_alloc, &ents_size, &err ); CHK( err ); free( ents ); /* test for failure when passed in alloc'd size is smaller than it should be */ ents_alloc -= 1; iMesh_getEntities( mesh, root_set, iBase_ALL_TYPES, iMesh_ALL_TOPOLOGIES, &ents, &ents_alloc, &ents_size, &err ); if( iBase_BAD_ARRAY_SIZE != err && iBase_BAD_ARRAY_DIMENSION != err ) { err = iBase_FAILURE; CHK( err ); } iMesh_dtor( mesh, &err ); CHK( err ); return 1; }
int check_esets | ( | iMesh_Instance | mesh, |
const int | num_sets | ||
) |
Definition at line 1623 of file testc_cbind.cpp.
References FALSE, iBase_SUCCESS, iMesh_getNumEntSets, root_set, and TRUE.
Referenced by entity_sets_subtest().
{ int entity_sets_size; int result; iMesh_getNumEntSets( mesh, root_set, 1, &entity_sets_size, &result ); if( iBase_SUCCESS != result ) { printf( "Problem to get all entity sets in mesh.\n" ); return FALSE; } if( entity_sets_size != num_sets ) { printf( "the number of entity sets in whole mesh should be %d" ", actual number is %d.\n", num_sets, entity_sets_size ); return FALSE; } return TRUE; }
int compare_array_iter | ( | const char * | info, |
iMesh_Instance | mesh, | ||
iBase_EntitySetHandle | set, | ||
iBase_EntityHandle * | contents, | ||
int | contents_size, | ||
int | array_size, | ||
enum iBase_EntityType | type, | ||
enum iMesh_EntityTopology | topo | ||
) |
Definition at line 2893 of file testc_cbind.cpp.
References iBase_FAILURE, iBase_SUCCESS, iMesh_endEntArrIter, iMesh_getNextEntArrIter, iMesh_initEntArrIter, and iMesh_resetEntArrIter.
Referenced by test_iterator_common().
{ iBase_EntityArrIterator iter = 0; int i, j, twice, has_data, result = iBase_SUCCESS, result2; iBase_EntityHandle* values; int values_size, values_alloc = array_size; values = (iBase_EntityHandle*)malloc( array_size * sizeof( iBase_EntityHandle ) ); iMesh_initEntArrIter( mesh, set, type, topo, array_size, 0, &iter, &result ); if( iBase_SUCCESS != result ) { printf( "%s:%d: Error %d initializing %s array iterator for type %d/topo %d\n", __FILE__, __LINE__, result, info, (int)type, (int)topo ); free( values ); return result; } for( twice = 0; twice < 2; ++twice ) { i = 0; while( i < contents_size ) { iMesh_getNextEntArrIter( mesh, iter, &values, &values_alloc, &values_size, &has_data, &result ); if( iBase_SUCCESS != result ) { printf( "%s:%d: Error %d stepping %s array iterator for type %d/topo %d\n", __FILE__, __LINE__, result, info, (int)type, (int)topo ); goto end_arr_iter; } if( !has_data || !values_size ) { printf( "%s:%d: %s array iterator for type %d/topo %d ended prematurely at %d of %d\n", __FILE__, __LINE__, info, (int)type, (int)topo, i, contents_size ); result = iBase_FAILURE; goto end_arr_iter; } if( i + values_size > contents_size ) { printf( "%s:%d: %s array iterator for type %d/topo %d returned more than %d handles\n", __FILE__, __LINE__, info, (int)type, (int)topo, contents_size ); result = iBase_FAILURE; goto end_arr_iter; } if( contents_size - i >= array_size && values_size < array_size ) { printf( "%s:%d: %s array iterator for type %d/topo %d returned fewer than %d handles\n", __FILE__, __LINE__, info, (int)type, (int)topo, array_size ); result = iBase_FAILURE; goto end_arr_iter; } for( j = 0; j < values_size; ++j, ++i ) { if( values[j] != contents[i] ) { printf( "%s:%d: %s array iterator for type %d/topo %d returned incorrect value " "at %d of %d\n", __FILE__, __LINE__, info, (int)type, (int)topo, i, contents_size ); result = iBase_FAILURE; goto end_arr_iter; } } } iMesh_getNextEntArrIter( mesh, iter, &values, &values_alloc, &values_size, &has_data, &result ); if( iBase_SUCCESS != result ) { printf( "%s:%d: Error %d stepping %s array iterator for type %d/topo %d\n", __FILE__, __LINE__, result, info, (int)type, (int)topo ); goto end_arr_iter; } if( has_data || values_size ) { printf( "%s:%d: %s array iterator for type %d/topo %d did not end after %d values\n", __FILE__, __LINE__, info, (int)type, (int)topo, contents_size ); result = iBase_FAILURE; goto end_arr_iter; } iMesh_resetEntArrIter( mesh, iter, &result ); if( iBase_SUCCESS != result ) { printf( "%s:%d: Error %d resetting %s array iterator for type %d/topo %d\n", __FILE__, __LINE__, result, info, (int)type, (int)topo ); result = iBase_FAILURE; goto end_arr_iter; } } end_arr_iter: free( values ); iMesh_endEntArrIter( mesh, iter, &result2 ); if( iBase_SUCCESS != result2 ) { printf( "%s:%d: Error %d releasing %s array iterator for type %d/topo %d\n", __FILE__, __LINE__, result, info, (int)type, (int)topo ); if( iBase_SUCCESS == result ) result = result2; } return result; }
int compare_single_iter | ( | const char * | info, |
iMesh_Instance | mesh, | ||
iBase_EntitySetHandle | set, | ||
iBase_EntityHandle * | contents, | ||
int | contents_size, | ||
enum iBase_EntityType | type, | ||
enum iMesh_EntityTopology | topo | ||
) |
Definition at line 2806 of file testc_cbind.cpp.
References iBase_FAILURE, iBase_SUCCESS, iMesh_endEntIter, iMesh_getNextEntIter, iMesh_initEntIter, and iMesh_resetEntIter.
Referenced by test_iterator_common().
{ iBase_EntityIterator iter = 0; int i, twice, has_data, result = iBase_SUCCESS, result2; iBase_EntityHandle value; iMesh_initEntIter( mesh, set, type, topo, 0, &iter, &result ); if( iBase_SUCCESS != result ) { printf( "%s:%d: Error %d initializing %s iterator for type %d/topo %d\n", __FILE__, __LINE__, result, info, (int)type, (int)topo ); return result; } for( twice = 0; twice < 2; ++twice ) { for( i = 0; i < contents_size; ++i ) { iMesh_getNextEntIter( mesh, iter, &value, &has_data, &result ); if( iBase_SUCCESS != result ) { printf( "%s:%d: Error %d stepping %s iterator for type %d/topo %d\n", __FILE__, __LINE__, result, info, (int)type, (int)topo ); goto end_single_iter; } if( !has_data ) { printf( "%s:%d: %s iterator for type %d/topo %d ended prematurely at %d of %d\n", __FILE__, __LINE__, info, (int)type, (int)topo, i, contents_size ); result = iBase_FAILURE; goto end_single_iter; } if( value != contents[i] ) { printf( "%s:%d: %s iterator for type %d/topo %d returned incorrect value at %d of %d\n", __FILE__, __LINE__, info, (int)type, (int)topo, i, contents_size ); result = iBase_FAILURE; goto end_single_iter; } } iMesh_getNextEntIter( mesh, iter, &value, &has_data, &result ); if( iBase_SUCCESS != result ) { printf( "%s:%d: Error %d stepping %s iterator for type %d/topo %d\n", __FILE__, __LINE__, result, info, (int)type, (int)topo ); goto end_single_iter; } if( has_data ) { printf( "%s:%d: %s iterator for type %d/topo %d did not end after %d values\n", __FILE__, __LINE__, info, (int)type, (int)topo, contents_size ); result = iBase_FAILURE; goto end_single_iter; } iMesh_resetEntIter( mesh, iter, &result ); if( iBase_SUCCESS != result ) { printf( "%s:%d: Error %d resetting %s iterator for type %d/topo %d\n", __FILE__, __LINE__, result, info, (int)type, (int)topo ); result = iBase_FAILURE; goto end_single_iter; } } end_single_iter: iMesh_endEntIter( mesh, iter, &result2 ); if( iBase_SUCCESS != result2 ) { printf( "%s:%d: Error %d releasing %s iterator for type %d/topo %d\n", __FILE__, __LINE__, result, info, (int)type, (int)topo ); if( iBase_SUCCESS == result ) result = result2; } return result; }
int entity_connectivity_test | ( | iMesh_Instance | mesh | ) |
Definition at line 514 of file testc_cbind.cpp.
References ASSERT, assert_pass, entities, FALSE, iBase_ALL_TYPES, iBase_EDGE, iBase_SUCCESS, iBase_VERTEX, iMesh_ALL_TOPOLOGIES, iMesh_getAdjEntIndices, iMesh_getEntAdj, iMesh_getEntities, qsort_comp_handles(), root_set, size, and TRUE.
Referenced by main().
{ int type, result; int *offsets, offsets_alloc, offsets_size; int *indices, indices_alloc, indices_size; iBase_EntityHandle *entities, *adj_ents, *entities2, *sorted; int entities_alloc, entities_size, adj_ents_alloc, adj_ents_size; int entities2_alloc, entities2_size; iBase_EntityHandle adj_ents2[27], *adj_ents2_ptr = adj_ents2; int adj_ents2_alloc = 27, adj_ents2_size, i, size; for( type = iBase_EDGE; type < iBase_ALL_TYPES; type++ ) { entities = NULL; entities_alloc = 0; adj_ents = NULL; adj_ents_alloc = 0; indices = NULL; indices_alloc = 0; offsets = NULL; offsets_alloc = 0; iMesh_getAdjEntIndices( mesh, root_set, type, iMesh_ALL_TOPOLOGIES, iBase_VERTEX, &entities, &entities_alloc, &entities_size, &adj_ents, &adj_ents_alloc, &adj_ents_size, &indices, &indices_alloc, &indices_size, &offsets, &offsets_alloc, &offsets_size, &result ); if( iBase_SUCCESS != result ) { printf( "Failed to get indices of vertices in connectivity_test, type=%d.\n", type ); return FALSE; } if( entities_alloc != entities_size ) { printf( "Number of entities didn't agree with array size in connectivity_test.\n" ); free( entities ); free( adj_ents ); free( indices ); free( offsets ); return FALSE; } if( offsets_alloc != offsets_size ) { printf( "Number of offsets didn't agree with array size in connectivity_test.\n" ); free( entities ); free( adj_ents ); free( indices ); free( offsets ); return FALSE; } if( indices_alloc != indices_size ) { printf( "Number of indices didn't agree with array size in connectivity_test.\n" ); free( entities ); free( adj_ents ); free( indices ); free( offsets ); return FALSE; } if( adj_ents_alloc != adj_ents_size ) { printf( "Number of adjacent entities didn't agree with array size in " "connectivity_test.\n" ); free( entities ); free( adj_ents ); free( indices ); free( offsets ); return FALSE; } if( offsets_size != entities_size + 1 ) { printf( "Invalid/inconsistent offset size from iMesh_getAdjEntIndices.\n" ); free( entities ); free( adj_ents ); free( indices ); free( offsets ); return FALSE; } /* check that results are valid */ for( i = 0; i < entities_size; ++i ) { ASSERT( offsets[i] < offsets[i + 1] && offsets[i] < indices_size ); if( !assert_pass ) { free( entities ); free( adj_ents ); free( indices ); free( offsets ); return FALSE; } } for( i = 0; i < indices_size; ++i ) { ASSERT( indices[i] >= 0 && indices[i] < adj_ents_size ); if( !assert_pass ) { free( entities ); free( adj_ents ); free( indices ); free( offsets ); return FALSE; } } /* compare initial entity list against result of iMesh_getEntities */ entities2 = NULL; entities2_alloc = 0; iMesh_getEntities( mesh, root_set, type, iMesh_ALL_TOPOLOGIES, &entities2, &entities2_alloc, &entities2_size, &result ); ASSERT( iBase_SUCCESS == result ); if( !assert_pass ) { free( entities ); free( adj_ents ); free( indices ); free( offsets ); return FALSE; } size = sizeof( iBase_EntityHandle ) * entities_size; sorted = (iBase_EntityHandle*)malloc( size ); memcpy( sorted, entities, size ); qsort( sorted, entities_size, sizeof( iBase_EntityHandle ), &qsort_comp_handles ); qsort( entities2, entities2_size, sizeof( iBase_EntityHandle ), &qsort_comp_handles ); ASSERT( entities_size == entities2_size && !memcmp( sorted, entities2, size ) ); if( !assert_pass ) { free( entities ); free( adj_ents ); free( indices ); free( offsets ); free( entities2 ); free( sorted ); return FALSE; } free( entities2 ); free( sorted ); /* compare results against output of iMesh_getEntAdj */ for( i = 0; i < entities_size; ++i ) { iMesh_getEntAdj( mesh, entities[i], iBase_VERTEX, &adj_ents2_ptr, &adj_ents2_alloc, &adj_ents2_size, &result ); ASSERT( iBase_SUCCESS == result ); if( !assert_pass ) { free( entities ); free( adj_ents ); free( indices ); free( offsets ); return FALSE; } ASSERT( adj_ents2_ptr == adj_ents2 ); /* shouldn't change */ if( !assert_pass ) { free( entities ); free( adj_ents ); free( indices ); free( offsets ); return FALSE; } ASSERT( adj_ents2_alloc == 27 ); /* shouldn't change */ if( !assert_pass ) { free( entities ); free( adj_ents ); free( indices ); free( offsets ); return FALSE; } /* compare results */ size = offsets[i + 1] - offsets[i]; ASSERT( size == adj_ents2_size ); while( --size >= 0 ) { ASSERT( adj_ents2[size] == adj_ents[indices[offsets[i] + size]] ); if( !assert_pass ) { free( entities ); free( adj_ents ); free( indices ); free( offsets ); return FALSE; } } } free( entities ); free( adj_ents ); free( indices ); free( offsets ); /* offsets = NULL; offsets_alloc = 0; entities = NULL; entities_alloc = 0; iMesh_getAdjEntities(mesh, root_set, type, iMesh_ALL_TOPOLOGIES, iBase_VERTEX, &entities, &entities_alloc, &entities_size, &offsets, &offsets_alloc, &offsets_size, &result); if (iBase_SUCCESS != result) { printf("Failed to get indices of adjacent entity vertices in connectivity_test.\n"); return FALSE; } if (entities_alloc != entities_size || offsets_alloc != offsets_size) { printf("Number of elements didn't agree with array size for an array in connectivity_test.\n"); return FALSE; } free(offsets); free(entities); */ } return TRUE; }
int entity_sets_subtest | ( | iMesh_Instance | mesh, |
int | is_list, | ||
int | |||
) |
Definition at line 754 of file testc_cbind.cpp.
References check_esets(), entities, FALSE, iBase_ALL_TYPES, iBase_EDGE, iBase_FACE, iBase_REGION, iBase_SUCCESS, iBase_VERTEX, iMesh_addEntArrToSet, iMesh_addEntSet, iMesh_addPrntChld, iMesh_ALL_TOPOLOGIES, iMesh_createEntSet, iMesh_destroyEntSet, iMesh_getEntArrAdj, iMesh_getEntArrType, iMesh_getEntities, iMesh_getEntSets, iMesh_getNumChld, iMesh_getNumEntSets, iMesh_getNumOfType, iMesh_getPrnts, iMesh_HEXAHEDRON, iMesh_intersect, iMesh_isChildOf, iMesh_rmvEntArrFromSet, iMesh_subtract, iMesh_unite, root_set, and TRUE.
Referenced by entity_sets_test().
{ int i, num_type = iBase_ALL_TYPES - iBase_VERTEX; // int num_all_entities_super = 0; iBase_EntitySetHandle es_array[iBase_ALL_TYPES - iBase_VERTEX]; int number_array[iBase_ALL_TYPES - iBase_VERTEX]; int ent_type = iBase_VERTEX; iBase_EntityHandle* entities = NULL; int entities_alloc = 0, entities_size; iBase_EntitySetHandle parent_child, super_set = NULL; iBase_EntitySetHandle temp_es1, temp_es2, temp_es3; iBase_EntityHandle *edges = NULL, *faces = NULL, *temp_entities1 = NULL, *temp_entities2 = NULL; int edges_alloc = 0, faces_alloc = 0, temp_entities1_alloc = 0, temp_entities2_alloc = 0; int edges_size, faces_size, temp_entities1_size, temp_entities2_size; int* types = NULL; int types_alloc = 0, types_size; int num_rest, num_regions; iBase_EntityHandle* regions = NULL; int regions_alloc = 0, regions_size; iBase_EntitySetHandle* parents = NULL; int parents_alloc = 0, parents_size, temp_numb, is_child; iBase_EntitySetHandle* es_array1 = NULL; int es_array1_alloc = 0, es_array1_size, num_super; iBase_EntityHandle* all_entities = NULL; int all_entities_alloc = 0, all_entities_size, k, l; iBase_EntityHandle* adj_faces = NULL; int adj_faces_alloc = 0, adj_faces_size; int* face_offsets = NULL; int face_offsets_alloc = 0, face_offsets_size; iBase_EntityHandle* hexes = NULL; int hexes_alloc = 0, hexes_size; iBase_EntitySetHandle hex_set; /* get the number of whole mesh */ int n_whole_mesh = 0; int result; iMesh_getNumEntSets( mesh, root_set, 1, &n_whole_mesh, &result ); if( iBase_SUCCESS != result ) { printf( "Problem to get the number of all entity sets in whole mesh.\n" ); return FALSE; } /* add entities to entitysets by type */ for( ; ent_type < num_type; ent_type++ ) { /* initialize the entityset */ iMesh_createEntSet( mesh, is_list, &es_array[ent_type], &result ); if( iBase_SUCCESS != result ) { printf( "Problem creating entityset.\n" ); return FALSE; } /* get entities by type in total "mesh" */ entities = NULL; entities_alloc = 0; iMesh_getEntities( mesh, root_set, ent_type, iMesh_ALL_TOPOLOGIES, &entities, &entities_alloc, &entities_size, &result ); if( iBase_SUCCESS != result ) { printf( "Failed to get entities by type in entity_sets_test.\n" ); return FALSE; } if( entities_alloc != entities_size ) { printf( "Number of entities didn't agree with array size in entity_sets_subtest.\n" ); free( entities ); return FALSE; } /* add entities into entity set */ if( 0 != entities_size ) { iMesh_addEntArrToSet( mesh, entities, entities_size, es_array[ent_type], &result ); if( iBase_SUCCESS != result ) { printf( "Failed to add entities in entity_sets_test.\n" ); free( entities ); return FALSE; } } /* Check to make sure entity set really has correct number of entities in it */ iMesh_getNumOfType( mesh, es_array[ent_type], ent_type, number_array + ent_type, &result ); if( iBase_SUCCESS != result ) { printf( "Failed to get number of entities by type in entity_sets_test.\n" ); free( entities ); return FALSE; } /* compare the number of entities by type */ if( number_array[ent_type] != entities_size ) { printf( "Number of entities by type is not correct\n" ); free( entities ); return FALSE; } /* add to number of all entities in super set */ // num_all_entities_super += entities_size; free( entities ); } if( !check_esets( mesh, n_whole_mesh + num_type ) ) return FALSE; /* make a super set having all entitysets */ super_set = NULL; iMesh_createEntSet( mesh, is_list, &super_set, &result ); if( iBase_SUCCESS != result ) { printf( "Failed to create a super set in entity_sets_test.\n" ); return FALSE; } for( i = 0; i < num_type; i++ ) { iMesh_addEntSet( mesh, es_array[i], super_set, &result ); if( iBase_SUCCESS != result ) { printf( "Failed to add a set to a super set in entity_sets_test.\n" ); return FALSE; } } if( !check_esets( mesh, n_whole_mesh + num_type + 1 ) ) return FALSE; /*----------TEST intEAN OPERATIONS----------------*/ iMesh_createEntSet( mesh, is_list, &temp_es1, &result ); if( iBase_SUCCESS != result ) { printf( "Failed to create a super set in entity_sets_test.\n" ); return FALSE; } if( !check_esets( mesh, n_whole_mesh + num_type + 2 ) ) { return FALSE; } /* Subtract */ /* add all EDGEs and FACEs to temp_es1 */ /* get all EDGE entities */ edges = NULL; edges_alloc = 0; iMesh_getEntities( mesh, es_array[iBase_EDGE], iBase_EDGE, iMesh_ALL_TOPOLOGIES, &edges, &edges_alloc, &edges_size, &result ); if( iBase_SUCCESS != result ) { printf( "Failed to get edge entities in entity_sets_test.\n" ); return FALSE; } /* add EDGEs to es1 */ iMesh_addEntArrToSet( mesh, edges, edges_size, temp_es1, &result ); if( iBase_SUCCESS != result ) { printf( "Failed to add edge entities in entity_sets_test.\n" ); free( edges ); return FALSE; } /* get all FACE entities */ faces = NULL; faces_alloc = 0; iMesh_getEntities( mesh, es_array[iBase_FACE], iBase_FACE, iMesh_ALL_TOPOLOGIES, &faces, &faces_alloc, &faces_size, &result ); if( iBase_SUCCESS != result ) { printf( "Failed to get face entities in entity_sets_test.\n" ); free( edges ); return FALSE; } /* add FACEs to es1 */ iMesh_addEntArrToSet( mesh, faces, faces_size, temp_es1, &result ); if( iBase_SUCCESS != result ) { printf( "Failed to add face entities in entity_sets_test.\n" ); free( edges ); free( faces ); return FALSE; } /* subtract EDGEs */ iMesh_subtract( mesh, temp_es1, es_array[iBase_EDGE], &temp_es2, &result ); if( iBase_SUCCESS != result ) { printf( "Failed to subtract entitysets in entity_sets_test.\n" ); free( edges ); free( faces ); return FALSE; } temp_entities1 = NULL; temp_entities1_alloc = 0; iMesh_getEntities( mesh, temp_es2, iBase_FACE, iMesh_ALL_TOPOLOGIES, &temp_entities1, &temp_entities1_alloc, &temp_entities1_size, &result ); if( iBase_SUCCESS != result ) { printf( "Failed to get face entities in entity_sets_test.\n" ); free( edges ); free( faces ); return FALSE; } if( faces_size != temp_entities1_size ) { printf( "not match number of entitysets after subtraction " "in entity_sets_test.\n" ); free( edges ); free( faces ); free( temp_entities1 ); return FALSE; } /* check there's nothing but faces in face_es */ types = NULL; types_alloc = 0; iMesh_getEntArrType( mesh, temp_entities1, temp_entities1_size, &types, &types_alloc, &types_size, &result ); if( iBase_SUCCESS != result ) { printf( "Failed to get types of entities in entity_sets_test.\n" ); free( edges ); free( faces ); free( temp_entities1 ); return FALSE; } for( i = 0; i < types_size; i++ ) { if( types[i] != iBase_FACE ) { printf( "wrong entity type for face test in entity_sets_test.\n" ); free( edges ); free( faces ); free( temp_entities1 ); free( types ); return FALSE; } } iMesh_destroyEntSet( mesh, temp_es2, &result ); if( iBase_SUCCESS != result ) { printf( "Failed to destroy temp es2.\n" ); free( edges ); free( faces ); free( temp_entities1 ); free( types ); return FALSE; } if( !check_esets( mesh, n_whole_mesh + num_type + 2 ) ) { free( edges ); free( faces ); free( temp_entities1 ); free( types ); return FALSE; } /*------------Intersect------------ */ /* clean out the temp_ms1 */ iMesh_rmvEntArrFromSet( mesh, faces, faces_size, temp_es1, &result ); if( iBase_SUCCESS != result ) { printf( "Failed to remove face entities in entity_sets_test.\n" ); free( edges ); free( faces ); free( temp_entities1 ); free( types ); return FALSE; } /* check if it is really cleaned out */ iMesh_getNumOfType( mesh, temp_es1, iBase_FACE, &num_rest, &result ); if( iBase_SUCCESS != result ) { printf( "Failed to get number of entities by type in entity_sets_test.\n" ); free( edges ); free( faces ); free( temp_entities1 ); free( types ); return FALSE; } if( num_rest != 0 ) { printf( "failed to remove correctly.\n" ); free( edges ); free( faces ); free( temp_entities1 ); free( types ); return FALSE; } /* add EDGEs to temp es1 */ iMesh_addEntArrToSet( mesh, edges, edges_size, temp_es1, &result ); if( iBase_SUCCESS != result ) { printf( "Failed to add edge entities in entity_sets_test.\n" ); free( edges ); free( faces ); free( temp_entities1 ); free( types ); return FALSE; } /* add FACEs to temp es1 */ iMesh_addEntArrToSet( mesh, faces, faces_size, temp_es1, &result ); if( iBase_SUCCESS != result ) { printf( "Failed to add edge entities in entity_sets_test.\n" ); free( edges ); free( faces ); free( temp_entities1 ); free( types ); return FALSE; } /* intersect temp_es1 with edges meshset */ /* temp_ms1 entityset is altered */ iMesh_intersect( mesh, temp_es1, es_array[iBase_EDGE], &temp_es2, &result ); if( iBase_SUCCESS != result ) { printf( "Failed to intersect in entity_sets_test.\n" ); free( edges ); free( faces ); free( temp_entities1 ); free( types ); return FALSE; } temp_entities2 = NULL; temp_entities2_alloc = 0; iMesh_getEntities( mesh, temp_es2, iBase_FACE, iMesh_ALL_TOPOLOGIES, &temp_entities2, &temp_entities2_alloc, &temp_entities2_size, &result ); if( iBase_SUCCESS != result ) { printf( "Failed to get face entities in entity_sets_test.\n" ); free( edges ); free( faces ); free( temp_entities1 ); free( types ); return FALSE; } if( temp_entities2_size != 0 ) { printf( "wrong number of faces.\n" ); free( edges ); free( faces ); free( temp_entities1 ); free( temp_entities2 ); free( types ); return FALSE; } iMesh_destroyEntSet( mesh, temp_es2, &result ); if( iBase_SUCCESS != result ) { printf( "Failed to destroy temp es2.\n" ); free( edges ); free( faces ); free( temp_entities1 ); free( temp_entities2 ); free( types ); return FALSE; } if( !check_esets( mesh, n_whole_mesh + num_type + 2 ) ) { free( edges ); free( faces ); free( temp_entities1 ); free( temp_entities2 ); free( types ); return FALSE; } /*-------------Unite-------------- */ iMesh_createEntSet( mesh, is_list, &temp_es2, &result ); if( iBase_SUCCESS != result ) { printf( "Failed to create a temp entityset in entity_sets_test.\n" ); free( edges ); free( faces ); free( temp_entities1 ); free( temp_entities2 ); free( types ); return FALSE; } /* get all regions */ regions = NULL; regions_alloc = 0; iMesh_getEntities( mesh, es_array[iBase_REGION], iBase_REGION, iMesh_ALL_TOPOLOGIES, ®ions, ®ions_alloc, ®ions_size, &result ); if( iBase_SUCCESS != result ) { printf( "Failed to get region entities in entity_sets_test.\n" ); free( edges ); free( faces ); free( temp_entities1 ); free( temp_entities2 ); free( types ); return FALSE; } /* add REGIONs to temp es2 */ iMesh_addEntArrToSet( mesh, regions, regions_size, temp_es2, &result ); if( iBase_SUCCESS != result ) { printf( "Failed to add region entities in entity_sets_test.\n" ); free( edges ); free( faces ); free( temp_entities1 ); free( temp_entities2 ); free( types ); free( regions ); return FALSE; } /* unite temp_es1 and temp_es2 */ iMesh_unite( mesh, temp_es1, temp_es2, &temp_es3, &result ); if( iBase_SUCCESS != result ) { printf( "Failed to unite in entity_sets_test.\n" ); free( edges ); free( faces ); free( temp_entities1 ); free( temp_entities2 ); free( types ); free( regions ); return FALSE; } /* perform the check */ iMesh_getNumOfType( mesh, temp_es3, iBase_REGION, &num_regions, &result ); if( iBase_SUCCESS != result ) { printf( "Failed to get number of region entities by type in entity_sets_test.\n" ); free( edges ); free( faces ); free( temp_entities1 ); free( temp_entities2 ); free( types ); free( regions ); return FALSE; } if( num_regions != number_array[iBase_REGION] ) { printf( "different number of regions in entity_sets_test.\n" ); free( edges ); free( faces ); free( temp_entities1 ); free( temp_entities2 ); free( types ); free( regions ); return FALSE; } if( !check_esets( mesh, n_whole_mesh + num_type + 4 ) ) { free( edges ); free( faces ); free( temp_entities1 ); free( temp_entities2 ); free( types ); free( regions ); return FALSE; } /*--------Test parent/child stuff in entiysets----------- */ /* Add 2 meshsets as children to another */ iMesh_createEntSet( mesh, is_list, &parent_child, &result ); if( iBase_SUCCESS != result ) { printf( "Problem creating entityset in entity_sets_test.\n" ); free( edges ); free( faces ); free( temp_entities1 ); free( temp_entities2 ); free( types ); free( regions ); return FALSE; } iMesh_addPrntChld( mesh, es_array[iBase_VERTEX], parent_child, &result ); if( iBase_SUCCESS != result ) { printf( "Problem add parent in entity_sets_test.\n" ); free( edges ); free( faces ); free( temp_entities1 ); free( temp_entities2 ); free( types ); free( regions ); return FALSE; } /* check if parent is really added */ parents = NULL; parents_alloc = 0; iMesh_getPrnts( mesh, parent_child, 0, &parents, &parents_alloc, &parents_size, &result ); if( iBase_SUCCESS != result ) { printf( "Problem getting parents in entity_sets_test.\n" ); free( edges ); free( faces ); free( temp_entities1 ); free( temp_entities2 ); free( types ); free( regions ); return FALSE; } if( parents_size != 1 ) { printf( "number of parents is not correct in entity_sets_test.\n" ); free( edges ); free( faces ); free( temp_entities1 ); free( temp_entities2 ); free( types ); free( regions ); free( parents ); return FALSE; } /* get the number of child entitysets */ iMesh_getNumChld( mesh, es_array[iBase_VERTEX], 0, &temp_numb, &result ); if( iBase_SUCCESS != result ) { printf( "Problem getting number of children in entity_sets_test.\n" ); free( edges ); free( faces ); free( temp_entities1 ); free( temp_entities2 ); free( types ); free( regions ); free( parents ); return FALSE; } if( temp_numb != 1 ) { printf( "number of children is not correct in entity_sets_test.\n" ); free( edges ); free( faces ); free( temp_entities1 ); free( temp_entities2 ); free( types ); free( regions ); free( parents ); return FALSE; } /* parent_child and es_array[iBase_VERTEX] should be related */ is_child = 0; iMesh_isChildOf( mesh, es_array[iBase_VERTEX], parent_child, &is_child, &result ); if( iBase_SUCCESS != result ) { printf( "Problem checking relation in entity_sets_test.\n" ); free( edges ); free( faces ); free( temp_entities1 ); free( temp_entities2 ); free( types ); free( regions ); free( parents ); return FALSE; } if( !is_child ) { printf( "parent_child and es_array[iBase_VERTEX] should be related\n" ); free( edges ); free( faces ); free( temp_entities1 ); free( temp_entities2 ); free( types ); free( regions ); free( parents ); return FALSE; } /* es_array[iBase_FACE] and es_array[iBase_REGION] are not related */ is_child = FALSE; iMesh_isChildOf( mesh, es_array[iBase_FACE], es_array[iBase_REGION], &is_child, &result ); if( iBase_SUCCESS != result ) { printf( "Problem checking relation in entity_sets_test.\n" ); free( edges ); free( faces ); free( temp_entities1 ); free( temp_entities2 ); free( types ); free( regions ); free( parents ); return FALSE; } if( is_child ) { printf( "es_array[iBase_REGION] and es_array[iBase_FACE] should not be related\n" ); free( edges ); free( faces ); free( temp_entities1 ); free( temp_entities2 ); free( types ); free( regions ); free( parents ); return FALSE; } if( !check_esets( mesh, n_whole_mesh + num_type + 5 ) ) { free( edges ); free( faces ); free( temp_entities1 ); free( temp_entities2 ); free( types ); free( regions ); free( parents ); return FALSE; } /*--------test modify and query functions----------------------------- */ /* get all entity sets in super set */ es_array1 = NULL; es_array1_alloc = 0; iMesh_getEntSets( mesh, super_set, 0, &es_array1, &es_array1_alloc, &es_array1_size, &result ); if( iBase_SUCCESS != result ) { printf( "Problem to get entity sets in super set.\n" ); free( edges ); free( faces ); free( temp_entities1 ); free( temp_entities2 ); free( types ); free( regions ); free( parents ); return FALSE; } /* get the number of entity sets in super set */ iMesh_getNumEntSets( mesh, super_set, 0, &num_super, &result ); if( iBase_SUCCESS != result ) { printf( "Problem to get the number of all entity sets in super set.\n" ); free( edges ); free( faces ); free( temp_entities1 ); free( temp_entities2 ); free( types ); free( regions ); free( parents ); free( es_array1 ); return FALSE; } /* the number of entity sets in super set should be same */ if( num_super != es_array1_size ) { printf( "the number of entity sets in super set should be same.\n" ); return FALSE; } /* get all entities in super set */ all_entities = NULL; all_entities_alloc = 0; iMesh_getEntities( mesh, super_set, iBase_ALL_TYPES, iMesh_ALL_TOPOLOGIES, &all_entities, &all_entities_alloc, &all_entities_size, &result ); if( iBase_SUCCESS != result ) { printf( "Problem to get all entities in super set.\n" ); free( edges ); free( faces ); free( temp_entities1 ); free( temp_entities2 ); free( types ); free( regions ); free( parents ); free( es_array1 ); return FALSE; } /* compare the number of all entities in super set */ /* NOTE: TEST COMMENTED OUT UNTIL RESOLUTION OF WHETHER GETENTITIES */ /* SHOULD GET A NUM_HOPS ARGUMENT */ /* if (num_all_entities_super != all_entities_size) { */ /* printf("number of all entities in super set should be same.\n"); */ /* return FALSE; */ /* } */ /* test add, remove and get all entity sets using super set */ /* check GetAllEntitySets works recursively and dosen't return */ /* multi sets */ for( k = 0; k < num_super; k++ ) { /* add entity sets of super set to each entity set of super set */ /* make multiple child super sets */ iBase_EntitySetHandle es_k = es_array1[k]; for( l = 0; l < es_array1_size; l++ ) { iMesh_addEntSet( mesh, es_array1[l], es_k, &result ); if( iBase_SUCCESS != result ) { printf( "Problem to add entity set to entityset.\n" ); free( edges ); free( faces ); free( temp_entities1 ); free( temp_entities2 ); free( types ); free( regions ); free( parents ); free( es_array1 ); free( all_entities ); return FALSE; } } /* add super set to each entity set */ iMesh_addEntSet( mesh, super_set, es_k, &result ); if( iBase_SUCCESS != result ) { printf( "Problem to add super set to entitysets.\n" ); free( edges ); free( faces ); free( temp_entities1 ); free( temp_entities2 ); free( types ); free( regions ); free( parents ); free( es_array1 ); free( all_entities ); return FALSE; } /* add one entity sets multiple times */ for( l = 0; l < 3; l++ ) { iMesh_addEntSet( mesh, temp_es1, es_k, &result ); if( iBase_SUCCESS != result ) { printf( "Problem to add temp set to entitysets.\n" ); free( edges ); free( faces ); free( temp_entities1 ); free( temp_entities2 ); free( types ); free( regions ); free( parents ); free( es_array1 ); free( all_entities ); return FALSE; } } } /* get all hexes and get faces of that hexes */ hexes = NULL; hexes_alloc = 0; iMesh_getEntities( mesh, root_set, iBase_ALL_TYPES, iMesh_HEXAHEDRON, &hexes, &hexes_alloc, &hexes_size, &result ); if( iBase_SUCCESS != result ) { printf( "Failed to get hexes in entity_sets_test.\n" ); free( edges ); free( faces ); free( temp_entities1 ); free( temp_entities2 ); free( types ); free( regions ); free( parents ); free( es_array1 ); free( all_entities ); return FALSE; } /* get adjacent face of hexes */ adj_faces = NULL; adj_faces_alloc = 0; face_offsets = NULL; face_offsets_alloc = 0; iMesh_getEntArrAdj( mesh, hexes, hexes_size, iBase_FACE, &adj_faces, &adj_faces_alloc, &adj_faces_size, &face_offsets, &face_offsets_alloc, &face_offsets_size, &result ); if( iBase_SUCCESS != result ) { printf( "Problem to get adjacent entities in entitysets_test.\n" ); free( edges ); free( faces ); free( temp_entities1 ); free( temp_entities2 ); free( types ); free( regions ); free( parents ); free( es_array1 ); free( all_entities ); free( hexes ); return FALSE; } iMesh_createEntSet( mesh, FALSE, &hex_set, &result ); if( iBase_SUCCESS != result ) { printf( "Problem creating entityset in entity_sets_test.\n" ); free( edges ); free( faces ); free( temp_entities1 ); free( temp_entities2 ); free( types ); free( regions ); free( parents ); free( es_array1 ); free( all_entities ); free( hexes ); free( adj_faces ); free( face_offsets ); return FALSE; } iMesh_addEntArrToSet( mesh, hexes, hexes_size, hex_set, &result ); if( iBase_SUCCESS != result ) { printf( "Failed to add hexes in entity_sets_test.\n" ); free( edges ); free( faces ); free( temp_entities1 ); free( temp_entities2 ); free( types ); free( regions ); free( parents ); free( es_array1 ); free( all_entities ); free( hexes ); free( adj_faces ); free( face_offsets ); return FALSE; } free( edges ); free( faces ); free( temp_entities1 ); free( temp_entities2 ); free( types ); free( regions ); free( parents ); free( es_array1 ); free( all_entities ); free( hexes ); free( adj_faces ); free( face_offsets ); return TRUE; }
int entity_sets_test | ( | iMesh_Instance | mesh | ) |
Definition at line 1650 of file testc_cbind.cpp.
References entity_sets_subtest(), and TRUE.
Referenced by main().
{ int iter_num = 0, result; /* check */ int i; for( i = 0; i < 2; i++ ) { iter_num++; result = entity_sets_subtest( mesh, i, iter_num ); if( !result ) return result; } return TRUE; }
int entityset_double_tag_test | ( | iMesh_Instance | mesh, |
iBase_EntitySetHandle * | sets, | ||
int | sets_size, | ||
iBase_TagHandle * | double_tag | ||
) |
Definition at line 2156 of file testc_cbind.cpp.
References FALSE, iBase_DOUBLE, iBase_SUCCESS, iMesh_createTag, iMesh_getEntSetData, iMesh_setEntSetData, and TRUE.
Referenced by entityset_tag_test().
{ int result; double dum_val = 1.0e6, dum_val2; void* dum_val2_ptr = &dum_val2; int dum_val2_alloc = sizeof( double ), dum_val2_size; /* create a tag */ const char* tag_name = "set_double_tag"; iMesh_createTag( mesh, tag_name, 1, iBase_DOUBLE, double_tag, &result, 15 ); if( iBase_SUCCESS != result ) { printf( "Failed to create tag double_tag in entityset_double_tag_test.\n" ); return FALSE; } /* put a value in the first set and retrieve */ iMesh_setEntSetData( mesh, sets[0], *double_tag, (char*)( &dum_val ), sizeof( double ), &result ); if( iBase_SUCCESS != result ) { printf( "Failed to set double tag (val=11) in entityset_double_tag_test.\n" ); return FALSE; } dum_val2 = 0; iMesh_getEntSetData( mesh, sets[0], *double_tag, &dum_val2_ptr, &dum_val2_alloc, &dum_val2_size, &result ); if( iBase_SUCCESS != result ) { printf( "Failed to get double tag (val=1.0e6) in entityset_double_tag_test." ); return FALSE; } if( dum_val2 != 1.0e6 ) { printf( "Value of entityset tag (val=11) wrong.\n" ); return FALSE; } /* put a value in the last faces and retrieve */ dum_val = 2.0e9; iMesh_setEntSetData( mesh, sets[sets_size - 1], *double_tag, (char*)( &dum_val ), sizeof( double ), &result ); if( iBase_SUCCESS != result ) { printf( "Failed to set double tag (val=2.0e9) in entityset_double_tag_test." ); return FALSE; } iMesh_getEntSetData( mesh, sets[sets_size - 1], *double_tag, &dum_val2_ptr, &dum_val2_alloc, &dum_val2_size, &result ); if( iBase_SUCCESS != result ) { printf( "Failed to get double tag (val=2.0e9) in entityset_double_tag_test." ); return FALSE; } if( dum_val2 != 2.0e9 ) { printf( "Value of entityset tag (val=2.0e9) wrong.\n" ); return FALSE; } /* ok, the double tag test worked */ return TRUE; }
int entityset_int_tag_test | ( | iMesh_Instance | mesh, |
iBase_EntitySetHandle * | sets, | ||
int | sets_size, | ||
iBase_TagHandle * | int_tag | ||
) |
Definition at line 2091 of file testc_cbind.cpp.
References FALSE, iBase_INTEGER, iBase_SUCCESS, iMesh_createTag, iMesh_getEntSetData, iMesh_setEntSetData, and TRUE.
Referenced by entityset_tag_test().
{ int result; int dum_val = 11, dum_val2; void* dum_val2_ptr = &dum_val2; int dum_val2_alloc = sizeof( int ), dum_val2_size; /* create a tag */ const char* tag_name = "set_int_tag"; iMesh_createTag( mesh, tag_name, 1, iBase_INTEGER, int_tag, &result, 12 ); if( iBase_SUCCESS != result ) { printf( "Failed to create tag int_tag in entityset_int_tag_test.\n" ); return FALSE; } /* put a value in the first set and retrieve */ iMesh_setEntSetData( mesh, sets[0], *int_tag, (char*)( &dum_val ), sizeof( int ), &result ); if( iBase_SUCCESS != result ) { printf( "Failed to set int tag (val=11) in entityset_int_tag_test.\n" ); return FALSE; } dum_val2 = 0; iMesh_getEntSetData( mesh, sets[0], *int_tag, &dum_val2_ptr, &dum_val2_alloc, &dum_val2_size, &result ); if( iBase_SUCCESS != result ) { printf( "Failed to get int tag (val=11) in entityset_int_tag_test." ); return FALSE; } if( dum_val2 != 11 ) { printf( "Value of entityset tag (val=11) wrong.\n" ); return FALSE; } /* put a value in the last faces and retrieve */ dum_val = 12; iMesh_setEntSetData( mesh, sets[sets_size - 1], *int_tag, (char*)( &dum_val ), sizeof( int ), &result ); if( iBase_SUCCESS != result ) { printf( "Failed to set int tag (val=12) in entityset_int_tag_test." ); return FALSE; } iMesh_getEntSetData( mesh, sets[sets_size - 1], *int_tag, &dum_val2_ptr, &dum_val2_alloc, &dum_val2_size, &result ); if( iBase_SUCCESS != result ) { printf( "Failed to get int tag (val=12) in entityset_int_tag_test." ); return FALSE; } if( dum_val2 != 12 ) { printf( "Value of entityset tag (val=12) wrong.\n" ); return FALSE; } /* ok, the int tag test worked */ return TRUE; }
int entityset_struct_tag_test | ( | iMesh_Instance | mesh, |
iBase_EntitySetHandle * | , | ||
int | , | ||
iBase_TagHandle * | struct_tag | ||
) |
Definition at line 2225 of file testc_cbind.cpp.
References FALSE, iBase_BYTES, iBase_SUCCESS, iMesh_createTag, iMesh_getEntSetData, iMesh_setEntSetData, root_set, and TRUE.
Referenced by entityset_tag_test().
{ int result; struct TagStruct dum_struct = { 3.0e12, 2, 3 }, dum_struct2; void* dum_struct2_ptr = &dum_struct2; int dum_struct_alloc = sizeof( struct TagStruct ), dum_struct_size; /* create a tag */ const char* tag_name = "set_struct_tag"; iMesh_createTag( mesh, tag_name, sizeof( struct TagStruct ), iBase_BYTES, struct_tag, &result, 11 ); if( iBase_SUCCESS != result ) { printf( "Failed to create tag struct_tag in entityset_struct_tag_test.\n" ); return FALSE; } /* put a value in the first vertex and retrieve */ /* careful setting the value, since tags are opaque */ iMesh_setEntSetData( mesh, root_set, *struct_tag, (const char*)&dum_struct, sizeof( struct TagStruct ), &result ); if( iBase_SUCCESS != result ) { printf( "Failed to set struct tag in entityset_struct_tag_test.\n" ); return FALSE; } iMesh_getEntSetData( mesh, root_set, *struct_tag, &dum_struct2_ptr, &dum_struct_alloc, &dum_struct_size, &result ); if( iBase_SUCCESS != result ) { printf( "Failed to get struct tag in entityset_struct_tag_test.\n" ); return FALSE; } if( dum_struct_size != sizeof( struct TagStruct ) ) { printf( "Size of entityset struct tag wrong.\n" ); return FALSE; } if( dum_struct2.test_int1 != dum_struct.test_int1 || dum_struct2.test_int2 != dum_struct.test_int2 || dum_struct2.test_double != dum_struct.test_double ) { printf( "Value of entityset struct tag wrong.\n" ); return FALSE; } /* ok, the int tag test worked */ return TRUE; }
int entityset_tag_delete_test | ( | iMesh_Instance | mesh, |
iBase_EntitySetHandle * | sets, | ||
int | sets_size | ||
) |
Definition at line 2277 of file testc_cbind.cpp.
References FALSE, iBase_SUCCESS, iMesh_destroyTag, iMesh_getAllEntSetTags, iMesh_rmvEntSetTag, and TRUE.
Referenced by entityset_tag_test().
{ /* test forced, unforced deletion of tags from entities */ int result; int delete_err = FALSE; /* test getAlliBase_TagHandles for first entity */ iBase_TagHandle* all_tags = NULL; if( sets_size < 1 ) { printf( "no sets.\n" ); return FALSE; } iBase_EntitySetHandle dum_entity = sets[0]; int all_tags_alloc = 0, all_tags_size; iMesh_getAllEntSetTags( mesh, sets[0], &all_tags, &all_tags_alloc, &all_tags_size, &result ); if( iBase_SUCCESS != result ) { printf( "Couldn't get all tag handles from entityset.\n" ); free( all_tags ); return FALSE; } iMesh_rmvEntSetTag( mesh, dum_entity, all_tags[0], &result ); if( iBase_SUCCESS != result ) { printf( "Couldn't remove tag from entityset.\n" ); free( all_tags ); return FALSE; } iMesh_destroyTag( mesh, all_tags[1], FALSE, &result ); if( iBase_SUCCESS != result ) { delete_err = TRUE; } if( !delete_err ) { printf( "Error when unforced-deleting tag in use on a entityset.\n" ); free( all_tags ); return FALSE; } iMesh_destroyTag( mesh, all_tags[1], TRUE, &result ); if( iBase_SUCCESS != result ) { printf( "Couldn't force-delete a tag in use on a entityset.\n" ); free( all_tags ); return FALSE; } free( all_tags ); /* ok, we're done */ return TRUE; }
int entityset_tag_test | ( | iMesh_Instance | mesh | ) |
Definition at line 2339 of file testc_cbind.cpp.
References entityset_double_tag_test(), entityset_int_tag_test(), entityset_struct_tag_test(), entityset_tag_delete_test(), FALSE, iBase_SUCCESS, iMesh_getEntSets, and root_set.
Referenced by main().
{ int result; iBase_TagHandle int_tag, double_tag, struct_tag; int int_success, double_success, struct_success, tag_delete_success; /* get the sets */ iBase_EntitySetHandle* esets = NULL; int esets_alloc = 0, esets_size; iMesh_getEntSets( mesh, root_set, 1, &esets, &esets_alloc, &esets_size, &result ); if( iBase_SUCCESS != result ) { printf( "entitysetGetEntities failed in entityset_tag_test.\n" ); free( esets ); return FALSE; } /* entityset int tag */ int_success = entityset_int_tag_test( mesh, esets, esets_size, &int_tag ); /* entityeset double tag */ double_success = entityset_double_tag_test( mesh, esets, esets_size, &double_tag ); /* entityset struct tag */ struct_success = entityset_struct_tag_test( mesh, esets, esets_size, &struct_tag ); tag_delete_success = entityset_tag_delete_test( mesh, esets, esets_size ); free( esets ); return ( int_success && double_success && struct_success && tag_delete_success ); }
int error_code_test | ( | iMesh_Instance | ) |
Definition at line 151 of file testc_cbind.cpp.
References iBase_FAILURE, iBase_FILE_NOT_FOUND, iBase_INVALID_ARGUMENT, iBase_INVALID_ENTITY_HANDLE, iBase_INVALID_ENTITY_TYPE, iBase_MEMORY_ALLOCATION_FAILED, iBase_NOT_SUPPORTED, iBase_SUCCESS, iBase_TAG_NOT_FOUND, MB_ENTITY_NOT_FOUND, MB_FILE_DOES_NOT_EXIST, MB_MEMORY_ALLOCATION_FAILED, MB_SUCCESS, MB_TAG_NOT_FOUND, MB_TYPE_OUT_OF_RANGE, MB_UNHANDLED_OPTION, MB_UNSUPPORTED_OPERATION, TEST_ERROR_CODE, and TRUE.
Referenced by main().
{ TEST_ERROR_CODE( MB_SUCCESS, iBase_SUCCESS ) TEST_ERROR_CODE( MB_TYPE_OUT_OF_RANGE, iBase_INVALID_ENTITY_TYPE ) TEST_ERROR_CODE( MB_MEMORY_ALLOCATION_FAILED, iBase_MEMORY_ALLOCATION_FAILED ) TEST_ERROR_CODE( MB_ENTITY_NOT_FOUND, iBase_INVALID_ENTITY_HANDLE ) TEST_ERROR_CODE( MB_TAG_NOT_FOUND, iBase_TAG_NOT_FOUND ) TEST_ERROR_CODE( MB_FILE_DOES_NOT_EXIST, iBase_FILE_NOT_FOUND ) TEST_ERROR_CODE( MB_UNSUPPORTED_OPERATION, iBase_NOT_SUPPORTED ) TEST_ERROR_CODE( MB_UNHANDLED_OPTION, iBase_INVALID_ARGUMENT ) TEST_ERROR_CODE( MB_FAILURE, iBase_FAILURE ) return TRUE; }
void handle_error_code | ( | const int | result, |
int * | number_failed, | ||
int * | , | ||
int * | number_successful | ||
) |
prints out a result string based on the value of error_code
Definition at line 110 of file testc_cbind.cpp.
{ if( result ) { printf( "Success\n" ); ( *number_successful )++; } else { printf( "Failure\n" ); ( *number_failed )++; } }
int load_mesh_test | ( | const char * | filename, |
iMesh_Instance | mesh | ||
) |
Definition at line 129 of file testc_cbind.cpp.
References FALSE, iBase_SUCCESS, iMesh_load, root_set, and TRUE.
Referenced by main().
{ /* load a mesh */ int result; iMesh_load( mesh, root_set, filename, NULL, &result, strlen( filename ), 0 ); if( iBase_SUCCESS != result ) { printf( "ERROR : can not load a mesh from file %s\n", filename ); return FALSE; } return TRUE; }
int main | ( | int | argc, |
char * | argv[] | ||
) |
Definition at line 3093 of file testc_cbind.cpp.
References all_adjacency_regression(), array_allocation(), DEFAULT_INPUT_FILE, entity_connectivity_test(), entity_sets_test(), entityset_tag_test(), error_code_test(), handle_error_code(), iBase_SUCCESS, iMesh_dtor, iMesh_getRootSet, iMesh_newMesh, load_mesh_test(), mesh, mesh_tag_test(), ordered_set_regression(), root_set, set_remove_contained_regression(), test_iterator(), topology_adjacency_test(), topology_dimension_test(), vertex_coordinates_test(), and vertex_tag_test().
{ /* Check command line arg */ const char* filename; int number_tests = 0; int number_tests_successful = 0; int number_tests_not_implemented = 0; int number_tests_failed = 0; int result; iMesh_Instance mesh = NULL; if( argc == 2 ) { filename = argv[1]; } else { printf( "Usage: %s <mesh_filename>\n", argv[0] ); if( argc != 1 ) return 1; printf( " No file specified. Defaulting to: %s\n", DEFAULT_INPUT_FILE ); filename = DEFAULT_INPUT_FILE; } /* initialize the Mesh */ iMesh_newMesh( NULL, &mesh, &result, 0 ); if( iBase_SUCCESS != result ) { printf( "Failed to create a mesh instance.\n" ); return 1; } iMesh_getRootSet( mesh, &root_set, &result ); if( iBase_SUCCESS != result ) { printf( "Failed to return a root set.\n" ); return 1; } /* Print out Header information */ printf( "\n\nTSTT TEST PROGRAM:\n\n" ); /* load_mesh test */ printf( " load_mesh: " ); result = load_mesh_test( filename, mesh ); handle_error_code( result, &number_tests_failed, &number_tests_not_implemented, &number_tests_successful ); number_tests++; printf( "\n" ); /* topology_adjacency_test */ printf( " topology_adjacency_test: " ); result = topology_adjacency_test( mesh ); handle_error_code( result, &number_tests_failed, &number_tests_not_implemented, &number_tests_successful ); number_tests++; printf( "\n" ); /* entity connectivity test */ printf( " entity_connectivity_test: " ); result = entity_connectivity_test( mesh ); handle_error_code( result, &number_tests_failed, &number_tests_not_implemented, &number_tests_successful ); number_tests++; printf( "\n" ); /* vertex_coordinates_test */ printf( " vertex_coordinates_test: " ); result = vertex_coordinates_test( mesh ); handle_error_code( result, &number_tests_failed, &number_tests_not_implemented, &number_tests_successful ); number_tests++; printf( "\n" ); /* topology dimension test */ printf( " topology_dimension_test: " ); result = topology_dimension_test( mesh ); handle_error_code( result, &number_tests_failed, &number_tests_not_implemented, &number_tests_successful ); number_tests++; printf( "\n" ); /* entity sets test */ printf( " entity_sets_test: " ); result = entity_sets_test( mesh ); handle_error_code( result, &number_tests_failed, &number_tests_not_implemented, &number_tests_successful ); number_tests++; printf( "\n" ); /* vertex tag test */ printf( " vertex_tag_test: " ); result = vertex_tag_test( mesh ); handle_error_code( result, &number_tests_failed, &number_tests_not_implemented, &number_tests_successful ); number_tests++; printf( "\n" ); /* entityset tag test */ printf( " entityset_tag_test: " ); result = entityset_tag_test( mesh ); handle_error_code( result, &number_tests_failed, &number_tests_not_implemented, &number_tests_successful ); number_tests++; printf( "\n" ); /* mesh tag test */ printf( " mesh_tag_test: " ); result = mesh_tag_test( mesh ); handle_error_code( result, &number_tests_failed, &number_tests_not_implemented, &number_tests_successful ); number_tests++; printf( "\n" ); /* iterator test */ printf( " test_iterator: " ); result = test_iterator( mesh ); handle_error_code( result, &number_tests_failed, &number_tests_not_implemented, &number_tests_successful ); number_tests++; printf( "\n" ); /* regression test for remove/contained bug */ printf( " set_remove_contained_regression: " ); result = set_remove_contained_regression( mesh ); handle_error_code( result, &number_tests_failed, &number_tests_not_implemented, &number_tests_successful ); number_tests++; printf( "\n" ); /* regression test for adjacencies with iBase_ALL_TYPES bug */ printf( " all_adjacency_regression: " ); result = all_adjacency_regression( mesh ); handle_error_code( result, &number_tests_failed, &number_tests_not_implemented, &number_tests_successful ); number_tests++; printf( "\n" ); /* test for error codes */ printf( " error_code_test: " ); result = error_code_test( mesh ); handle_error_code( result, &number_tests_failed, &number_tests_not_implemented, &number_tests_successful ); number_tests++; printf( "\n" ); /* regression test for ordered sets not preserving order */ printf( " ordered_set_regression: " ); result = ordered_set_regression( mesh ); handle_error_code( result, &number_tests_failed, &number_tests_not_implemented, &number_tests_successful ); number_tests++; printf( "\n" ); /* test for array allocation behavior */ printf( " array_allocation_regression: " ); result = array_allocation( mesh ); handle_error_code( result, &number_tests_failed, &number_tests_not_implemented, &number_tests_successful ); number_tests++; printf( "\n" ); /* summary */ printf( "\nTSTT TEST SUMMARY: \n" ); printf( " Number Tests: %d\n", number_tests ); printf( " Number Successful: %d\n", number_tests_successful ); printf( " Number Not Implemented: %d\n", number_tests_not_implemented ); printf( " Number Failed: %d\n", number_tests_failed ); printf( "\n\n\n" ); /* delete the mesh */ iMesh_dtor( mesh, &result ); if( iBase_SUCCESS != result ) { printf( "Failed to destruct the mesh instance.\n" ); return 1; } return number_tests_failed; }
int mesh_double_tag_test | ( | iMesh_Instance | mesh, |
iBase_TagHandle * | double_tag | ||
) |
Definition at line 2437 of file testc_cbind.cpp.
References FALSE, iBase_DOUBLE, iBase_SUCCESS, iMesh_createTag, iMesh_getEntSetData, iMesh_setEntSetData, root_set, and TRUE.
Referenced by mesh_tag_test().
{ int result; double dum_val = 1.0e6, dum_val2; void* dum_val2_ptr = &dum_val2; int dum_val2_alloc = sizeof( double ), dum_val2_size; /* create a tag */ const char* tag_name = "mesh_double_tag"; iMesh_createTag( mesh, tag_name, 1, iBase_DOUBLE, double_tag, &result, 15 ); if( iBase_SUCCESS != result ) { printf( "Failed to create tag double_tag in mesh_double_tag_test.\n" ); return FALSE; } /* put a value in the first set and retrieve */ iMesh_setEntSetData( mesh, root_set, *double_tag, (char*)( &dum_val ), sizeof( double ), &result ); if( iBase_SUCCESS != result ) { printf( "Failed to set double tag (val=11) in mesh_double_tag_test.\n" ); return FALSE; } dum_val2 = 0; iMesh_getEntSetData( mesh, root_set, *double_tag, &dum_val2_ptr, &dum_val2_alloc, &dum_val2_size, &result ); if( iBase_SUCCESS != result ) { printf( "Failed to get double tag (val=1.0e6) in mesh_double_tag_test." ); return FALSE; } if( dum_val2 != 1.0e6 ) { printf( "Value of entityset tag (val=11) wrong.\n" ); return FALSE; } /* put a value in the last faces and retrieve */ dum_val = 2.0e9; iMesh_setEntSetData( mesh, root_set, *double_tag, (char*)( &dum_val ), sizeof( double ), &result ); if( iBase_SUCCESS != result ) { printf( "Failed to set double tag (val=2.0e9) in mesh_double_tag_test." ); return FALSE; } iMesh_getEntSetData( mesh, root_set, *double_tag, &dum_val2_ptr, &dum_val2_alloc, &dum_val2_size, &result ); if( iBase_SUCCESS != result ) { printf( "Failed to get double tag (val=2.0e9) in mesh_double_tag_test." ); return FALSE; } if( dum_val2 != 2.0e9 ) { printf( "Value of entityset tag (val=2.0e9) wrong.\n" ); return FALSE; } /* ok, the double tag test worked */ return TRUE; }
int mesh_int_tag_test | ( | iMesh_Instance | mesh, |
iBase_TagHandle * | int_tag | ||
) |
Definition at line 2372 of file testc_cbind.cpp.
References FALSE, iBase_INTEGER, iBase_SUCCESS, iMesh_createTag, iMesh_getEntSetData, iMesh_setEntSetData, root_set, and TRUE.
Referenced by mesh_tag_test().
{ int result; int dum_val = 11, dum_val2; void* dum_val2_ptr = &dum_val2; int dum_val2_alloc = sizeof( int ), dum_val2_size; /* create a tag */ const char* tag_name = "mesh_int_tag"; iMesh_createTag( mesh, tag_name, 1, iBase_INTEGER, int_tag, &result, 12 ); if( iBase_SUCCESS != result ) { printf( "Failed to create tag int_tag in mesh_int_tag_test.\n" ); return FALSE; } /* put a value in the first set and retrieve */ iMesh_setEntSetData( mesh, root_set, *int_tag, (char*)( &dum_val ), sizeof( int ), &result ); if( iBase_SUCCESS != result ) { printf( "Failed to set int tag (val=11) in mesh_int_tag_test.\n" ); return FALSE; } dum_val2 = 0; iMesh_getEntSetData( mesh, root_set, *int_tag, &dum_val2_ptr, &dum_val2_alloc, &dum_val2_size, &result ); if( iBase_SUCCESS != result ) { printf( "Failed to get int tag (val=11) in mesh_int_tag_test." ); return FALSE; } if( dum_val2 != 11 ) { printf( "Value of entityset tag (val=11) wrong.\n" ); return FALSE; } /* put a value in the last faces and retrieve */ dum_val = 12; iMesh_setEntSetData( mesh, root_set, *int_tag, (char*)( &dum_val ), sizeof( int ), &result ); if( iBase_SUCCESS != result ) { printf( "Failed to set int tag (val=12) in mesh_int_tag_test." ); return FALSE; } iMesh_getEntSetData( mesh, root_set, *int_tag, &dum_val2_ptr, &dum_val2_alloc, &dum_val2_size, &result ); if( iBase_SUCCESS != result ) { printf( "Failed to get int tag (val=12) in mesh_int_tag_test." ); return FALSE; } if( dum_val2 != 12 ) { printf( "Value of entityset tag (val=12) wrong.\n" ); return FALSE; } /* ok, the int tag test worked */ return TRUE; }
int mesh_struct_tag_test | ( | iMesh_Instance | mesh, |
iBase_TagHandle * | struct_tag | ||
) |
Definition at line 2502 of file testc_cbind.cpp.
References FALSE, iBase_BYTES, iBase_SUCCESS, iMesh_createTag, iMesh_getEntSetData, iMesh_setEntSetData, root_set, and TRUE.
Referenced by mesh_tag_test().
{ int result; struct TagStruct dum_struct = { 3.0e12, 2, 3 }, dum_struct2; void* dum_struct2_ptr = &dum_struct2; int dum_struct_alloc = sizeof( struct TagStruct ), dum_struct_size; /* create a tag */ const char* tag_name = "mesh_struct_tag"; iMesh_createTag( mesh, tag_name, sizeof( struct TagStruct ), iBase_BYTES, struct_tag, &result, 11 ); if( iBase_SUCCESS != result ) { printf( "Failed to create tag struct_tag in vertex_struct_tag_test.\n" ); return FALSE; } /* put a value in the first vertex and retrieve */ /* careful setting the value, since tags are opaque */ iMesh_setEntSetData( mesh, root_set, *struct_tag, (const char*)&dum_struct, sizeof( struct TagStruct ), &result ); if( iBase_SUCCESS != result ) { printf( "Failed to set struct tag in mesh_struct_tag_test.\n" ); return FALSE; } iMesh_getEntSetData( mesh, root_set, *struct_tag, &dum_struct2_ptr, &dum_struct_alloc, &dum_struct_size, &result ); if( iBase_SUCCESS != result ) { printf( "Failed to get struct tag in mesh_struct_tag_test.\n" ); return FALSE; } if( dum_struct_size != sizeof( struct TagStruct ) ) { printf( "Size of entityset struct tag wrong.\n" ); return FALSE; } if( dum_struct2.test_int1 != dum_struct.test_int1 || dum_struct2.test_int2 != dum_struct.test_int2 || dum_struct2.test_double != dum_struct.test_double ) { printf( "Value of entityset struct tag wrong.\n" ); return FALSE; } /* ok, the int tag test worked */ return TRUE; }
int mesh_tag_delete_test | ( | iMesh_Instance | mesh | ) |
Definition at line 2551 of file testc_cbind.cpp.
References FALSE, iBase_SUCCESS, iMesh_destroyTag, iMesh_getAllEntSetTags, iMesh_rmvEntSetTag, root_set, and TRUE.
Referenced by mesh_tag_test().
{ /* test forced, unforced deletion of tags from entities */ int result; int delete_err = FALSE; /* test getAlliBase_TagHandles for first entity */ iBase_TagHandle* all_tags = NULL; int all_tags_alloc = 0, all_tags_size; iMesh_getAllEntSetTags( mesh, root_set, &all_tags, &all_tags_alloc, &all_tags_size, &result ); if( iBase_SUCCESS != result ) { printf( "Couldn't get all tag handles from entityset.\n" ); return FALSE; } iMesh_rmvEntSetTag( mesh, root_set, all_tags[0], &result ); if( iBase_SUCCESS != result ) { printf( "Couldn't remove tag from entityset.\n" ); free( all_tags ); return FALSE; } iMesh_destroyTag( mesh, all_tags[1], FALSE, &result ); if( iBase_SUCCESS != result ) { delete_err = TRUE; } if( !delete_err ) { printf( "Error when unforced-deleting tag in use on a entityset.\n" ); free( all_tags ); return FALSE; } iMesh_destroyTag( mesh, all_tags[1], TRUE, &result ); if( iBase_SUCCESS != result ) { printf( "Couldn't force-delete a tag in use on a entityset.\n" ); free( all_tags ); return FALSE; } free( all_tags ); /* ok, we're done */ return TRUE; }
int mesh_tag_test | ( | iMesh_Instance | mesh | ) |
Definition at line 2606 of file testc_cbind.cpp.
References mesh_double_tag_test(), mesh_int_tag_test(), mesh_struct_tag_test(), and mesh_tag_delete_test().
Referenced by main().
{ iBase_TagHandle int_tag, double_tag, struct_tag; /* entityset int tag */ int int_success = mesh_int_tag_test( mesh, &int_tag ); /* entityeset double tag */ int double_success = mesh_double_tag_test( mesh, &double_tag ); /* entityset struct tag */ int struct_success = mesh_struct_tag_test( mesh, &struct_tag ); int tag_delete_success = mesh_tag_delete_test( mesh ); return ( int_success && double_success && struct_success && tag_delete_success ); }
static int ordered_set_regression | ( | iMesh_Instance | mesh | ) | [static] |
Definition at line 2711 of file testc_cbind.cpp.
References CHK, iBase_ALL_TYPES, iBase_INTERLEAVED, iBase_NEW, iMesh_addEntArrToSet, iMesh_ALL_TOPOLOGIES, iMesh_createEnt, iMesh_createEntSet, iMesh_createVtxArr, iMesh_dtor, iMesh_getEntities, iMesh_LINE_SEGMENT, and iMesh_newMesh.
Referenced by main().
{ double coords[] = { 0, 0, 0, 1, 1, 1 }; iBase_EntityHandle line, *p, verts[2], ents_in[3], ents_out[3]; iBase_EntitySetHandle set; int i, err, status, two = 2, three = 3; iMesh_newMesh( "", &mesh, &err, 0 ); CHK( err ); p = verts; iMesh_createVtxArr( mesh, 2, iBase_INTERLEAVED, coords, 6, &p, &two, &two, &err ); CHK( err ); iMesh_createEnt( mesh, iMesh_LINE_SEGMENT, verts, 2, &line, &status, &err ); CHK( err ); if( status != iBase_NEW ) return 0; iMesh_createEntSet( mesh, 1, &set, &err ); CHK( err ); ents_in[0] = verts[1]; ents_in[1] = line; ents_in[2] = verts[0]; iMesh_addEntArrToSet( mesh, ents_in, three, set, &err ); CHK( err ); p = ents_out; iMesh_getEntities( mesh, set, iBase_ALL_TYPES, iMesh_ALL_TOPOLOGIES, &p, &three, &three, &err ); CHK( err ); for( i = 0; i < three; i++ ) { if( ents_in[i] != ents_out[i] ) { printf( "Ordered set does not preserve order\n" ); return 0; } } iMesh_dtor( mesh, &err ); CHK( err ); return 1; }
void PRINT_ASSERT_FAILURE | ( | const char * | cond, |
const char * | file, | ||
int | line | ||
) |
Definition at line 90 of file testc_cbind.cpp.
{ printf( "Condition: %s\n", cond ); printf( " failed at %s line %d\n", file, line ); }
int qsort_comp_handles | ( | const void * | h1, |
const void * | h2 | ||
) |
Definition at line 503 of file testc_cbind.cpp.
Referenced by entity_connectivity_test().
{ return *(char**)h1 - *(char**)h2; }
int set_remove_contained_regression | ( | iMesh_Instance | mesh | ) |
Definition at line 2624 of file testc_cbind.cpp.
References iBase_SUCCESS, iMesh_addEntSet, iMesh_createEntSet, iMesh_isEntSetContained, and iMesh_rmvEntSet.
Referenced by main().
{ int err, contained; iBase_EntitySetHandle set, sub; iMesh_createEntSet( mesh, 0, &set, &err ); if( iBase_SUCCESS != err ) return 0; iMesh_createEntSet( mesh, 1, &sub, &err ); if( iBase_SUCCESS != err ) return 0; iMesh_addEntSet( mesh, sub, set, &err ); if( iBase_SUCCESS != err ) return 0; iMesh_isEntSetContained( mesh, set, sub, &contained, &err ); if( iBase_SUCCESS != err ) return 0; if( !contained ) { fprintf( stderr, "isEntSetContained returned false for contained set\n" ); return 0; } iMesh_rmvEntSet( mesh, sub, set, &err ); if( iBase_SUCCESS != err ) return 0; iMesh_isEntSetContained( mesh, set, sub, &contained, &err ); if( iBase_SUCCESS != err ) return 0; if( contained ) { fprintf( stderr, "isEntSetContained returned true for removed set\n" ); return 0; } return 1; }
int tag_info_test | ( | iMesh_Instance | mesh | ) |
Definition at line 1724 of file testc_cbind.cpp.
References moab::error(), FALSE, iBase_INTEGER, iBase_SUCCESS, iMesh_createTag, iMesh_destroyTag, iMesh_getTagHandle, iMesh_getTagName, iMesh_getTagSizeBytes, and TRUE.
{ char dum_name[120]; int dum_name_size = 120; int dum_size; int error = FALSE; iBase_TagHandle dum_handle; /* Create a tag */ int result; iBase_TagHandle tag_handle = NULL; const char* tag_name = "int_tag"; int tag_name_size = 8; iMesh_createTag( mesh, tag_name, 1, iBase_INTEGER, &tag_handle, &result, tag_name_size ); if( iBase_SUCCESS != result ) { printf( "Failed to create tag int_tag in vertex_tag_test." ); return FALSE; } /* check tag info functions */ iMesh_getTagName( mesh, tag_handle, dum_name, &result, dum_name_size ); if( iBase_SUCCESS != result ) { printf( "Couldn't get name of tag just created.\n" ); return FALSE; } if( strcmp( dum_name, "int_tag" ) != 0 ) { printf( "Tag names didn't match.\n" ); return FALSE; } iMesh_getTagSizeBytes( mesh, tag_handle, &dum_size, &result ); if( iBase_SUCCESS != result ) { printf( "Couldn't get size of tag just created.\n" ); return FALSE; } if( dum_size != sizeof( int ) ) { printf( "Tag sizes didn't match.\n" ); return FALSE; } iMesh_getTagHandle( mesh, tag_name, &dum_handle, &result, tag_name_size ); if( iBase_SUCCESS != result ) { printf( "Couldn't get handle of tag just created.\n" ); return FALSE; } if( dum_handle != tag_handle ) { printf( "Tag handles didn't match.\n" ); return FALSE; } /* test non-forced version of tagDelete; forced version tested later, */ /* when we have entities around */ iMesh_destroyTag( mesh, tag_handle, FALSE, &result ); if( iBase_SUCCESS != result ) { printf( "Couldn't delete tag just created.\n" ); return FALSE; } /* look for that tag, to make sure it got deleted */ iMesh_getTagHandle( mesh, tag_name, &tag_handle, &result, tag_name_size ); if( iBase_SUCCESS != result ) { error = TRUE; } if( !error ) { printf( "tagGetHandle was able to find handle for deleted tag.\n" ); return FALSE; } return TRUE; }
int test_iterator | ( | iMesh_Instance | mesh | ) |
Definition at line 3027 of file testc_cbind.cpp.
References CHK, iBase_ALL_TYPES, iBase_SUCCESS, iMesh_addEntArrToSet, iMesh_ALL_TOPOLOGIES, iMesh_createEntSet, iMesh_getEntities, iMesh_getRootSet, and test_iterator_common().
Referenced by main().
{ int result, i; iBase_EntitySetHandle root, list, set, *setptr; iBase_EntityHandle* array = NULL; int array_len = 0, array_size = 0; iMesh_getRootSet( mesh, &root, &result ); CHK( result ); /* create some sets containing every other handle */ iMesh_getEntities( mesh, root, iBase_ALL_TYPES, iMesh_ALL_TOPOLOGIES, &array, &array_size, &array_len, &result ); CHK( result ); for( i = 1; i < array_size; i += 2 ) array[i] = array[i - 1]; for( i = 0; i < 2; ++i ) { setptr = i ? &list : &set; iMesh_createEntSet( mesh, i, setptr, &result ); if( iBase_SUCCESS != result ) free( array ); CHK( result ); iMesh_addEntArrToSet( mesh, array, array_size, *setptr, &result ); if( iBase_SUCCESS != result ) free( array ); CHK( result ); } free( array ); /* test single iterator and array iterator for all types */ for( i = 0; i < iBase_ALL_TYPES; ++i ) { array_size = 2 * i + 2; result = test_iterator_common( "root", mesh, root, 1, (enum iBase_EntityType)i, iMesh_ALL_TOPOLOGIES ); CHK( result ); result = test_iterator_common( "root", mesh, root, array_size, (enum iBase_EntityType)i, iMesh_ALL_TOPOLOGIES ); CHK( result ); result = test_iterator_common( "list", mesh, list, 1, (enum iBase_EntityType)i, iMesh_ALL_TOPOLOGIES ); CHK( result ); result = test_iterator_common( "list", mesh, list, array_size, (enum iBase_EntityType)i, iMesh_ALL_TOPOLOGIES ); CHK( result ); result = test_iterator_common( "set", mesh, set, 1, (enum iBase_EntityType)i, iMesh_ALL_TOPOLOGIES ); CHK( result ); result = test_iterator_common( "set", mesh, set, array_size, (enum iBase_EntityType)i, iMesh_ALL_TOPOLOGIES ); CHK( result ); } /* test single iterator and array iterator for all types */ for( i = 0; i < iMesh_ALL_TOPOLOGIES; ++i ) { array_size = 2 * i + 2; result = test_iterator_common( "root", mesh, root, 1, iBase_ALL_TYPES, (enum iMesh_EntityTopology)i ); CHK( result ); result = test_iterator_common( "root", mesh, root, array_size, iBase_ALL_TYPES, (enum iMesh_EntityTopology)i ); CHK( result ); result = test_iterator_common( "list", mesh, list, 1, iBase_ALL_TYPES, (enum iMesh_EntityTopology)i ); CHK( result ); result = test_iterator_common( "list", mesh, list, array_size, iBase_ALL_TYPES, (enum iMesh_EntityTopology)i ); CHK( result ); result = test_iterator_common( "set", mesh, set, 1, iBase_ALL_TYPES, (enum iMesh_EntityTopology)i ); CHK( result ); result = test_iterator_common( "set", mesh, set, array_size, iBase_ALL_TYPES, (enum iMesh_EntityTopology)i ); CHK( result ); } return 1; }
int test_iterator_common | ( | const char * | info, |
iMesh_Instance | mesh, | ||
iBase_EntitySetHandle | set, | ||
int | array_size, | ||
enum iBase_EntityType | type, | ||
enum iMesh_EntityTopology | topo | ||
) |
Definition at line 3006 of file testc_cbind.cpp.
References CHK, compare_array_iter(), compare_single_iter(), and iMesh_getEntities.
Referenced by test_iterator().
{ iBase_EntityHandle* contents = NULL; int content_size = 0, content_alloc = 0; int result; iMesh_getEntities( mesh, set, type, topo, &contents, &content_alloc, &content_size, &result ); CHK( result ); if( array_size == 1 ) result = compare_single_iter( info, mesh, set, contents, content_size, type, topo ); else result = compare_array_iter( info, mesh, set, contents, content_size, array_size, type, topo ); free( contents ); return result; }
int topology_adjacency_test | ( | iMesh_Instance | mesh | ) |
Definition at line 229 of file testc_cbind.cpp.
References entities, FALSE, iBase_ALL_TYPES, iBase_FACE, iBase_REGION, iBase_SUCCESS, iMesh_ALL_TOPOLOGIES, iMesh_getEntArrAdj, iMesh_getEntArrTopo, iMesh_getEntities, iMesh_getNumOfTopo, iMesh_HEXAHEDRON, iMesh_POINT, iMesh_PRISM, iMesh_PYRAMID, iMesh_SEPTAHEDRON, iMesh_TETRAHEDRON, root_set, and TRUE.
Referenced by main().
{ int result, i, j, entities_alloc, entities_size, *topologies; int topologies_alloc, topologies_size; iBase_EntityHandle *entities, *entity_vectors[iMesh_ALL_TOPOLOGIES] = { NULL }; int entity_vectors_sizes[iMesh_ALL_TOPOLOGIES] = { 0 }; int top_j, num_tops, region_type, num_region; iBase_EntityHandle* adj_faces = NULL; int adj_faces_alloc = 0, adj_faces_size; int* face_offsets = NULL; int face_offsets_alloc = 0, face_offsets_size, face_loaded; iBase_EntityHandle* adj_regions = NULL; int adj_regions_alloc = 0, adj_regions_size; int* region_offsets = NULL; int region_offsets_alloc = 0, region_offsets_size; iBase_EntityHandle *interior, *exterior; int num_int = 0, num_ext = 0, found, next_offset, iter; int num_faces_per_region; ; /* fill the vectors of each topology entities */ /* like lines vector, polygon vector, triangle vector, */ /* quadrilateral, polyhedrron, tet, hex, prism, pyramid, */ /* septahedron vectors */ for( i = 0; i < iMesh_ALL_TOPOLOGIES; i++ ) { entities = NULL; entities_alloc = 0; iMesh_getEntities( mesh, root_set, iBase_ALL_TYPES, i, &entities, &entities_alloc, &entities_size, &result ); if( iBase_SUCCESS != result ) { printf( "Failed to get entities in adjacencies_test.\n" ); return FALSE; } if( entities_alloc > 0 ) { topologies = NULL; topologies_alloc = 0; iMesh_getEntArrTopo( mesh, entities, entities_alloc, &topologies, &topologies_alloc, &topologies_size, &result ); if( iBase_SUCCESS != result ) { printf( "Failed to get topologies in adjacencies_test.\n" ); return FALSE; } if( topologies_size != entities_size ) { printf( "Didn't get the right number of topologies " "in topology_adjacency_test.\n" ); free( topologies ); free( entities ); return FALSE; } /* put entities into vectors of each topology */ entity_vectors[i] = (iBase_EntityHandle*)malloc( entities_size * sizeof( iBase_EntityHandle ) ); for( j = 0; j < entities_size; j++ ) { if( topologies[j] < iMesh_POINT || topologies[j] >= iMesh_ALL_TOPOLOGIES ) printf( "Didn't find entity type for this topology." ); else { entity_vectors[i][entity_vectors_sizes[i]] = entities[j]; entity_vectors_sizes[i]++; } } free( topologies ); } free( entities ); } /* check number of entities for each topology */ for( top_j = 0; top_j < iMesh_ALL_TOPOLOGIES; top_j++ ) { num_tops = 0; iMesh_getNumOfTopo( mesh, root_set, top_j, &num_tops, &result ); if( iBase_SUCCESS != result ) { printf( "Failed to get number of topologies in adjacencies_test.\n" ); for( i = 0; i < iMesh_ALL_TOPOLOGIES; i++ ) free( entity_vectors[i] ); return FALSE; } if( entity_vectors_sizes[top_j] != num_tops ) { printf( "Topology count mismatch.\n" ); for( i = 0; i < iMesh_ALL_TOPOLOGIES; i++ ) free( entity_vectors[i] ); return FALSE; } } /* change if 3d topology entities are added or removed */ for( region_type = iMesh_TETRAHEDRON; region_type < iMesh_ALL_TOPOLOGIES; region_type++ ) { /* get all adjacent faces of regions */ iBase_EntityHandle* region_vector = entity_vectors[region_type]; num_region = entity_vectors_sizes[region_type]; if( num_region > 0 ) { adj_faces = NULL; adj_faces_alloc = 0; face_offsets = NULL; face_offsets_alloc = 0; iMesh_getEntArrAdj( mesh, region_vector, num_region, iBase_FACE, &adj_faces, &adj_faces_alloc, &adj_faces_size, &face_offsets, &face_offsets_alloc, &face_offsets_size, &result ); if( iBase_SUCCESS != result ) { printf( "Failed to get adjacent faces of regions in adjacencies_test.\n" ); for( i = 0; i < iMesh_ALL_TOPOLOGIES; i++ ) free( entity_vectors[i] ); return FALSE; } if( num_region + 1 != face_offsets_size ) { printf( "Number of offsets didn't agree with number of " "regions in topology_adjacency_test.\n" ); free( face_offsets ); free( adj_faces ); for( i = 0; i < iMesh_ALL_TOPOLOGIES; i++ ) free( entity_vectors[i] ); return FALSE; } face_loaded = FALSE; /* check # of faces really loaded */ if( region_type == iMesh_TETRAHEDRON ) { if( adj_faces_size == 4 * num_region ) face_loaded = TRUE; } else if( region_type == iMesh_HEXAHEDRON ) { if( adj_faces_size == 6 * num_region ) face_loaded = TRUE; } else if( region_type == iMesh_PRISM ) { if( adj_faces_size == 5 * num_region ) face_loaded = TRUE; } else if( region_type == iMesh_PYRAMID ) { if( adj_faces_size == 5 * num_region ) face_loaded = TRUE; } else if( region_type == iMesh_SEPTAHEDRON ) { if( adj_faces_size == 7 * num_region ) face_loaded = TRUE; } else face_loaded = FALSE; /* get all adjacent regions of adjacent faces */ adj_regions = NULL; adj_regions_alloc = 0; region_offsets = NULL; region_offsets_alloc = 0; iMesh_getEntArrAdj( mesh, adj_faces, adj_faces_size, iBase_REGION, &adj_regions, &adj_regions_alloc, &adj_regions_size, ®ion_offsets, ®ion_offsets_alloc, ®ion_offsets_size, &result ); if( iBase_SUCCESS != result ) { printf( "Failed to get regions from faces in adjacencies_test.\n" ); free( face_offsets ); free( adj_faces ); for( i = 0; i < iMesh_ALL_TOPOLOGIES; i++ ) free( entity_vectors[i] ); return FALSE; } if( adj_faces_size + 1 != region_offsets_size ) { printf( "Number of offsets didn't agree with number of faces in " "topology_adjacency_test.\n" ); free( face_offsets ); free( region_offsets ); free( adj_faces ); free( adj_regions ); for( i = 0; i < iMesh_ALL_TOPOLOGIES; i++ ) free( entity_vectors[i] ); return FALSE; } interior = (iBase_EntityHandle*)malloc( adj_faces_size * sizeof( iBase_EntityHandle ) ), exterior = (iBase_EntityHandle*)malloc( adj_faces_size * sizeof( iBase_EntityHandle ) ); num_int = 0; num_ext = 0; /* find the interior faces having two adjacent regions */ for( i = 0; i < adj_faces_size; i++ ) { next_offset = 0; if( i == adj_faces_size - 1 ) next_offset = adj_regions_size; else next_offset = region_offsets[i + 1]; if( next_offset - region_offsets[i] == 2 ) { found = FALSE; for( iter = 0; iter < num_int; iter++ ) { if( interior[iter] == adj_faces[i] ) { found = TRUE; break; } } if( !found ) interior[num_int++] = adj_faces[i]; } } /* now remove any interior faces from the previous adjacent faces list */ /* and we should be left with exterior faces */ for( i = 0; i < adj_faces_size; i++ ) { found = FALSE; for( iter = 0; iter < num_int; iter++ ) { if( interior[iter] == adj_faces[i] ) { found = TRUE; break; } } if( !found ) exterior[num_ext++] = adj_faces[i]; } num_faces_per_region = face_offsets[1] - face_offsets[0]; /* check # of exterior and interior faces */ /* should be #exterior_faces + 2 * #interior_faces = #faces_per_region */ /* * #regions */ if( face_loaded ) { if( num_ext + 2 * num_int != num_faces_per_region * num_region ) { printf( "exterior/interior failure: %d ext, %d int, %d regions, %d faces per\n", num_ext, num_int, num_region, num_faces_per_region ); free( face_offsets ); free( region_offsets ); free( adj_faces ); free( adj_regions ); free( interior ); free( exterior ); for( i = 0; i < iMesh_ALL_TOPOLOGIES; i++ ) free( entity_vectors[i] ); return FALSE; } } free( face_offsets ); free( region_offsets ); free( adj_faces ); free( adj_regions ); free( interior ); free( exterior ); } } for( i = 0; i < iMesh_ALL_TOPOLOGIES; i++ ) free( entity_vectors[i] ); return TRUE; }
int topology_dimension_test | ( | iMesh_Instance | mesh | ) |
Definition at line 170 of file testc_cbind.cpp.
References FALSE, iBase_FACE, iBase_SUCCESS, iMesh_ALL_TOPOLOGIES, iMesh_getEntArrType, iMesh_getEntities, root_set, and TRUE.
Referenced by main().
{ iBase_EntityHandle* faces = NULL; int faces_alloc = 0, faces_size; int result, i; int* dimensions = NULL; int dimensions_alloc = 0, dimensions_size; /* first get 2D entities */ iMesh_getEntities( mesh, root_set, iBase_FACE, iMesh_ALL_TOPOLOGIES, &faces, &faces_alloc, &faces_size, &result ); if( iBase_SUCCESS != result ) { printf( "Failed to get faces in entity_sets_test.\n" ); return FALSE; } /* get dimensions of faces */ iMesh_getEntArrType( mesh, faces, faces_size, &dimensions, &dimensions_alloc, &dimensions_size, &result ); if( iBase_SUCCESS != result ) { printf( "Failed to get dimensions of faces in topology_test.\n" ); free( faces ); return FALSE; } if( dimensions_size != faces_size ) { printf( "Didn't get the right number of types in topology_test.\n" ); free( faces ); free( dimensions ); return FALSE; } /* make sure all elements are 2D */ for( i = 0; i < faces_size; i++ ) { if( dimensions[i] != iBase_FACE ) { free( faces ); free( dimensions ); return FALSE; } } free( faces ); free( dimensions ); return TRUE; }
int vertex_coordinates_test | ( | iMesh_Instance | mesh | ) |
Definition at line 1671 of file testc_cbind.cpp.
References FALSE, iBase_INTERLEAVED, iBase_SUCCESS, iBase_VERTEX, iMesh_getDfltStorage, iMesh_getEntities, iMesh_getVtxArrCoords, iMesh_POINT, root_set, and TRUE.
Referenced by main().
{ iBase_EntityHandle* verts = NULL; int verts_alloc = 0, verts_size; double* vert_coords = NULL; int vert_coords_alloc = 0, vert_coords_size; /* check storage order */ int result; int this_order; iMesh_getDfltStorage( mesh, &this_order, &result ); if( iBase_SUCCESS != result ) { printf( "failed to get preferred storage order in vertex_coordinates_test.\n" ); return FALSE; } /* now get the vertex coordinates from a vertex array */ /* need to get the vertices in the model */ verts = NULL; verts_alloc = 0; iMesh_getEntities( mesh, root_set, iBase_VERTEX, iMesh_POINT, &verts, &verts_alloc, &verts_size, &result ); if( iBase_SUCCESS != result ) { printf( "failed to get entities in vertex_coordinates_test.\n" ); return FALSE; } /* get the coordinates in one array */ vert_coords = NULL; vert_coords_alloc = 0; iMesh_getVtxArrCoords( mesh, verts, verts_size, iBase_INTERLEAVED, &vert_coords, &vert_coords_alloc, &vert_coords_size, &result ); if( iBase_SUCCESS != result ) { printf( "failed to get vertex cooridinate of entities in vertex_coordinates_test.\n" ); free( verts ); return FALSE; } free( verts ); free( vert_coords ); /* if we get here, this test was successful */ return TRUE; }
int vertex_double_tag_test | ( | iMesh_Instance | mesh, |
iBase_EntityHandle * | verts, | ||
int | , | ||
iBase_TagHandle * | double_tag | ||
) |
Definition at line 1873 of file testc_cbind.cpp.
References FALSE, iBase_DOUBLE, iBase_SUCCESS, iMesh_createTag, iMesh_getArrData, iMesh_setArrData, and TRUE.
Referenced by vertex_tag_test().
{ int result; iBase_EntityHandle dum_vert = verts[0]; double dum_val = 1.0e6, dum_val2; void* dum_val2_ptr = &dum_val2; int dum_val2_alloc = sizeof( double ), dum_val2_size; /* create a tag */ const char* tag_name = "double_tag"; int tag_name_size = 11; iMesh_createTag( mesh, tag_name, 1, iBase_DOUBLE, double_tag, &result, tag_name_size ); if( iBase_SUCCESS != result ) { printf( "Failed to create tag double_tag in vertex_double_tag_test.\n" ); return FALSE; } /* put a value in the first vertex and retrieve */ iMesh_setArrData( mesh, &dum_vert, 1, *double_tag, (char*)( &dum_val ), sizeof( double ), &result ); if( iBase_SUCCESS != result ) { printf( "Failed to set double tag (val=1.0e6) in vertex_double_tag_test.\n" ); return FALSE; } iMesh_getArrData( mesh, &dum_vert, 1, *double_tag, &dum_val2_ptr, &dum_val2_alloc, &dum_val2_size, &result ); if( iBase_SUCCESS != result ) { printf( "Failed to get double tag (val=1.0e6) in vertex_double_tag_test.\n" ); return FALSE; } if( dum_val2 != 1.0e6 ) { printf( "Value of vertex tag (val=1.0e6) wrong.\n" ); return FALSE; } /* put a value in the last vertex and retrieve */ dum_val = 2.0e9; iMesh_setArrData( mesh, &dum_vert, 1, *double_tag, (char*)( &dum_val ), sizeof( double ), &result ); if( iBase_SUCCESS != result ) { printf( "Failed to set double tag (val=2.0e9) in vertex_double_tag_test.\n" ); return FALSE; } iMesh_getArrData( mesh, &dum_vert, 1, *double_tag, &dum_val2_ptr, &dum_val2_alloc, &dum_val2_size, &result ); if( iBase_SUCCESS != result ) { printf( "Failed to get double tag (val=2.0e9) in vertex_double_tag_test.\n" ); return FALSE; } if( dum_val2 != 2.0e9 ) { printf( "Value of vertex tag (val=2.0e9) wrong.\n" ); return FALSE; } /* ok, the double tag test worked */ return TRUE; }
int vertex_int_tag_test | ( | iMesh_Instance | mesh, |
iBase_EntityHandle * | verts, | ||
int | , | ||
iBase_TagHandle * | int_tag | ||
) |
Definition at line 1804 of file testc_cbind.cpp.
References FALSE, iBase_INTEGER, iBase_SUCCESS, iMesh_createTag, iMesh_getArrData, iMesh_setArrData, and TRUE.
Referenced by vertex_tag_test().
{ int result; iBase_EntityHandle dum_vert = verts[0]; int dum_val = 11, dum_val2; void* dum_val2_ptr = &dum_val2; int dum_val2_alloc = sizeof( int ), dum_val2_size; /* create a tag */ const char* tag_name = "int_tag"; int tag_name_size = 8; iMesh_createTag( mesh, tag_name, 1, iBase_INTEGER, int_tag, &result, tag_name_size ); if( iBase_SUCCESS != result ) { printf( "Failed to create tag int_tag in vertex_int_tag_test.\n" ); return FALSE; } /* put a value in the first vertex and retrieve */ iMesh_setArrData( mesh, &dum_vert, 1, *int_tag, (const char*)( &dum_val ), sizeof( int ), &result ); if( iBase_SUCCESS != result ) { printf( "Failed to set int tag (val=11) in vertex_int_tag_test.\n" ); return FALSE; } iMesh_getArrData( mesh, &dum_vert, 1, *int_tag, &dum_val2_ptr, &dum_val2_alloc, &dum_val2_size, &result ); if( iBase_SUCCESS != result || dum_val2 != 11 ) { printf( "Failed to get int tag (val=11) in vertex_int_tag_test.\n" ); return FALSE; } if( dum_val2 != 11 ) { printf( "Value of vertex tag (val=11) wrong.\n" ); return FALSE; } /* put a value in the last vertex and retrieve */ dum_val = 12; iMesh_setArrData( mesh, &dum_vert, 1, *int_tag, (char*)( &dum_val ), sizeof( int ), &result ); if( iBase_SUCCESS != result ) { printf( "Failed to set int tag (val=12) in vertex_int_tag_test.\n" ); return FALSE; } iMesh_getArrData( mesh, &dum_vert, 1, *int_tag, &dum_val2_ptr, &dum_val2_alloc, &dum_val2_size, &result ); if( iBase_SUCCESS != result ) { printf( "Failed to get int tag (val=12) in vertex_int_tag_test.\n" ); return FALSE; } if( dum_val2 != 12 ) { printf( "Value of vertex tag (val=12) wrong.\n" ); return FALSE; } /* ok, the int tag test worked */ return TRUE; }
int vertex_struct_tag_test | ( | iMesh_Instance | mesh, |
iBase_EntityHandle * | verts, | ||
int | , | ||
iBase_TagHandle * | struct_tag | ||
) |
Definition at line 1950 of file testc_cbind.cpp.
References FALSE, iBase_BYTES, iBase_SUCCESS, iMesh_createTag, iMesh_getArrData, iMesh_setArrData, and TRUE.
Referenced by vertex_tag_test().
{ int result; iBase_EntityHandle dum_vert = verts[0]; struct TagStruct dum_struct = { 3.0e12, 2, 3 }, dum_struct2; void* dum_struct2_ptr = &dum_struct2; int dum_struct_alloc = sizeof( struct TagStruct ), dum_struct_size; /* create a tag */ const char* tag_name = "struct_tag"; int tag_name_size = 11; iMesh_createTag( mesh, tag_name, sizeof( struct TagStruct ), iBase_BYTES, struct_tag, &result, tag_name_size ); if( iBase_SUCCESS != result ) { printf( "Failed to create tag struct_tag in vertex_struct_tag_test.\n" ); return FALSE; } /* put a value in the first vertex and retrieve */ /* careful setting the value, since tags are opaque */ iMesh_setArrData( mesh, &dum_vert, 1, *struct_tag, (const char*)&dum_struct, sizeof( struct TagStruct ), &result ); if( iBase_SUCCESS != result ) { printf( "Failed to set struct tag in vertex_struct_tag_test.\n" ); return FALSE; } iMesh_getArrData( mesh, &dum_vert, 1, *struct_tag, &dum_struct2_ptr, &dum_struct_alloc, &dum_struct_size, &result ); if( iBase_SUCCESS != result ) { printf( "Failed to get struct tag in vertex_struct_tag_test.\n" ); return FALSE; } if( dum_struct_size != sizeof( struct TagStruct ) ) { printf( "Size of vertex struct tag wrong.\n" ); return FALSE; } if( dum_struct2.test_int1 != dum_struct.test_int1 || dum_struct2.test_int2 != dum_struct.test_int2 || dum_struct2.test_double != dum_struct.test_double ) { printf( "Value of vertex struct tag wrong.\n" ); return FALSE; } /* ok, the int tag test worked */ return TRUE; }
int vertex_tag_delete_test | ( | iMesh_Instance | mesh, |
iBase_EntityHandle * | verts, | ||
int | |||
) |
Definition at line 2004 of file testc_cbind.cpp.
References FALSE, iBase_SUCCESS, iMesh_destroyTag, iMesh_getAllTags, iMesh_rmvArrTag, and TRUE.
Referenced by vertex_tag_test().
{ int result; int delete_err = FALSE; /* test forced, unforced deletion of tags from entities */ /* test getAlliBase_TagHandles for first entity */ iBase_TagHandle* all_tags = NULL; iBase_EntityHandle dum_entity = verts[0]; int all_tags_alloc = 0, all_tags_size; iMesh_getAllTags( mesh, verts[0], &all_tags, &all_tags_alloc, &all_tags_size, &result ); if( iBase_SUCCESS != result ) { printf( "Couldn't get all tag handles from vertex.\n" ); return FALSE; } iMesh_rmvArrTag( mesh, &dum_entity, 1, all_tags[0], &result ); if( iBase_SUCCESS != result ) { printf( "Couldn't remove tag from vertex.\n" ); free( all_tags ); return FALSE; } iMesh_destroyTag( mesh, all_tags[1], FALSE, &result ); if( iBase_SUCCESS != result ) { delete_err = TRUE; } if( !delete_err ) { printf( "Error when unforced-deleting tag in use on a vertex.\n" ); free( all_tags ); return FALSE; } iMesh_destroyTag( mesh, all_tags[1], TRUE, &result ); if( iBase_SUCCESS != result ) { printf( "Couldn't force-delete a tag in use on a vertex.\n" ); free( all_tags ); return FALSE; } free( all_tags ); /* ok, we're done */ return TRUE; }
int vertex_tag_test | ( | iMesh_Instance | mesh | ) |
Definition at line 2056 of file testc_cbind.cpp.
References FALSE, iBase_ALL_TYPES, iBase_SUCCESS, iMesh_getEntities, iMesh_POINT, root_set, tag_info_test(), vertex_double_tag_test(), vertex_int_tag_test(), vertex_struct_tag_test(), and vertex_tag_delete_test().
Referenced by main().
{ int result; iBase_TagHandle int_tag, double_tag, struct_tag; int int_err, double_err, struct_err, tag_delete_err; int info_err = tag_info_test( mesh ); /* get all the vertices */ iBase_EntityHandle* verts = NULL; int verts_alloc = 0, verts_size; iMesh_getEntities( mesh, root_set, iBase_ALL_TYPES, iMesh_POINT, &verts, &verts_alloc, &verts_size, &result ); if( iBase_SUCCESS != result ) { printf( "entitysetGetEntities failed in vertex_tag_test.\n" ); return FALSE; } /* vertex int tag */ int_err = vertex_int_tag_test( mesh, verts, verts_size, &int_tag ); /* vertex double tag */ double_err = vertex_double_tag_test( mesh, verts, verts_size, &double_tag ); /* vertex struct tag */ struct_err = vertex_struct_tag_test( mesh, verts, verts_size, &struct_tag ); tag_delete_err = vertex_tag_delete_test( mesh, verts, verts_size ); free( verts ); return ( info_err && int_err && double_err && struct_err && tag_delete_err ); }
bool assert_pass [static] |
Definition at line 81 of file testc_cbind.cpp.
Referenced by entity_connectivity_test().
enum iBase_ErrorType iBase_ERROR_MAP[MB_FAILURE+1] |
Definition at line 12 of file FBiGeom_MOAB.hpp.
Referenced by iMesh_destroyTag(), iMesh_rmvArrTag(), iMesh_rmvEntSetTag(), iMeshP_getPartsArrOnRank(), iMeshP_getPartsOnRank(), and MBiMesh::set_last_error().
iBase_EntitySetHandle root_set [static] |
Definition at line 105 of file testc_cbind.cpp.
Referenced by advection(), array_allocation(), check_esets(), create_mesh(), DirectAccessNoHolesF90(), entity_connectivity_test(), entity_sets_subtest(), entityset_struct_tag_test(), entityset_tag_test(), findadjacency(), gentityset_test(), geometry_evaluation_test(), get_imesh_mesh(), get_itaps_domain(), gLoad_test(), ListSetsNTags(), load_mesh_test(), main(), mesh_double_tag_test(), mesh_int_tag_test(), mesh_struct_tag_test(), mesh_tag_delete_test(), normals_test(), PushParMeshIntoMoab(), ray_test(), ScdMesh(), ScdMeshF90(), smooth_test(), tag_get_set_test(), tag_info_test(), tag_iterate(), test_load(), test_step_iter(), test_tag_iterate(), test_tags_retrieval(), topology_adjacencies_test(), topology_adjacency_test(), topology_dimension_test(), vertex_coordinates_test(), vertex_tag_test(), and moab::TempestOnlineMap::WriteHDF5MapFile().