summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/H5Dint.c3
-rw-r--r--test/ohdr.c88
-rw-r--r--test/tattr.c211
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);