diff options
-rw-r--r-- | test/ohdr_mindset.c | 722 |
1 files changed, 368 insertions, 354 deletions
diff --git a/test/ohdr_mindset.c b/test/ohdr_mindset.c index ce26f50..149bb53 100644 --- a/test/ohdr_mindset.c +++ b/test/ohdr_mindset.c @@ -413,31 +413,67 @@ if (strcmp((actual), (expected)) != 0) { \ FAIL_IF( SUCCEED != H5Oget_info2((did1), &info1, H5O_INFO_HDR) ) \ FAIL_IF( SUCCEED != H5Oget_info2((did2), &info2, H5O_INFO_HDR) ) \ \ - HDprintf("\n==HEADERS== UNMINIMIZED MINIMIZED\n"); \ - HDprintf(" version: %11u %9u\n", \ + HDprintf("\n==HEADERS== UNMINIMIZED MINIMIZED\n"); \ + HDprintf(" version: %11u %9u\n", \ info1.hdr.version, \ info2.hdr.version); \ - HDprintf(" # messages: %11u %9u\n", \ + HDprintf(" # messages: %11u %9u\n", \ info1.hdr.nmesgs, \ info2.hdr.nmesgs); \ - HDprintf(" meta: %11llu %9llu\n", \ + HDprintf(" meta: %11llu %9llu\n", \ info1.hdr.space.meta, \ info2.hdr.space.meta); \ - HDprintf(" free: %11llu %9llu\n", \ + HDprintf(" free: %11llu %9llu\n", \ info1.hdr.space.free, \ info2.hdr.space.free); \ - HDprintf(" total: %11llu %9llu\n", \ + HDprintf(" total: %11llu %9llu\n", \ info1.hdr.space.total, \ info2.hdr.space.total); \ } + +/* --------------------------------------------------------------------------- + * Macro: CREATE_FILE(...) + * + * Wrapper to create an hdf5 file, and report an error. + * Call only at test function "top level", because of JSVERIFY. + * --------------------------------------------------------------------------- + */ +#define CREATE_FILE(name, id_out) \ +{ char errmsg[128] = ""; \ + snprintf(errmsg, 128, "unable to create file '%s'", (name)); \ + JSVERIFY( SUCCEED, _create_file((name), id_out), errmsg) \ +} + + +/* --------------------------------------------------------------------------- + * Macro: CREATE_DATASET(...) + * + file id + * + dataset name + * + datatype id + * + dataspace id + * + dcpl id + * + pointer to dataset id (store H5Dcreate result ) + * + * Wrapper to create a dataset, and report an error. + * Call only at test function "top level", because of JSVERIFY. + * --------------------------------------------------------------------------- + */ +#define CREATE_DATASET(Fid, name, Tid, Sid, dcpl, Did_out) \ +{ char errmsg[32] = ""; \ + snprintf(errmsg, 32, "unable to create dataset '%s'", (name)); \ + JSVERIFY( SUCCEED, \ + _make_dataset((Fid), (name), (Tid), (Sid), (dcpl), (Did_out)), \ + errmsg) \ +} + /********************* * UTILITY FUNCTIONS * *********************/ /* --------------------------------------------------------------------------- - * Function: make_file() + * Function: _create_file() * * Purpose: Create a file with the name, and record its hid in out parameter. * @@ -446,7 +482,7 @@ if (strcmp((actual), (expected)) != 0) { \ * --------------------------------------------------------------------------- */ static herr_t -make_file( \ +_create_file( \ const char *filename, \ hid_t *fid) { @@ -461,11 +497,11 @@ make_file( \ *fid = id; return SUCCEED; -} /* make_file */ +} /* _create_file */ /* --------------------------------------------------------------------------- - * Function: make_dataset() + * Function: _make_dataset() * * Purpose: Create a dataset and record its hid in out parameter `dset_id`. * @@ -474,7 +510,7 @@ make_file( \ * --------------------------------------------------------------------------- */ static herr_t -make_dataset( \ +_make_dataset( \ hid_t loc_id, \ const char *name, \ hid_t datatype_id, \ @@ -497,7 +533,7 @@ make_dataset( \ *dset_id = id; return SUCCEED; -} /* make_dataset */ +} /* _make_dataset */ /* --------------------------------------------------------------------------- @@ -558,7 +594,7 @@ count_attributes(hid_t dset_id) if (0 > H5Oget_info(dset_id, &info, H5O_INFO_ALL)) return -1; - else + else return (int)info.num_attrs; /* should never exceed int bounds */ } /* count_attributes */ @@ -614,7 +650,7 @@ oh_compare( \ return GT; else return EQ; -} +} /****************** * TEST FUNCTIONS * @@ -633,24 +669,24 @@ oh_compare( \ static int test_attribute_addition(void) { - hid_t int_type_id = -1; - hid_t char_type_id = -1; - hid_t dcpl_id = -1; - hid_t dspace_id = -1; - hid_t dspace_scalar_id = -1; - hid_t dset_id = -1; - hid_t mindset_id = -1; - hid_t attr_1_id = -1; - hid_t attr_1a_id = -1; - hid_t attr_2_id = -1; - hid_t attr_2a_id = -1; - hid_t attr_3_id = -1; - hid_t attr_3a_id = -1; - hid_t file_id = -1; - hsize_t array_10[1] = {10}; /* dataspace extent */ - char buffer[10] = ""; /* to inspect string attribute */ - int a_out = 0; - char filename[512] = ""; + hsize_t array_10[1] = {10}; /* dataspace extent */ + char buffer[10] = ""; /* to inspect string attribute */ + int a_out = 0; + char filename[512] = ""; + hid_t int_type_id = -1; + hid_t char_type_id = -1; + hid_t dcpl_id = -1; + hid_t dspace_id = -1; + hid_t dspace_scalar_id = -1; + hid_t dset_id = -1; + hid_t mindset_id = -1; + hid_t attr_1_id = -1; + hid_t attr_1a_id = -1; + hid_t attr_2_id = -1; + hid_t attr_2a_id = -1; + hid_t attr_3_id = -1; + hid_t attr_3a_id = -1; + hid_t file_id = -1; TESTING("attribute additions to [un]minimized dataset") @@ -685,11 +721,7 @@ test_attribute_addition(void) H5Pset_dset_no_attrs_hint(dcpl_id, TRUE), \ "can't set DCPL to minimize object header") - JSVERIFY( SUCCEED, \ - make_file( \ - filename, \ - &file_id), \ - "unable to create file") + CREATE_FILE(filename, &file_id) H5E_BEGIN_TRY { JSVERIFY( -1, \ @@ -697,25 +729,21 @@ test_attribute_addition(void) "shouldn't be able to count missing dataset") } H5E_END_TRY; - JSVERIFY( SUCCEED, \ - make_dataset( \ - file_id, /* shorthand for root group? */ \ - "dataset", \ - int_type_id, \ - dspace_id, \ - H5P_DEFAULT, /* default DCPL */ \ - &dset_id), \ - "unable to create dataset") - - JSVERIFY( SUCCEED, \ - make_dataset( \ - file_id, \ - "mindataset", \ - int_type_id, \ - dspace_id, \ - dcpl_id, \ - &mindset_id), \ - "unable to create minimizing dataset") + CREATE_DATASET( \ + file_id, /* shorthand for root group? */ \ + "dataset", \ + int_type_id, \ + dspace_id, \ + H5P_DEFAULT, /* default DCPL */ \ + &dset_id) + + CREATE_DATASET( \ + file_id, \ + "mindataset", \ + int_type_id, \ + dspace_id, \ + dcpl_id, \ + &mindset_id) /******************** * TEST/DEMONSTRATE * @@ -1022,78 +1050,58 @@ test_size_comparisons(void) int_type_id = H5Tcopy(H5T_NATIVE_INT); FAIL_IF( 0 > int_type_id ) - JSVERIFY( SUCCEED, \ - make_file( \ - filename_a, \ - &file_f_id), \ - "unable to create file 'ohdr_min_a.h5'") - - JSVERIFY( SUCCEED, \ - make_dataset( \ - file_f_id, \ - "default", \ - int_type_id, \ - dspace_id, \ - H5P_DEFAULT, \ - &dset_f_x_id), \ - "unable to create dataset fx") - - JSVERIFY( SUCCEED, \ - make_dataset( \ - file_f_id, \ - "dsetNOT", \ - int_type_id, \ - dspace_id, \ - dcpl_dontmin, \ - &dset_f_N_id), \ - "unable to create dataset fN") - - JSVERIFY( SUCCEED, \ - make_dataset( \ - file_f_id, \ - "dsetMIN", \ - int_type_id, \ - dspace_id, \ - dcpl_minimize, \ - &dset_f_Y_id), \ - "unable to create dataset fY") - - JSVERIFY( SUCCEED, \ - make_file( \ - filename_b, \ - &file_F_id), \ - "unable to create file 'ohdr_min_b.h5'") + CREATE_FILE(filename_a, &file_f_id) + + CREATE_DATASET( \ + file_f_id, \ + "default", \ + int_type_id, \ + dspace_id, \ + H5P_DEFAULT, \ + &dset_f_x_id) + + CREATE_DATASET( \ + file_f_id, \ + "dsetNOT", \ + int_type_id, \ + dspace_id, \ + dcpl_dontmin, \ + &dset_f_N_id) + + CREATE_DATASET( \ + file_f_id, \ + "dsetMIN", \ + int_type_id, \ + dspace_id, \ + dcpl_minimize, \ + &dset_f_Y_id) + + CREATE_FILE(filename_b, &file_F_id) FAIL_IF( 0 > H5Fset_dset_no_attrs_hint(file_F_id, TRUE) ) - JSVERIFY( SUCCEED, \ - make_dataset( \ - file_F_id, \ - "default", \ - int_type_id, \ - dspace_id, \ - H5P_DEFAULT, \ - &dset_F_x_id), \ - "unable to create dataset Fx") - - JSVERIFY( SUCCEED, \ - make_dataset( \ - file_F_id, \ - "dsetNOT", \ - int_type_id, \ - dspace_id, \ - dcpl_dontmin, \ - &dset_F_N_id), \ - "unable to create dataset FN") - - JSVERIFY( SUCCEED, \ - make_dataset( \ - file_F_id, \ - "dsetMIN", \ - int_type_id, \ - dspace_id, \ - dcpl_minimize, \ - &dset_F_Y_id), \ - "unable to create dataset FY") + CREATE_DATASET( \ + file_F_id, \ + "default", \ + int_type_id, \ + dspace_id, \ + H5P_DEFAULT, \ + &dset_F_x_id) + + CREATE_DATASET( \ + file_F_id, \ + "dsetNOT", \ + int_type_id, \ + dspace_id, \ + dcpl_dontmin, \ + &dset_F_N_id) + + CREATE_DATASET( \ + file_F_id, \ + "dsetMIN", \ + int_type_id, \ + dspace_id, \ + dcpl_minimize, \ + &dset_F_Y_id) /********* * TESTS * @@ -1165,28 +1173,27 @@ error : static int test_minimized_with_filter(void) { - hid_t dspace_id = -1; - hid_t dtype_id = -1; - hid_t fdcpl_id = -1; - hid_t mindcpl_id = -1; - hid_t minfdcpl_id = -1; - hid_t dset_id = -1; - hid_t fdset_id = -1; - hid_t mindset_id = -1; - hid_t minfdset_id = -1; - hid_t file_id = -1; - char filename[512] = ""; - const hsize_t extents[1] = {10}; /* extents of dataspace */ + const hsize_t extents[1] = {1024}; /* extents of dataspace */ const unsigned filter_values[] = {0}; /* TBD */ - const hsize_t chunk_dim[] = {2}; /* needed for filter */ + const hsize_t chunk_dim[] = {32}; /* needed for filter */ const int ndims = 1; + hid_t dspace_id = -1; + hid_t dtype_id = -1; + hid_t dcpl_xZ_id = -1; + hid_t dcpl_mx_id = -1; + hid_t dcpl_mZ_id = -1; + hid_t dset_xx_id = -1; + hid_t dset_xZ_id = -1; + hid_t dset_mx_id = -1; + hid_t dset_mZ_id = -1; + hid_t file_id = -1; /* | default | minimize * ----------+---------+--------- - * no filter | dset | mindset + * no filter | xx | mx * ----------+---------+--------- - * filter | fdset | minfdset + * filter | xZ | mZ */ TESTING("with filter message"); @@ -1201,37 +1208,37 @@ test_minimized_with_filter(void) filename, sizeof(filename)) ) - mindcpl_id = H5Pcreate(H5P_DATASET_CREATE); - FAIL_IF( 0 > mindcpl_id ) + dcpl_mx_id = H5Pcreate(H5P_DATASET_CREATE); + FAIL_IF( 0 > dcpl_mx_id ) JSVERIFY( SUCCEED, - H5Pset_dset_no_attrs_hint(mindcpl_id, TRUE), + H5Pset_dset_no_attrs_hint(dcpl_mx_id, TRUE), NULL ) - fdcpl_id = H5Pcreate(H5P_DATASET_CREATE); - FAIL_IF( 0 > fdcpl_id ) + dcpl_xZ_id = H5Pcreate(H5P_DATASET_CREATE); + FAIL_IF( 0 > dcpl_xZ_id ) JSVERIFY( SUCCEED, - H5Pset_chunk(fdcpl_id, ndims, chunk_dim), + H5Pset_chunk(dcpl_xZ_id, ndims, chunk_dim), "unable to chunk dataset") - JSVERIFY( SUCCEED, + JSVERIFY( SUCCEED, H5Pset_filter( - fdcpl_id, + dcpl_xZ_id, H5Z_FILTER_DEFLATE, H5Z_FLAG_OPTIONAL, 0, filter_values), "unable to set compression") - minfdcpl_id = H5Pcreate(H5P_DATASET_CREATE); - FAIL_IF( 0 > minfdcpl_id ) + dcpl_mZ_id = H5Pcreate(H5P_DATASET_CREATE); + FAIL_IF( 0 > dcpl_mZ_id ) JSVERIFY( SUCCEED, - H5Pset_dset_no_attrs_hint(minfdcpl_id, TRUE), + H5Pset_dset_no_attrs_hint(dcpl_mZ_id, TRUE), "unable to minimize to-be-filtered dataset header") JSVERIFY( SUCCEED, - H5Pset_chunk(minfdcpl_id, ndims, chunk_dim), + H5Pset_chunk(dcpl_mZ_id, ndims, chunk_dim), "unable to chunk minimized dataset") - JSVERIFY( SUCCEED, + JSVERIFY( SUCCEED, H5Pset_filter( - minfdcpl_id, + dcpl_mZ_id, H5Z_FILTER_DEFLATE, H5Z_FLAG_OPTIONAL, 0, @@ -1244,78 +1251,67 @@ test_minimized_with_filter(void) dtype_id = H5Tcopy(H5T_NATIVE_INT); FAIL_IF( 0 > dtype_id ) - JSVERIFY( SUCCEED, \ - make_file( \ - filename, \ - &file_id), \ - "unable to create file 'ohdr_min_a.h5'") - - JSVERIFY( SUCCEED, \ - make_dataset( \ - file_id, \ - "xx", \ - dtype_id, \ - dspace_id, \ - H5P_DEFAULT, \ - &dset_id), \ - "unable to create dataset fx") - JSVERIFY( SUCCEED, \ - make_dataset( \ - file_id, \ - "Mx", \ - dtype_id, \ - dspace_id, \ - mindcpl_id, \ - &mindset_id), \ - "unable to create dataset (minoh)") - - JSVERIFY( SUCCEED, \ - make_dataset( \ - file_id, \ - "xZ", \ - dtype_id, \ - dspace_id, \ - fdcpl_id, \ - &fdset_id), \ - "unable to create dataset (gzip)") - - JSVERIFY( SUCCEED, \ - make_dataset( \ - file_id, \ - "MZ", \ - dtype_id, \ - dspace_id, \ - minfdcpl_id, \ - &minfdset_id), \ - "unable to create dataset (minimized, gzip)") + CREATE_FILE(filename, &file_id) + + CREATE_DATASET( \ + file_id, \ + "xx", \ + dtype_id, \ + dspace_id, \ + H5P_DEFAULT, \ + &dset_xx_id) + + CREATE_DATASET( \ + file_id, \ + "Mx", \ + dtype_id, \ + dspace_id, \ + dcpl_mx_id, \ + &dset_mx_id) + + CREATE_DATASET( \ + file_id, \ + "xZ", \ + dtype_id, \ + dspace_id, \ + dcpl_xZ_id, \ + &dset_xZ_id) + + CREATE_DATASET( \ + file_id, \ + "MZ", \ + dtype_id, \ + dspace_id, \ + dcpl_mZ_id, \ + &dset_mZ_id) /********* * TESTS * *********/ - JSVERIFY( LT, oh_compare(mindset_id, dset_id), NULL ) - JSVERIFY( LT, oh_compare(mindset_id, fdset_id), NULL ) - JSVERIFY( GT, oh_compare(minfdset_id, mindset_id), NULL ) - JSVERIFY( LT, oh_compare(minfdset_id, fdset_id), NULL ) + JSVERIFY( LT, oh_compare(dset_mx_id, dset_xx_id), NULL ) + JSVERIFY( LT, oh_compare(dset_mx_id, dset_xZ_id), NULL ) + JSVERIFY( GT, oh_compare(dset_mZ_id, dset_mx_id), NULL ) + JSVERIFY( LT, oh_compare(dset_mZ_id, dset_xZ_id), NULL ) if (DEBUG_OH_SIZE) - PRINT_DSET_OH_COMPARISON(fdset_id, minfdset_id) + PRINT_DSET_OH_COMPARISON(dset_xZ_id, dset_mZ_id) /************ * TEARDOWN * ************/ - MUST_CLOSE(dspace_id, CLOSE_DATASPACE) - MUST_CLOSE(dtype_id, CLOSE_DATATYPE) - MUST_CLOSE(fdcpl_id, CLOSE_PLIST) - MUST_CLOSE(mindcpl_id, CLOSE_PLIST) - MUST_CLOSE(minfdcpl_id, CLOSE_PLIST) - MUST_CLOSE(dset_id, CLOSE_DATASET) - MUST_CLOSE(fdset_id, CLOSE_DATASET) - MUST_CLOSE(mindset_id, CLOSE_DATASET) - MUST_CLOSE(minfdset_id, CLOSE_DATASET) - MUST_CLOSE(file_id, CLOSE_FILE) + MUST_CLOSE(dspace_id, CLOSE_DATASPACE) + MUST_CLOSE(dtype_id, CLOSE_DATATYPE) + MUST_CLOSE(dcpl_xZ_id, CLOSE_PLIST) + MUST_CLOSE(dcpl_mx_id, CLOSE_PLIST) + MUST_CLOSE(dcpl_mZ_id, CLOSE_PLIST) + MUST_CLOSE(dset_xx_id, CLOSE_DATASET) + MUST_CLOSE(dset_xZ_id, CLOSE_DATASET) + MUST_CLOSE(dset_mx_id, CLOSE_DATASET) + MUST_CLOSE(dset_mZ_id, CLOSE_DATASET) + MUST_CLOSE(file_id, CLOSE_FILE) PASSED() return 0; @@ -1324,13 +1320,13 @@ error: H5E_BEGIN_TRY { (void)H5Sclose(dspace_id); (void)H5Tclose(dtype_id); - (void)H5Pclose(fdcpl_id); - (void)H5Pclose(mindcpl_id); - (void)H5Pclose(minfdcpl_id); - (void)H5Dclose(dset_id); - (void)H5Dclose(fdset_id); - (void)H5Dclose(mindset_id); - (void)H5Dclose(minfdset_id); + (void)H5Pclose(dcpl_xZ_id); + (void)H5Pclose(dcpl_mx_id); + (void)H5Pclose(dcpl_mZ_id); + (void)H5Dclose(dset_xx_id); + (void)H5Dclose(dset_xZ_id); + (void)H5Dclose(dset_mx_id); + (void)H5Dclose(dset_mZ_id); (void)H5Fclose(file_id); } H5E_END_TRY; return 1; @@ -1344,19 +1340,18 @@ error: static int test_modification_times(void) { - hid_t dspace_id = -1; - hid_t dtype_id = -1; - hid_t dcpl_xM_id = -1; /* Modtime */ - hid_t dcpl_mx_id = -1; /* minimized */ - hid_t dcpl_mM_id = -1; /* minimized, Modtime */ - hid_t dset_xx_id = -1; - hid_t dset_xM_id = -1; - hid_t dset_mx_id = -1; - hid_t dset_mM_id = -1; - hid_t file_id = -1; - char filename[512] = ""; const hsize_t extents[1] = {128}; /* extents of dataspace */ + hid_t dspace_id = -1; + hid_t dtype_id = -1; + hid_t dcpl_xM_id = -1; /* Modtime */ + hid_t dcpl_mx_id = -1; /* minimized */ + hid_t dcpl_mM_id = -1; /* minimized, Modtime */ + hid_t dset_xx_id = -1; + hid_t dset_xM_id = -1; + hid_t dset_mx_id = -1; + hid_t dset_mM_id = -1; + hid_t file_id = -1; TESTING("with modification times"); @@ -1378,14 +1373,18 @@ test_modification_times(void) dcpl_xM_id = H5Pcreate(H5P_DATASET_CREATE); FAIL_IF( 0 > dcpl_xM_id ) - /* TODO: set OH VERSION to > 1 and to store modtimes? */ + JSVERIFY( SUCCEED, + H5Pset_obj_track_times(dcpl_xM_id, TRUE), + "unable to set unminimized dcpl to track modtime" ) dcpl_mM_id = H5Pcreate(H5P_DATASET_CREATE); FAIL_IF( 0 > dcpl_mM_id ) JSVERIFY( SUCCEED, H5Pset_dset_no_attrs_hint(dcpl_mM_id, TRUE), "unable to minimize to-be-filtered dataset header") - /* TODO: set OH VERSION to > 1 and to store modtimes? */ + JSVERIFY( SUCCEED, + H5Pset_obj_track_times(dcpl_mM_id, TRUE), + "unable to set minimized dcpl to track modtime" ) dspace_id = H5Screate_simple(1, extents, extents); FAIL_IF( 0 > dspace_id ) @@ -1393,71 +1392,61 @@ test_modification_times(void) dtype_id = H5Tcopy(H5T_NATIVE_INT); FAIL_IF( 0 > dtype_id ) - JSVERIFY( SUCCEED, \ - make_file( \ - filename, \ - &file_id), \ - "unable to create file 'ohdr_min_a.h5'") - - JSVERIFY( SUCCEED, \ - make_dataset( \ - file_id, \ - "xx", \ - dtype_id, \ - dspace_id, \ - H5P_DEFAULT, \ - &dset_xx_id), \ - "unable to create dataset fx") - - JSVERIFY( SUCCEED, \ - make_dataset( \ - file_id, \ - "mx", \ - dtype_id, \ - dspace_id, \ - dcpl_mx_id, \ - &dset_mx_id), \ - "unable to create dataset (minoh)") - - JSVERIFY( SUCCEED, \ - make_dataset( \ - file_id, \ - "xM", \ - dtype_id, \ - dspace_id, \ - dcpl_xM_id, \ - &dset_xM_id), \ - "unable to create dataset (gzip)") - - JSVERIFY( SUCCEED, \ - make_dataset( \ - file_id, \ - "mM", \ - dtype_id, \ - dspace_id, \ - dcpl_mM_id, \ - &dset_mM_id), \ - "unable to create dataset (minimized, gzip)") + CREATE_FILE(filename, &file_id) + + CREATE_DATASET( \ + file_id, \ + "xx", \ + dtype_id, \ + dspace_id, \ + H5P_DEFAULT, \ + &dset_xx_id) + + CREATE_DATASET( \ + file_id, \ + "mx", \ + dtype_id, \ + dspace_id, \ + dcpl_mx_id, \ + &dset_mx_id) + + CREATE_DATASET( \ + file_id, \ + "xM", \ + dtype_id, \ + dspace_id, \ + dcpl_xM_id, \ + &dset_xM_id) + + CREATE_DATASET( \ + file_id, \ + "mM", \ + dtype_id, \ + dspace_id, \ + dcpl_mM_id, \ + &dset_mM_id) /********* * TESTS * *********/ /* sanity check */ - FAIL_IF ( LT != oh_compare(dset_mx_id, dset_xx_id) ) - FAIL_IF ( LT != oh_compare(dset_mx_id, dset_xM_id) ) + FAIL_IF( LT != oh_compare(dset_mx_id, dset_xx_id) ) + FAIL_IF( LT != oh_compare(dset_mx_id, dset_xM_id) ) -#define TODO_MINOH_MODTIME 1 -#if TODO_MINOH_MODTIME - SKIPPED(); - puts(" modtime details not yet implemented"); -#else - JSVERIFY( GT, oh_compare(dset_mM_id, dset_mx_id), NULL ) - JSVERIFY( LT, oh_compare(dset_mM_id, dset_xM_id), NULL ) - - if (DEBUG_OH_SIZE) + if (DEBUG_OH_SIZE) { + PRINT_DSET_OH_COMPARISON(dset_xx_id, dset_mx_id) PRINT_DSET_OH_COMPARISON(dset_xM_id, dset_mM_id) -#endif + } + + /* TODO: do dataset headers support modification time tracking? + * If not, this equality makes more sense? + */ + JSVERIFY( EQ, oh_compare(dset_xx_id, dset_xM_id), NULL ) + JSVERIFY( EQ, oh_compare(dset_mx_id, dset_mM_id), NULL ) + + JSVERIFY( LT, oh_compare(dset_mM_id, dset_xM_id), + "minimized should still be smaller than unminimized" ) /************ * TEARDOWN * @@ -1474,10 +1463,7 @@ test_modification_times(void) MUST_CLOSE(dset_mM_id, CLOSE_DATASET) MUST_CLOSE(file_id, CLOSE_FILE) -#if TODO_MINOH_MODTIME -#else PASSED() -#endif return 0; error: @@ -1504,20 +1490,16 @@ error: static int test_fillvalue_backwards_compatability(void) { - hid_t file_id = -1; - hid_t dtype_id = -1; - hid_t dspace_id = -1; - hid_t dcpl_id = -1; - hid_t fapl_id = -1; - hid_t dset_0_id = -1; - hid_t dset_1_id = -1; - char filename[512] = ""; const hsize_t extents[1] = {64}; /* extents of dataspace */ const int fill[1] = {343}; /* fill value of dataset */ - - hsize_t size0 = 0; - hsize_t size1 = 0; + hid_t file_id = -1; + hid_t dtype_id = -1; + hid_t dspace_id = -1; + hid_t dcpl_id = -1; + hid_t fapl_id = -1; + hid_t dset_0_id = -1; + hid_t dset_1_id = -1; /********* * SETUP * @@ -1556,19 +1538,13 @@ test_fillvalue_backwards_compatability(void) fapl_id); FAIL_IF( 0 > file_id ) - JSVERIFY( SUCCEED, \ - make_dataset( \ - file_id, \ - "fullrange", \ - dtype_id, \ - dspace_id, \ - dcpl_id, \ - &dset_0_id), \ - "unable to create dataset supporting full library range") - -#if 0 - JSVERIFY( SUCCEED, _oh_getsize(dset_0_id, &size0), "can't get dset0 size" ) -#endif + CREATE_DATASET( \ + file_id, \ + "fullrange", \ + dtype_id, \ + dspace_id, \ + dcpl_id, \ + &dset_0_id) /* Close file and re-open with different libver bounds */ @@ -1586,28 +1562,18 @@ test_fillvalue_backwards_compatability(void) fapl_id); FAIL_IF( 0 > file_id ) - JSVERIFY( SUCCEED, \ - make_dataset( \ - file_id, \ - "upperrange", \ - dtype_id, \ - dspace_id, \ - dcpl_id, \ - &dset_1_id), \ - "unable to create dataset supporting upper library range") - -#if 0 - JSVERIFY( SUCCEED, _oh_getsize(dset_1_id, &size1), "can't get dset0 size" ) -#endif + CREATE_DATASET( \ + file_id, \ + "upperrange", \ + dtype_id, \ + dspace_id, \ + dcpl_id, \ + &dset_1_id) /********* * TESTS * *********/ -#if 0 - printf("0::%llu 1::%llu\n", size0, size1); fflush(stdout); -#endif - if (DEBUG_OH_SIZE) PRINT_DSET_OH_COMPARISON(dset_1_id, dset_0_id) @@ -1650,16 +1616,15 @@ error: static int test_external_creation(void) { - hid_t mooch_fid = -1; - hid_t target_fid = -1; - hid_t dspace_id = -1; - hid_t dtype_id = -1; - hid_t dcpl_id = -1; - hid_t dset_id = -1; - - char moochname[512] = ""; + char moochname[512] = ""; char targetname[512] = ""; - const hsize_t extents[2] = {5,5}; + const hsize_t extents[2] = {5,5}; + hid_t mooch_fid = -1; + hid_t target_fid = -1; + hid_t dspace_id = -1; + hid_t dtype_id = -1; + hid_t dcpl_id = -1; + hid_t dset_id = -1; /********* * SETUP * @@ -1689,9 +1654,7 @@ test_external_creation(void) FAIL_IF( 0 > dcpl_id ) FAIL_IF( FAIL == H5Pset_dset_no_attrs_hint(dcpl_id, TRUE) ) - JSVERIFY( SUCCEED, - make_file(moochname, &mooch_fid), - "can't create 'mooch' file" ) + CREATE_FILE(moochname, &mooch_fid) JSVERIFY( SUCCEED, H5Lcreate_external( @@ -1703,11 +1666,35 @@ test_external_creation(void) H5P_DEFAULT), /* lapl */ "unable to create external link to target" ) + /* delete target file from system, if it exists + */ + H5E_BEGIN_TRY { + target_fid = H5Fopen( + targetname, + H5F_ACC_RDONLY, + H5P_DEFAULT); + if (-1 < target_fid) { + /* file found; close and delete */ + MUST_CLOSE(target_fid, CLOSE_FILE) + h5_delete_test_file(OHMIN_FILENAME_B, H5P_DEFAULT); + + /* verify that file was deleted */ + target_fid = H5Fopen( + targetname, + H5F_ACC_RDONLY, + H5P_DEFAULT); + JSVERIFY( -1, target_fid, "target file still exists" ) + } + } H5E_END_TRY; + /********* * TESTS * *********/ -#if 0 + /*---------------- + * demonstrate that we cannot create a dataset through a dangling link + */ + H5E_BEGIN_TRY { JSVERIFY( -1, H5Dcreate( @@ -1720,14 +1707,28 @@ test_external_creation(void) H5P_DEFAULT), /* dapl id */ "creating dataset in nonexistent file should fail") } H5E_END_TRY; -#endif + /*---------------- + * Create dataset through valid external link + */ + + CREATE_FILE(targetname, &target_fid) + + dset_id = H5Dcreate( + mooch_fid, + "ext_root/dataset", + dtype_id, + dspace_id, + H5P_DEFAULT, /* LAPL */ + dcpl_id, + H5P_DEFAULT); /* DAPL */ + FAIL_IF( 0 > dset_id ) + + /* equivalent to above explicit creation + */ +/* JSVERIFY( SUCCEED, - make_file(targetname, &target_fid), - "can't create 'target' file" ) - - JSVERIFY( SUCCEED, - make_dataset( + _make_dataset( mooch_fid, "ext_root/dataset", dtype_id, @@ -1735,6 +1736,19 @@ test_external_creation(void) dcpl_id, &dset_id), "unable to create dataset through link" ) +*/ + + /* equivalent to above explicit creation + */ +/* + CREATE_DATASET( + mooch_fid, + "ext_root/dataset", + dtype_id, + dspace_id, + dcpl_id, + &dset_id) +*/ /************ * TEARDOWN * |