summaryrefslogtreecommitdiffstats
path: root/test/tmisc.c
diff options
context:
space:
mode:
authorNeil Fortner <nfortne2@hdfgroup.org>2009-04-07 23:04:19 (GMT)
committerNeil Fortner <nfortne2@hdfgroup.org>2009-04-07 23:04:19 (GMT)
commit41cea953dd4a69e4d375265f490b8f8e498bcf76 (patch)
tree0019901576943c1971feccdedd602da35ce1a2c6 /test/tmisc.c
parent8090374d00151ad0b0202967eafcbf9057e7ab62 (diff)
downloadhdf5-41cea953dd4a69e4d375265f490b8f8e498bcf76.zip
hdf5-41cea953dd4a69e4d375265f490b8f8e498bcf76.tar.gz
hdf5-41cea953dd4a69e4d375265f490b8f8e498bcf76.tar.bz2
[svn-r16694] Purpose: Fix bug 1526
Description: Previously, H5Lcopy and H5Lmove would (through H5L_move) improperly apply the "create intermediate groups" property to the source path traversal, and not the destination. Fixed it to apply the property to the destination and not the source. Also fixed H5Lcreate_ud to reject internal link classes without throwing an assertion. Tested: linew, jam, smirom (h5committtest)
Diffstat (limited to 'test/tmisc.c')
-rw-r--r--test/tmisc.c82
1 files changed, 82 insertions, 0 deletions
diff --git a/test/tmisc.c b/test/tmisc.c
index 4db800c..b646a69 100644
--- a/test/tmisc.c
+++ b/test/tmisc.c
@@ -3779,6 +3779,7 @@ test_misc23(void)
tmp_id=0, create_id=H5P_DEFAULT, access_id=H5P_DEFAULT;
char objname[MISC23_NAME_BUF_SIZE]; /* Name of object */
H5O_info_t oinfo;
+ htri_t tri_status;
herr_t status;
/* Output message about test being performed */
@@ -4022,6 +4023,87 @@ test_misc23(void)
status = H5Pclose(create_id);
CHECK(status, FAIL, "H5Pclose");
+ /**********************************************************************
+ * test H5Lcopy()
+ **********************************************************************/
+
+ /* Create link creation property list */
+ create_id = H5Pcreate(H5P_LINK_CREATE);
+ CHECK(create_id, FAIL, "H5Pcreate");
+
+ /* Set flag for intermediate group creation */
+ status = H5Pset_create_intermediate_group(create_id, TRUE);
+ CHECK(status, FAIL, "H5Pset_create_intermediate_group");
+
+ status = H5Lcopy(file_id, "/A/B01/grp", file_id, "/A/B16/grp", create_id, access_id);
+ CHECK(status, FAIL, "H5Lcopy");
+
+ tri_status = H5Lexists(file_id, "/A/B16/grp", access_id);
+ VERIFY(tri_status, TRUE, "H5Lexists");
+
+ tri_status = H5Lexists(file_id, "/A/B01/grp", access_id);
+ VERIFY(tri_status, TRUE, "H5Lexists");
+
+ /**********************************************************************
+ * test H5Lmove()
+ **********************************************************************/
+
+ status = H5Lmove(file_id, "/A/B16/grp", file_id, "/A/B17/grp", create_id, access_id);
+ CHECK(status, FAIL, "H5Lmove");
+
+ tri_status = H5Lexists(file_id, "/A/B17/grp", access_id);
+ VERIFY(tri_status, TRUE, "H5Lexists");
+
+ tri_status = H5Lexists(file_id, "/A/B16/grp", access_id);
+ VERIFY(tri_status, FALSE, "H5Lexists");
+
+ /**********************************************************************
+ * test H5Lcreate_hard()
+ **********************************************************************/
+
+ status = H5Lcreate_hard(file_id, "/A/B01/grp", file_id, "/A/B18/grp", create_id, access_id);
+ CHECK(status, FAIL, "H5Lcreate_hard");
+
+ tri_status = H5Lexists(file_id, "/A/B18/grp", access_id);
+ VERIFY(tri_status, TRUE, "H5Lexists");
+
+ /**********************************************************************
+ * test H5Lcreate_soft()
+ **********************************************************************/
+
+ status = H5Lcreate_soft("/A/B01/grp", file_id, "/A/B19/grp", create_id, access_id);
+ CHECK(status, FAIL, "H5Lcreate_soft");
+
+ tri_status = H5Lexists(file_id, "/A/B19/grp", access_id);
+ VERIFY(tri_status, TRUE, "H5Lexists");
+
+ /**********************************************************************
+ * test H5Lcreate_external()
+ **********************************************************************/
+
+ status = H5Lcreate_external("fake_filename", "fake_path", file_id, "/A/B20/grp", create_id, access_id);
+ CHECK(status, FAIL, "H5Lcreate_external");
+
+ tri_status = H5Lexists(file_id, "/A/B20/grp", access_id);
+ VERIFY(tri_status, TRUE, "H5Lexists");
+
+ /**********************************************************************
+ * test H5Lcreate_ud()
+ **********************************************************************/
+
+ status = H5Lcreate_ud(file_id, "/A/B21/grp", H5L_TYPE_EXTERNAL, "file\0obj", (size_t) 9, create_id, access_id);
+ CHECK(status, FAIL, "H5Lcreate_ud");
+
+ tri_status = H5Lexists(file_id, "/A/B21/grp", access_id);
+ VERIFY(tri_status, TRUE, "H5Lexists");
+
+ /**********************************************************************
+ * close
+ **********************************************************************/
+
+ status = H5Pclose(create_id);
+ CHECK(status, FAIL, "H5Pclose");
+
status = H5Gclose(group_id);
CHECK(status, FAIL, "H5Gclose");