46 #define CHECK_ERR_FILE( ERRCODE, FILENAME ) \
49 if( MB_SUCCESS != ( ERRCODE ) && !keep_files ) remove( FILENAME ); \
50 CHECK_ERR( ERRCODE ); \
53 int main(
int argc,
char* argv[] )
56 int fail = MPI_Init( &argc, &argv );
62 if( argc != 2 || strcmp( argv[1],
"-k" ) != 0 )
64 fprintf( stderr,
"Usage: %s [-k]\n", argv[0] );
85 fail = MPI_Finalize();
102 read_write(
"test_var_length_no_data.h5m", mb1, mb2 );
126 int num_values = h % 6 + 1;
128 int step = ( h % 2 ) ? 1 + (
int)etype : -1 - (int)etype;
129 std::vector< int > tag_data( num_values, num_values );
130 for(
int j = 1; j < num_values; ++j )
131 tag_data[j] = j * step;
133 const void* ptrarr[] = { &tag_data[0] };
134 if( opaque ) num_values *=
sizeof( int );
158 const void* ptrarr[] = { NULL };
164 size /=
sizeof( int );
166 const int* dataptr =
reinterpret_cast< const int*
>( ptrarr[0] );
167 CHECK( NULL != dataptr );
174 int step = dataptr[1];
175 for(
int j = 2; j <
size; ++j )
203 for(
size_t j = 2; j <
size; ++j )
204 data[j] = data[j - 2] + data[j - 1];
CHECK_ERR( rval );
221 *( range.
begin() += 2 * range.
size() / 3 ) };
224 std::vector< double > data( 1000000 );
225 for(
int i = 0; i < 3; ++i )
228 const void* ptr = &data[0];
229 const int size = data.size();
233 read_write(
"test_var_length_big_data.h5m", mb1, mb2 );
252 rval = mb2.tag_get_by_ptr( tag, &h, 1, &ptr, &
size );
CHECK_ERR( rval );
256 const double* act_data =
reinterpret_cast< const double*
>( ptr );
258 for(
size_t j = 0; j < data.size(); ++j )
259 if( act_data[j] != data[j] ) ++wrong_count;
296 void* default_val = mesh_value ? 0 : handles;
297 int default_val_size = mesh_value ? 0 : 3;
303 default_val = mesh_value ? 0 : coords;
304 default_val_size = mesh_value ? 0 : 9;
312 const void* ptrarr[] = { handles };
324 read_write( mesh_value ?
"test_var_length_mesh_data.h5m" :
"test_var_length_default_data.h5m",
mb, mb2 );
334 int handle_tag_size = 0, coord_tag_size = 0;
351 CHECK( ptrs[0] != NULL );
352 CHECK( ptrs[1] != NULL );
356 CHECK( handle_vals[0] != 0 );
357 CHECK( handle_vals[1] != 0 );
358 CHECK( handle_vals[2] != 0 );
364 const double* coord_vals =
reinterpret_cast< const double*
>( ptrs[1] );
394 const char data[] = {
'J',
'A',
'S',
'O',
'N' };
395 const int datalen =
sizeof( data );
400 const void* default_val = mesh_value ? 0 : data;
401 int default_val_size = mesh_value ? 0 : datalen;
408 const void* ptrarr[] = { data };
416 read_write( mesh_value ?
"test_var_length_mesh_opaque.h5m" :
"test_var_length_default_opaque.h5m",
mb, mb2 );
438 CHECK( ptrs[0] != NULL );
441 const char* tag_data =
reinterpret_cast< const char*
>( ptrs[0] );
442 for(
int i = 0; i < datalen; ++i )
474 size_t num_tagged_entities = 0;
475 for( i = range.
begin(); i != range.
end(); ++i )
482 const void* ptr = &h;
484 ++num_tagged_entities;
491 const void* ptr = conn;
493 ++num_tagged_entities;
497 read_write(
"test_var_length_handle_tag.h5m", mb1, mb2 );
510 for( i = range.
begin(); i != range.
end(); ++i )
516 rval = mb2.tag_get_by_ptr( tag, &h, 1, &ptr, &
size );
CHECK_ERR( rval );
520 if( mb2.type_from_handle( h ) ==
MBVERTEX )
529 rval = mb2.get_connectivity( h, conn, len );
CHECK_ERR( rval );
531 for(
int j = 0; j < len; ++j )
557 std::vector< double > dataArr;
560 for(
int j = 0; j < N; j++ )
562 const void* ptr = &dataArr[0];
571 const char* writeOptions =
"BUFFER_SIZE=4000;DEBUG_IO=5";
573 rval = mb2.load_file(
"test_huge_var_tag.h5m" );
CHECK_ERR( rval );
577 rval = mb2.tag_get_handle(
"test_tag", tag2 );
CHECK_ERR( rval );
581 rval = mb2.tag_get_by_ptr( tag2, &vertex2, 1, &ptr2, &len2 );
CHECK_ERR( rval );
592 const double z = 2.1;
593 std::vector< EntityHandle > verts( ( x + 1 ) * ( y + 1 ) );
594 for(
int i = 0; i <= x; ++i )
596 for(
int j = 0; j <= y; ++j )
598 double coords[3] = {
static_cast< double >( i ),
static_cast< double >( j ),
static_cast< double >( z ) };
603 std::vector< EntityHandle > elems( x * y );
604 for(
int i = 0; i < x; ++i )
606 for(
int j = 0; j < y; ++j )
608 EntityHandle conn[4] = { verts[i + ( x + 1 ) * j], verts[i + 1 + ( x + 1 ) * j],
609 verts[i + 1 + ( x + 1 ) * ( j + 1 )], verts[i + ( x + 1 ) * ( j + 1 )] };
645 const void *defval1, *defval2;
646 int defsize1, defsize2;
654 CHECK( !memcmp( defval1, defval2, defsize1 ) );