summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--test/tfile.c51
1 files changed, 48 insertions, 3 deletions
diff --git a/test/tfile.c b/test/tfile.c
index c84cf3f..cac159a 100644
--- a/test/tfile.c
+++ b/test/tfile.c
@@ -43,6 +43,7 @@
#define F2_RANK 2
#define F2_DIM0 4
#define F2_DIM1 6
+#define F2_DSET "dset"
#define FILE2 "tfile2.h5"
#define F3_USERBLOCK_SIZE (hsize_t)0
@@ -204,7 +205,7 @@ test_file_create(void)
CHECK(dataspace_id, FAIL, "H5Screate_simple");
/* Create the dataset. */
- dataset_id = H5Dcreate(fid2, "/dset", H5T_NATIVE_INT, dataspace_id, H5P_DEFAULT);
+ dataset_id = H5Dcreate(fid2, F2_DSET, H5T_NATIVE_INT, dataspace_id, H5P_DEFAULT);
CHECK(dataset_id, FAIL, "H5Dcreate");
for(i=0; i<F2_DIM0; i++)
@@ -310,7 +311,9 @@ test_file_create(void)
static void
test_file_open(void)
{
- hid_t fid1; /*HDF5 File IDs */
+ hid_t fid1, fid2; /*HDF5 File IDs */
+ hid_t did; /*dataset ID */
+ hid_t fapl_id; /*file access property list ID */
hid_t tmpl1; /*file creation templates */
hsize_t ublock; /*sizeof user block */
size_t parm; /*file-creation parameters */
@@ -323,6 +326,10 @@ test_file_open(void)
#endif /* H5_WANT_H5_V1_4_COMPAT */
herr_t ret; /*generic return value */
+ /*
+ * Test single file open
+ */
+
/* Output message about test being performed */
MESSAGE(5, ("Testing Low-Level File Opening I/O\n"));
@@ -356,7 +363,45 @@ test_file_open(void)
/* Close first file */
ret = H5Fclose(fid1);
CHECK(ret, FAIL, "H5Fclose");
-} /* test_file_open() */
+
+
+ /*
+ * Test two file opens: one is opened H5F_ACC_RDONLY and H5F_CLOSE_WEAK.
+ * It's closed with an object left open. Then another is opened
+ * H5F_ACC_RDWR, which should fail.
+ */
+
+ /* Output message about test being performed */
+ MESSAGE(5, ("Testing 2 File Openings\n"));
+
+ /* Create file access property list */
+ fapl_id = H5Pcreate(H5P_FILE_ACCESS);
+ CHECK(fapl_id, FAIL, "H5Pcreate");
+
+ /* Set file close mode to H5F_CLOSE_WEAK */
+ ret = H5Pset_fclose_degree(fapl_id, H5F_CLOSE_WEAK);
+ CHECK(ret, FAIL, "H5Pset_fclose_degree");
+
+ /* Open file for first time */
+ fid1 = H5Fopen(FILE2, H5F_ACC_RDONLY, fapl_id);
+ CHECK(fid1, FAIL, "H5Fopen");
+
+ /* Open dataset */
+ did = H5Dopen(fid1, F2_DSET);
+ CHECK(did, FAIL, "H5Dopen");
+
+ /* Close first open */
+ ret = H5Fclose(fid1);
+ CHECK(ret, FAIL, "H5Fclose");
+
+ /* Open file for second time, which should fail. */
+ fid2 = H5Fopen(FILE2, H5F_ACC_RDWR, fapl_id);
+ VERIFY(fid2, FAIL, "H5Fopen");
+
+ /* Close dataset from first open */
+ ret = H5Dclose(did);
+ CHECK(ret, FAIL, "H5Dclose");
+} /* test_file_open() */
/****************************************************************
**