summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--MANIFEST1
-rw-r--r--test/Makefile.am2
-rw-r--r--test/gen_bounds.c528
3 files changed, 264 insertions, 267 deletions
diff --git a/MANIFEST b/MANIFEST
index 2db6d6b..7f4c377 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -981,6 +981,7 @@
./test/gen_bad_ohdr.c
./test/gen_bad_compound.c
./test/gen_bogus.c
+./test/gen_bounds.c
./test/gen_cross.c
./test/gen_deflate.c
./test/gen_file_image.c
diff --git a/test/Makefile.am b/test/Makefile.am
index efdc1ca..ab81f50 100644
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@ -95,7 +95,7 @@ endif
BUILD_ALL_PROGS=gen_bad_ohdr gen_bogus gen_cross gen_deflate gen_filters gen_new_array \
gen_new_fill gen_new_group gen_new_mtime gen_new_super gen_noencoder \
gen_nullspace gen_udlinks space_overflow gen_filespace gen_specmetaread \
- gen_sizes_lheap gen_file_image gen_plist gen_bad_offset
+ gen_sizes_lheap gen_file_image gen_plist gen_bad_offset gen_bounds
if BUILD_ALL_CONDITIONAL
noinst_PROGRAMS=$(BUILD_ALL_PROGS)
diff --git a/test/gen_bounds.c b/test/gen_bounds.c
index 50b4acc..b3ef0e3 100644
--- a/test/gen_bounds.c
+++ b/test/gen_bounds.c
@@ -12,9 +12,7 @@
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
/*
- * Oct 24, 2017
- *
- * Purpose: This program is run to generate HDF5 data files used to test
+ * Purpose: This program is to generate HDF5 data files used to test
* version bounds.
*
* Description
@@ -25,10 +23,11 @@
* - bounds_latest_latest.h5
* - bounds_v18_latest.h5
* - bounds_v18_v18.h5
- *
+ * These files are copied to 1.6 and 1.8 libraries for verifying
+ * that they can or cannot read particular file format.
*/
-#include "hdf5.h"
+#include "h5test.h"
/***********************************************************************
* gen_earliest_latest() creates file "bounds_earliest_latest.h5"
@@ -38,118 +37,121 @@
* - A chunked dataset with layout version 3, "DS_chunked_layout_3". (default)
* - A chunked dataset with layout version 4, "DS_chunked_layout_4". (H5Pset_chunk_opts)
*
+ * Return: SUCCEED/FAIL
+ *
***********************************************************************/
-#define FILENAME_E_L "bounds_earliest_latest.h5"
+
+/* File names for different file format */
+#define FILENAME_E_L "bounds_earliest_latest.h5"
+#define FILENAME_E_18 "bounds_earliest_v18.h5"
+#define FILENAME_L_L "bounds_latest_latest.h5"
+#define FILENAME_18_L "bounds_v18_latest.h5"
+#define FILENAME_18_18 "bounds_v18_v18.h5"
/* 2-D dataset with fixed dimensions */
-#define RANK 2
-#define DIM1 100
-#define DIM2 200
-#define CHUNK_DIM1 50
-#define CHUNK_DIM2 50
+#define RANK 2
+#define DIM1 100
+#define DIM2 200
+#define CHK_DIM1 50
+#define CHK_DIM2 50
-int gen_earliest_latest()
+static herr_t gen_earliest_latest(void)
{
- hid_t fid = -1; /* File ID */
- hid_t fapl = -1; /* File access property list ID */
- hid_t fcpl = -1; /* File creation property list ID */
- hid_t dcpl = -1; /* Dataset creation property list ID */
- hid_t space = -1; /* Dataspace ID */
- hid_t dset = -1; /* Dataset ID */
- hsize_t dims[RANK] = {DIM1, DIM2};
- hsize_t chunk_dims[RANK] = {CHUNK_DIM1, CHUNK_DIM2};
- float buf[DIM1][DIM2]; /* Buffer for writing data */
- int i, j;
+ hid_t fid = -1; /* File ID */
+ hid_t fapl = -1; /* File access property list ID */
+ hid_t fcpl = -1; /* File creation property list ID */
+ hid_t dcpl = -1; /* Dataset creation property list ID */
+ hid_t space = -1; /* Dataspace ID */
+ hid_t dset = -1; /* Dataset ID */
+ float *buf = NULL; /* Buffer for writing data */
+ float *bufp = NULL; /* Pointer to data buffer */
+ hsize_t dims[RANK] = {DIM1, DIM2}; /* Dimensions */
+ hsize_t chunk_dims[RANK] = {CHK_DIM1, CHK_DIM2}; /* Dimensions of chunk */
+ int i, j;
+ herr_t ret = SUCCEED; /* Generic return value */
/* Create file creation property list */
- if((fcpl = H5Pcreate(H5P_FILE_CREATE)) < 0)
- goto error;
+ if((fcpl = H5Pcreate(H5P_FILE_CREATE)) < 0) TEST_ERROR;
/* Create file access property list */
- if((fapl = H5Pcreate(H5P_FILE_ACCESS)) < 0)
- goto error;
+ if((fapl = H5Pcreate(H5P_FILE_ACCESS)) < 0) TEST_ERROR;
/* Set the "use the earliest/latest version of the format" bounds
for creating objects in the file */
if(H5Pset_libver_bounds(fapl, H5F_LIBVER_EARLIEST, H5F_LIBVER_LATEST) < 0)
- goto error;
+ TEST_ERROR;
/* Create file */
if((fid = H5Fcreate(FILENAME_E_L, H5F_ACC_TRUNC, fcpl, fapl)) <0)
- goto error;
+ TEST_ERROR;
/* Close file property lists */
- if(H5Pclose(fapl) < 0)
- goto error;
- if(H5Pclose(fcpl) < 0)
- goto error;
+ if(H5Pclose(fapl) < 0) TEST_ERROR;
+ if(H5Pclose(fcpl) < 0) TEST_ERROR;
/*
* Add a chunked dataset with layout version 3 (default)
*/
+ buf = (float *)HDmalloc((size_t)DIM1 * (size_t)DIM2 * sizeof(float));
+ if (buf == NULL) TEST_ERROR;
/* Fill sample data */
+ bufp = buf;
for (i = 0; i < DIM1; i++)
for (j = 0; j < DIM2; j++)
- buf[i][j] = 100.0F;
+ *bufp = 100.0F;
/* Create the dataspace */
- if((space = H5Screate_simple(RANK, dims, NULL)) < 0)
- goto error;
+ if((space = H5Screate_simple(RANK, dims, NULL)) < 0) TEST_ERROR;
/* Create the dataset creation property list */
- if((dcpl = H5Pcreate(H5P_DATASET_CREATE)) < 0)
- goto error;
+ if((dcpl = H5Pcreate(H5P_DATASET_CREATE)) < 0) TEST_ERROR;
/* Set up for chunked data */
- if(H5Pset_chunk(dcpl, 2, chunk_dims) < 0)
- goto error;
+ if(H5Pset_chunk(dcpl, 2, chunk_dims) < 0) TEST_ERROR;
/* Create and write the dataset */
- if((dset = H5Dcreate2(fid, "DS_chunked_layout_3", H5T_NATIVE_FLOAT, space, H5P_DEFAULT, dcpl, H5P_DEFAULT)) < 0)
- goto error;
- if(H5Dwrite(dset, H5T_NATIVE_FLOAT, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf) < 0)
- goto error;
+ dset = H5Dcreate2(fid, "DS_chunked_layout_3", H5T_NATIVE_FLOAT, space, H5P_DEFAULT, dcpl, H5P_DEFAULT);
+ if (dset < 0) TEST_ERROR;
+
+ ret = H5Dwrite(dset, H5T_NATIVE_FLOAT, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf);
+ if (ret < 0) TEST_ERROR;
/* Close property list and dataset, will reuse dataspace */
- if(H5Pclose(dcpl) < 0)
- goto error;
- if(H5Dclose(dset) < 0)
- goto error;
+ if(H5Pclose(dcpl) < 0) TEST_ERROR;
+ if(H5Dclose(dset) < 0) TEST_ERROR;
/*
* Add a chunked dataset with layout version 4 (H5Pset_chunk_opts)
*/
/* Create the dataset creation property list */
- if((dcpl = H5Pcreate(H5P_DATASET_CREATE)) < 0)
- goto error;
+ if((dcpl = H5Pcreate(H5P_DATASET_CREATE)) < 0) TEST_ERROR;
/* Set up for chunked data */
- if(H5Pset_chunk(dcpl, 2, chunk_dims) < 0)
- goto error;
+ if(H5Pset_chunk(dcpl, 2, chunk_dims) < 0) TEST_ERROR;
/* Disable partial chunk filters, triggers layout version 4 */
if(H5Pset_chunk_opts(dcpl, H5D_CHUNK_DONT_FILTER_PARTIAL_CHUNKS) < 0)
- goto error;
+ TEST_ERROR;
/* Create and write the dataset */
- if((dset = H5Dcreate2(fid, "DS_chunked_layout_4", H5T_NATIVE_FLOAT, space, H5P_DEFAULT, dcpl, H5P_DEFAULT)) < 0)
- goto error;
- if(H5Dwrite(dset, H5T_NATIVE_FLOAT, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf) < 0)
- goto error;
+ dset = H5Dcreate2(fid, "DS_chunked_layout_4", H5T_NATIVE_FLOAT, space, H5P_DEFAULT, dcpl, H5P_DEFAULT);
+ if (dset < 0) TEST_ERROR;
+ ret = H5Dwrite(dset, H5T_NATIVE_FLOAT, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf);
+ if (ret < 0) TEST_ERROR;
+
+ /* Release allocated buffer */
+ HDfree(buf);
+ bufp = buf = NULL;
/* Close everything */
- if(H5Pclose(dcpl) < 0)
- goto error;
- if(H5Dclose(dset) < 0)
- goto error;
- if(H5Sclose(space) < 0)
- goto error;
- if(H5Fclose(fid) < 0)
- goto error;
+ if(H5Pclose(dcpl) < 0) TEST_ERROR;
+ if(H5Dclose(dset) < 0) TEST_ERROR;
+ if(H5Sclose(space) < 0) TEST_ERROR;
+ if(H5Fclose(fid) < 0) TEST_ERROR;
- return 0;
+ return SUCCEED;
error:
H5E_BEGIN_TRY {
@@ -159,8 +161,9 @@ error:
H5Pclose(fcpl);
H5Pclose(fapl);
H5Fclose(fid);
+ HDfree(buf);
} H5E_END_TRY;
- return 1;
+ return FAIL;
} /* gen_earliest_latest */
/***********************************************************************
@@ -170,83 +173,83 @@ error:
* - Version 0 superblock (default)
* - A chunked dataset with layout version 3, "DS_chunked_layout_3". (default)
*
+ * Return: SUCCEED/FAIL
+ *
***********************************************************************/
-#define FILENAME_E_18 "bounds_earliest_v18.h5"
-
-int gen_earliest_v18()
+static herr_t gen_earliest_v18(void)
{
- hid_t fid = -1; /* File ID */
- hid_t fapl = -1; /* File access property list ID */
- hid_t fcpl = -1; /* File creation property list ID */
- hid_t dcpl = -1; /* Dataset creation property list ID */
- hid_t space = -1; /* Dataspace ID */
- hid_t dset = -1; /* Dataset ID */
- hsize_t dims[RANK] = {DIM1, DIM2};
- hsize_t chunk_dims[RANK] = {CHUNK_DIM1, CHUNK_DIM2};
- float buf[DIM1][DIM2]; /* Buffer for writing data */
- int i, j;
+ hid_t fid = -1; /* File ID */
+ hid_t fapl = -1; /* File access property list ID */
+ hid_t fcpl = -1; /* File creation property list ID */
+ hid_t dcpl = -1; /* Dataset creation property list ID */
+ hid_t space = -1; /* Dataspace ID */
+ hid_t dset = -1; /* Dataset ID */
+ float *buf = NULL; /* Buffer for writing data */
+ float *bufp = NULL; /* Pointer to data buffer */
+ hsize_t dims[RANK] = {DIM1, DIM2}; /* Dimensions */
+ hsize_t chunk_dims[RANK] = {CHK_DIM1, CHK_DIM2}; /* Dimensions of chunk */
+ int i, j;
+ herr_t ret = SUCCEED; /* Generic return value */
/* Create file creation property list */
- if((fcpl = H5Pcreate(H5P_FILE_CREATE)) < 0)
- goto error;
+ if((fcpl = H5Pcreate(H5P_FILE_CREATE)) < 0) TEST_ERROR;
/* Create file access property list */
- if((fapl = H5Pcreate(H5P_FILE_ACCESS)) < 0)
- goto error;
+ if((fapl = H5Pcreate(H5P_FILE_ACCESS)) < 0) TEST_ERROR;
/* Set the "use the earliest/v18 version of the format" bounds
for creating objects in the file */
if(H5Pset_libver_bounds(fapl, H5F_LIBVER_EARLIEST, H5F_LIBVER_V18) < 0)
- goto error;
+ TEST_ERROR;
/* Create file */
if((fid = H5Fcreate(FILENAME_E_18, H5F_ACC_TRUNC, fcpl, fapl)) <0)
- goto error;
+ TEST_ERROR;
/* Close file property lists */
- if(H5Pclose(fapl) < 0)
- goto error;
- if(H5Pclose(fcpl) < 0)
- goto error;
+ if(H5Pclose(fapl) < 0) TEST_ERROR;
+ if(H5Pclose(fcpl) < 0) TEST_ERROR;
/*
* Add a chunked dataset with layout version 3 (default)
*/
+ buf = (float *)HDmalloc((size_t)DIM1 * (size_t)DIM2 * sizeof(float));
+ if (buf == NULL) TEST_ERROR;
+
/* Fill sample data */
+ bufp = buf;
for (i = 0; i < DIM1; i++)
for (j = 0; j < DIM2; j++)
- buf[i][j] = 100.0F;
+ *bufp = 100.0F;
/* Create the dataspace */
- if((space = H5Screate_simple(RANK, dims, NULL)) < 0)
- goto error;
+ if((space = H5Screate_simple(RANK, dims, NULL)) < 0) TEST_ERROR;
/* Create the dataset creation property list */
- if((dcpl = H5Pcreate(H5P_DATASET_CREATE)) < 0)
- goto error;
+ if((dcpl = H5Pcreate(H5P_DATASET_CREATE)) < 0) TEST_ERROR;
/* Set up for chunked data */
- if(H5Pset_chunk(dcpl, 2, chunk_dims) < 0)
- goto error;
+ if(H5Pset_chunk(dcpl, 2, chunk_dims) < 0) TEST_ERROR;
/* Create and write the dataset */
- if((dset = H5Dcreate2(fid, "DS_chunked_layout_3", H5T_NATIVE_FLOAT, space, H5P_DEFAULT, dcpl, H5P_DEFAULT)) < 0)
- goto error;
- if(H5Dwrite(dset, H5T_NATIVE_FLOAT, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf) < 0)
- goto error;
+ dset = H5Dcreate2(fid, "DS_chunked_layout_3", H5T_NATIVE_FLOAT, space, H5P_DEFAULT, dcpl, H5P_DEFAULT);
+ if (dset < 0) TEST_ERROR;
+
+ ret = H5Dwrite(dset, H5T_NATIVE_FLOAT, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf);
+ if (ret < 0) TEST_ERROR;
+
+ /* Release allocated buffer */
+ HDfree(buf);
+ bufp = buf = NULL;
/* Close everything */
- if(H5Pclose(dcpl) < 0)
- goto error;
- if(H5Dclose(dset) < 0)
- goto error;
- if(H5Sclose(space) < 0)
- goto error;
- if(H5Fclose(fid) < 0)
- goto error;
+ if(H5Pclose(dcpl) < 0) TEST_ERROR;
+ if(H5Dclose(dset) < 0) TEST_ERROR;
+ if(H5Sclose(space) < 0) TEST_ERROR;
+ if(H5Fclose(fid) < 0) TEST_ERROR;
- return 0;
+ return SUCCEED;
error:
H5E_BEGIN_TRY {
@@ -256,8 +259,9 @@ error:
H5Pclose(fcpl);
H5Pclose(fapl);
H5Fclose(fid);
+ HDfree(buf);
} H5E_END_TRY;
- return 1;
+ return FAIL;
} /* gen_earliest_v18 */
/***********************************************************************
@@ -267,66 +271,69 @@ error:
* - Version 3 superblock (H5Fcreate with H5F_ACC_SWMR_WRITE)
* - A chunked dataset with layout version 4, "DS_chunked_layout_4". (H5Pset_chunk_opts)
*
+ * Return: SUCCEED/FAIL
+ *
***********************************************************************/
-#define FILENAME_L_L "bounds_latest_latest.h5"
-
-int gen_latest_latest()
+static herr_t gen_latest_latest(void)
{
- hid_t fid = -1; /* File ID */
- hid_t dcpl = -1; /* Dataset creation property list ID */
- hid_t space = -1; /* Dataspace ID */
- hid_t dset = -1; /* Dataset ID */
- hsize_t dims[RANK] = {DIM1, DIM2};
- hsize_t chunk_dims[RANK] = {CHUNK_DIM1, CHUNK_DIM2};
- float buf[DIM1][DIM2]; /* Buffer for writing data */
- int i, j;
+ hid_t fid = -1; /* File ID */
+ hid_t dcpl = -1; /* Dataset creation property list ID */
+ hid_t space = -1; /* Dataspace ID */
+ hid_t dset = -1; /* Dataset ID */
+ float *buf = NULL; /* Buffer for writing data */
+ float *bufp = NULL; /* Pointer to data buffer */
+ hsize_t dims[RANK] = {DIM1, DIM2}; /* Dimensions */
+ hsize_t chunk_dims[RANK] = {CHK_DIM1, CHK_DIM2}; /* Dimensions of chunk */
+ int i, j;
+ herr_t ret = SUCCEED; /* Generic return value */
/* Create file with H5F_ACC_SWMR_WRITE, triggers version 3 superblock */
- if((fid = H5Fcreate(FILENAME_L_L, H5F_ACC_SWMR_WRITE, H5P_DEFAULT, H5P_DEFAULT)) <0)
- goto error;
+ fid = H5Fcreate(FILENAME_L_L, H5F_ACC_SWMR_WRITE, H5P_DEFAULT, H5P_DEFAULT);
+ if (fid < 0) TEST_ERROR;
/*
* Add a chunked dataset with layout version 4 (H5Pset_chunk_opts)
*/
+ buf = (float *)HDmalloc((size_t)DIM1 * (size_t)DIM2 * sizeof(float));
+ if (buf == NULL) TEST_ERROR;
+
/* Fill sample data */
+ bufp = buf;
for (i = 0; i < DIM1; i++)
for (j = 0; j < DIM2; j++)
- buf[i][j] = 100.0F;
+ *bufp = 100.0F;
/* Create the dataspace */
- if((space = H5Screate_simple(RANK, dims, NULL)) < 0)
- goto error;
+ if((space = H5Screate_simple(RANK, dims, NULL)) < 0) TEST_ERROR;
/* Create the dataset creation property list */
- if((dcpl = H5Pcreate(H5P_DATASET_CREATE)) < 0)
- goto error;
+ if((dcpl = H5Pcreate(H5P_DATASET_CREATE)) < 0) TEST_ERROR;
/* Set up for chunked data */
- if(H5Pset_chunk(dcpl, 2, chunk_dims) < 0)
- goto error;
+ if(H5Pset_chunk(dcpl, 2, chunk_dims) < 0) TEST_ERROR;
/* Disable partial chunk filters, triggers layout version 4 */
if(H5Pset_chunk_opts(dcpl, H5D_CHUNK_DONT_FILTER_PARTIAL_CHUNKS) < 0)
- goto error;
+ TEST_ERROR;
/* Create and write the dataset */
- if((dset = H5Dcreate2(fid, "DS_chunked_layout_4", H5T_NATIVE_FLOAT, space, H5P_DEFAULT, dcpl, H5P_DEFAULT)) < 0)
- goto error;
- if(H5Dwrite(dset, H5T_NATIVE_FLOAT, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf) < 0)
- goto error;
+ dset = H5Dcreate2(fid, "DS_chunked_layout_4", H5T_NATIVE_FLOAT, space, H5P_DEFAULT, dcpl, H5P_DEFAULT);
+ if (dset < 0) TEST_ERROR;
+ ret = H5Dwrite(dset, H5T_NATIVE_FLOAT, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf);
+ if (ret < 0) TEST_ERROR;
+
+ /* Release allocated buffer */
+ HDfree(buf);
+ bufp = buf = NULL;
/* Close everything */
- if(H5Pclose(dcpl) < 0)
- goto error;
- if(H5Dclose(dset) < 0)
- goto error;
- if(H5Sclose(space) < 0)
- goto error;
- if(H5Fclose(fid) < 0)
- goto error;
+ if(H5Pclose(dcpl) < 0) TEST_ERROR;
+ if(H5Dclose(dset) < 0) TEST_ERROR;
+ if(H5Sclose(space) < 0) TEST_ERROR;
+ if(H5Fclose(fid) < 0) TEST_ERROR;
- return 0;
+ return SUCCEED;
error:
H5E_BEGIN_TRY {
@@ -334,8 +341,9 @@ error:
H5Sclose(space);
H5Pclose(dcpl);
H5Fclose(fid);
+ HDfree(buf);
} H5E_END_TRY;
- return 1;
+ return FAIL;
} /* gen_latest_latest */
/***********************************************************************
@@ -345,83 +353,82 @@ error:
* - Version 2 superblock
* - A chunked dataset with layout version 3, "DS_chunked_layout_3". (default)
*
+ * Return: SUCCEED/FAIL
+ *
***********************************************************************/
-#define FILENAME_18_L "bounds_v18_latest.h5"
-
-int gen_v18_latest()
+static herr_t gen_v18_latest(void)
{
- hid_t fid = -1; /* File ID */
- hid_t fapl = -1; /* File access property list ID */
- hid_t fcpl = -1; /* File creation property list ID */
- hid_t dcpl = -1; /* Dataset creation property list ID */
- hid_t space = -1; /* Dataspace ID */
- hid_t dset = -1; /* Dataset ID */
- hsize_t dims[RANK] = {DIM1, DIM2};
- hsize_t chunk_dims[RANK] = {CHUNK_DIM1, CHUNK_DIM2};
- float buf[DIM1][DIM2]; /* Buffer for writing data */
- int i, j;
+ hid_t fid = -1; /* File ID */
+ hid_t fapl = -1; /* File access property list ID */
+ hid_t fcpl = -1; /* File creation property list ID */
+ hid_t dcpl = -1; /* Dataset creation property list ID */
+ hid_t space = -1; /* Dataspace ID */
+ hid_t dset = -1; /* Dataset ID */
+ float *buf = NULL; /* Buffer for writing data */
+ float *bufp = NULL; /* Pointer to data buffer */
+ hsize_t dims[RANK] = {DIM1, DIM2}; /* Dimensions */
+ hsize_t chunk_dims[RANK] = {CHK_DIM1, CHK_DIM2}; /* Dimensions of chunk */
+ int i, j;
+ herr_t ret = SUCCEED; /* Generic return value */
/* Create file creation property list */
- if((fcpl = H5Pcreate(H5P_FILE_CREATE)) < 0)
- goto error;
+ if((fcpl = H5Pcreate(H5P_FILE_CREATE)) < 0) TEST_ERROR;
/* Create file access property list */
- if((fapl = H5Pcreate(H5P_FILE_ACCESS)) < 0)
- goto error;
+ if((fapl = H5Pcreate(H5P_FILE_ACCESS)) < 0) TEST_ERROR;
/* Set the "use the v18/latest version of the format" bounds
for creating objects in the file, also trigger version 2 superblock */
if(H5Pset_libver_bounds(fapl, H5F_LIBVER_V18, H5F_LIBVER_LATEST) < 0)
- goto error;
+ TEST_ERROR;
/* Create file */
if((fid = H5Fcreate(FILENAME_18_L, H5F_ACC_TRUNC, fcpl, fapl)) <0)
- goto error;
+ TEST_ERROR;
/* Close file property lists */
- if(H5Pclose(fapl) < 0)
- goto error;
- if(H5Pclose(fcpl) < 0)
- goto error;
+ if(H5Pclose(fapl) < 0) TEST_ERROR;
+ if(H5Pclose(fcpl) < 0) TEST_ERROR;
/*
* Add a chunked dataset with layout version 3 (default)
*/
+ buf = (float *)HDmalloc((size_t)DIM1 * (size_t)DIM2 * sizeof(float));
+ if (buf == NULL) TEST_ERROR;
+
/* Fill sample data */
+ bufp = buf;
for (i = 0; i < DIM1; i++)
for (j = 0; j < DIM2; j++)
- buf[i][j] = 100.0F;
+ *bufp = 100.0F;
/* Create the dataspace */
- if((space = H5Screate_simple(RANK, dims, NULL)) < 0)
- goto error;
+ if((space = H5Screate_simple(RANK, dims, NULL)) < 0) TEST_ERROR;
/* Create the dataset creation property list */
- if((dcpl = H5Pcreate(H5P_DATASET_CREATE)) < 0)
- goto error;
+ if((dcpl = H5Pcreate(H5P_DATASET_CREATE)) < 0) TEST_ERROR;
/* Set up for chunked data */
- if(H5Pset_chunk(dcpl, 2, chunk_dims) < 0)
- goto error;
+ if(H5Pset_chunk(dcpl, 2, chunk_dims) < 0) TEST_ERROR;
/* Create and write the dataset */
- if((dset = H5Dcreate2(fid, "DS_chunked_layout_3", H5T_NATIVE_FLOAT, space, H5P_DEFAULT, dcpl, H5P_DEFAULT)) < 0)
- goto error;
- if(H5Dwrite(dset, H5T_NATIVE_FLOAT, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf) < 0)
- goto error;
+ dset = H5Dcreate2(fid, "DS_chunked_layout_3", H5T_NATIVE_FLOAT, space, H5P_DEFAULT, dcpl, H5P_DEFAULT);
+ if (dset < 0) TEST_ERROR;
+ ret = H5Dwrite(dset, H5T_NATIVE_FLOAT, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf);
+ if (ret < 0) TEST_ERROR;
+
+ /* Release allocated buffer */
+ HDfree(buf);
+ bufp = buf = NULL;
/* Close property list and dataset, will reuse dataspace */
- if(H5Pclose(dcpl) < 0)
- goto error;
- if(H5Dclose(dset) < 0)
- goto error;
- if(H5Sclose(space) < 0)
- goto error;
- if(H5Fclose(fid) < 0)
- goto error;
+ if(H5Pclose(dcpl) < 0) TEST_ERROR;
+ if(H5Dclose(dset) < 0) TEST_ERROR;
+ if(H5Sclose(space) < 0) TEST_ERROR;
+ if(H5Fclose(fid) < 0) TEST_ERROR;
- return 0;
+ return SUCCEED;
error:
H5E_BEGIN_TRY {
@@ -431,8 +438,9 @@ error:
H5Pclose(fcpl);
H5Pclose(fapl);
H5Fclose(fid);
+ HDfree(buf);
} H5E_END_TRY;
- return 1;
+ return FAIL;
} /* gen_v18_latest */
/***********************************************************************
@@ -443,128 +451,120 @@ error:
* - A chunked dataset with layout version 3, "DS_chunked_layout_3". (default)
* - A chunked dataset with layout version 4, "DS_chunked_layout_4". (H5Pset_chunk_opts)
*
+ * Return: SUCCEED/FAIL
+ *
***********************************************************************/
-#define FILENAME_18_18 "bounds_v18_v18.h5"
-
-int gen_v18_v18()
+static herr_t gen_v18_v18(void)
{
- hid_t fid = -1; /* File ID */
- hid_t fapl = -1; /* File access property list ID */
- hid_t fcpl = -1; /* File creation property list ID */
- hid_t dcpl = -1; /* Dataset creation property list ID */
- hid_t space = -1; /* Dataspace ID */
- hid_t dset = -1; /* Dataset ID */
- hsize_t dims[RANK] = {DIM1, DIM2};
- hsize_t chunk_dims[RANK] = {CHUNK_DIM1, CHUNK_DIM2};
- float buf[DIM1][DIM2]; /* Buffer for writing data */
- int i, j;
+ hid_t fid = -1; /* File ID */
+ hid_t fapl = -1; /* File access property list ID */
+ hid_t fcpl = -1; /* File creation property list ID */
+ hid_t dcpl = -1; /* Dataset creation property list ID */
+ hid_t space = -1; /* Dataspace ID */
+ hid_t dset = -1; /* Dataset ID */
+ float *buf = NULL; /* Buffer for writing data */
+ float *bufp = NULL; /* Pointer to data buffer */
+ hsize_t dims[RANK] = {DIM1, DIM2}; /* Dimensions */
+ hsize_t chunk_dims[RANK] = {CHK_DIM1, CHK_DIM2}; /* Dimensions of chunk */
+ int i, j;
+ herr_t ret = SUCCEED; /* Generic return value */
/* Create file creation property list */
- if((fcpl = H5Pcreate(H5P_FILE_CREATE)) < 0)
- goto error;
+ if((fcpl = H5Pcreate(H5P_FILE_CREATE)) < 0) TEST_ERROR;
/* Create file access property list */
- if((fapl = H5Pcreate(H5P_FILE_ACCESS)) < 0)
- goto error;
+ if((fapl = H5Pcreate(H5P_FILE_ACCESS)) < 0) TEST_ERROR;
/* Set the "use the v18 version of the format" bounds
for creating objects in the file */
if(H5Pset_libver_bounds(fapl, H5F_LIBVER_V18, H5F_LIBVER_V18) < 0)
- goto error;
+ TEST_ERROR;
/* Create file */
if((fid = H5Fcreate(FILENAME_18_18, H5F_ACC_TRUNC, fcpl, fapl)) <0)
- goto error;
+ TEST_ERROR;
/* Close file property lists */
- if(H5Pclose(fapl) < 0)
- goto error;
- if(H5Pclose(fcpl) < 0)
- goto error;
+ if(H5Pclose(fapl) < 0) TEST_ERROR;
+ if(H5Pclose(fcpl) < 0) TEST_ERROR;
/*
* Add a chunked dataset with layout version 3 (default)
*/
+ buf = (float *)HDmalloc((size_t)DIM1 * (size_t)DIM2 * sizeof(float));
+ if (buf == NULL) TEST_ERROR;
+
/* Fill sample data */
+ bufp = buf;
for (i = 0; i < DIM1; i++)
for (j = 0; j < DIM2; j++)
- buf[i][j] = 100.0F;
+ *bufp = 100.0F;
/* Create the dataspace */
- if((space = H5Screate_simple(RANK, dims, NULL)) < 0)
- goto error;
+ if((space = H5Screate_simple(RANK, dims, NULL)) < 0) TEST_ERROR;
/* Create the dataset creation property list */
- if((dcpl = H5Pcreate(H5P_DATASET_CREATE)) < 0)
- goto error;
+ if((dcpl = H5Pcreate(H5P_DATASET_CREATE)) < 0) TEST_ERROR;
/* Set up for chunked data */
- if(H5Pset_chunk(dcpl, 2, chunk_dims) < 0)
- goto error;
+ if(H5Pset_chunk(dcpl, 2, chunk_dims) < 0) TEST_ERROR;
/* Create and write the dataset */
- if((dset = H5Dcreate2(fid, "DS_chunked_layout_3", H5T_NATIVE_FLOAT, space, H5P_DEFAULT, dcpl, H5P_DEFAULT)) < 0)
- goto error;
- if(H5Dwrite(dset, H5T_NATIVE_FLOAT, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf) < 0)
- goto error;
+ dset = H5Dcreate2(fid, "DS_chunked_layout_3", H5T_NATIVE_FLOAT, space, H5P_DEFAULT, dcpl, H5P_DEFAULT);
+ if (dset < 0) TEST_ERROR;
+ ret = H5Dwrite(dset, H5T_NATIVE_FLOAT, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf);
+ if (ret < 0) TEST_ERROR;
/* Close property list and dataset, will reuse dataspace */
- if(H5Pclose(dcpl) < 0)
- goto error;
- if(H5Dclose(dset) < 0)
- goto error;
+ if(H5Pclose(dcpl) < 0) TEST_ERROR;
+ if(H5Dclose(dset) < 0) TEST_ERROR;
/* Close the file, then reopen it with the latest version */
- if(H5Fclose(fid) < 0)
- goto error;
+ if(H5Fclose(fid) < 0) TEST_ERROR;
/* Create file access property list */
- if((fapl = H5Pcreate(H5P_FILE_ACCESS)) < 0)
- goto error;
+ if((fapl = H5Pcreate(H5P_FILE_ACCESS)) < 0) TEST_ERROR;
/* Set the "use the v18/latest version of the format" bounds
for creating a layout version 4 object in the file */
if(H5Pset_libver_bounds(fapl, H5F_LIBVER_V18, H5F_LIBVER_LATEST) < 0)
- goto error;
+ TEST_ERROR;
if((fid = H5Fopen(FILENAME_18_18, H5F_ACC_RDWR, fapl)) < 0)
- goto error;
+ TEST_ERROR;
/*
* Add a chunked dataset with layout version 4 (H5Pset_chunk_opts)
*/
/* Create the dataset creation property list */
- if((dcpl = H5Pcreate(H5P_DATASET_CREATE)) < 0)
- goto error;
+ if((dcpl = H5Pcreate(H5P_DATASET_CREATE)) < 0) TEST_ERROR;
/* Set up for chunked data */
- if(H5Pset_chunk(dcpl, 2, chunk_dims) < 0)
- goto error;
+ if(H5Pset_chunk(dcpl, 2, chunk_dims) < 0) TEST_ERROR;
/* Disable partial chunk filters */
if(H5Pset_chunk_opts(dcpl, H5D_CHUNK_DONT_FILTER_PARTIAL_CHUNKS) < 0)
- goto error;
+ TEST_ERROR;
/* Create and write the dataset */
- if((dset = H5Dcreate2(fid, "DS_chunked_layout_4", H5T_NATIVE_FLOAT, space, H5P_DEFAULT, dcpl, H5P_DEFAULT)) < 0)
- goto error;
- if(H5Dwrite(dset, H5T_NATIVE_FLOAT, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf) < 0)
- goto error;
+ dset = H5Dcreate2(fid, "DS_chunked_layout_4", H5T_NATIVE_FLOAT, space, H5P_DEFAULT, dcpl, H5P_DEFAULT);
+ if (dset < 0) TEST_ERROR;
+ ret = H5Dwrite(dset, H5T_NATIVE_FLOAT, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf);
+ if (ret < 0) TEST_ERROR;
+
+ /* Release allocated buffer */
+ HDfree(buf);
+ bufp = buf = NULL;
/* Close everything */
- if(H5Pclose(dcpl) < 0)
- goto error;
- if(H5Pclose(fapl) < 0)
- goto error;
- if(H5Dclose(dset) < 0)
- goto error;
- if(H5Sclose(space) < 0)
- goto error;
- if(H5Fclose(fid) < 0)
- goto error;
- return 0;
+ if(H5Pclose(dcpl) < 0) TEST_ERROR;
+ if(H5Pclose(fapl) < 0) TEST_ERROR;
+ if(H5Dclose(dset) < 0) TEST_ERROR;
+ if(H5Sclose(space) < 0) TEST_ERROR;
+ if(H5Fclose(fid) < 0) TEST_ERROR;
+ return SUCCEED;
error:
H5E_BEGIN_TRY {
@@ -574,35 +574,31 @@ error:
H5Pclose(fcpl);
H5Pclose(fapl);
H5Fclose(fid);
+ HDfree(buf);
} H5E_END_TRY;
- return 1;
+ return FAIL;
} /* gen_v18_v18 */
int main(void)
{
/* Generate file bounds_earliest_latest.h5 */
- if (gen_earliest_latest() < 0)
- goto error;
+ if (gen_earliest_latest() < 0) TEST_ERROR;
/* Generate file bounds_earliest_v18.h5 */
- if (gen_earliest_v18() < 0)
- goto error;
+ if (gen_earliest_v18() < 0) TEST_ERROR;
/* Generate file bounds_latest_latest.h5 */
- if (gen_latest_latest() < 0)
- goto error;
+ if (gen_latest_latest() < 0) TEST_ERROR;
/* Generate file bounds_v18_latest.h5 */
- if (gen_v18_latest() < 0)
- goto error;
+ if (gen_v18_latest() < 0) TEST_ERROR;
/* Generate file bounds_v18_v18.h5 */
- if (gen_v18_v18() < 0)
- goto error;
+ if (gen_v18_v18() < 0) TEST_ERROR;
- return 0;
+ return EXIT_SUCCESS;
error:
- return 1;
+ return EXIT_FAILURE;
}