From b2afa88fa0c17026d52f582cc052bd40a8cd8e59 Mon Sep 17 00:00:00 2001 From: Jacob Smith Date: Wed, 26 Dec 2018 14:35:22 -0600 Subject: OHDR tests now accept h5_fileaccess() fapls. Formatting, informative comments, and minor renaming. --- src/H5Dint.c | 3 +- test/ohdr.c | 88 +++++++++++++++---------- test/tattr.c | 211 ++++++++++++++++++++++++++++++----------------------------- 3 files changed, 162 insertions(+), 140 deletions(-) diff --git a/src/H5Dint.c b/src/H5Dint.c index 7a39d4c..7eb1aaf 100644 --- a/src/H5Dint.c +++ b/src/H5Dint.c @@ -857,12 +857,13 @@ H5D__prepare_minimized_oh(H5F_t *file, H5D_t *dset, H5O_loc_t *oloc) if (ohdr_size == 0) HGOTO_ERROR(H5E_OHDR, H5E_BADVALUE, FAIL, "computed header size is invalid") + /* Special allocation of space for compact datsets is handled by the call here. */ if(H5O__apply_ohdr(file, oh, dset->shared->dcpl_id, ohdr_size, (size_t)1, oloc) == FAIL) HGOTO_ERROR(H5E_OHDR, H5E_BADVALUE, FAIL, "can't apply object header to file") done: FUNC_LEAVE_NOAPI(ret_value); -} /* H5D_prepare_minimized_oh */ +} /* H5D__prepare_minimized_oh */ /*------------------------------------------------------------------------- diff --git a/test/ohdr.c b/test/ohdr.c index b7502a3..042a81b 100644 --- a/test/ohdr.c +++ b/test/ohdr.c @@ -821,7 +821,7 @@ oh_compare(hid_t did1, hid_t did2) * minimized dataset object headers. */ static herr_t -test_minimized_oh_attribute_addition(void) +test_minimized_dset_ohdr_attribute_addition(hid_t fapl_id) { hsize_t array_10[1] = {10}; /* dataspace extent */ char buffer[10] = ""; /* to inspect string attribute */ @@ -871,7 +871,7 @@ test_minimized_oh_attribute_addition(void) ret = H5Pset_dset_no_attrs_hint(dcpl_id, TRUE); if(ret < 0) TEST_ERROR - file_id = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); + file_id = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl_id); if(file_id < 0) TEST_ERROR H5E_BEGIN_TRY { @@ -1031,14 +1031,14 @@ error : (void)H5Fclose(file_id); } H5E_END_TRY; return FAIL; -} /* test_minimized_oh_attribute_addition */ +} /* test_minimized_dset_ohdr_attribute_addition */ /* * Compare header sizes against when headers have been minimized. * Repeats tests with headers "compact" and normal. */ static herr_t -test_minimized_oh_size_comparisons(void) +test_minimized_dset_ohdr_size_comparisons(hid_t fapl_id) { hsize_t array_10[1] = {10}; /* dataspace extents */ unsigned compact = 0; @@ -1050,23 +1050,31 @@ test_minimized_oh_size_comparisons(void) hid_t dcpl_dontmin = -1; hid_t dcpl_default = -1; - /* IDs for non-minimzed file open */ + /* IDs for non-minimized file open */ hid_t file_f_id = -1; /* lower 'f' for standard file setting */ hid_t dset_f_x_id = -1; /* 'x' for default */ hid_t dset_f_N_id = -1; /* 'N' for explcit non-minimized dset */ - hid_t dset_f_Y_id = -1; /* 'Y' for minimzed dset */ + hid_t dset_f_Y_id = -1; /* 'Y' for minimized dset */ - /* IDs for minimzed file open */ - hid_t file_F_id = -1; /* upper 'F' for minimzed file setting */ + /* IDs for minimized file open */ + hid_t file_F_id = -1; /* upper 'F' for minimized file setting */ hid_t dset_F_x_id = -1; /* 'x' for default */ hid_t dset_F_N_id = -1; /* 'N' for explcit non-minimized dset */ - hid_t dset_F_Y_id = -1; /* 'Y' for minimzed dset */ + hid_t dset_F_Y_id = -1; /* 'Y' for minimized dset */ char filename_a[512] = ""; char filename_b[512] = ""; herr_t ret; + /* dataset suffixes: + * | default | minimize | don't minimize (dcpl-set) + * ---------------+---------+----------+--------------- + * file-default | f_x | f_Y | f_N + * ---------------+---------+----------+--------------- + * file-minimized | F_x | F_Y | F_N + */ + TESTING("minimized dset object headers size comparisons"); /********* @@ -1110,7 +1118,7 @@ test_minimized_oh_size_comparisons(void) int_type_id = H5Tcopy(H5T_NATIVE_INT); if(int_type_id < 0) TEST_ERROR - file_f_id = H5Fcreate(filename_a, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); + file_f_id = H5Fcreate(filename_a, H5F_ACC_TRUNC, H5P_DEFAULT, fapl_id); if(file_f_id < 0) TEST_ERROR dset_f_x_id = H5Dcreate(file_f_id, "default", int_type_id, dspace_id, H5P_DEFAULT, dcpl_default, H5P_DEFAULT); @@ -1122,7 +1130,7 @@ test_minimized_oh_size_comparisons(void) dset_f_Y_id = H5Dcreate(file_f_id, "dsetMIN", int_type_id, dspace_id, H5P_DEFAULT, dcpl_minimize, H5P_DEFAULT); if(dset_f_x_id < 0) TEST_ERROR - file_F_id = H5Fcreate(filename_b, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); + file_F_id = H5Fcreate(filename_b, H5F_ACC_TRUNC, H5P_DEFAULT, fapl_id); if(file_F_id < 0) TEST_ERROR ret = H5Fset_dset_no_attrs_hint(file_F_id, TRUE); if(ret < 0) TEST_ERROR @@ -1197,13 +1205,13 @@ error : (void)H5Dclose(dset_F_Y_id); } H5E_END_TRY; return FAIL; -} /* test_minimized_oh_size_comparisons */ +} /* test_minimized_dset_ohdr_size_comparisons */ /* * Test minimized dataset object header with filter/pipeline message */ static herr_t -test_minimized_oh_with_filter(void) +test_minimized_dset_ohdr_with_filter(hid_t fapl_id) { char filename[512] = ""; const hsize_t extents[1] = {1024}; /* extents of dataspace */ @@ -1222,12 +1230,13 @@ test_minimized_oh_with_filter(void) hid_t file_id = -1; herr_t ret; -/* | default | minimize - * ----------+---------+--------- - * no filter | xx | mx - * ----------+---------+--------- - * filter | xZ | mZ - */ + /* dcpl suffixes: + * | default | minimize + * ----------+---------+--------- + * no filter | xx | mx + * ----------+---------+--------- + * filter | xZ | mZ + */ TESTING("minimized dset object headers with filter message"); @@ -1264,7 +1273,7 @@ test_minimized_oh_with_filter(void) dtype_id = H5Tcopy(H5T_NATIVE_INT); if(dtype_id < 0) TEST_ERROR - file_id = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); + file_id = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl_id); if(file_id < 0) TEST_ERROR dset_xx_id = H5Dcreate(file_id, "xx", dtype_id, dspace_id, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); @@ -1320,13 +1329,13 @@ error: (void)H5Fclose(file_id); } H5E_END_TRY; return FAIL; -} /* test_minimized_oh_with_filter */ +} /* test_minimized_dset_ohdr_with_filter */ /* * Test minimized dataset object header and recording modification times. */ static herr_t -test_minimized_oh_modification_times(void) +test_minimized_dset_ohdr_modification_times(hid_t _fapl_id) { /* test-local structure for parameterized testing */ @@ -1358,6 +1367,16 @@ test_minimized_oh_modification_times(void) { 2, }, /* version 2 object header */ }; + /* dcpl suffixes: + * | default | minimize + * ------------+---------+--------- + * default | xx | mx + * ------------+---------+--------- + * don't track | xN | mN + * ------------+---------+--------- + * track | xT | mT + */ + TESTING("minimized dset object headers with modification times"); /********* @@ -1403,7 +1422,8 @@ test_minimized_oh_modification_times(void) * per-case setup * * -------------- */ - fapl_id = H5P_DEFAULT; + fapl_id = H5Pcopy(_fapl_id); + if(fapl_id < 0) TEST_ERROR if(cases[i].oh_version > 1) { fapl_id = H5Pcreate(H5P_FILE_ACCESS); @@ -1453,9 +1473,7 @@ test_minimized_oh_modification_times(void) if(H5Dclose(dset_mT_id) < 0) TEST_ERROR if(H5Dclose(dset_mN_id) < 0) TEST_ERROR if(H5Fclose(file_id) < 0) TEST_ERROR - - if((fapl_id != H5P_DEFAULT) && (H5Pclose(fapl_id) < 0)) - TEST_ERROR + if(H5Pclose(fapl_id) < 0) TEST_ERROR } /* for each version tested */ @@ -1490,13 +1508,13 @@ error: (void)H5Pclose(fapl_id); } H5E_END_TRY; return FAIL; -} /* test_minimized_oh_modification_times */ +} /* test_minimized_dset_ohdr_modification_times */ /* * Test minimized dataset object header with a fill value set. */ static herr_t -test_minimized_oh_fillvalue_backwards_compatability(void) +test_minimized_dset_ohdr_fillvalue_backwards_compatability(hid_t _fapl_id) { char filename[512] = ""; const hsize_t extents[1] = {64}; /* extents of dataspace */ @@ -1534,7 +1552,7 @@ test_minimized_oh_fillvalue_backwards_compatability(void) ret = H5Pset_fill_value(dcpl_id, dtype_id, fill); if(ret == FAIL) TEST_ERROR; - fapl_id = H5Pcreate(H5P_FILE_ACCESS); + fapl_id = H5Pcopy(_fapl_id); if(fapl_id < 0) TEST_ERROR ret = H5Pset_libver_bounds(fapl_id, H5F_LIBVER_EARLIEST, H5F_LIBVER_LATEST); @@ -1599,7 +1617,7 @@ error: (void)H5Fclose(file_id); } H5E_END_TRY; return FAIL; -} /* test_minimized_oh_fillvalue_backwards_compatability */ +} /* test_minimized_dset_ohdr_fillvalue_backwards_compatability */ #define STR_EARLIEST "earliest" #define STR_V18 "v18" @@ -1898,19 +1916,19 @@ main(void) if(test_ohdr_cache(filename, fapl) < 0) TEST_ERROR - if(test_minimized_oh_attribute_addition() < 0) + if(test_minimized_dset_ohdr_attribute_addition(fapl) < 0) TEST_ERROR - if(test_minimized_oh_size_comparisons() < 0) + if(test_minimized_dset_ohdr_size_comparisons(fapl) < 0) TEST_ERROR - if(test_minimized_oh_with_filter() < 0) + if(test_minimized_dset_ohdr_with_filter(fapl) < 0) TEST_ERROR - if(test_minimized_oh_modification_times() < 0) + if(test_minimized_dset_ohdr_modification_times(fapl) < 0) TEST_ERROR - if(test_minimized_oh_fillvalue_backwards_compatability() < 0) + if(test_minimized_dset_ohdr_fillvalue_backwards_compatability(fapl) < 0) TEST_ERROR } /* high */ diff --git a/test/tattr.c b/test/tattr.c index d21256e..174fd70 100644 --- a/test/tattr.c +++ b/test/tattr.c @@ -161,6 +161,10 @@ typedef struct { static herr_t attr_op1(hid_t loc_id, const char *name, const H5A_info_t *ainfo, void *op_data); +/* Global dcpl ID, can be re-set as a generated dcpl for various operations + * across multiple tests. + * e.g., minimized dataset object headers + */ static hid_t dcpl_g = H5P_DEFAULT; @@ -11011,7 +11015,7 @@ test_attr(void) CHECK_I(ret, "H5Pset_shared_mesg_index"); for(minimize_dset_oh = 0; minimize_dset_oh <= 1; minimize_dset_oh++) { - if (minimize_dset_oh == 0) { + if(minimize_dset_oh == 0) { MESSAGE(7, ("testing with default dataset object headers\n")); dcpl_g = H5P_DEFAULT; } else { @@ -11020,129 +11024,128 @@ test_attr(void) CHECK(dcpl, FAIL, "H5Pcreate"); ret = H5Pset_dset_no_attrs_hint(dcpl, TRUE); CHECK_I(ret, "H5Pset_dset_no_attrs_hint"); - dcpl_g = dcpl; } - for(new_format = FALSE; new_format <= TRUE; new_format++) { - hid_t my_fapl; + for(new_format = FALSE; new_format <= TRUE; new_format++) { + hid_t my_fapl; - if(new_format) { - MESSAGE(7, ("testing with new file format\n")); - my_fapl = fapl2; - } else { - MESSAGE(7, ("testing with old file format\n")); - my_fapl = fapl; - } + if(new_format) { + MESSAGE(7, ("testing with new file format\n")); + my_fapl = fapl2; + } else { + MESSAGE(7, ("testing with old file format\n")); + my_fapl = fapl; + } - /* These next two tests use the same file information */ - test_attr_basic_write(my_fapl); /* Test basic H5A writing code */ - test_attr_basic_read(my_fapl); /* Test basic H5A reading code */ + /* These next two tests use the same file information */ + test_attr_basic_write(my_fapl); /* Test basic H5A writing code */ + test_attr_basic_read(my_fapl); /* Test basic H5A reading code */ - /* These next two tests use their own file information */ - test_attr_flush(my_fapl); /* Test H5A I/O in the presence of H5Fflush calls */ - test_attr_plist(my_fapl); /* Test attribute property lists */ + /* These next two tests use their own file information */ + test_attr_flush(my_fapl); /* Test H5A I/O in the presence of H5Fflush calls */ + test_attr_plist(my_fapl); /* Test attribute property lists */ - /* These next two tests use the same file information */ - test_attr_compound_write(my_fapl); /* Test complex datatype H5A writing code */ - test_attr_compound_read(my_fapl); /* Test complex datatype H5A reading code */ + /* These next two tests use the same file information */ + test_attr_compound_write(my_fapl); /* Test complex datatype H5A writing code */ + test_attr_compound_read(my_fapl); /* Test complex datatype H5A reading code */ - /* These next two tests use the same file information */ - test_attr_scalar_write(my_fapl); /* Test scalar dataspace H5A writing code */ - test_attr_scalar_read(my_fapl); /* Test scalar dataspace H5A reading code */ + /* These next two tests use the same file information */ + test_attr_scalar_write(my_fapl); /* Test scalar dataspace H5A writing code */ + test_attr_scalar_read(my_fapl); /* Test scalar dataspace H5A reading code */ - /* These next four tests use the same file information */ - test_attr_mult_write(my_fapl); /* Test H5A writing code for multiple attributes */ - test_attr_mult_read(my_fapl); /* Test H5A reading code for multiple attributes */ - test_attr_iterate(my_fapl); /* Test H5A iterator code */ - test_attr_delete(my_fapl); /* Test H5A code for deleting attributes */ + /* These next four tests use the same file information */ + test_attr_mult_write(my_fapl); /* Test H5A writing code for multiple attributes */ + test_attr_mult_read(my_fapl); /* Test H5A reading code for multiple attributes */ + test_attr_iterate(my_fapl); /* Test H5A iterator code */ + test_attr_delete(my_fapl); /* Test H5A code for deleting attributes */ - /* This next test uses its own file information */ - test_attr_dtype_shared(my_fapl); /* Test using shared dataypes in attributes */ + /* This next test uses its own file information */ + test_attr_dtype_shared(my_fapl); /* Test using shared dataypes in attributes */ - /* This next test uses its own file information */ - test_attr_duplicate_ids(my_fapl); + /* This next test uses its own file information */ + test_attr_duplicate_ids(my_fapl); - for(use_shared = FALSE; use_shared <= TRUE; use_shared++) { - hid_t my_fcpl; + for(use_shared = FALSE; use_shared <= TRUE; use_shared++) { + hid_t my_fcpl; - if(new_format == TRUE && use_shared) { - MESSAGE(7, ("testing with shared attributes\n")); - my_fcpl = fcpl2; - } else { - MESSAGE(7, ("testing without shared attributes\n")); - my_fcpl = fcpl; - } + if(new_format == TRUE && use_shared) { + MESSAGE(7, ("testing with shared attributes\n")); + my_fcpl = fcpl2; + } else { + MESSAGE(7, ("testing without shared attributes\n")); + my_fcpl = fcpl; + } + + test_attr_big(my_fcpl, my_fapl); /* Test storing big attribute */ + test_attr_null_space(my_fcpl, my_fapl); /* Test storing attribute with NULL dataspace */ + test_attr_deprec(fcpl, my_fapl); /* Test deprecated API routines */ + test_attr_many(new_format, my_fcpl, my_fapl); /* Test storing lots of attributes */ + test_attr_info_null_info_pointer(my_fcpl, my_fapl); /* Test passing a NULL attribute info pointer to H5Aget_info(_by_name/_by_idx) */ - test_attr_big(my_fcpl, my_fapl); /* Test storing big attribute */ - test_attr_null_space(my_fcpl, my_fapl); /* Test storing attribute with NULL dataspace */ - test_attr_deprec(fcpl, my_fapl); /* Test deprecated API routines */ - test_attr_many(new_format, my_fcpl, my_fapl); /* Test storing lots of attributes */ - test_attr_info_null_info_pointer(my_fcpl, my_fapl); /* Test passing a NULL attribute info pointer to H5Aget_info(_by_name/_by_idx) */ - - /* New attribute API routine tests - */ - test_attr_info_by_idx(new_format, my_fcpl, my_fapl); /* Test querying attribute info by index */ - test_attr_delete_by_idx(new_format, my_fcpl, my_fapl); /* Test deleting attribute by index */ - test_attr_iterate2(new_format, my_fcpl, my_fapl); /* Test iterating over attributes by index */ - test_attr_open_by_idx(new_format, my_fcpl, my_fapl); /* Test opening attributes by index */ - test_attr_open_by_name(new_format, my_fcpl, my_fapl); /* Test opening attributes by name */ - test_attr_create_by_name(new_format, my_fcpl, my_fapl); /* Test creating attributes by name */ - - /* Tests that address specific bugs - */ - test_attr_bug1(my_fcpl, my_fapl); /* Test odd allocation operations */ - test_attr_bug2(my_fcpl, my_fapl); /* Test many deleted attributes */ - test_attr_bug3(my_fcpl, my_fapl); /* Test "self referential" attributes */ - test_attr_bug4(my_fcpl, my_fapl); /* Test attributes on named datatypes */ - test_attr_bug5(my_fcpl, my_fapl); /* Test opening/closing attributes through different file handles */ - test_attr_bug6(my_fcpl, my_fapl); /* Test reading empty attribute */ - /* test_attr_bug7 is specific to the "new" object header format, - * and in fact fails if used with the old format due to the - * attributes being larger than 64K */ - test_attr_bug8(my_fcpl, my_fapl); /* Test attribute expanding object header with undecoded messages */ - test_attr_bug9(my_fcpl, my_fapl); /* Test large attributes converting to dense storage */ - - /* tests specific to the "new format" - */ - if (new_format == TRUE) { - /* General attribute tests */ - test_attr_dense_create(my_fcpl, my_fapl); /* Test dense attribute storage creation */ - test_attr_dense_open(my_fcpl, my_fapl); /* Test opening attributes in dense storage */ - test_attr_dense_delete(my_fcpl, my_fapl); /* Test deleting attributes in dense storage */ - test_attr_dense_rename(my_fcpl, my_fapl); /* Test renaming attributes in dense storage */ - test_attr_dense_unlink(my_fcpl, my_fapl); /* Test unlinking object with attributes in dense storage */ - test_attr_dense_limits(my_fcpl, my_fapl); /* Test dense attribute storage limits */ - test_attr_dense_dup_ids(my_fcpl, my_fapl); /* Test duplicated IDs for dense attribute storage */ - - /* Attribute creation order tests + /* New attribute API routine tests */ - test_attr_corder_create_basic(my_fcpl, my_fapl);/* Test creating an object w/attribute creation order info */ - test_attr_corder_create_compact(my_fcpl, my_fapl); /* Test compact attribute storage on an object w/attribute creation order info */ - test_attr_corder_create_dense(my_fcpl, my_fapl);/* Test dense attribute storage on an object w/attribute creation order info */ - test_attr_corder_create_reopen(my_fcpl, my_fapl);/* Test creating attributes w/reopening file from using new format to using old format */ - test_attr_corder_transition(my_fcpl, my_fapl); /* Test attribute storage transitions on an object w/attribute creation order info */ - test_attr_corder_delete(my_fcpl, my_fapl); /* Test deleting object using dense storage w/attribute creation order info */ - - /* More complex tests with exclusively both "new format" and "shared" attributes + test_attr_info_by_idx(new_format, my_fcpl, my_fapl); /* Test querying attribute info by index */ + test_attr_delete_by_idx(new_format, my_fcpl, my_fapl); /* Test deleting attribute by index */ + test_attr_iterate2(new_format, my_fcpl, my_fapl); /* Test iterating over attributes by index */ + test_attr_open_by_idx(new_format, my_fcpl, my_fapl); /* Test opening attributes by index */ + test_attr_open_by_name(new_format, my_fcpl, my_fapl); /* Test opening attributes by name */ + test_attr_create_by_name(new_format, my_fcpl, my_fapl); /* Test creating attributes by name */ + + /* Tests that address specific bugs */ - if(use_shared == TRUE) { - test_attr_shared_write(my_fcpl, my_fapl); /* Test writing to shared attributes in compact & dense storage */ - test_attr_shared_rename(my_fcpl, my_fapl); /* Test renaming shared attributes in compact & dense storage */ - test_attr_shared_delete(my_fcpl, my_fapl); /* Test deleting shared attributes in compact & dense storage */ - test_attr_shared_unlink(my_fcpl, my_fapl); /* Test unlinking object with shared attributes in compact & dense storage */ - } /* if using shared attributes */ - - test_attr_delete_last_dense(my_fcpl, my_fapl); - + test_attr_bug1(my_fcpl, my_fapl); /* Test odd allocation operations */ + test_attr_bug2(my_fcpl, my_fapl); /* Test many deleted attributes */ + test_attr_bug3(my_fcpl, my_fapl); /* Test "self referential" attributes */ + test_attr_bug4(my_fcpl, my_fapl); /* Test attributes on named datatypes */ + test_attr_bug5(my_fcpl, my_fapl); /* Test opening/closing attributes through different file handles */ + test_attr_bug6(my_fcpl, my_fapl); /* Test reading empty attribute */ /* test_attr_bug7 is specific to the "new" object header format, * and in fact fails if used with the old format due to the * attributes being larger than 64K */ - test_attr_bug7(my_fcpl, my_fapl); /* Test creating and deleting large attributes in ohdr chunk 0 */ + test_attr_bug8(my_fcpl, my_fapl); /* Test attribute expanding object header with undecoded messages */ + test_attr_bug9(my_fcpl, my_fapl); /* Test large attributes converting to dense storage */ - } /* if using "new format" */ - } /* for unshared/shared attributes */ - } /* for old/new format */ + /* tests specific to the "new format" + */ + if (new_format == TRUE) { + /* General attribute tests */ + test_attr_dense_create(my_fcpl, my_fapl); /* Test dense attribute storage creation */ + test_attr_dense_open(my_fcpl, my_fapl); /* Test opening attributes in dense storage */ + test_attr_dense_delete(my_fcpl, my_fapl); /* Test deleting attributes in dense storage */ + test_attr_dense_rename(my_fcpl, my_fapl); /* Test renaming attributes in dense storage */ + test_attr_dense_unlink(my_fcpl, my_fapl); /* Test unlinking object with attributes in dense storage */ + test_attr_dense_limits(my_fcpl, my_fapl); /* Test dense attribute storage limits */ + test_attr_dense_dup_ids(my_fcpl, my_fapl); /* Test duplicated IDs for dense attribute storage */ + + /* Attribute creation order tests + */ + test_attr_corder_create_basic(my_fcpl, my_fapl);/* Test creating an object w/attribute creation order info */ + test_attr_corder_create_compact(my_fcpl, my_fapl); /* Test compact attribute storage on an object w/attribute creation order info */ + test_attr_corder_create_dense(my_fcpl, my_fapl);/* Test dense attribute storage on an object w/attribute creation order info */ + test_attr_corder_create_reopen(my_fcpl, my_fapl);/* Test creating attributes w/reopening file from using new format to using old format */ + test_attr_corder_transition(my_fcpl, my_fapl); /* Test attribute storage transitions on an object w/attribute creation order info */ + test_attr_corder_delete(my_fcpl, my_fapl); /* Test deleting object using dense storage w/attribute creation order info */ + + /* More complex tests with exclusively both "new format" and "shared" attributes + */ + if(use_shared == TRUE) { + test_attr_shared_write(my_fcpl, my_fapl); /* Test writing to shared attributes in compact & dense storage */ + test_attr_shared_rename(my_fcpl, my_fapl); /* Test renaming shared attributes in compact & dense storage */ + test_attr_shared_delete(my_fcpl, my_fapl); /* Test deleting shared attributes in compact & dense storage */ + test_attr_shared_unlink(my_fcpl, my_fapl); /* Test unlinking object with shared attributes in compact & dense storage */ + } /* if using shared attributes */ + + test_attr_delete_last_dense(my_fcpl, my_fapl); + + /* test_attr_bug7 is specific to the "new" object header format, + * and in fact fails if used with the old format due to the + * attributes being larger than 64K */ + test_attr_bug7(my_fcpl, my_fapl); /* Test creating and deleting large attributes in ohdr chunk 0 */ + + } /* if using "new format" */ + } /* for unshared/shared attributes */ + } /* for old/new format */ if (minimize_dset_oh != 0) { ret = H5Pclose(dcpl); -- cgit v0.12