summaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/links.c8
-rwxr-xr-xtest/objcopy.c138
-rw-r--r--test/titerate.c77
-rw-r--r--test/trefer.c9
4 files changed, 107 insertions, 125 deletions
diff --git a/test/links.c b/test/links.c
index d341fee..176792e 100644
--- a/test/links.c
+++ b/test/links.c
@@ -1478,6 +1478,7 @@ test_compat(hid_t fapl, hbool_t new_format)
hid_t group1_id = -1;
hid_t group2_id = -1;
H5G_stat_t sb_hard1, sb_hard2, sb_soft1;
+ H5G_obj_t obj_type; /* Object type */
hsize_t num_objs; /* Number of objects in a group */
char filename[1024];
char tmpstr[1024];
@@ -1513,6 +1514,13 @@ test_compat(hid_t fapl, hbool_t new_format)
if(H5Gget_objname_by_idx(group1_id, (hsize_t)1, tmpstr, sizeof(tmpstr)) >= 0) TEST_ERROR
} H5E_END_TRY;
+ /* Test getting the type for objects */
+ if((obj_type = H5Gget_objtype_by_idx(group1_id, (hsize_t)0)) < 0) FAIL_STACK_ERROR
+ if(obj_type != H5G_GROUP) TEST_ERROR
+ H5E_BEGIN_TRY {
+ if(H5Gget_objtype_by_idx(group1_id, (hsize_t)1) >= 0) TEST_ERROR
+ } H5E_END_TRY;
+
/* Test getting the number of objects in a group */
if(H5Gget_num_objs(file_id, &num_objs) < 0) FAIL_STACK_ERROR
if(num_objs != 2) TEST_ERROR
diff --git a/test/objcopy.c b/test/objcopy.c
index 5d2afd2..c916f8f 100755
--- a/test/objcopy.c
+++ b/test/objcopy.c
@@ -1260,11 +1260,8 @@ compare_groups(hid_t gid, hid_t gid2, hid_t pid, int depth, unsigned copy_flags)
if(ginfo2.nlinks > 0) {
char objname[NAME_BUF_SIZE]; /* Name of object in group */
char objname2[NAME_BUF_SIZE]; /* Name of object in group */
- H5G_obj_t objtype; /* Type of object in group */
- H5G_obj_t objtype2; /* Type of object in group */
H5L_info_t linfo; /* Link information */
H5L_info_t linfo2; /* Link information */
- hid_t oid, oid2; /* IDs of objects within group */
/* Loop over contents of groups */
for(idx = 0; idx < ginfo.nlinks; idx++) {
@@ -1273,11 +1270,6 @@ compare_groups(hid_t gid, hid_t gid2, hid_t pid, int depth, unsigned copy_flags)
if(H5Lget_name_by_idx(gid2, ".", H5_INDEX_NAME, H5_ITER_INC, idx, objname2, (size_t)NAME_BUF_SIZE, H5P_DEFAULT) < 0) TEST_ERROR
if(HDstrcmp(objname, objname2)) TEST_ERROR
- /* Check type of objects */
- if((objtype = H5Gget_objtype_by_idx(gid, idx)) < 0) TEST_ERROR
- if((objtype2 = H5Gget_objtype_by_idx(gid2, idx)) < 0) TEST_ERROR
- if(objtype != objtype2) TEST_ERROR
-
/* Get link info */
if(H5Lget_info(gid, objname, &linfo, H5P_DEFAULT) < 0) TEST_ERROR
if(H5Lget_info(gid2, objname2, &linfo2, H5P_DEFAULT) < 0) TEST_ERROR
@@ -1285,8 +1277,8 @@ compare_groups(hid_t gid, hid_t gid2, hid_t pid, int depth, unsigned copy_flags)
/* Extra checks for "real" objects */
if(linfo.type == H5L_TYPE_HARD) {
- H5O_info_t oinfo; /* Object info */
- H5O_info_t oinfo2; /* Object info */
+ hid_t oid, oid2; /* IDs of objects within group */
+ H5O_info_t oinfo, oinfo2; /* Object info */
/* Compare some pieces of the object info */
if(H5Oget_info(gid, objname, &oinfo, H5P_DEFAULT) < 0) TEST_ERROR
@@ -1312,83 +1304,59 @@ compare_groups(hid_t gid, hid_t gid2, hid_t pid, int depth, unsigned copy_flags)
continue;
else
addr_insert(&oinfo);
- } /* end if */
- /* Compare objects within group */
- switch(objtype) {
- case H5G_LINK:
- {
- char linkname[NAME_BUF_SIZE]; /* Link value */
- char linkname2[NAME_BUF_SIZE]; /* Link value */
-
- /* Check link values */
- if(H5Lget_val(gid, objname, linkname, (size_t)NAME_BUF_SIZE, H5P_DEFAULT) < 0) TEST_ERROR
- if(H5Lget_val(gid2, objname2, linkname2, (size_t)NAME_BUF_SIZE, H5P_DEFAULT) < 0) TEST_ERROR
- if(HDstrcmp(linkname, linkname2)) TEST_ERROR
- }
- break;
-
- case H5G_GROUP:
- /* Open groups */
- if((oid = H5Gopen2(gid, objname, H5P_DEFAULT)) < 0) FAIL_STACK_ERROR
- if((oid2 = H5Gopen2(gid2, objname2, H5P_DEFAULT)) < 0) FAIL_STACK_ERROR
-
- /* Compare groups */
- if(compare_groups(oid, oid2, pid, depth - 1, copy_flags) != TRUE) TEST_ERROR
-
- /* Close groups */
- if(H5Gclose(oid) < 0) TEST_ERROR
- if(H5Gclose(oid2) < 0) TEST_ERROR
- break;
-
- case H5G_DATASET:
- /* Open datasets */
- if((oid = H5Dopen(gid, objname)) < 0) TEST_ERROR
- if((oid2 = H5Dopen(gid2, objname2)) < 0) TEST_ERROR
-
- /* Compare datasets */
- if(compare_datasets(oid, oid2, pid, NULL) != TRUE) TEST_ERROR
-
- /* Close datasets */
- if(H5Dclose(oid) < 0) TEST_ERROR
- if(H5Dclose(oid2) < 0) TEST_ERROR
- break;
-
- case H5G_TYPE:
- /* Open datatypes */
- if((oid = H5Topen(gid, objname)) < 0) TEST_ERROR
- if((oid2 = H5Topen(gid2, objname2)) < 0) TEST_ERROR
-
- /* Compare datatypes */
- if(H5Tequal(oid, oid2) != TRUE) TEST_ERROR
-
- /* Close datatypes */
- if(H5Tclose(oid) < 0) TEST_ERROR
- if(H5Tclose(oid2) < 0) TEST_ERROR
- break;
-
- case H5G_UDLINK:
- {
- char linkval[NAME_BUF_SIZE]; /* Link value */
- char linkval2[NAME_BUF_SIZE]; /* Link value */
-
- /* Check that both links are the same type and the same size */
- if(linfo.type != linfo2.type) TEST_ERROR
- if(linfo.u.val_size != linfo2.u.val_size) TEST_ERROR
-
- /* Get link udata */
- if(H5Lget_val(gid, objname, linkval, (size_t)NAME_BUF_SIZE, H5P_DEFAULT) < 0) TEST_ERROR
- if(H5Lget_val(gid2, objname2, linkval2, (size_t)NAME_BUF_SIZE, H5P_DEFAULT) < 0) TEST_ERROR
-
- /* Compare link udata */
- if(HDmemcmp(linkval, linkval2, linfo.u.val_size)) TEST_ERROR
- }
- break;
-
- default:
+ /* Open objects */
+ if((oid = H5Oopen(gid, objname, H5P_DEFAULT)) < 0) FAIL_STACK_ERROR
+ if((oid2 = H5Oopen(gid2, objname2, H5P_DEFAULT)) < 0) FAIL_STACK_ERROR
+
+ /* Compare objects within group */
+ switch(oinfo.type) {
+ case H5O_TYPE_GROUP:
+ /* Compare groups */
+ if(compare_groups(oid, oid2, pid, depth - 1, copy_flags) != TRUE) TEST_ERROR
+ break;
+
+ case H5O_TYPE_DATASET:
+ /* Compare datasets */
+ if(compare_datasets(oid, oid2, pid, NULL) != TRUE) TEST_ERROR
+ break;
+
+ case H5O_TYPE_NAMED_DATATYPE:
+ /* Compare datatypes */
+ if(H5Tequal(oid, oid2) != TRUE) TEST_ERROR
+ break;
+
+ default:
HDassert(0 && "Unknown type of object");
- break;
- } /* end switch */
+ break;
+ } /* end switch */
+
+ /* Close objects */
+ if(H5Oclose(oid) < 0) TEST_ERROR
+ if(H5Oclose(oid2) < 0) TEST_ERROR
+ } /* end if */
+ else {
+ /* Check that both links are the same size */
+ if(linfo.u.val_size != linfo2.u.val_size) TEST_ERROR
+
+ /* Compare link values */
+ if(linfo.type == H5L_TYPE_SOFT ||
+ (linfo.type >= H5L_TYPE_UD_MIN && linfo.type <= H5L_TYPE_MAX)) {
+ char linkval[NAME_BUF_SIZE]; /* Link value */
+ char linkval2[NAME_BUF_SIZE]; /* Link value */
+
+ /* Get link values */
+ HDassert(linfo.u.val_size <= NAME_BUF_SIZE);
+ if(H5Lget_val(gid, objname, linkval, (size_t)NAME_BUF_SIZE, H5P_DEFAULT) < 0) TEST_ERROR
+ if(H5Lget_val(gid2, objname2, linkval2, (size_t)NAME_BUF_SIZE, H5P_DEFAULT) < 0) TEST_ERROR
+
+ /* Compare link data */
+ if(HDmemcmp(linkval, linkval2, linfo.u.val_size)) TEST_ERROR
+ } /* end else-if */
+ else {
+HDassert(0 && "Unknown type of link");
+ } /* end else */
+ } /* end else */
} /* end for */
} /* end if */
diff --git a/test/titerate.c b/test/titerate.c
index e52c93b..d38ecb2 100644
--- a/test/titerate.c
+++ b/test/titerate.c
@@ -167,9 +167,7 @@ test_iter_group(hid_t fapl, hbool_t new_format)
CHECK(ret, FAIL, "H5Dclose");
} /* end for */
- /* Create a group and named datatype under root group for testing
- * H5Gget_objtype_by_idx.
- */
+ /* Create a group and named datatype under root group for testing */
grp = H5Gcreate2(file, "grp", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
CHECK(ret, FAIL, "H5Gcreate2");
@@ -183,16 +181,16 @@ test_iter_group(hid_t fapl, hbool_t new_format)
CHECK(lnames[NDATASETS], NULL, "strdup");
/* Close everything up */
- ret=H5Tclose(datatype);
+ ret = H5Tclose(datatype);
CHECK(ret, FAIL, "H5Tclose");
- ret=H5Gclose(grp);
+ ret = H5Gclose(grp);
CHECK(ret, FAIL, "H5Gclose");
- ret=H5Sclose(filespace);
+ ret = H5Sclose(filespace);
CHECK(ret, FAIL, "H5Sclose");
- ret=H5Fclose(file);
+ ret = H5Fclose(file);
CHECK(ret, FAIL, "H5Fclose");
/* Sort the dataset names */
@@ -203,7 +201,7 @@ test_iter_group(hid_t fapl, hbool_t new_format)
file = H5Fopen(DATAFILE, H5F_ACC_RDONLY, fapl);
CHECK(file, FAIL, "H5Fopen");
- /* These two functions, H5Gget_objtype_by_idx and H5Lget_name_by_idx, actually
+ /* These two functions, H5Oget_info_by_idx and H5Lget_name_by_idx, actually
* iterate through B-tree for group members in internal library design.
*/
root_group = H5Gopen2(file, "/", H5P_DEFAULT);
@@ -214,13 +212,13 @@ test_iter_group(hid_t fapl, hbool_t new_format)
VERIFY(ginfo.nlinks, (NDATASETS + 2), "H5Gget_info");
for(i = 0; i< (int)ginfo.nlinks; i++) {
- H5G_obj_t obj_type; /* Type of object in file */
+ H5O_info_t oinfo; /* Object info */
ret = (herr_t)H5Lget_name_by_idx(root_group, ".", H5_INDEX_NAME, H5_ITER_INC, (hsize_t)i, dataset_name, (size_t)NAMELEN, H5P_DEFAULT);
CHECK(ret, FAIL, "H5Lget_name_by_idx");
- obj_type = H5Gget_objtype_by_idx(root_group, (hsize_t)i);
- CHECK(obj_type, H5G_UNKNOWN, "H5Gget_objtype_by_idx");
+ ret = H5Oget_info_by_idx(root_group, ".", H5_INDEX_NAME, H5_ITER_INC, (hsize_t)i, &oinfo, H5P_DEFAULT);
+ CHECK(ret, FAIL, "H5Oget_info_by_idx");
} /* end for */
H5E_BEGIN_TRY {
@@ -231,7 +229,7 @@ test_iter_group(hid_t fapl, hbool_t new_format)
ret = H5Gclose(root_group);
CHECK(ret, FAIL, "H5Gclose");
- /* These two functions, H5Gget_objtype_by_idx and H5Lget_name_by_idx, actually
+ /* These two functions, H5Oget_info_by_idx and H5Lget_name_by_idx, actually
* iterate through B-tree for group members in internal library design.
* (Same as test above, but with the file ID instead of opening the root group)
*/
@@ -240,14 +238,14 @@ test_iter_group(hid_t fapl, hbool_t new_format)
VERIFY(ginfo.nlinks, NDATASETS + 2, "H5Gget_info");
for(i = 0; i< (int)ginfo.nlinks; i++) {
- H5G_obj_t obj_type; /* Type of object in file */
+ H5O_info_t oinfo; /* Object info */
ret = (herr_t)H5Lget_name_by_idx(file, ".", H5_INDEX_NAME, H5_ITER_INC, (hsize_t)i, dataset_name, (size_t)NAMELEN, H5P_DEFAULT);
CHECK(ret, FAIL, "H5Lget_name_by_idx");
- obj_type = H5Gget_objtype_by_idx(file, (hsize_t)i);
- CHECK(obj_type, H5G_UNKNOWN, "H5Gget_objtype_by_idx");
- }
+ ret = H5Oget_info_by_idx(file, ".", H5_INDEX_NAME, H5_ITER_INC, (hsize_t)i, &oinfo, H5P_DEFAULT);
+ CHECK(ret, FAIL, "H5Oget_info_by_idx");
+ } /* end for */
H5E_BEGIN_TRY {
ret = (herr_t)H5Lget_name_by_idx(file, ".", H5_INDEX_NAME, H5_ITER_INC, (hsize_t)(NDATASETS + 3), dataset_name, (size_t)NAMELEN, H5P_DEFAULT);
@@ -733,9 +731,7 @@ static void test_grp_memb_funcs(hid_t fapl)
CHECK(ret, FAIL, "H5Dclose");
} /* end for */
- /* Create a group and named datatype under root group for testing
- * H5Gget_objtype_by_idx.
- */
+ /* Create a group and named datatype under root group for testing */
grp = H5Gcreate2(file, "grp", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
CHECK(ret, FAIL, "H5Gcreate2");
@@ -768,7 +764,7 @@ static void test_grp_memb_funcs(hid_t fapl)
file = H5Fopen(DATAFILE, H5F_ACC_RDONLY, fapl);
CHECK(file, FAIL, "H5Fopen");
- /* These two functions, H5Gget_objtype_by_idx and H5Lget_name_by_idx, actually
+ /* These two functions, H5Oget_info_by_idx and H5Lget_name_by_idx, actually
* iterate through B-tree for group members in internal library design.
*/
root_group = H5Gopen2(file, "/", H5P_DEFAULT);
@@ -778,8 +774,8 @@ static void test_grp_memb_funcs(hid_t fapl)
CHECK(ret, FAIL, "H5Gget_info");
VERIFY(ginfo.nlinks, (NDATASETS + 2), "H5Gget_info");
- for(i=0; i< (int)ginfo.nlinks; i++) {
- H5G_obj_t obj_type; /* Type of object in file */
+ for(i = 0; i < (int)ginfo.nlinks; i++) {
+ H5O_info_t oinfo; /* Object info */
/* Test with NULL for name, to query length */
name_len = H5Lget_name_by_idx(root_group, ".", H5_INDEX_NAME, H5_ITER_INC, (hsize_t)i, NULL, (size_t)NAMELEN, H5P_DEFAULT);
@@ -795,15 +791,15 @@ static void test_grp_memb_funcs(hid_t fapl)
obj_names[i] = HDstrdup(dataset_name);
CHECK(obj_names[i], NULL, "strdup");
- obj_type = H5Gget_objtype_by_idx(root_group, (hsize_t)i);
- CHECK(obj_type, H5G_UNKNOWN, "H5Gget_objtype_by_idx");
+ ret = H5Oget_info_by_idx(root_group, ".", H5_INDEX_NAME, H5_ITER_INC, (hsize_t)i, &oinfo, H5P_DEFAULT);
+ CHECK(ret, FAIL, "H5Oget_info_by_idx");
if(!HDstrcmp(dataset_name, "grp"))
- VERIFY(obj_type, H5G_GROUP, "H5Lget_name_by_idx");
+ VERIFY(oinfo.type, H5O_TYPE_GROUP, "H5Lget_name_by_idx");
if(!HDstrcmp(dataset_name, "dtype"))
- VERIFY(obj_type, H5G_TYPE, "H5Lget_name_by_idx");
+ VERIFY(oinfo.type, H5O_TYPE_NAMED_DATATYPE, "H5Lget_name_by_idx");
if(!HDstrncmp(dataset_name, "Dataset", (size_t)7))
- VERIFY(obj_type, H5G_DATASET, "H5Lget_name_by_idx");
+ VERIFY(oinfo.type, H5O_TYPE_DATASET, "H5Lget_name_by_idx");
} /* end for */
H5E_BEGIN_TRY {
@@ -845,7 +841,6 @@ static void test_links(hid_t fapl)
char obj_name[NAMELEN]; /* Names of the object in group */
ssize_t name_len; /* Length of object's name */
hid_t gid, gid1;
- H5G_obj_t obj_type; /* Type of object */
H5G_info_t ginfo; /* Buffer for querying object's info */
hsize_t i;
herr_t ret; /* Generic return value */
@@ -875,24 +870,34 @@ static void test_links(hid_t fapl)
CHECK(ret, FAIL, "H5Gget_info");
VERIFY(ginfo.nlinks, 3, "H5Gget_info");
- /* Test these two functions, H5Gget_objtype_by_idx and H5Lget_name_by_idx */
+ /* Test these two functions, H5Oget_info_by_idx and H5Lget_name_by_idx */
for(i = 0; i < ginfo.nlinks; i++) {
- /* Get object name */
+ H5O_info_t oinfo; /* Object info */
+ H5L_info_t linfo; /* Link info */
+
+ /* Get link name */
name_len = H5Lget_name_by_idx(gid, ".", H5_INDEX_NAME, H5_ITER_INC, i, obj_name, (size_t)NAMELEN, H5P_DEFAULT);
CHECK(name_len, FAIL, "H5Lget_name_by_idx");
- obj_type = H5Gget_objtype_by_idx(gid, i);
- CHECK(obj_type, H5G_UNKNOWN, "H5Gget_objtype_by_idx");
+ /* Get link type */
+ ret = H5Lget_info_by_idx(gid, ".", H5_INDEX_NAME, H5_ITER_INC, (hsize_t)i, &linfo, H5P_DEFAULT);
+ CHECK(ret, FAIL, "H5Lget_info_by_idx");
+
+ /* Get object type */
+ if(linfo.type == H5L_TYPE_HARD) {
+ ret = H5Oget_info_by_idx(gid, ".", H5_INDEX_NAME, H5_ITER_INC, (hsize_t)i, &oinfo, H5P_DEFAULT);
+ CHECK(ret, FAIL, "H5Oget_info_by_idx");
+ } /* end if */
if(!HDstrcmp(obj_name, "g1.1"))
- VERIFY(obj_type, H5G_GROUP, "H5Lget_name_by_idx");
+ VERIFY(oinfo.type, H5O_TYPE_GROUP, "H5Lget_name_by_idx");
else if(!HDstrcmp(obj_name, "hardlink"))
- VERIFY(obj_type, H5G_GROUP, "H5Lget_name_by_idx");
+ VERIFY(oinfo.type, H5O_TYPE_GROUP, "H5Lget_name_by_idx");
else if(!HDstrcmp(obj_name, "softlink"))
- VERIFY(obj_type, H5G_LINK, "H5Lget_name_by_idx");
+ VERIFY(linfo.type, H5L_TYPE_SOFT, "H5Lget_name_by_idx");
else
CHECK(0, 0, "unknown object name");
- }
+ } /* end for */
ret = H5Gclose(gid);
CHECK(ret, FAIL, "H5Gclose");
diff --git a/test/trefer.c b/test/trefer.c
index 802ab79..aff967a 100644
--- a/test/trefer.c
+++ b/test/trefer.c
@@ -937,7 +937,7 @@ test_reference_obj_deleted(void)
**
****************************************************************/
static herr_t
-test_deref_iter_op(hid_t UNUSED group, const char *name, const H5L_info_t *info,
+test_deref_iter_op(hid_t UNUSED group, const char *name, const H5L_info_t UNUSED *info,
void *op_data)
{
int *count = (int *)op_data; /* Pointer to name counter */
@@ -987,7 +987,7 @@ test_reference_group(void)
hobj_ref_t rref; /* Reference to read */
H5G_info_t ginfo; /* Group info struct */
char objname[NAME_SIZE]; /* Buffer to store name */
- H5G_obj_t objtype; /* Object type */
+ H5O_info_t oinfo; /* Object info struct */
int count = 0; /* Count within iterated group */
herr_t ret;
@@ -1073,8 +1073,9 @@ test_reference_group(void)
CHECK(ret, FAIL, "H5Lget_name_by_idx");
VERIFY_STR(objname, DSETNAME2, "H5Lget_name_by_idx");
- objtype = H5Gget_objtype_by_idx(gid, (hsize_t)0);
- VERIFY(objtype, H5G_DATASET, "H5Gget_objtype_by_idx");
+ ret = H5Oget_info_by_idx(gid, ".", H5_INDEX_NAME, H5_ITER_INC, (hsize_t)0, &oinfo, H5P_DEFAULT);
+ CHECK(ret, FAIL, "H5Oget_info_by_idx");
+ VERIFY(oinfo.type, H5O_TYPE_DATASET, "H5Oget_info_by_idx");
/* Unlink one of the objects in the dereferenced group */
ret = H5Ldelete(gid, GROUPNAME2, H5P_DEFAULT);