summaryrefslogtreecommitdiffstats
path: root/test/dsets.c
diff options
context:
space:
mode:
Diffstat (limited to 'test/dsets.c')
-rw-r--r--test/dsets.c656
1 files changed, 317 insertions, 339 deletions
diff --git a/test/dsets.c b/test/dsets.c
index 9e024af..1d88cff 100644
--- a/test/dsets.c
+++ b/test/dsets.c
@@ -5,7 +5,7 @@
* Programmer: Robb Matzke <matzke@llnl.gov>
* Tuesday, December 9, 1997
*
- * Purpose: Tests the dataset interface (H5D)
+ * Purpose: Tests the dataset interface (H5D)
*/
#include <assert.h>
#include <hdf5.h>
@@ -16,25 +16,24 @@
#ifndef HAVE_FUNCTION
#define __FUNCTION__ ""
#endif
-#define AT() printf (" at %s:%d in %s()...\n", \
- __FILE__, __LINE__, __FUNCTION__);
-
-#define DSET_DEFAULT_NAME "default"
-#define DSET_CHUNKED_NAME "chunked"
-#define DSET_SIMPLE_IO_NAME "simple_io"
-#define DSET_TCONV_NAME "tconv"
+#define AT() printf (" at %s:%d in %s()...\n", \
+ __FILE__, __LINE__, __FUNCTION__);
+#define DSET_DEFAULT_NAME "default"
+#define DSET_CHUNKED_NAME "chunked"
+#define DSET_SIMPLE_IO_NAME "simple_io"
+#define DSET_TCONV_NAME "tconv"
/*-------------------------------------------------------------------------
- * Function: test_create
+ * Function: test_create
*
- * Purpose: Attempts to create a dataset.
+ * Purpose: Attempts to create a dataset.
*
- * Return: Success: SUCCEED
+ * Return: Success: SUCCEED
*
- * Failure: FAIL
+ * Failure: FAIL
*
- * Programmer: Robb Matzke
+ * Programmer: Robb Matzke
* Tuesday, December 9, 1997
*
* Modifications:
@@ -42,158 +41,144 @@
*-------------------------------------------------------------------------
*/
static herr_t
-test_create (hid_t file)
+test_create(hid_t file)
{
- hid_t dataset, space, create_parms;
- size_t dims[2];
- herr_t status;
- size_t csize[2];
-
- printf ("%-70s", "Testing create/open/close");
-
-
- /* Create the data space */
- space = H5Pcreate (H5P_SIMPLE);
- dims[0] = 256;
- dims[1] = 512;
- status = H5Pset_space (space, 2, dims);
- assert (status>=0);
-
- /*
- * Create a dataset using the default dataset creation properties. We're
- * not sure what they are, so we won't check.
- */
- dataset = H5Dcreate (file, DSET_DEFAULT_NAME, H5T_NATIVE_DOUBLE, space,
- H5C_DEFAULT);
- if (dataset<0) {
- puts ("*FAILED*");
- if (!isatty (1)) {
- AT ();
- printf (" Cannot create initial dataset.\n");
- }
- goto error;
- }
-
- /* Close the dataset */
- if (H5Dclose (dataset)<0) {
- puts ("*FAILED*");
- if (!isatty (1)) {
- AT ();
- printf (" Cannot close initial dataset.\n");
- }
- goto error;
- }
-
- /*
- * Try creating a dataset that already exists. This should fail since a
- * dataset can only be created once.
- */
- dataset = H5Dcreate (file, DSET_DEFAULT_NAME, H5T_NATIVE_DOUBLE, space,
- H5C_DEFAULT);
- if (dataset>=0) {
- puts ("*FAILED*");
- if (!isatty (1)) {
- AT ();
- printf (" Library allowed overwrite of existing dataset.\n");
- }
- goto error;
- }
-
- /*
- * Open the dataset we created above and then close it. This is how
- * existing datasets are accessed.
- */
- dataset = H5Dopen (file, DSET_DEFAULT_NAME);
- if (dataset<0) {
- puts ("*FAILED*");
- if (!isatty (1)) {
- AT ();
- printf (" Cannot open dataset `%s'.\n", DSET_DEFAULT_NAME);
- }
- goto error;
- }
- if (H5Dclose (dataset)<0) {
- puts ("*FAILED*");
- if (!isatty (1)) {
- AT ();
- printf (" Cannot close dataset.\n");
- }
- goto error;
- }
-
- /*
- * Try opening a non-existent dataset. This should fail since new datasets
- * cannot be created with this function.
- */
- dataset = H5Dopen (file, "does_not_exist");
- if (dataset>=0) {
- puts ("*FAILED*");
- if (!isatty (1)) {
- AT ();
- printf (" Opened a non-existent dataset.\n");
- }
- goto error;
- }
-
- /*
- * Create a new dataset that uses chunked storage instead of the default
- * layout.
- */
- create_parms = H5Ccreate (H5C_DATASET_CREATE);
- assert (create_parms>=0);
- csize[0] = 5;
- csize[1] = 100;
- status = H5Cset_chunk (create_parms, 2, csize);
- assert (status>=0);
-
- dataset = H5Dcreate (file, DSET_CHUNKED_NAME, H5T_NATIVE_DOUBLE, space,
- create_parms);
- if (dataset<0) {
- puts ("*FAILED*");
- if (!isatty (1)) {
- AT ();
- printf (" Could not create a chunked dataset.\n");
- }
- goto error;
- }
-
- /*
- * Close the chunked dataset.
- */
- if (H5Dclose (dataset)<0) {
- puts ("*FAILED*");
- if (!isatty (1)) {
- AT ();
- printf (" Cannot close chunked dataset.\n");
- }
- goto error;
- }
-
-
-
-
-
- puts (" PASSED");
- return SUCCEED;
-
- error:
- return FAIL;
+ hid_t dataset, space, create_parms;
+ size_t dims[2];
+ herr_t status;
+ size_t csize[2];
+
+ printf("%-70s", "Testing create/open/close");
+
+ /* Create the data space */
+ space = H5Pcreate(H5P_SIMPLE);
+ dims[0] = 256;
+ dims[1] = 512;
+ status = H5Pset_space(space, 2, dims);
+ assert(status >= 0);
+
+ /*
+ * Create a dataset using the default dataset creation properties. We're
+ * not sure what they are, so we won't check.
+ */
+ dataset = H5Dcreate(file, DSET_DEFAULT_NAME, H5T_NATIVE_DOUBLE, space,
+ H5C_DEFAULT);
+ if (dataset < 0) {
+ puts("*FAILED*");
+ if (!isatty(1)) {
+ AT();
+ printf(" Cannot create initial dataset.\n");
+ }
+ goto error;
+ }
+ /* Close the dataset */
+ if (H5Dclose(dataset) < 0) {
+ puts("*FAILED*");
+ if (!isatty(1)) {
+ AT();
+ printf(" Cannot close initial dataset.\n");
+ }
+ goto error;
+ }
+ /*
+ * Try creating a dataset that already exists. This should fail since a
+ * dataset can only be created once.
+ */
+ dataset = H5Dcreate(file, DSET_DEFAULT_NAME, H5T_NATIVE_DOUBLE, space,
+ H5C_DEFAULT);
+ if (dataset >= 0) {
+ puts("*FAILED*");
+ if (!isatty(1)) {
+ AT();
+ printf(" Library allowed overwrite of existing dataset.\n");
+ }
+ goto error;
+ }
+ /*
+ * Open the dataset we created above and then close it. This is how
+ * existing datasets are accessed.
+ */
+ dataset = H5Dopen(file, DSET_DEFAULT_NAME);
+ if (dataset < 0) {
+ puts("*FAILED*");
+ if (!isatty(1)) {
+ AT();
+ printf(" Cannot open dataset `%s'.\n", DSET_DEFAULT_NAME);
+ }
+ goto error;
+ }
+ if (H5Dclose(dataset) < 0) {
+ puts("*FAILED*");
+ if (!isatty(1)) {
+ AT();
+ printf(" Cannot close dataset.\n");
+ }
+ goto error;
+ }
+ /*
+ * Try opening a non-existent dataset. This should fail since new datasets
+ * cannot be created with this function.
+ */
+ dataset = H5Dopen(file, "does_not_exist");
+ if (dataset >= 0) {
+ puts("*FAILED*");
+ if (!isatty(1)) {
+ AT();
+ printf(" Opened a non-existent dataset.\n");
+ }
+ goto error;
+ }
+ /*
+ * Create a new dataset that uses chunked storage instead of the default
+ * layout.
+ */
+ create_parms = H5Ccreate(H5C_DATASET_CREATE);
+ assert(create_parms >= 0);
+ csize[0] = 5;
+ csize[1] = 100;
+ status = H5Cset_chunk(create_parms, 2, csize);
+ assert(status >= 0);
+
+ dataset = H5Dcreate(file, DSET_CHUNKED_NAME, H5T_NATIVE_DOUBLE, space,
+ create_parms);
+ if (dataset < 0) {
+ puts("*FAILED*");
+ if (!isatty(1)) {
+ AT();
+ printf(" Could not create a chunked dataset.\n");
+ }
+ goto error;
+ }
+ /*
+ * Close the chunked dataset.
+ */
+ if (H5Dclose(dataset) < 0) {
+ puts("*FAILED*");
+ if (!isatty(1)) {
+ AT();
+ printf(" Cannot close chunked dataset.\n");
+ }
+ goto error;
+ }
+ puts(" PASSED");
+ return SUCCEED;
+
+ error:
+ return FAIL;
}
-
-
/*-------------------------------------------------------------------------
- * Function: test_simple_io
+ * Function: test_simple_io
*
- * Purpose: Tests simple I/O. That is, reading and writing a complete
- * multi-dimensional array without data type or data space
- * conversions, without compression, and stored contiguously.
+ * Purpose: Tests simple I/O. That is, reading and writing a complete
+ * multi-dimensional array without data type or data space
+ * conversions, without compression, and stored contiguously.
*
- * Return: Success: SUCCEED
+ * Return: Success: SUCCEED
*
- * Failure: FAIL
+ * Failure: FAIL
*
- * Programmer: Robb Matzke
+ * Programmer: Robb Matzke
* Wednesday, December 10, 1997
*
* Modifications:
@@ -201,94 +186,91 @@ test_create (hid_t file)
*-------------------------------------------------------------------------
*/
static herr_t
-test_simple_io (hid_t file)
+test_simple_io(hid_t file)
{
- hid_t dataset, space;
- herr_t status;
- int points[100][200], check[100][200];
- int i, j, n;
- size_t dims[2];
-
- printf ("%-70s", "Testing simple I/O");
-
- /* Initialize the dataset */
- for (i=n=0; i<100; i++) {
- for (j=0; j<100; j++) {
- points[i][j] = n++;
- }
- }
-
- /* Create the data space */
- space = H5Pcreate (H5P_SIMPLE);
- dims[0] = 100;
- dims[1] = 200;
- status = H5Pset_space (space, 2, dims);
- assert (status>=0);
-
- /* Create the dataset */
- dataset = H5Dcreate (file, DSET_SIMPLE_IO_NAME, H5T_NATIVE_INT, space,
- H5C_DEFAULT);
- assert (dataset>=0);
-
- /* Write the data to the dataset */
- status = H5Dwrite (dataset, H5T_NATIVE_INT, H5P_ALL, H5P_ALL,
- H5C_DEFAULT, points);
- if (status<0) {
- puts ("*FAILED*");
- if (!isatty (1)) {
- AT ();
- printf (" H5Dwrite() failed\n");
- }
- goto error;
- }
-
- /* Read the dataset back */
- status = H5Dread (dataset, H5T_NATIVE_INT, H5P_ALL, H5P_ALL,
- H5C_DEFAULT, check);
- if (status<0) {
- puts ("*FAILED*");
- if (!isatty (1)) {
- AT ();
- printf (" H5Dread() failed\n");
- }
- goto error;
- }
-
- /* Check that the values read are the same as the values written */
- for (i=0; i<100; i++) {
- for (j=0; j<200; j++) {
- if (points[i][j]!=check[i][j]) {
- puts ("*FAILED*");
- if (!isatty (1)) {
- AT ();
- printf (" Read different values than written.\n");
- printf (" At index %d,%d\n", i, j);
- }
- goto error;
- }
- }
- }
-
- H5Dclose (dataset);
-
- puts (" PASSED");
- return SUCCEED;
-
- error:
- return FAIL;
+ hid_t dataset, space;
+ herr_t status;
+ int points[100][200], check[100][200];
+ int i, j, n;
+ size_t dims[2];
+
+ printf("%-70s", "Testing simple I/O");
+
+ /* Initialize the dataset */
+ for (i = n = 0; i < 100; i++) {
+ for (j = 0; j < 100; j++) {
+ points[i][j] = n++;
+ }
+ }
+
+ /* Create the data space */
+ space = H5Pcreate(H5P_SIMPLE);
+ dims[0] = 100;
+ dims[1] = 200;
+ status = H5Pset_space(space, 2, dims);
+ assert(status >= 0);
+
+ /* Create the dataset */
+ dataset = H5Dcreate(file, DSET_SIMPLE_IO_NAME, H5T_NATIVE_INT, space,
+ H5C_DEFAULT);
+ assert(dataset >= 0);
+
+ /* Write the data to the dataset */
+ status = H5Dwrite(dataset, H5T_NATIVE_INT, H5P_ALL, H5P_ALL,
+ H5C_DEFAULT, points);
+ if (status < 0) {
+ puts("*FAILED*");
+ if (!isatty(1)) {
+ AT();
+ printf(" H5Dwrite() failed\n");
+ }
+ goto error;
+ }
+ /* Read the dataset back */
+ status = H5Dread(dataset, H5T_NATIVE_INT, H5P_ALL, H5P_ALL,
+ H5C_DEFAULT, check);
+ if (status < 0) {
+ puts("*FAILED*");
+ if (!isatty(1)) {
+ AT();
+ printf(" H5Dread() failed\n");
+ }
+ goto error;
+ }
+ /* Check that the values read are the same as the values written */
+ for (i = 0; i < 100; i++) {
+ for (j = 0; j < 200; j++) {
+ if (points[i][j] != check[i][j]) {
+ puts("*FAILED*");
+ if (!isatty(1)) {
+ AT();
+ printf(" Read different values than written.\n");
+ printf(" At index %d,%d\n", i, j);
+ }
+ goto error;
+ }
+ }
+ }
+
+ H5Dclose(dataset);
+
+ puts(" PASSED");
+ return SUCCEED;
+
+ error:
+ return FAIL;
}
-
/*-------------------------------------------------------------------------
- * Function: test_tconv
+ * Function: test_tconv
*
- * Purpose: Test some simple data type conversion stuff.
+ * Purpose: Test some simple data type conversion stuff.
*
- * Return: Success: SUCCEED
+ * Return: Success: SUCCEED
*
- * Failure: FAIL
+ * Failure: FAIL
*
- * Programmer: Robb Matzke
+ * Programmer: Robb Matzke
* Wednesday, January 14, 1998
*
* Modifications:
@@ -296,83 +278,81 @@ test_simple_io (hid_t file)
*-------------------------------------------------------------------------
*/
static herr_t
-test_tconv (hid_t file)
+test_tconv(hid_t file)
{
- uint8 out[4*1000000];
- uint8 in[4*1000000];
- intn i;
- size_t dims[1];
- hid_t space, dataset, type;
- herr_t status;
-
- printf ("%-70s", "Testing data type conversion");
-
- /* Initialize the dataset */
- for (i=0; i<1000000; i++) ((int32*)out)[i] = 0x11223344;
-
- /* Create the data space */
- space = H5Pcreate (H5P_SIMPLE);
- assert (space>=0);
- dims[0] = 1000000;
- status = H5Pset_space (space, 1, dims);
- assert (status>=0);
-
- /* Create the data set */
- dataset = H5Dcreate (file, DSET_TCONV_NAME, H5T_NATIVE_INT32, space,
- H5C_DEFAULT);
- assert (dataset>=0);
-
- /* Write the data to the dataset */
- status = H5Dwrite (dataset, H5T_NATIVE_INT32, H5P_ALL, H5P_ALL,
- H5C_DEFAULT, out);
- assert (status>=0);
-
- /* Create a new type with the opposite byte order */
- type = H5Tcopy (H5T_NATIVE_INT32);
- switch (H5Tget_order (type)) {
- case H5T_ORDER_BE:
- H5Tset_order (type, H5T_ORDER_LE);
- break;
- case H5T_ORDER_LE:
- H5Tset_order (type, H5T_ORDER_BE);
- break;
- default:
- assert ("funny byte order" && 0);
- break;
- }
-
- /* Read data with byte order conversion */
- status = H5Dread (dataset, type, H5P_ALL, H5P_ALL, H5C_DEFAULT, in);
- assert (status>=0);
-
- /* Check */
- for (i=0; i<1000000; i++) {
- assert (in[4*i+0] == out[4*i+3]);
- assert (in[4*i+1] == out[4*i+2]);
- assert (in[4*i+2] == out[4*i+1]);
- assert (in[4*i+3] == out[4*i+0]);
- }
-
- H5Dclose (dataset);
- H5Tclose (type);
-
- puts (" PASSED");
- return SUCCEED;
+ uint8 out[4 * 1000000];
+ uint8 in[4 * 1000000];
+ intn i;
+ size_t dims[1];
+ hid_t space, dataset, type;
+ herr_t status;
+
+ printf("%-70s", "Testing data type conversion");
+
+ /* Initialize the dataset */
+ for (i = 0; i < 1000000; i++)
+ ((int32 *) out)[i] = 0x11223344;
+
+ /* Create the data space */
+ space = H5Pcreate(H5P_SIMPLE);
+ assert(space >= 0);
+ dims[0] = 1000000;
+ status = H5Pset_space(space, 1, dims);
+ assert(status >= 0);
+
+ /* Create the data set */
+ dataset = H5Dcreate(file, DSET_TCONV_NAME, H5T_NATIVE_INT32, space,
+ H5C_DEFAULT);
+ assert(dataset >= 0);
+
+ /* Write the data to the dataset */
+ status = H5Dwrite(dataset, H5T_NATIVE_INT32, H5P_ALL, H5P_ALL,
+ H5C_DEFAULT, out);
+ assert(status >= 0);
+
+ /* Create a new type with the opposite byte order */
+ type = H5Tcopy(H5T_NATIVE_INT32);
+ switch (H5Tget_order(type)) {
+ case H5T_ORDER_BE:
+ H5Tset_order(type, H5T_ORDER_LE);
+ break;
+ case H5T_ORDER_LE:
+ H5Tset_order(type, H5T_ORDER_BE);
+ break;
+ default:
+ assert("funny byte order" && 0);
+ break;
+ }
+
+ /* Read data with byte order conversion */
+ status = H5Dread(dataset, type, H5P_ALL, H5P_ALL, H5C_DEFAULT, in);
+ assert(status >= 0);
+
+ /* Check */
+ for (i = 0; i < 1000000; i++) {
+ assert(in[4 * i + 0] == out[4 * i + 3]);
+ assert(in[4 * i + 1] == out[4 * i + 2]);
+ assert(in[4 * i + 2] == out[4 * i + 1]);
+ assert(in[4 * i + 3] == out[4 * i + 0]);
+ }
+
+ H5Dclose(dataset);
+ H5Tclose(type);
+
+ puts(" PASSED");
+ return SUCCEED;
}
-
-
-
/*-------------------------------------------------------------------------
- * Function: main
+ * Function: main
*
- * Purpose: Tests the dataset interface (H5D)
+ * Purpose: Tests the dataset interface (H5D)
*
- * Return: Success: exit(0)
+ * Return: Success: exit(0)
*
- * Failure: exit(1)
+ * Failure: exit(1)
*
- * Programmer: Robb Matzke
+ * Programmer: Robb Matzke
* Tuesday, December 9, 1997
*
* Modifications:
@@ -380,38 +360,36 @@ test_tconv (hid_t file)
*-------------------------------------------------------------------------
*/
int
-main (void)
+main(void)
{
- hid_t file;
- herr_t status;
- intn nerrors = 0;
-
-
- unlink ("dataset.h5");
- file = H5Fcreate ("dataset.h5", H5ACC_DEFAULT, H5C_DEFAULT, H5C_DEFAULT);
- assert (file>=0);
-
- status = test_create (file);
- nerrors += status<0 ? 1 : 0;
-
- status = test_simple_io (file);
- nerrors += status<0 ? 1 : 0;
-
- status = test_tconv (file);
- nerrors += status<0 ? 1 : 0;
-
- status = H5Fclose (file);
-
- if (nerrors) {
- printf ("***** %d DATASET TEST%s FAILED! *****\n",
- nerrors, 1==nerrors?"":"S");
- if (isatty (1)) {
- printf ("(Redirect output to a pager or a file to see debug "
- "output)\n");
- }
- exit (1);
- }
-
- printf ("All dataset tests passed.\n");
- exit (0);
+ hid_t file;
+ herr_t status;
+ intn nerrors = 0;
+
+ unlink("dataset.h5");
+ file = H5Fcreate("dataset.h5", H5ACC_DEFAULT, H5C_DEFAULT, H5C_DEFAULT);
+ assert(file >= 0);
+
+ status = test_create(file);
+ nerrors += status < 0 ? 1 : 0;
+
+ status = test_simple_io(file);
+ nerrors += status < 0 ? 1 : 0;
+
+ status = test_tconv(file);
+ nerrors += status < 0 ? 1 : 0;
+
+ status = H5Fclose(file);
+
+ if (nerrors) {
+ printf("***** %d DATASET TEST%s FAILED! *****\n",
+ nerrors, 1 == nerrors ? "" : "S");
+ if (isatty(1)) {
+ printf("(Redirect output to a pager or a file to see debug "
+ "output)\n");
+ }
+ exit(1);
+ }
+ printf("All dataset tests passed.\n");
+ exit(0);
}