summaryrefslogtreecommitdiffstats
path: root/test/dsets.c
diff options
context:
space:
mode:
authorMohamad Chaarawi <chaarawi@hdfgroup.org>2014-07-09 19:01:25 (GMT)
committerMohamad Chaarawi <chaarawi@hdfgroup.org>2014-07-09 19:01:25 (GMT)
commit92cc75bfae8336e047a6cd9e3e4e5b47347a3923 (patch)
tree740294dfbdc4af8c2044bf4fd48331676a527715 /test/dsets.c
parent6d637e03f7da0c1391d5924e6208887b83297cd1 (diff)
downloadhdf5-92cc75bfae8336e047a6cd9e3e4e5b47347a3923.zip
hdf5-92cc75bfae8336e047a6cd9e3e4e5b47347a3923.tar.gz
hdf5-92cc75bfae8336e047a6cd9e3e4e5b47347a3923.tar.bz2
[svn-r25401] add serial and parallel regression tests for zero dset read/write bug.
Diffstat (limited to 'test/dsets.c')
-rw-r--r--test/dsets.c76
1 files changed, 76 insertions, 0 deletions
diff --git a/test/dsets.c b/test/dsets.c
index 3cd303f..af99ee1 100644
--- a/test/dsets.c
+++ b/test/dsets.c
@@ -50,6 +50,7 @@ const char *FILENAME[] = {
"chunk_expand",
"copy_dcpl_newfile",
"layout_extend",
+ "zero_chunk",
NULL
};
#define FILENAME_BUF_SIZE 1024
@@ -8192,6 +8193,80 @@ error:
/*-------------------------------------------------------------------------
+ * Function: test_zero_dim_dset
+ *
+ * Purpose: Tests support for reading a 1D chunled dataset with
+ * dimension size = 0.
+ *
+ * Return: Success: 0
+ * Failure: -1
+ *
+ * Programmer: Mohamad Chaarawi
+ * Wednesdat, July 9, 2014
+ *
+ *-------------------------------------------------------------------------
+ */
+static herr_t
+test_zero_dim_dset(hid_t fapl)
+{
+ char filename[FILENAME_BUF_SIZE];
+ hid_t fid = -1; /* File ID */
+ hid_t dcpl = -1; /* Dataset creation property list ID */
+ hid_t sid = -1; /* Dataspace ID */
+ hid_t dsid = -1; /* Dataset ID */
+ hsize_t dim, chunk_dim; /* Dataset and chunk dimensions */
+ int data[1];
+
+ TESTING("shrinking large chunk");
+
+ h5_fixname(FILENAME[13], fapl, filename, sizeof filename);
+
+ /* Create file */
+ if((fid = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl)) < 0) FAIL_STACK_ERROR
+
+ /* Create dataset creation property list */
+ if((dcpl = H5Pcreate(H5P_DATASET_CREATE)) < 0) FAIL_STACK_ERROR
+
+ /* Set 1 chunk size */
+ chunk_dim = 1;
+ if(H5Pset_chunk(dcpl, 1, &chunk_dim) < 0) FAIL_STACK_ERROR
+
+ /* Create 1D dataspace with 0 dim size */
+ dim = 0;
+ if((sid = H5Screate_simple(1, &dim, NULL)) < 0) FAIL_STACK_ERROR
+
+ /* Create chunked dataset */
+ if((dsid = H5Dcreate2(fid, "dset", H5T_NATIVE_INT, sid, H5P_DEFAULT, dcpl, H5P_DEFAULT)) < 0)
+ FAIL_STACK_ERROR
+
+ /* write 0 elements from dataset */
+ if(H5Dwrite(dsid, H5T_NATIVE_INT, sid, sid, H5P_DEFAULT, data) < 0) FAIL_STACK_ERROR
+
+ /* Read 0 elements from dataset */
+ if(H5Dread(dsid, H5T_NATIVE_INT, sid, sid, H5P_DEFAULT, data) < 0) FAIL_STACK_ERROR
+
+ /* Close everything */
+ if(H5Sclose(sid) < 0) FAIL_STACK_ERROR
+ if(H5Dclose(dsid) < 0) FAIL_STACK_ERROR
+ if(H5Pclose(dcpl) < 0) FAIL_STACK_ERROR
+ if(H5Fclose(fid) < 0) FAIL_STACK_ERROR
+
+ PASSED();
+
+ return 0;
+
+error:
+ H5E_BEGIN_TRY {
+ H5Pclose(dcpl);
+ H5Dclose(dsid);
+ H5Sclose(sid);
+ H5Fclose(fid);
+ } H5E_END_TRY;
+ return -1;
+} /* end test_zero_dim_dset() */
+
+
+/*-------------------------------------------------------------------------
* Function: test_scatter
*
* Purpose: Tests H5Dscatter with a variety of different selections
@@ -9340,6 +9415,7 @@ main(void)
nerrors += (test_chunk_expand(my_fapl) < 0 ? 1 : 0);
nerrors += (test_layout_extend(my_fapl) < 0 ? 1 : 0);
nerrors += (test_large_chunk_shrink(my_fapl) < 0 ? 1 : 0);
+ nerrors += (test_zero_dim_dset(my_fapl) < 0 ? 1 : 0);
if(H5Fclose(file) < 0)
goto error;