summaryrefslogtreecommitdiffstats
path: root/test/dtypes.c
diff options
context:
space:
mode:
Diffstat (limited to 'test/dtypes.c')
-rw-r--r--test/dtypes.c643
1 files changed, 229 insertions, 414 deletions
diff --git a/test/dtypes.c b/test/dtypes.c
index 926ecfa..fef773a 100644
--- a/test/dtypes.c
+++ b/test/dtypes.c
@@ -8,49 +8,17 @@
* Purpose: Tests the data type interface (H5T)
*/
-/* See H5private.h for how to include headers */
-#undef NDEBUG
-#include <hdf5.h>
-
-#ifdef STDC_HEADERS
-# include <assert.h>
-# include <float.h>
-# include <math.h>
-# include <signal.h>
-# include <stdio.h>
-# include <stdlib.h>
-#endif
-
-#ifdef HAVE_UNISTD_H
-# include <sys/types.h>
-# include <unistd.h>
-#endif
-#ifdef _POSIX_VERSION
-# include <sys/wait.h>
-#endif
-
-#define H5T_PACKAGE
-#include <H5Tpkg.h> /*to turn off hardware conversions*/
-
-#ifndef HAVE_ATTRIBUTE
-# undef __attribute__
-# define __attribute__(X) /*void*/
-# define __unused__ /*void*/
-#else
-# define __unused__ __attribute__((unused))
-#endif
+#include <h5test.h>
#if SIZEOF_DOUBLE != SIZEOF_LONG_DOUBLE
# define USE_LDOUBLE
#endif
-#ifndef MAX
-# define MAX(X,Y) ((X)>(Y)?(X):(Y))
-# define MIN(X,Y) ((X)<(Y)?(X):(Y))
-#endif
-
-#define FILE_NAME_1 "dtypes1.h5"
-#define FILE_NAME_2 "dtypes2.h5"
+const char *FILENAME[] = {
+ "dtypes1",
+ "dtypes2",
+ NULL
+};
typedef struct complex_t {
double re;
@@ -79,10 +47,7 @@ static int noverflows_g = 0;
/* Skip overflow tests if non-zero */
static int skip_overflow_tests_g = 0;
-/*
- * If set then all known hardware conversion functions are unregistered when
- * the library is reset.
- */
+/* Don't use hardware conversions if set */
static int without_hardware_g = 0;
/*
@@ -116,11 +81,11 @@ void some_dummy_func(float x);
static void
fpe_handler(int __unused__ signo)
{
- puts(" -SKIP-");
- puts(" Test skipped due to SIGFPE.");
+ SKIPPED();
+ puts(" Test skipped due to SIGFPE.");
#ifndef HANDLE_SIGFPE
- puts(" Remaining tests could not be run.");
- puts(" Please turn off SIGFPE on overflows and try again.");
+ puts(" Remaining tests could not be run.");
+ puts(" Please turn off SIGFPE on overflows and try again.");
#endif
exit(255);
}
@@ -234,55 +199,6 @@ generates_sigfpe(void)
/*-------------------------------------------------------------------------
- * Function: cleanup
- *
- * Purpose: Removes test files
- *
- * Return: void
- *
- * Programmer: Robb Matzke
- * Thursday, June 4, 1998
- *
- * Modifications:
- *
- *-------------------------------------------------------------------------
- */
-static void
-cleanup (void)
-{
- if (!getenv ("HDF5_NOCLEANUP")) {
- remove (FILE_NAME_1);
- remove (FILE_NAME_2);
- }
-}
-
-
-/*-------------------------------------------------------------------------
- * Function: display_error_cb
- *
- * Purpose: Displays the error stack after printing "*FAILED*".
- *
- * Return: Success: 0
- *
- * Failure: -1
- *
- * Programmer: Robb Matzke
- * Wednesday, March 4, 1998
- *
- * Modifications:
- *
- *-------------------------------------------------------------------------
- */
-static herr_t
-display_error_cb (void __unused__ *client_data)
-{
- puts ("*FAILED*");
- H5Eprint (stdout);
- return 0;
-}
-
-
-/*-------------------------------------------------------------------------
* Function: reset_hdf5
*
* Purpose: Reset the hdf5 library. This causes statistics to be printed
@@ -300,80 +216,9 @@ display_error_cb (void __unused__ *client_data)
static void
reset_hdf5(void)
{
- fflush(stdout);
- fflush(stderr);
- H5close();
- H5Eset_auto (display_error_cb, NULL);
+ h5_reset();
H5Tset_overflow(overflow_handler);
-
- if (without_hardware_g) {
- H5Tunregister(H5T_conv_char_uchar);
- H5Tunregister(H5T_conv_char_short);
- H5Tunregister(H5T_conv_char_ushort);
- H5Tunregister(H5T_conv_char_int);
- H5Tunregister(H5T_conv_char_uint);
- H5Tunregister(H5T_conv_char_long);
- H5Tunregister(H5T_conv_char_ulong);
-
- H5Tunregister(H5T_conv_uchar_char);
- H5Tunregister(H5T_conv_uchar_short);
- H5Tunregister(H5T_conv_uchar_ushort);
- H5Tunregister(H5T_conv_uchar_int);
- H5Tunregister(H5T_conv_uchar_uint);
- H5Tunregister(H5T_conv_uchar_long);
- H5Tunregister(H5T_conv_uchar_ulong);
-
- H5Tunregister(H5T_conv_short_char);
- H5Tunregister(H5T_conv_short_uchar);
- H5Tunregister(H5T_conv_short_ushort);
- H5Tunregister(H5T_conv_short_int);
- H5Tunregister(H5T_conv_short_uint);
- H5Tunregister(H5T_conv_short_long);
- H5Tunregister(H5T_conv_short_ulong);
-
- H5Tunregister(H5T_conv_ushort_char);
- H5Tunregister(H5T_conv_ushort_uchar);
- H5Tunregister(H5T_conv_ushort_short);
- H5Tunregister(H5T_conv_ushort_int);
- H5Tunregister(H5T_conv_ushort_uint);
- H5Tunregister(H5T_conv_ushort_long);
- H5Tunregister(H5T_conv_ushort_ulong);
-
- H5Tunregister(H5T_conv_int_char);
- H5Tunregister(H5T_conv_int_uchar);
- H5Tunregister(H5T_conv_int_short);
- H5Tunregister(H5T_conv_int_ushort);
- H5Tunregister(H5T_conv_int_uint);
- H5Tunregister(H5T_conv_int_long);
- H5Tunregister(H5T_conv_int_ulong);
-
- H5Tunregister(H5T_conv_uint_char);
- H5Tunregister(H5T_conv_uint_uchar);
- H5Tunregister(H5T_conv_uint_short);
- H5Tunregister(H5T_conv_uint_ushort);
- H5Tunregister(H5T_conv_uint_int);
- H5Tunregister(H5T_conv_uint_long);
- H5Tunregister(H5T_conv_uint_ulong);
-
- H5Tunregister(H5T_conv_long_char);
- H5Tunregister(H5T_conv_long_uchar);
- H5Tunregister(H5T_conv_long_short);
- H5Tunregister(H5T_conv_long_ushort);
- H5Tunregister(H5T_conv_long_int);
- H5Tunregister(H5T_conv_long_uint);
- H5Tunregister(H5T_conv_long_ulong);
-
- H5Tunregister(H5T_conv_ulong_char);
- H5Tunregister(H5T_conv_ulong_uchar);
- H5Tunregister(H5T_conv_ulong_short);
- H5Tunregister(H5T_conv_ulong_ushort);
- H5Tunregister(H5T_conv_ulong_int);
- H5Tunregister(H5T_conv_ulong_uint);
- H5Tunregister(H5T_conv_ulong_long);
-
- H5Tunregister(H5T_conv_float_double);
- H5Tunregister(H5T_conv_double_float);
- }
+ if (without_hardware_g) h5_no_hwconv();
}
@@ -398,21 +243,21 @@ test_classes(void)
{
H5T_class_t tcls;
- printf("%-70s", "Testing H5Tget_class()");
+ TESTING("H5Tget_class()");
if ((tcls=H5Tget_class(H5T_NATIVE_INT))<0) goto error;
if (H5T_INTEGER!=tcls) {
- puts("*FAILED*");
- puts(" Invalid type class for H5T_NATIVE_INT");
+ FAILED();
+ puts(" Invalid type class for H5T_NATIVE_INT");
goto error;
}
if ((tcls=H5Tget_class(H5T_NATIVE_DOUBLE))<0) goto error;
if (H5T_FLOAT!=tcls) {
- puts("*FAILED*");
- puts(" Invalid type class for H5T_NATIVE_DOUBLE");
+ FAILED();
+ puts(" Invalid type class for H5T_NATIVE_DOUBLE");
goto error;
}
- puts(" PASSED");
+ PASSED();
return 0;
error:
@@ -440,22 +285,24 @@ static herr_t
test_copy(void)
{
hid_t a_copy;
+ herr_t status;
- printf("%-70s", "Testing H5Tcopy()");
+ TESTING("H5Tcopy()");
if ((a_copy = H5Tcopy(H5T_NATIVE_SHORT)) < 0) goto error;
if (H5Tclose(a_copy) < 0) goto error;
/* We should not be able to close a built-in byte */
H5E_BEGIN_TRY {
- if (H5Tclose (H5T_NATIVE_CHAR)>=0) {
- puts ("*FAILED*");
- puts (" Should not be able to close a predefined type!");
- goto error;
- }
+ status = H5Tclose (H5T_NATIVE_CHAR);
} H5E_END_TRY;
+ if (status>=0) {
+ FAILED();
+ puts (" Should not be able to close a predefined type!");
+ goto error;
+ }
- puts(" PASSED");
+ PASSED();
return 0;
error:
@@ -485,7 +332,7 @@ test_compound(void)
complex_t tmp;
hid_t complex_id;
- printf("%-70s", "Testing compound data types");
+ TESTING("compound data types");
/* Create the empty type */
if ((complex_id = H5Tcreate(H5T_COMPOUND, sizeof tmp))<0) goto error;
@@ -497,7 +344,7 @@ test_compound(void)
H5T_NATIVE_DOUBLE)<0) goto error;
if (H5Tclose (complex_id)<0) goto error;
- puts(" PASSED");
+ PASSED();
return 0;
error:
@@ -522,29 +369,37 @@ test_compound(void)
*-------------------------------------------------------------------------
*/
static herr_t
-test_transient (void)
+test_transient (hid_t fapl)
{
static hsize_t ds_size[2] = {10, 20};
hid_t file=-1, type=-1, space=-1, dset=-1, t2=-1;
+ char filename[1024];
+ herr_t status;
- printf ("%-70s", "Testing transient data types");
- if ((file=H5Fcreate (FILE_NAME_1, H5F_ACC_TRUNC|H5F_ACC_DEBUG,
- H5P_DEFAULT, H5P_DEFAULT))<0) goto error;
- space = H5Screate_simple (2, ds_size, ds_size);
+ TESTING("transient data types");
+
+ h5_fixname(FILENAME[0], fapl, filename, sizeof filename);
+ if ((file=H5Fcreate (filename, H5F_ACC_TRUNC|H5F_ACC_DEBUG,
+ H5P_DEFAULT, fapl))<0) goto error;
+ if ((space = H5Screate_simple (2, ds_size, ds_size))<0) goto error;
/* Predefined types cannot be modified or closed */
H5E_BEGIN_TRY {
- if (H5Tset_precision (H5T_NATIVE_INT, 256)>=0) {
- puts ("*FAILED*");
- puts (" Predefined types should not be modifiable!");
- goto error;
- }
- if (H5Tclose (H5T_NATIVE_INT)>=0) {
- puts ("*FAILED*");
- puts (" Predefined types should not be closable!");
- goto error;
- }
+ status = H5Tset_precision (H5T_NATIVE_INT, 256);
+ } H5E_END_TRY;
+ if (status>=0) {
+ FAILED();
+ puts (" Predefined types should not be modifiable!");
+ goto error;
+ }
+ H5E_BEGIN_TRY {
+ status = H5Tclose (H5T_NATIVE_INT);
} H5E_END_TRY;
+ if (status>=0) {
+ FAILED();
+ puts (" Predefined types should not be closable!");
+ goto error;
+ }
/* Copying a predefined type results in a modifiable copy */
if ((type=H5Tcopy (H5T_NATIVE_INT))<0) goto error;
@@ -552,29 +407,30 @@ test_transient (void)
/* It should not be possible to create an attribute for a transient type */
H5E_BEGIN_TRY {
- if (H5Acreate (type, "attr1", H5T_NATIVE_INT, space, H5P_DEFAULT)>=0) {
- puts ("*FAILED*");
- puts (" Attributes should not be allowed for transient types!");
- goto error;
- }
+ status = H5Acreate (type, "attr1", H5T_NATIVE_INT, space, H5P_DEFAULT);
} H5E_END_TRY;
+ if (status>=0) {
+ FAILED();
+ puts (" Attributes should not be allowed for transient types!");
+ goto error;
+ }
/* Create a dataset from a transient data type */
if (H5Tclose (type)<0) goto error;
if ((type = H5Tcopy (H5T_NATIVE_INT))<0) goto error;
- if ((dset=H5Dcreate (file, "dset1", type, space, H5P_DEFAULT))<0) {
+ if ((dset=H5Dcreate (file, "dset1", type, space, H5P_DEFAULT))<0)
goto error;
- }
/* The type returned from a dataset should not be modifiable */
if ((t2 = H5Dget_type (dset))<0) goto error;
H5E_BEGIN_TRY {
- if (H5Tset_precision (t2, 256)>=0) {
- puts ("*FAILED*");
- puts (" Dataset data types should not be modifiable!");
- goto error;
- }
+ status = H5Tset_precision (t2, 256);
} H5E_END_TRY;
+ if (status>=0) {
+ FAILED();
+ puts (" Dataset data types should not be modifiable!");
+ goto error;
+ }
if (H5Tclose (t2)<0) goto error;
/*
@@ -585,12 +441,13 @@ test_transient (void)
if ((dset=H5Dopen (file, "dset1"))<0) goto error;
if ((t2 = H5Dget_type (dset))<0) goto error;
H5E_BEGIN_TRY {
- if (H5Tset_precision (t2, 256)>=0) {
- puts ("*FAILED*");
- puts (" Dataset data types should not be modifiable!");
- goto error;
- }
+ status = H5Tset_precision (t2, 256);
} H5E_END_TRY;
+ if (status>=0) {
+ FAILED();
+ puts (" Dataset data types should not be modifiable!");
+ goto error;
+ }
if (H5Tclose (t2)<0) goto error;
/*
@@ -606,7 +463,7 @@ test_transient (void)
H5Fclose (file);
H5Tclose (type);
H5Sclose (space);
- puts (" PASSED");
+ PASSED();
return 0;
error:
@@ -638,54 +495,60 @@ test_transient (void)
*-------------------------------------------------------------------------
*/
static herr_t
-test_named (void)
+test_named (hid_t fapl)
{
hid_t file=-1, type=-1, space=-1, dset=-1, t2=-1, attr1=-1;
herr_t status;
static hsize_t ds_size[2] = {10, 20};
+ char filename[1024];
- printf ("%-70s", "Testing named data types");
- if ((file=H5Fcreate (FILE_NAME_2, H5F_ACC_TRUNC|H5F_ACC_DEBUG,
- H5P_DEFAULT, H5P_DEFAULT))<0) goto error;
- space = H5Screate_simple (2, ds_size, ds_size);
+ TESTING("named data types");
+
+ h5_fixname(FILENAME[1], fapl, filename, sizeof filename);
+ if ((file=H5Fcreate (filename, H5F_ACC_TRUNC|H5F_ACC_DEBUG,
+ H5P_DEFAULT, fapl))<0) goto error;
+ if ((space = H5Screate_simple (2, ds_size, ds_size))<0) goto error;
/* Predefined types cannot be committed */
H5E_BEGIN_TRY {
- if (H5Tcommit (file, "test_named_1 (should not exist)",
- H5T_NATIVE_INT)>=0) {
- puts ("*FAILED*");
- puts (" Predefined types should not be committable!");
- goto error;
- }
+ status = H5Tcommit (file, "test_named_1 (should not exist)",
+ H5T_NATIVE_INT);
} H5E_END_TRY;
+ if (status>=0) {
+ FAILED();
+ puts (" Predefined types should not be committable!");
+ goto error;
+ }
/* Copy a predefined data type and commit the copy */
if ((type = H5Tcopy (H5T_NATIVE_INT))<0) goto error;
if (H5Tcommit (file, "native-int", type)<0) goto error;
if ((status=H5Tcommitted (type))<0) goto error;
if (0==status) {
- puts ("*FAILED*");
- puts (" H5Tcommitted() returned false!");
+ FAILED();
+ puts (" H5Tcommitted() returned false!");
goto error;
}
/* We should not be able to modify a type after it has been committed. */
H5E_BEGIN_TRY {
- if (H5Tset_precision (type, 256)>=0) {
- puts ("*FAILED*");
- puts (" Committed type is not constant!");
- goto error;
- }
+ status = H5Tset_precision (type, 256);
} H5E_END_TRY;
+ if (status>=0) {
+ FAILED();
+ puts (" Committed type is not constant!");
+ goto error;
+ }
/* We should not be able to re-commit a committed type */
H5E_BEGIN_TRY {
- if (H5Tcommit (file, "test_named_2 (should not exist)", type)>=0) {
- puts ("*FAILED*");
- puts (" Committed types should not be recommitted!");
- goto error;
- }
+ status = H5Tcommit(file, "test_named_2 (should not exist)", type);
} H5E_END_TRY;
+ if (status>=0) {
+ FAILED();
+ puts (" Committed types should not be recommitted!");
+ goto error;
+ }
/* It should be possible to define an attribute for the named type */
if ((attr1=H5Acreate (type, "attr1", H5T_NATIVE_INT, space,
@@ -699,8 +562,8 @@ test_named (void)
if ((t2 = H5Tcopy (type))<0) goto error;
if ((status=H5Tcommitted (t2))<0) goto error;
if (status) {
- puts ("*FAILED*");
- puts (" Copying a named type should result in a transient type!");
+ FAILED();
+ puts (" Copying a named type should result in a transient type!");
goto error;
}
if (H5Tset_precision (t2, 256)<0) goto error;
@@ -713,8 +576,8 @@ test_named (void)
if ((type=H5Topen (file, "native-int"))<0) goto error;
if ((status=H5Tcommitted (type))<0) goto error;
if (!status) {
- puts ("*FAILED*");
- puts (" Opened named types should be named types!");
+ FAILED();
+ puts (" Opened named types should be named types!");
goto error;
}
@@ -727,8 +590,8 @@ test_named (void)
if ((t2 = H5Dget_type (dset))<0) goto error;
if ((status=H5Tcommitted (t2))<0) goto error;
if (!status) {
- puts ("*FAILED*");
- puts (" Dataset type should be a named type!");
+ FAILED();
+ puts (" Dataset type should be a named type!");
goto error;
}
@@ -741,8 +604,8 @@ test_named (void)
if ((t2 = H5Dget_type (dset))<0) goto error;
if ((status=H5Tcommitted (t2))<0) goto error;
if (!status) {
- puts ("*FAILED*");
- puts (" Dataset type should be a named type!");
+ FAILED();
+ puts (" Dataset type should be a named type!");
goto error;
}
@@ -762,8 +625,8 @@ test_named (void)
if ((t2 = H5Dget_type (dset))<0) goto error;
if ((status=H5Tcommitted (t2))<0) goto error;
if (!status) {
- puts ("*FAILED*");
- puts (" Dataset type should be a named type!");
+ FAILED();
+ puts (" Dataset type should be a named type!");
goto error;
}
if (H5Tclose (t2)<0) goto error;
@@ -781,7 +644,7 @@ test_named (void)
if (H5Tclose (type)<0) goto error;
if (H5Sclose (space)<0) goto error;
if (H5Fclose (file)<0) goto error;
- puts (" PASSED");
+ PASSED();
return 0;
error:
@@ -846,8 +709,7 @@ test_conv_str_1(void)
char *buf=NULL;
hid_t src_type, dst_type;
- printf("%-70s", "Testing string conversions");
- fflush(stdout);
+ TESTING("string conversions");
/*
* Convert a null-terminated string to a shorter and longer null
@@ -859,19 +721,19 @@ test_conv_str_1(void)
memcpy(buf, "abcdefghi\0abcdefghi\0", 20);
if (H5Tconvert(src_type, dst_type, 2, buf, NULL)<0) goto error;
if (memcmp(buf, "abcd\0abcd\0abcdefghi\0", 20)) {
- puts("*FAILED*");
- puts(" Truncated C-string test failed");
+ FAILED();
+ puts(" Truncated C-string test failed");
goto error;
}
if (H5Tconvert(dst_type, src_type, 2, buf, NULL)<0) goto error;
if (memcmp(buf, "abcd\0\0\0\0\0\0abcd\0\0\0\0\0\0", 20)) {
- puts("*FAILED*");
- puts(" Extended C-string test failed");
+ FAILED();
+ puts(" Extended C-string test failed");
goto error;
}
free(buf);
- H5Tclose(src_type);
- H5Tclose(dst_type);
+ if (H5Tclose(src_type)<0) goto error;
+ if (H5Tclose(dst_type)<0) goto error;
/*
* Convert a null padded string to a shorter and then longer string.
@@ -882,19 +744,19 @@ test_conv_str_1(void)
memcpy(buf, "abcdefghijabcdefghij", 20);
if (H5Tconvert(src_type, dst_type, 2, buf, NULL)<0) goto error;
if (memcmp(buf, "abcdeabcdeabcdefghij", 20)) {
- puts("*FAILED*");
- puts(" Truncated C buffer test failed");
+ FAILED();
+ puts(" Truncated C buffer test failed");
goto error;
}
if (H5Tconvert(dst_type, src_type, 2, buf, NULL)<0) goto error;
if (memcmp(buf, "abcde\0\0\0\0\0abcde\0\0\0\0\0", 20)) {
- puts("*FAILED*");
- puts(" Extended C buffer test failed");
+ FAILED();
+ puts(" Extended C buffer test failed");
goto error;
}
free(buf);
- H5Tclose(src_type);
- H5Tclose(dst_type);
+ if (H5Tclose(src_type)<0) goto error;
+ if (H5Tclose(dst_type)<0) goto error;
/*
* Convert a space-padded string to a shorter and then longer string.
@@ -905,19 +767,19 @@ test_conv_str_1(void)
memcpy(buf, "abcdefghijabcdefghij", 20);
if (H5Tconvert(src_type, dst_type, 2, buf, NULL)<0) goto error;
if (memcmp(buf, "abcdeabcdeabcdefghij", 20)) {
- puts("*FAILED*");
- puts(" Truncated Fortran-string test failed");
+ FAILED();
+ puts(" Truncated Fortran-string test failed");
goto error;
}
if (H5Tconvert(dst_type, src_type, 2, buf, NULL)<0) goto error;
if (memcmp(buf, "abcde abcde ", 20)) {
- puts("*FAILED*");
- puts(" Extended Fortran-string test failed");
+ FAILED();
+ puts(" Extended Fortran-string test failed");
goto error;
}
free(buf);
- H5Tclose(src_type);
- H5Tclose(dst_type);
+ if (H5Tclose(src_type)<0) goto error;
+ if (H5Tclose(dst_type)<0) goto error;
/*
* What happens if a null-terminated string is not null terminated? If
@@ -931,8 +793,8 @@ test_conv_str_1(void)
memcpy(buf, "abcdefghijabcdefghij", 20);
if (H5Tconvert(src_type, dst_type, 2, buf, NULL)<0) goto error;
if (memcmp(buf, "abcdefghijabcdefghij", 20)) {
- puts("*FAILED*");
- puts(" Non-terminated string test 1");
+ FAILED();
+ puts(" Non-terminated string test 1");
goto error;
}
H5Tclose(dst_type);
@@ -940,20 +802,20 @@ test_conv_str_1(void)
memcpy(buf, "abcdefghijabcdefghij", 20);
if (H5Tconvert(src_type, dst_type, 2, buf, NULL)<0) goto error;
if (memcmp(buf, "abcd\0abcd\0abcdefghij", 20)) {
- puts("*FAILED*");
- puts(" Non-terminated string test 2");
+ FAILED();
+ puts(" Non-terminated string test 2");
goto error;
}
memcpy(buf, "abcdeabcdexxxxxxxxxx", 20);
if (H5Tconvert(dst_type, src_type, 2, buf, NULL)<0) goto error;
if (memcmp(buf, "abcde\0\0\0\0\0abcde\0\0\0\0\0", 20)) {
- puts("*FAILED*");
- puts(" Non-terminated string test 2");
+ FAILED();
+ puts(" Non-terminated string test 2");
goto error;
}
free(buf);
- H5Tclose(src_type);
- H5Tclose(dst_type);
+ if (H5Tclose(src_type)<0) goto error;
+ if (H5Tclose(dst_type)<0) goto error;
/*
* Test C string to Fortran and vice versa.
@@ -964,51 +826,51 @@ test_conv_str_1(void)
memcpy(buf, "abcdefghi\0abcdefghi\0", 20);
if (H5Tconvert(src_type, dst_type, 2, buf, NULL)<0) goto error;
if (memcmp(buf, "abcdefghi abcdefghi ", 20)) {
- puts("*FAILED*");
- puts(" C string to Fortran test 1");
+ FAILED();
+ puts(" C string to Fortran test 1");
goto error;
}
if (H5Tconvert(dst_type, src_type, 2, buf, NULL)<0) goto error;
if (memcmp(buf, "abcdefghi\0abcdefghi\0", 20)) {
- puts("*FAILED*");
- puts(" Fortran to C string test 1");
+ FAILED();
+ puts(" Fortran to C string test 1");
goto error;
}
- H5Tclose(dst_type);
+ if (H5Tclose(dst_type)<0) goto error;
dst_type = mkstr(5, H5T_STR_SPACEPAD);
memcpy(buf, "abcdefgh\0\0abcdefgh\0\0", 20);
if (H5Tconvert(src_type, dst_type, 2, buf, NULL)<0) goto error;
if (memcmp(buf, "abcdeabcdeabcdefgh\0\0", 20)) {
- puts("*FAILED*");
- puts(" C string to Fortran test 2");
+ FAILED();
+ puts(" C string to Fortran test 2");
goto error;
}
if (H5Tconvert(dst_type, src_type, 2, buf, NULL)<0) goto error;
if (memcmp(buf, "abcde\0\0\0\0\0abcde\0\0\0\0\0", 20)) {
- puts("*FAILED*");
- puts(" Fortran to C string test 2");
+ FAILED();
+ puts(" Fortran to C string test 2");
goto error;
}
- H5Tclose(src_type);
- H5Tclose(dst_type);
+ if (H5Tclose(src_type)<0) goto error;
+ if (H5Tclose(dst_type)<0) goto error;
src_type = mkstr(5, H5T_STR_NULLTERM);
dst_type = mkstr(10, H5T_STR_SPACEPAD);
memcpy(buf, "abcd\0abcd\0xxxxxxxxxx", 20);
if (H5Tconvert(src_type, dst_type, 2, buf, NULL)<0) goto error;
if (memcmp(buf, "abcd abcd ", 20)) {
- puts("*FAILED*");
- puts(" C string to Fortran test 3");
+ FAILED();
+ puts(" C string to Fortran test 3");
goto error;
}
if (H5Tconvert(dst_type, src_type, 2, buf, NULL)<0) goto error;
if (memcmp(buf, "abcd\0abcd\0abcd ", 20)) {
- puts("*FAILED*");
- puts(" Fortran to C string test 3");
+ FAILED();
+ puts(" Fortran to C string test 3");
goto error;
}
free(buf);
- H5Tclose(src_type);
- H5Tclose(dst_type);
+ if (H5Tclose(src_type)<0) goto error;
+ if (H5Tclose(dst_type)<0) goto error;
/*
* Test C buffer to Fortran and vice versa.
@@ -1019,53 +881,53 @@ test_conv_str_1(void)
memcpy(buf, "abcdefghijabcdefghij", 20);
if (H5Tconvert(src_type, dst_type, 2, buf, NULL)<0) goto error;
if (memcmp(buf, "abcdefghijabcdefghij", 20)) {
- puts("*FAILED*");
- puts(" C buffer to Fortran test 1");
+ FAILED();
+ puts(" C buffer to Fortran test 1");
goto error;
}
if (H5Tconvert(dst_type, src_type, 2, buf, NULL)<0) goto error;
if (memcmp(buf, "abcdefghijabcdefghij", 20)) {
- puts("*FAILED*");
- puts(" Fortran to C buffer test 1");
+ FAILED();
+ puts(" Fortran to C buffer test 1");
goto error;
}
- H5Tclose(dst_type);
+ if (H5Tclose(dst_type)<0) goto error;
dst_type = mkstr(5, H5T_STR_SPACEPAD);
memcpy(buf, "abcdefgh\0\0abcdefgh\0\0", 20);
if (H5Tconvert(src_type, dst_type, 2, buf, NULL)<0) goto error;
if (memcmp(buf, "abcdeabcdeabcdefgh\0\0", 20)) {
- puts("*FAILED*");
- puts(" C buffer to Fortran test 2");
+ FAILED();
+ puts(" C buffer to Fortran test 2");
goto error;
}
if (H5Tconvert(dst_type, src_type, 2, buf, NULL)<0) goto error;
if (memcmp(buf, "abcde\0\0\0\0\0abcde\0\0\0\0\0", 20)) {
- puts("*FAILED*");
- puts(" Fortran to C buffer test 2");
+ FAILED();
+ puts(" Fortran to C buffer test 2");
goto error;
}
- H5Tclose(src_type);
- H5Tclose(dst_type);
+ if (H5Tclose(src_type)<0) goto error;
+ if (H5Tclose(dst_type)<0) goto error;
src_type = mkstr(5, H5T_STR_NULLPAD);
dst_type = mkstr(10, H5T_STR_SPACEPAD);
memcpy(buf, "abcd\0abcd\0xxxxxxxxxx", 20);
if (H5Tconvert(src_type, dst_type, 2, buf, NULL)<0) goto error;
if (memcmp(buf, "abcd abcd ", 20)) {
- puts("*FAILED*");
- puts(" C buffer to Fortran test 3");
+ FAILED();
+ puts(" C buffer to Fortran test 3");
goto error;
}
if (H5Tconvert(dst_type, src_type, 2, buf, NULL)<0) goto error;
if (memcmp(buf, "abcd\0abcd\0abcd ", 20)) {
- puts("*FAILED*");
- puts(" Fortran to C buffer test 3");
+ FAILED();
+ puts(" Fortran to C buffer test 3");
goto error;
}
free(buf);
- H5Tclose(src_type);
- H5Tclose(dst_type);
+ if (H5Tclose(src_type)<0) goto error;
+ if (H5Tclose(dst_type)<0) goto error;
- puts(" PASSED");
+ PASSED();
reset_hdf5();
return 0;
@@ -1120,10 +982,9 @@ test_conv_str_2(void)
(int)(i+1), (int)ntests);
printf("%-70s", s);
fflush(stdout);
-
if (H5Tconvert(c_type, f_type, nelmts, buf, NULL)<0) goto error;
if (H5Tconvert(f_type, c_type, nelmts, buf, NULL)<0) goto error;
- puts(" PASSED");
+ PASSED();
}
ret_value = 0;
@@ -1155,19 +1016,13 @@ test_conv_str_2(void)
static herr_t
test_conv_int (void)
{
- const size_t ntests=100;
- const size_t nelmts=2000;
-
- size_t i, j;
- void *buf=NULL, *saved=NULL;
unsigned char byte[4];
/*---------------------------------------------------------------------
* Test some specific overflow/underflow cases.
*---------------------------------------------------------------------
*/
- printf ("%-70s", "Testing integer overflow conversions");
- fflush (stdout);
+ TESTING("integer overflow conversions");
/* (unsigned)0x80000000 -> (unsigned)0xffff */
byte[0] = byte[1] = byte[2] = 0;
@@ -1176,10 +1031,10 @@ test_conv_int (void)
goto error;
}
if (byte[0]!=0xff || byte[1]!=0xff) {
- puts ("*FAILED*");
- printf(" src: 0x80000000 unsigned\n");
- printf(" dst: 0x%02x%02x unsigned\n", byte[1], byte[0]);
- printf(" ans: 0xffff unsigned\n");
+ FAILED();
+ printf(" src: 0x80000000 unsigned\n");
+ printf(" dst: 0x%02x%02x unsigned\n", byte[1], byte[0]);
+ printf(" ans: 0xffff unsigned\n");
goto error;
}
@@ -1189,10 +1044,10 @@ test_conv_int (void)
goto error;
}
if (byte[0]!=0xff || byte[1]!=0x7f) {
- puts ("*FAILED*");
- printf(" src: 0xffffffff unsigned\n");
- printf(" dst: 0x%02x%02x signed\n", byte[1], byte[0]);
- printf(" ans: 0x7fff signed\n");
+ FAILED();
+ printf(" src: 0xffffffff unsigned\n");
+ printf(" dst: 0x%02x%02x signed\n", byte[1], byte[0]);
+ printf(" ans: 0x7fff signed\n");
goto error;
}
@@ -1202,10 +1057,10 @@ test_conv_int (void)
goto error;
}
if (byte[0]!=0x00 || byte[1]!=0x00) {
- puts ("*FAILED*");
- printf(" src: 0xffffffff signed\n");
- printf(" dst: 0x%02x%02x unsigned\n", byte[1], byte[0]);
- printf(" ans: 0x0000 unsigned\n");
+ FAILED();
+ printf(" src: 0xffffffff signed\n");
+ printf(" dst: 0x%02x%02x unsigned\n", byte[1], byte[0]);
+ printf(" ans: 0x0000 unsigned\n");
goto error;
}
@@ -1216,10 +1071,10 @@ test_conv_int (void)
goto error;
}
if (byte[0]!=0xff || byte[1]!=0xff) {
- puts ("*FAILED*");
- printf(" src: 0x7fffffff signed\n");
- printf(" dst: 0x%02x%02x unsigned\n", byte[1], byte[0]);
- printf(" ans: 0xffff unsigned\n");
+ FAILED();
+ printf(" src: 0x7fffffff signed\n");
+ printf(" dst: 0x%02x%02x unsigned\n", byte[1], byte[0]);
+ printf(" ans: 0xffff unsigned\n");
goto error;
}
@@ -1230,10 +1085,10 @@ test_conv_int (void)
goto error;
}
if (byte[0]!=0xff || byte[1]!=0x7f) {
- puts ("*FAILED*");
- printf(" src: 0x7fffffff signed\n");
- printf(" dst: 0x%02x%02x signed\n", byte[1], byte[0]);
- printf(" ans: 0x7fff signed\n");
+ FAILED();
+ printf(" src: 0x7fffffff signed\n");
+ printf(" dst: 0x%02x%02x signed\n", byte[1], byte[0]);
+ printf(" ans: 0x7fff signed\n");
goto error;
}
@@ -1244,60 +1099,18 @@ test_conv_int (void)
goto error;
}
if (byte[0]!=0x00 || byte[1]!=0x80) {
- puts ("*FAILED*");
- printf(" src: 0xbfffffff signed\n");
- printf(" dst: 0x%02x%02x signed\n", byte[1], byte[0]);
- printf(" ans: 0x8000 signed\n");
+ FAILED();
+ printf(" src: 0xbfffffff signed\n");
+ printf(" dst: 0x%02x%02x signed\n", byte[1], byte[0]);
+ printf(" ans: 0x8000 signed\n");
goto error;
}
- puts (" PASSED");
-
-
- /*-----------------------------------------------------------------------
- * Test random cases.
- *-----------------------------------------------------------------------
- */
- printf ("%-70s", "Testing random integer conversions");
- fflush (stdout);
-
- /* Allocate buffers */
- buf = malloc (nelmts*8);
- saved = malloc (nelmts*8);
-
- for (i=0; i<ntests; i++) {
-
- /* Start with NATIVE_INT */
- for (j=0; j<nelmts; j++) ((int*)buf)[j] = rand();
- memcpy (saved, buf, nelmts*sizeof(int));
-
- /* Convert there and back */
- if (H5Tconvert (H5T_NATIVE_INT, H5T_STD_I64LE, nelmts, buf,
- NULL)<0) goto error;
- if (H5Tconvert (H5T_STD_I64LE, H5T_NATIVE_INT, nelmts, buf,
- NULL)<0) goto error;
-
- /* Check results */
- for (j=0; j<nelmts; j++) {
- if (((int*)buf)[j]!=((int*)saved)[j]) {
- puts ("*FAILED*");
- printf (" Test %lu, elmt %lu, got %d instead of %d\n",
- (unsigned long)i, (unsigned long)j,
- ((int*)buf)[j], ((int*)saved)[j]);
- goto error;
- }
- }
- }
-
- puts (" PASSED");
- free (buf);
- free (saved);
+ PASSED();
reset_hdf5();
return 0;
error:
- if (buf) free (buf);
- if (saved) free (saved);
reset_hdf5();
return -1;
}
@@ -1421,8 +1234,8 @@ test_conv_int_1(const char *name, hid_t src, hid_t dst)
sprintf(str, "Testing random %s %s -> %s conversions",
name, src_type_name, dst_type_name);
printf("%-70s", str);
- puts("*FAILED*");
- puts(" Unknown data type.");
+ FAILED();
+ puts(" Unknown data type.");
goto error;
}
@@ -1817,10 +1630,10 @@ test_conv_int_1(const char *name, hid_t src, hid_t dst)
}
/* Print errors */
- if (0==fails_this_test++) puts("*FAILED*");
- printf(" test %u elmt %u\n", (unsigned)i+1, (unsigned)j);
+ if (0==fails_this_test++) FAILED();
+ printf(" test %u elmt %u\n", (unsigned)i+1, (unsigned)j);
- printf(" src = ");
+ printf(" src = ");
for (k=0; k<src_size; k++) {
printf(" %02x", saved[j*src_size+ENDIAN(src_size, k)]);
}
@@ -1854,7 +1667,7 @@ test_conv_int_1(const char *name, hid_t src, hid_t dst)
break;
}
- printf(" dst = ");
+ printf(" dst = ");
for (k=0; k<dst_size; k++) {
printf(" %02x", buf[j*dst_size+ENDIAN(dst_size, k)]);
}
@@ -1888,7 +1701,7 @@ test_conv_int_1(const char *name, hid_t src, hid_t dst)
break;
}
- printf(" ans = ");
+ printf(" ans = ");
for (k=0; k<dst_size; k++) {
printf(" %02x", hw[ENDIAN(dst_size, k)]);
}
@@ -1923,14 +1736,14 @@ test_conv_int_1(const char *name, hid_t src, hid_t dst)
}
if (++fails_all_tests>=max_fails) {
- puts(" maximum failures reached, aborting test...");
+ puts(" maximum failures reached, aborting test...");
goto done;
}
}
- puts(" PASSED");
+ PASSED();
}
if (noverflows_g>0) {
- printf(" %d overflow%s\n", noverflows_g, 1==noverflows_g?"":"s");
+ printf(" %d overflow%s\n", noverflows_g, 1==noverflows_g?"":"s");
}
done:
@@ -2135,9 +1948,9 @@ test_conv_flt_1 (const char *name, hid_t src, hid_t dst)
if (FLT_OTHER==src_type || FLT_OTHER==dst_type) {
sprintf(str, "Testing random %s %s -> %s conversions",
name, src_type_name, dst_type_name);
- printf ("%-70s", str);
- puts("*FAILED*");
- puts(" Unknown data type.");
+ printf("%-70s", str);
+ FAILED();
+ puts(" Unknown data type.");
goto error;
}
@@ -2157,7 +1970,7 @@ test_conv_flt_1 (const char *name, hid_t src, hid_t dst)
*/
sprintf(str, "Testing random %s %s -> %s conversions (test %d/%d)",
name, src_type_name, dst_type_name, (int)i+1, (int)ntests);
- printf ("%-70s", str);
+ printf("%-70s", str);
fflush(stdout);
fails_this_test = 0;
@@ -2321,10 +2134,10 @@ test_conv_flt_1 (const char *name, hid_t src, hid_t dst)
}
#endif
- if (0==fails_this_test++) puts("*FAILED*");
- printf(" test %u, elmt %u\n", (unsigned)i+1, (unsigned)j);
+ if (0==fails_this_test++) FAILED();
+ printf(" test %u, elmt %u\n", (unsigned)i+1, (unsigned)j);
- printf(" src =");
+ printf(" src =");
for (k=0; k<src_size; k++) {
printf(" %02x", saved[j*src_size+ENDIAN(src_size,k)]);
}
@@ -2339,7 +2152,7 @@ test_conv_flt_1 (const char *name, hid_t src, hid_t dst)
#endif
}
- printf(" dst =");
+ printf(" dst =");
for (k=0; k<dst_size; k++) {
printf(" %02x", buf[j*dst_size+ENDIAN(dst_size,k)]);
}
@@ -2354,7 +2167,7 @@ test_conv_flt_1 (const char *name, hid_t src, hid_t dst)
#endif
}
- printf(" ans =");
+ printf(" ans =");
for (k=0; k<dst_size; k++) {
printf(" %02x", hw[ENDIAN(dst_size,k)]);
}
@@ -2370,14 +2183,14 @@ test_conv_flt_1 (const char *name, hid_t src, hid_t dst)
}
if (++fails_all_tests>=max_fails) {
- puts(" maximum failures reached, aborting test...");
+ puts(" maximum failures reached, aborting test...");
goto done;
}
}
- puts(" PASSED");
+ PASSED();
}
if (noverflows_g>0) {
- printf(" %d overflow%s\n", noverflows_g, 1==noverflows_g?"":"s");
+ printf(" %d overflow%s\n", noverflows_g, 1==noverflows_g?"":"s");
}
done:
@@ -2424,15 +2237,17 @@ int
main(void)
{
unsigned long nerrors = 0;
+ hid_t fapl=-1;
reset_hdf5();
+ fapl = h5_fileaccess();
/* Do the tests */
nerrors += test_classes()<0 ? 1 : 0;
nerrors += test_copy()<0 ? 1 : 0;
nerrors += test_compound()<0 ? 1 : 0;
- nerrors += test_transient ()<0 ? 1 : 0;
- nerrors += test_named ()<0 ? 1 : 0;
+ nerrors += test_transient (fapl)<0 ? 1 : 0;
+ nerrors += test_named (fapl)<0 ? 1 : 0;
reset_hdf5();
nerrors += test_conv_str_1()<0 ? 1 : 0;
@@ -2635,6 +2450,6 @@ main(void)
exit(1);
}
printf("All data type tests passed.\n");
- cleanup ();
+ h5_cleanup (fapl);
return 0;
}