summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRobb Matzke <matzke@llnl.gov>1998-11-25 14:58:22 (GMT)
committerRobb Matzke <matzke@llnl.gov>1998-11-25 14:58:22 (GMT)
commit4354606d1e86a514958f20b21163c19c30dc26f5 (patch)
treedb93fa4fa072524becbc7a8e6221a6c64fdbfa3f
parent49ca76e303a15bfb6a46d7b68086ca974044c5c1 (diff)
downloadhdf5-4354606d1e86a514958f20b21163c19c30dc26f5.zip
hdf5-4354606d1e86a514958f20b21163c19c30dc26f5.tar.gz
hdf5-4354606d1e86a514958f20b21163c19c30dc26f5.tar.bz2
[svn-r949] Changes since 19981124
---------------------- ./src/H5T.c Fixed a typo in the registration of the `unsigned char' to `unsigned long long' type conversion that caused it to not be registered, falling back to software whenever that conversion path was taken. ./MANIFEST ./test/Makefile.in ./test/testhdf5.c ./test/testhdf5.h ./test/theap.c [REMOVED] ./test/lheap.c [NEW] ./test/tohdr.c [REMOVED] ./test/ohdr.c [NEW] ./test/tstab.c [REMOVED] ./test/stab.c [NEW] Removed the `t' from the front of these names and made each test a stand-alone program following the format of most of the other tests. ./test/big.c Uses libh5test.a but always sets the low-level driver to 1GB file family. The `#if' near the top to set the data space to 8GB has been simplified now that `long_long' is always defined and the error message is improved when `long_long' isn't wide enough. Cleanup code was added to the error handling. ./test/gheap.c ./test/istore.c Uses libh5test.a. Added error cleanup code. ./test/dtypes.c ./test/h5test.c Added 68 new tests that check hardware and software conversions between `long long' and `unsigned long long' and the other integer types. The tests only run on machines where sizeof(long_long)!=sizeof(long). We test a total of 180 different integer conversions, half in hardware and half in software. Cut down the number of times each test is run from 5 to 1 so it doesn't take so long. If you want to run more times there's a constant that can be changed at the top of the file. ./test/extend.c Removed unused variable. ./test/h5test.c ./test/h5test.h ./test/external.c ./test/fillval.c The h5_cleanup() returns true/false so it can be used in an `if' statement to clean up additional files. ./doc/html/Environment.html Indented. Added HDF5_PREFIX and HDF5_DRIVER descriptions. ./src/H5P.c Changed the trace type for the second argument from `Iu' to `x' since it's an output parameter. ./INSTALL Added a warning that the GNU zlib that comes with the latest version of HDF4 is too old to use with HDF5 and must be renamed so configure doesn't see it when `--enable-hdf4' is used.
-rw-r--r--INSTALL12
-rw-r--r--MANIFEST4
-rw-r--r--doc/html/Environment.html160
-rw-r--r--src/H5P.c6
-rw-r--r--src/H5T.c4
-rw-r--r--test/.distdep580
-rw-r--r--test/Makefile.in47
-rw-r--r--test/big.c200
-rw-r--r--test/dtypes.c570
-rw-r--r--test/extend.c1
-rw-r--r--test/external.c5
-rw-r--r--test/fillval.c3
-rw-r--r--test/gheap.c334
-rw-r--r--test/h5test.c62
-rw-r--r--test/h5test.h3
-rw-r--r--test/istore.c313
-rw-r--r--test/lheap.c131
-rw-r--r--test/ohdr.c278
-rw-r--r--test/stab.c199
-rw-r--r--test/testhdf5.c3
-rw-r--r--test/testhdf5.h6
-rw-r--r--test/theap.c113
-rw-r--r--test/tohdr.c197
-rw-r--r--test/tstab.c251
24 files changed, 1925 insertions, 1557 deletions
diff --git a/INSTALL b/INSTALL
index 8a2a377..f53537d 100644
--- a/INSTALL
+++ b/INSTALL
@@ -92,11 +92,13 @@ Step 2. Configure.
with `--with-zlib=INCDIR,LIBDIR' for the include file and/or
library. To prevent detection of zlib use `--without-zlib'.
- * The HDF5-to-HDF4 conversion tool requires the HDF4 library and
- header files which are auto-detected by configure. If they are
- in a non-standard place then absolute path names can be specified
- with `--with-hdf4=INCDIR,LIBDIR' for the include file and/or
- library. To prevent detection of hdf4 use `--without-hdf4'.
+ * The HDF5-to-HDF4 conversion tool requires the HDF4 library and header
+ files which are auto-detected by configure. If they are in a
+ non-standard place then absolute path names can be specified with
+ `--with-hdf4=INCDIR,LIBDIR' for the include file and/or library. To
+ prevent detection of hdf4 use `--without-hdf4'. Beware of the GNU zlib
+ that comes with hdf4 -- it's too old to use with hdf5 (hdf4 tools can be
+ linked with the newer versions of zlib).
* Old versions of gcc (<2.8.0) may experience register allocation
problems on some architectures. If this happens then the
diff --git a/MANIFEST b/MANIFEST
index 7196288..10a6137 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -322,24 +322,24 @@
./test/hyperslab.c
./test/iopipe.c
./test/istore.c
+./test/lheap.c
./test/links.c
./test/mount.c
./test/mtime.c
./test/overhead.c
./test/ragged.c
./test/space_overflow.c _DO_NOT_DISTRIBUTE_
+./test/stab.c
./test/testhdf5.c
./test/testhdf5.h
./test/tattr.c
./test/tfile.c
./test/th5s.c
./test/th5s.h5
-./test/theap.c
./test/tmeta.c
./test/tohdr.c
./test/trefer.c
./test/tselect.c
-./test/tstab.c
./test/unlink.c
./testpar/Makefile.in
diff --git a/doc/html/Environment.html b/doc/html/Environment.html
index d7653a5..8308d17 100644
--- a/doc/html/Environment.html
+++ b/doc/html/Environment.html
@@ -1,66 +1,102 @@
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>
-<head>
-<title>HDF5 Library Environment Variables and Configuration Parameters</title>
-</head>
-
-<body>
-
-<h1>HDF5 Library Environment Variables and Configuration Parameters</h1>
-
-<h2>1. Environment Variables</h2>
-
-The HDF5 library uses UNIX environment variables to control
-or adjust certain library features at runtime. The variables and
-their defined effects are as follows:
-
-<dir>
-<dl>
- <dt><tt>HDF5_DEBUG</tt>
- <dd>Defines a list of debugging switches documented in the
- <a href="Debugging.html">Debugging</a> section of the
- <cite>HDF5 User's Guide</cite>.
-
- <dt><tt>HDF5_NOCLEANUP</tt>
- <dd>When set to a non-empty value, the programs in the test
- directory do not remove temporary HDF5 data files.
- The default is for each test to remove the files before exit.
-
- <dt><tt>HDF5_MPI_OPT_TYPES</tt>
- &nbsp;&nbsp;(for parallel beta version only)
- <dd>When set to <code>1</code>, PHDF5 will use the MPI optimized
- code to perform parallel read/write accesses to datasets.
- Currently, this optimization fails when accessing extendable
- datasets. The default is not to use the optimized code.
-
- <dt><tt>HDF5_MPI_1_METAWRITE</tt>
- &nbsp;&nbsp;(for parallel beta version only)
- <dd>When set to <code>1</code>, PHDF5 will write the metadata
- via process 0 of each opened parallel HDF5 file. This should
- improve I/O throughput. The default is not to use this
- optimization.
-
-</dl>
-</dir>
-
-<h2>2. Configuration Parameters</h2>
-
-The HDF5 configuration script accepts a list of parameters to control
-configuration features when creating the Makefiles for the library.
-The command
-<br>
-<code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;configure --help </code>
-<br>
-will display the current list of parameters and their effects.
-
-<hr>
-
-<address>
-<a href="mailto:hdfhelp@ncsa.uiuc.edu">HDF Help Desk</a>
-</address>
-
-Last modified: 9 September 1998
-
-</body>
+ <head>
+ <title>HDF5 Library Environment Variables
+ and Configuration Parameters</title>
+ </head>
+
+ <body>
+
+ <h1>HDF5 Library Environment Variables and Configuration Parameters</h1>
+
+ <h2>1. Environment Variables</h2>
+
+ The HDF5 library uses UNIX environment variables to control
+ or adjust certain library features at runtime. The variables and
+ their defined effects are as follows:
+
+ <center>
+ <table width="90%">
+ <tr>
+ <th>Variable</th>
+ <th>Description</th>
+ </tr>
+
+ <tr valign=top>
+ <td><code>HDF5_DEBUG</code></td>
+ <td>Defines a list of debugging switches documented in the
+ <a href="Debugging.html">Debugging</a> section of the
+ <cite>HDF5 User's Guide</cite>.</td>
+ </tr>
+
+ <tr valign=top>
+ <td><code>HDF5_NOCLEANUP</code></td>
+ <td>If set then programs in the test directories do not
+ remove temporary files. The default is for each test to
+ remove the files before exit if the test succeeds but to
+ leave the files if the test fails.</td>
+ </tr>
+
+ <tr valign=top>
+ <td><code>HDF5_PREFIX</code></td>
+ <td>The value of this variable is prepended to all temporary
+ file names created by the test programs and separated from
+ the base name of the file by a slash. The default is no
+ prefix.</td>
+ </tr>
+
+ <tr valign=top>
+ <td><ode>HDF5_DRIVER</code></td>
+ <td>This variable should hold the name of a low-level HDF5
+ file driver such as <code>sec2</code>, <code>stdio</code>,
+ <code>core</code>, <code>split</code>, or
+ <code>family</code>. The family driver also takes an
+ optional real-valued family member size in MB which
+ defaults to 1. If this variable is not set or empty then
+ the library-defined default file driver is used (which can
+ be set at configuration time with the H5F_LOW_DFLT cpp
+ constant, usually <code>sec2</code>).</td>
+ </tr>
+
+ <tr valign=top>
+ <td><code>HDF5_MPI_OPT_TYPES</code></td>
+ <td>When set to <code>1</code>, parallel HDF5 will use the
+ MPI-optimized code to perform parallel read/write accesses
+ to datasets. Currently, this optimization fails when
+ accessing extendable datasets. The default is not to use
+ the optimized code.</td>
+ </tr>
+
+ <tr valign=top>
+ <td><code>HDF5_MPI_1_METAWRITE</code></td>
+ <td>When set to <code>1</code>, parallel HDF5 will write the
+ metadata via process 0 of each opened parallel HDF5 file.
+ This should improve I/O throughput. The default is not to
+ use this optimization.</td>
+ </tr>
+
+ </table>
+ </center>
+
+
+ <h2>2. Configuration Parameters</h2>
+
+ The HDF5 configuration script accepts a list of parameters to control
+ configuration features when creating the Makefiles for the library.
+ The command
+ <br>
+ <code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;configure --help </code>
+ <br>
+ will display the current list of parameters and their effects.
+
+ <hr>
+
+ <address>
+ <a href="mailto:hdfhelp@ncsa.uiuc.edu">HDF Help Desk</a>
+ </address>
+
+ Last modified: 9 September 1998
+
+ </body>
</html>
diff --git a/src/H5P.c b/src/H5P.c
index c5b01c1..a0a9bba 100644
--- a/src/H5P.c
+++ b/src/H5P.c
@@ -1826,8 +1826,8 @@ H5Pget_family(hid_t plist_id, hsize_t *memb_size/*out*/,
if (memb_plist_id) {
assert (plist->u.fam.memb_access);
*memb_plist_id = H5P_create (H5P_FILE_ACCESS,
- H5P_copy (H5P_FILE_ACCESS,
- plist->u.fam.memb_access));
+ H5P_copy (H5P_FILE_ACCESS,
+ plist->u.fam.memb_access));
}
FUNC_LEAVE (SUCCEED);
@@ -3008,6 +3008,7 @@ H5Pset_gc_references(hid_t fapl_id, unsigned gc_ref)
H5F_access_t *fapl = NULL;
FUNC_ENTER (H5Pset_gc_references, FAIL);
+ H5TRACE2("e","iIu",fapl_id,gc_ref);
/* Check args */
if (H5P_FILE_ACCESS != H5P_get_class (fapl_id) || NULL == (fapl = H5I_object (fapl_id))) {
@@ -3042,6 +3043,7 @@ H5Pget_gc_reference(hid_t fapl_id, unsigned *gc_ref/*out*/)
H5F_access_t *fapl = NULL;
FUNC_ENTER (H5Pget_alignment, FAIL);
+ H5TRACE2("e","ix",fapl_id,gc_ref);
/* Check args */
if (H5P_FILE_ACCESS != H5P_get_class (fapl_id) || NULL == (fapl = H5I_object (fapl_id))) {
diff --git a/src/H5T.c b/src/H5T.c
index 0f25937..245f7f4 100644
--- a/src/H5T.c
+++ b/src/H5T.c
@@ -1088,8 +1088,8 @@ H5T_init_interface(void)
HRETURN_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL,
"unable to register conversion function");
}
- if (H5Tregister_hard("uchar_llong", H5T_NATIVE_UCHAR, H5T_NATIVE_LLONG,
- H5T_conv_uchar_llong)<0) {
+ if (H5Tregister_hard("uchar_ullong", H5T_NATIVE_UCHAR, H5T_NATIVE_ULLONG,
+ H5T_conv_uchar_ullong)<0) {
HRETURN_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL,
"unable to register conversion function");
}
diff --git a/test/.distdep b/test/.distdep
index b550592..503d7a2 100644
--- a/test/.distdep
+++ b/test/.distdep
@@ -30,26 +30,18 @@ h5test.o: \
../src/H5Rprivate.h \
../src/H5Tprivate.h \
../src/H5Gprivate.h
-testhdf5.o: \
- testhdf5.c \
- testhdf5.h \
- ../src/H5private.h \
- ../src/H5public.h \
- ../src/H5config.h
-tattr.o: \
- tattr.c \
- testhdf5.h \
- ../src/H5private.h \
+big.o: \
+ big.c \
+ h5test.h \
+ ../src/hdf5.h \
../src/H5public.h \
../src/H5config.h \
- ../src/H5Eprivate.h \
- ../src/H5Epublic.h \
../src/H5Ipublic.h \
- ../src/hdf5.h \
../src/H5Apublic.h \
../src/H5ACpublic.h \
../src/H5Bpublic.h \
../src/H5Dpublic.h \
+ ../src/H5Epublic.h \
../src/H5Fpublic.h \
../src/H5Gpublic.h \
../src/H5HGpublic.h \
@@ -59,93 +51,85 @@ tattr.o: \
../src/H5Opublic.h \
../src/H5Ppublic.h \
../src/H5Zpublic.h \
- ../src/H5Rpublic.h
-tfile.o: \
- tfile.c \
- testhdf5.h \
+ ../src/H5Rpublic.h \
+ ../src/H5RApublic.h \
+ ../src/H5Spublic.h \
+ ../src/H5Tpublic.h \
../src/H5private.h \
+ ../src/H5Tpkg.h \
+ ../src/H5HGprivate.h \
+ ../src/H5Fprivate.h \
+ ../src/H5Rprivate.h \
+ ../src/H5Tprivate.h \
+ ../src/H5Gprivate.h
+bittests.o: \
+ bittests.c \
+ h5test.h \
+ ../src/hdf5.h \
../src/H5public.h \
../src/H5config.h \
- ../src/H5Eprivate.h \
- ../src/H5Epublic.h \
../src/H5Ipublic.h \
- ../src/H5Bprivate.h \
+ ../src/H5Apublic.h \
+ ../src/H5ACpublic.h \
../src/H5Bpublic.h \
- ../src/H5Fprivate.h \
- ../src/H5Fpublic.h \
../src/H5Dpublic.h \
- ../src/H5Pprivate.h
-theap.o: \
- theap.c \
- testhdf5.h \
- ../src/H5private.h \
- ../src/H5public.h \
- ../src/H5config.h \
- ../src/H5Eprivate.h \
../src/H5Epublic.h \
- ../src/H5Ipublic.h \
- ../src/H5Iprivate.h \
- ../src/H5ACprivate.h \
- ../src/H5ACpublic.h \
- ../src/H5Fprivate.h \
../src/H5Fpublic.h \
- ../src/H5Dpublic.h \
- ../src/H5Pprivate.h \
+ ../src/H5Gpublic.h \
+ ../src/H5HGpublic.h \
+ ../src/H5HLpublic.h \
+ ../src/H5MFpublic.h \
+ ../src/H5MMpublic.h \
+ ../src/H5Opublic.h \
../src/H5Ppublic.h \
- ../src/H5Zpublic.h
-tmeta.o: \
- tmeta.c \
- testhdf5.h \
- ../src/H5private.h \
- ../src/H5public.h \
- ../src/H5config.h \
- ../src/H5Eprivate.h \
- ../src/H5Epublic.h \
- ../src/H5Ipublic.h
-tohdr.o: \
- tohdr.c \
- testhdf5.h \
+ ../src/H5Zpublic.h \
+ ../src/H5Rpublic.h \
+ ../src/H5RApublic.h \
+ ../src/H5Spublic.h \
+ ../src/H5Tpublic.h \
../src/H5private.h \
+ ../src/H5Tpkg.h \
+ ../src/H5HGprivate.h \
+ ../src/H5Fprivate.h \
+ ../src/H5Rprivate.h \
+ ../src/H5Tprivate.h \
+ ../src/H5Gprivate.h
+chunk.o: \
+ chunk.c \
+ ../src/hdf5.h \
../src/H5public.h \
../src/H5config.h \
- ../src/H5Eprivate.h \
- ../src/H5Epublic.h \
../src/H5Ipublic.h \
- ../src/H5Iprivate.h \
- ../src/H5ACprivate.h \
+ ../src/H5Apublic.h \
../src/H5ACpublic.h \
- ../src/H5Fprivate.h \
- ../src/H5Fpublic.h \
+ ../src/H5Bpublic.h \
../src/H5Dpublic.h \
- ../src/H5Pprivate.h \
- ../src/H5Ppublic.h \
- ../src/H5Zpublic.h \
- ../src/H5Gprivate.h \
+ ../src/H5Epublic.h \
+ ../src/H5Fpublic.h \
../src/H5Gpublic.h \
- ../src/H5Bprivate.h \
- ../src/H5Bpublic.h \
- ../src/H5Oprivate.h \
- ../src/H5Opublic.h \
- ../src/H5HGprivate.h \
../src/H5HGpublic.h \
- ../src/H5Tprivate.h \
- ../src/H5Tpublic.h \
- ../src/H5Sprivate.h \
- ../src/H5Spublic.h
-trefer.o: \
- trefer.c \
- testhdf5.h \
- ../src/H5private.h \
+ ../src/H5HLpublic.h \
+ ../src/H5MFpublic.h \
+ ../src/H5MMpublic.h \
+ ../src/H5Opublic.h \
+ ../src/H5Ppublic.h \
+ ../src/H5Zpublic.h \
+ ../src/H5Rpublic.h \
+ ../src/H5RApublic.h \
+ ../src/H5Spublic.h \
+ ../src/H5Tpublic.h
+cmpd_dset.o: \
+ cmpd_dset.c \
+ h5test.h \
+ ../src/hdf5.h \
../src/H5public.h \
../src/H5config.h \
- ../src/H5Eprivate.h \
- ../src/H5Epublic.h \
../src/H5Ipublic.h \
- ../src/hdf5.h \
../src/H5Apublic.h \
../src/H5ACpublic.h \
../src/H5Bpublic.h \
../src/H5Dpublic.h \
+ ../src/H5Epublic.h \
../src/H5Fpublic.h \
../src/H5Gpublic.h \
../src/H5HGpublic.h \
@@ -155,21 +139,29 @@ trefer.o: \
../src/H5Opublic.h \
../src/H5Ppublic.h \
../src/H5Zpublic.h \
- ../src/H5Rpublic.h
-tselect.o: \
- tselect.c \
- testhdf5.h \
+ ../src/H5Rpublic.h \
+ ../src/H5RApublic.h \
+ ../src/H5Spublic.h \
+ ../src/H5Tpublic.h \
../src/H5private.h \
+ ../src/H5Tpkg.h \
+ ../src/H5HGprivate.h \
+ ../src/H5Fprivate.h \
+ ../src/H5Rprivate.h \
+ ../src/H5Tprivate.h \
+ ../src/H5Gprivate.h
+dsets.o: \
+ dsets.c \
+ h5test.h \
+ ../src/hdf5.h \
../src/H5public.h \
../src/H5config.h \
- ../src/H5Eprivate.h \
- ../src/H5Epublic.h \
../src/H5Ipublic.h \
- ../src/hdf5.h \
../src/H5Apublic.h \
../src/H5ACpublic.h \
../src/H5Bpublic.h \
../src/H5Dpublic.h \
+ ../src/H5Epublic.h \
../src/H5Fpublic.h \
../src/H5Gpublic.h \
../src/H5HGpublic.h \
@@ -179,66 +171,83 @@ tselect.o: \
../src/H5Opublic.h \
../src/H5Ppublic.h \
../src/H5Zpublic.h \
- ../src/H5Rpublic.h
-tstab.o: \
- tstab.c \
- testhdf5.h \
+ ../src/H5Rpublic.h \
+ ../src/H5RApublic.h \
+ ../src/H5Spublic.h \
+ ../src/H5Tpublic.h \
../src/H5private.h \
+ ../src/H5Tpkg.h \
+ ../src/H5HGprivate.h \
+ ../src/H5Fprivate.h \
+ ../src/H5Rprivate.h \
+ ../src/H5Tprivate.h \
+ ../src/H5Gprivate.h
+dtypes.o: \
+ dtypes.c \
+ h5test.h \
+ ../src/hdf5.h \
../src/H5public.h \
../src/H5config.h \
- ../src/H5Eprivate.h \
- ../src/H5Epublic.h \
../src/H5Ipublic.h \
- ../src/H5Iprivate.h \
- ../src/H5ACprivate.h \
+ ../src/H5Apublic.h \
../src/H5ACpublic.h \
- ../src/H5Fprivate.h \
- ../src/H5Fpublic.h \
+ ../src/H5Bpublic.h \
../src/H5Dpublic.h \
- ../src/H5Pprivate.h \
- ../src/H5Ppublic.h \
- ../src/H5Zpublic.h \
- ../src/H5Gprivate.h \
+ ../src/H5Epublic.h \
+ ../src/H5Fpublic.h \
../src/H5Gpublic.h \
- ../src/H5Bprivate.h \
- ../src/H5Bpublic.h \
- ../src/H5Oprivate.h \
- ../src/H5Opublic.h \
- ../src/H5HGprivate.h \
../src/H5HGpublic.h \
- ../src/H5Tprivate.h \
+ ../src/H5HLpublic.h \
+ ../src/H5MFpublic.h \
+ ../src/H5MMpublic.h \
+ ../src/H5Opublic.h \
+ ../src/H5Ppublic.h \
+ ../src/H5Zpublic.h \
+ ../src/H5Rpublic.h \
+ ../src/H5RApublic.h \
+ ../src/H5Spublic.h \
../src/H5Tpublic.h \
- ../src/H5Sprivate.h \
- ../src/H5Spublic.h
-th5s.o: \
- th5s.c \
- testhdf5.h \
../src/H5private.h \
+ ../src/H5Tpkg.h \
+ ../src/H5HGprivate.h \
+ ../src/H5Fprivate.h \
+ ../src/H5Rprivate.h \
+ ../src/H5Tprivate.h \
+ ../src/H5Gprivate.h
+extend.o: \
+ extend.c \
+ h5test.h \
+ ../src/hdf5.h \
../src/H5public.h \
../src/H5config.h \
- ../src/H5Eprivate.h \
- ../src/H5Epublic.h \
../src/H5Ipublic.h \
- ../src/H5Bprivate.h \
+ ../src/H5Apublic.h \
+ ../src/H5ACpublic.h \
../src/H5Bpublic.h \
- ../src/H5Fprivate.h \
- ../src/H5Fpublic.h \
../src/H5Dpublic.h \
- ../src/H5Sprivate.h \
- ../src/H5Spublic.h \
- ../src/H5Gprivate.h \
+ ../src/H5Epublic.h \
+ ../src/H5Fpublic.h \
../src/H5Gpublic.h \
- ../src/H5Oprivate.h \
+ ../src/H5HGpublic.h \
+ ../src/H5HLpublic.h \
+ ../src/H5MFpublic.h \
+ ../src/H5MMpublic.h \
../src/H5Opublic.h \
+ ../src/H5Ppublic.h \
+ ../src/H5Zpublic.h \
+ ../src/H5Rpublic.h \
+ ../src/H5RApublic.h \
+ ../src/H5Spublic.h \
+ ../src/H5Tpublic.h \
+ ../src/H5private.h \
+ ../src/H5Tpkg.h \
../src/H5HGprivate.h \
- ../src/H5HGpublic.h \
+ ../src/H5Fprivate.h \
+ ../src/H5Rprivate.h \
../src/H5Tprivate.h \
- ../src/H5Tpublic.h \
- ../src/H5Zprivate.h \
- ../src/H5Zpublic.h \
- ../src/H5Pprivate.h
-dtypes.o: \
- dtypes.c \
+ ../src/H5Gprivate.h
+external.o: \
+ external.c \
h5test.h \
../src/hdf5.h \
../src/H5public.h \
@@ -269,42 +278,40 @@ dtypes.o: \
../src/H5Rprivate.h \
../src/H5Tprivate.h \
../src/H5Gprivate.h
-hyperslab.o: \
- hyperslab.c \
- ../src/H5private.h \
- ../src/H5public.h \
- ../src/H5config.h
-istore.o: \
- istore.c \
- ../src/H5private.h \
+fillval.o: \
+ fillval.c \
+ h5test.h \
+ ../src/hdf5.h \
../src/H5public.h \
../src/H5config.h \
- ../src/H5Dprivate.h \
- ../src/H5Dpublic.h \
../src/H5Ipublic.h \
- ../src/H5Fprivate.h \
+ ../src/H5Apublic.h \
+ ../src/H5ACpublic.h \
+ ../src/H5Bpublic.h \
+ ../src/H5Dpublic.h \
+ ../src/H5Epublic.h \
../src/H5Fpublic.h \
- ../src/H5Gprivate.h \
../src/H5Gpublic.h \
- ../src/H5Bprivate.h \
- ../src/H5Bpublic.h \
- ../src/H5Oprivate.h \
+ ../src/H5HGpublic.h \
+ ../src/H5HLpublic.h \
+ ../src/H5MFpublic.h \
+ ../src/H5MMpublic.h \
../src/H5Opublic.h \
+ ../src/H5Ppublic.h \
+ ../src/H5Zpublic.h \
+ ../src/H5Rpublic.h \
+ ../src/H5RApublic.h \
+ ../src/H5Spublic.h \
+ ../src/H5Tpublic.h \
+ ../src/H5private.h \
+ ../src/H5Tpkg.h \
../src/H5HGprivate.h \
- ../src/H5HGpublic.h \
+ ../src/H5Fprivate.h \
+ ../src/H5Rprivate.h \
../src/H5Tprivate.h \
- ../src/H5Tpublic.h \
- ../src/H5Sprivate.h \
- ../src/H5Spublic.h \
- ../src/H5Zprivate.h \
- ../src/H5Zpublic.h \
- ../src/H5Iprivate.h \
- ../src/H5Pprivate.h \
- ../src/H5Ppublic.h \
- ../src/H5MMprivate.h \
- ../src/H5MMpublic.h
-dsets.o: \
- dsets.c \
+ ../src/H5Gprivate.h
+flush1.o: \
+ flush1.c \
h5test.h \
../src/hdf5.h \
../src/H5public.h \
@@ -335,8 +342,8 @@ dsets.o: \
../src/H5Rprivate.h \
../src/H5Tprivate.h \
../src/H5Gprivate.h
-cmpd_dset.o: \
- cmpd_dset.c \
+flush2.o: \
+ flush2.c \
h5test.h \
../src/hdf5.h \
../src/H5public.h \
@@ -367,8 +374,8 @@ cmpd_dset.o: \
../src/H5Rprivate.h \
../src/H5Tprivate.h \
../src/H5Gprivate.h
-extend.o: \
- extend.c \
+gheap.o: \
+ gheap.c \
h5test.h \
../src/hdf5.h \
../src/H5public.h \
@@ -398,8 +405,15 @@ extend.o: \
../src/H5Fprivate.h \
../src/H5Rprivate.h \
../src/H5Tprivate.h \
- ../src/H5Gprivate.h
-
+ ../src/H5Gprivate.h \
+ ../src/H5Bprivate.h \
+ ../src/H5Eprivate.h \
+ ../src/H5Iprivate.h
+hyperslab.o: \
+ hyperslab.c \
+ ../src/H5private.h \
+ ../src/H5public.h \
+ ../src/H5config.h
iopipe.o: \
iopipe.c \
../src/hdf5.h \
@@ -424,25 +438,47 @@ iopipe.o: \
../src/H5RApublic.h \
../src/H5Spublic.h \
../src/H5Tpublic.h
-gheap.o: \
- gheap.c \
- ../src/H5private.h \
+istore.o: \
+ istore.c \
+ h5test.h \
+ ../src/hdf5.h \
../src/H5public.h \
../src/H5config.h \
- ../src/H5Eprivate.h \
- ../src/H5Epublic.h \
../src/H5Ipublic.h \
- ../src/H5Fprivate.h \
- ../src/H5Fpublic.h \
+ ../src/H5Apublic.h \
+ ../src/H5ACpublic.h \
+ ../src/H5Bpublic.h \
../src/H5Dpublic.h \
- ../src/H5Gprivate.h \
+ ../src/H5Epublic.h \
+ ../src/H5Fpublic.h \
../src/H5Gpublic.h \
- ../src/H5Bprivate.h \
- ../src/H5Bpublic.h \
+ ../src/H5HGpublic.h \
+ ../src/H5HLpublic.h \
+ ../src/H5MFpublic.h \
+ ../src/H5MMpublic.h \
+ ../src/H5Opublic.h \
+ ../src/H5Ppublic.h \
+ ../src/H5Zpublic.h \
+ ../src/H5Rpublic.h \
+ ../src/H5RApublic.h \
+ ../src/H5Spublic.h \
+ ../src/H5Tpublic.h \
+ ../src/H5private.h \
+ ../src/H5Tpkg.h \
../src/H5HGprivate.h \
- ../src/H5HGpublic.h
-shtype.o: \
- shtype.c \
+ ../src/H5Fprivate.h \
+ ../src/H5Rprivate.h \
+ ../src/H5Tprivate.h \
+ ../src/H5Gprivate.h \
+ ../src/H5Bprivate.h \
+ ../src/H5Dprivate.h \
+ ../src/H5Oprivate.h \
+ ../src/H5Sprivate.h \
+ ../src/H5Zprivate.h \
+ ../src/H5Iprivate.h
+lheap.o: \
+ lheap.c \
+ h5test.h \
../src/hdf5.h \
../src/H5public.h \
../src/H5config.h \
@@ -464,9 +500,17 @@ shtype.o: \
../src/H5Rpublic.h \
../src/H5RApublic.h \
../src/H5Spublic.h \
- ../src/H5Tpublic.h
-big.o: \
- big.c \
+ ../src/H5Tpublic.h \
+ ../src/H5private.h \
+ ../src/H5Tpkg.h \
+ ../src/H5HGprivate.h \
+ ../src/H5Fprivate.h \
+ ../src/H5Rprivate.h \
+ ../src/H5Tprivate.h \
+ ../src/H5Gprivate.h
+links.o: \
+ links.c \
+ h5test.h \
../src/hdf5.h \
../src/H5public.h \
../src/H5config.h \
@@ -489,9 +533,16 @@ big.o: \
../src/H5RApublic.h \
../src/H5Spublic.h \
../src/H5Tpublic.h \
- ../src/H5private.h
-links.o: \
- links.c \
+ ../src/H5private.h \
+ ../src/H5Tpkg.h \
+ ../src/H5HGprivate.h \
+ ../src/H5Fprivate.h \
+ ../src/H5Rprivate.h \
+ ../src/H5Tprivate.h \
+ ../src/H5Gprivate.h
+mount.o: \
+ mount.c \
+ h5test.h \
../src/hdf5.h \
../src/H5public.h \
../src/H5config.h \
@@ -513,9 +564,17 @@ links.o: \
../src/H5Rpublic.h \
../src/H5RApublic.h \
../src/H5Spublic.h \
- ../src/H5Tpublic.h
-chunk.o: \
- chunk.c \
+ ../src/H5Tpublic.h \
+ ../src/H5private.h \
+ ../src/H5Tpkg.h \
+ ../src/H5HGprivate.h \
+ ../src/H5Fprivate.h \
+ ../src/H5Rprivate.h \
+ ../src/H5Tprivate.h \
+ ../src/H5Gprivate.h
+mtime.o: \
+ mtime.c \
+ h5test.h \
../src/hdf5.h \
../src/H5public.h \
../src/H5config.h \
@@ -537,9 +596,16 @@ chunk.o: \
../src/H5Rpublic.h \
../src/H5RApublic.h \
../src/H5Spublic.h \
- ../src/H5Tpublic.h
-bittests.o: \
- bittests.c \
+ ../src/H5Tpublic.h \
+ ../src/H5private.h \
+ ../src/H5Tpkg.h \
+ ../src/H5HGprivate.h \
+ ../src/H5Fprivate.h \
+ ../src/H5Rprivate.h \
+ ../src/H5Tprivate.h \
+ ../src/H5Gprivate.h
+ohdr.o: \
+ ohdr.c \
h5test.h \
../src/hdf5.h \
../src/H5public.h \
@@ -569,9 +635,15 @@ bittests.o: \
../src/H5Fprivate.h \
../src/H5Rprivate.h \
../src/H5Tprivate.h \
- ../src/H5Gprivate.h
-mtime.o: \
- mtime.c \
+ ../src/H5Gprivate.h \
+ ../src/H5Bprivate.h \
+ ../src/H5Iprivate.h \
+ ../src/H5Oprivate.h \
+ ../src/H5Sprivate.h \
+ ../src/H5Zprivate.h \
+ ../src/H5Gpkg.h
+overhead.o: \
+ overhead.c \
../src/hdf5.h \
../src/H5public.h \
../src/H5config.h \
@@ -593,8 +665,7 @@ mtime.o: \
../src/H5Rpublic.h \
../src/H5RApublic.h \
../src/H5Spublic.h \
- ../src/H5Tpublic.h \
- ../src/H5private.h
+ ../src/H5Tpublic.h
ragged.o: \
ragged.c \
../src/hdf5.h \
@@ -620,8 +691,8 @@ ragged.o: \
../src/H5Spublic.h \
../src/H5Tpublic.h \
../src/H5private.h
-unlink.o: \
- unlink.c \
+space_overflow.o: \
+ space_overflow.c \
../src/hdf5.h \
../src/H5public.h \
../src/H5config.h \
@@ -642,8 +713,9 @@ unlink.o: \
../src/H5Zpublic.h \
../src/H5Rpublic.h \
../src/H5RApublic.h
-overhead.o: \
- overhead.c \
+stab.o: \
+ stab.c \
+ h5test.h \
../src/hdf5.h \
../src/H5public.h \
../src/H5config.h \
@@ -665,18 +737,28 @@ overhead.o: \
../src/H5Rpublic.h \
../src/H5RApublic.h \
../src/H5Spublic.h \
- ../src/H5Tpublic.h
-fillval.o: \
- fillval.c \
- ../src/hdf5.h \
+ ../src/H5Tpublic.h \
+ ../src/H5private.h \
+ ../src/H5Tpkg.h \
+ ../src/H5HGprivate.h \
+ ../src/H5Fprivate.h \
+ ../src/H5Rprivate.h \
+ ../src/H5Tprivate.h \
+ ../src/H5Gprivate.h
+tattr.o: \
+ tattr.c \
+ testhdf5.h \
+ ../src/H5private.h \
../src/H5public.h \
../src/H5config.h \
+ ../src/H5Eprivate.h \
+ ../src/H5Epublic.h \
../src/H5Ipublic.h \
+ ../src/hdf5.h \
../src/H5Apublic.h \
../src/H5ACpublic.h \
../src/H5Bpublic.h \
../src/H5Dpublic.h \
- ../src/H5Epublic.h \
../src/H5Fpublic.h \
../src/H5Gpublic.h \
../src/H5HGpublic.h \
@@ -686,21 +768,78 @@ fillval.o: \
../src/H5Opublic.h \
../src/H5Ppublic.h \
../src/H5Zpublic.h \
- ../src/H5Rpublic.h \
- ../src/H5RApublic.h \
+ ../src/H5Rpublic.h
+testhdf5.o: \
+ testhdf5.c \
+ testhdf5.h \
+ ../src/H5private.h \
+ ../src/H5public.h \
+ ../src/H5config.h
+tfile.o: \
+ tfile.c \
+ testhdf5.h \
+ ../src/H5private.h \
+ ../src/H5public.h \
+ ../src/H5config.h \
+ ../src/H5Eprivate.h \
+ ../src/H5Epublic.h \
+ ../src/H5Ipublic.h \
+ ../src/H5Bprivate.h \
+ ../src/H5Bpublic.h \
+ ../src/H5Fprivate.h \
+ ../src/H5Fpublic.h \
+ ../src/H5Dpublic.h \
+ ../src/H5Pprivate.h
+th5s.o: \
+ th5s.c \
+ testhdf5.h \
+ ../src/H5private.h \
+ ../src/H5public.h \
+ ../src/H5config.h \
+ ../src/H5Eprivate.h \
+ ../src/H5Epublic.h \
+ ../src/H5Ipublic.h \
+ ../src/H5Bprivate.h \
+ ../src/H5Bpublic.h \
+ ../src/H5Fprivate.h \
+ ../src/H5Fpublic.h \
+ ../src/H5Dpublic.h \
+ ../src/H5Sprivate.h \
../src/H5Spublic.h \
- ../src/H5Tpublic.h
-mount.o: \
- mount.c \
- ../src/hdf5.h \
+ ../src/H5Gprivate.h \
+ ../src/H5Gpublic.h \
+ ../src/H5Oprivate.h \
+ ../src/H5Opublic.h \
+ ../src/H5HGprivate.h \
+ ../src/H5HGpublic.h \
+ ../src/H5Tprivate.h \
+ ../src/H5Tpublic.h \
+ ../src/H5Zprivate.h \
+ ../src/H5Zpublic.h \
+ ../src/H5Pprivate.h
+tmeta.o: \
+ tmeta.c \
+ testhdf5.h \
+ ../src/H5private.h \
../src/H5public.h \
../src/H5config.h \
+ ../src/H5Eprivate.h \
+ ../src/H5Epublic.h \
+ ../src/H5Ipublic.h
+trefer.o: \
+ trefer.c \
+ testhdf5.h \
+ ../src/H5private.h \
+ ../src/H5public.h \
+ ../src/H5config.h \
+ ../src/H5Eprivate.h \
+ ../src/H5Epublic.h \
../src/H5Ipublic.h \
+ ../src/hdf5.h \
../src/H5Apublic.h \
../src/H5ACpublic.h \
../src/H5Bpublic.h \
../src/H5Dpublic.h \
- ../src/H5Epublic.h \
../src/H5Fpublic.h \
../src/H5Gpublic.h \
../src/H5HGpublic.h \
@@ -710,19 +849,21 @@ mount.o: \
../src/H5Opublic.h \
../src/H5Ppublic.h \
../src/H5Zpublic.h \
- ../src/H5Rpublic.h \
- ../src/H5RApublic.h
-flush1.o: \
- flush1.c \
- ../src/hdf5.h \
+ ../src/H5Rpublic.h
+tselect.o: \
+ tselect.c \
+ testhdf5.h \
+ ../src/H5private.h \
../src/H5public.h \
../src/H5config.h \
+ ../src/H5Eprivate.h \
+ ../src/H5Epublic.h \
../src/H5Ipublic.h \
+ ../src/hdf5.h \
../src/H5Apublic.h \
../src/H5ACpublic.h \
../src/H5Bpublic.h \
../src/H5Dpublic.h \
- ../src/H5Epublic.h \
../src/H5Fpublic.h \
../src/H5Gpublic.h \
../src/H5HGpublic.h \
@@ -732,12 +873,10 @@ flush1.o: \
../src/H5Opublic.h \
../src/H5Ppublic.h \
../src/H5Zpublic.h \
- ../src/H5Rpublic.h \
- ../src/H5RApublic.h \
- ../src/H5Spublic.h \
- ../src/H5Tpublic.h
-flush2.o: \
- flush2.c \
+ ../src/H5Rpublic.h
+unlink.o: \
+ unlink.c \
+ h5test.h \
../src/hdf5.h \
../src/H5public.h \
../src/H5config.h \
@@ -759,4 +898,11 @@ flush2.o: \
../src/H5Rpublic.h \
../src/H5RApublic.h \
../src/H5Spublic.h \
- ../src/H5Tpublic.h
+ ../src/H5Tpublic.h \
+ ../src/H5private.h \
+ ../src/H5Tpkg.h \
+ ../src/H5HGprivate.h \
+ ../src/H5Fprivate.h \
+ ../src/H5Rprivate.h \
+ ../src/H5Tprivate.h \
+ ../src/H5Gprivate.h
diff --git a/test/Makefile.in b/test/Makefile.in
index 44218d5..8881e0e 100644
--- a/test/Makefile.in
+++ b/test/Makefile.in
@@ -13,8 +13,9 @@ LIBS=libh5test.a ../src/libhdf5.a @LIBS@
# These are our main targets. They should be listed in the order to be
# executed, generally most specific tests to least specific tests.
-TEST_PROGS=testhdf5 gheap hyperslab istore bittests dtypes dsets cmpd_dset \
- extend external links unlink big mtime fillval mount flush1 flush2
+TEST_PROGS=testhdf5 lheap ohdr stab gheap hyperslab istore bittests dtypes \
+ dsets cmpd_dset extend external links unlink big mtime fillval mount \
+ flush1 flush2
TIMINGS=iopipe chunk ragged overhead
# The libh5test.a library provides common support code for the tests.
@@ -22,27 +23,31 @@ LIB=libh5test.a
LIB_SRC=h5test.c
LIB_OBJ=$(LIB_SRC:.c=.o)
-# Temporary files
+# Temporary files. These files are the ones created by setting the
+# HDF5_NOCLEANUP environment variable and running `make test' without
+# specifying a file prefix or low-level driver. Changing the file
+# prefix or low-level driver with environment variables will influence
+# the temporary file name in ways that the makefile is not aware of.
MOSTLYCLEAN=cmpd_dset.h5 dataset.h5 extend.h5 istore.h5 tfile1.h5 tfile2.h5 \
- tfile3.h5 th5s1.h5 theap.h5 tohdr.h5 tstab1.h5 tstab2.h5 \
- extern_1.h5 extern_2.h5 extern_3.h5 extern_1.raw extern_1b.raw \
- extern_2.raw extern_2b.raw extern_3.raw extern_3b.raw \
- extern_4.raw extern_4b.raw iopipe.raw iopipe.h5 gheap0.h5 \
+ tfile3.h5 th5s1.h5 lheap.h5 ohdr.h5 stab1.h5 stab2.h5 \
+ extern_1.h5 extern_2.h5 extern_3.h5 extern_1a.raw extern_1b.raw \
+ extern_2a.raw extern_2b.raw extern_3a.raw extern_3b.raw \
+ extern_4a.raw extern_4b.raw iopipe.raw iopipe.h5 gheap0.h5 \
gheap1.h5 gheap2.h5 gheap3.h5 gheap4.h5 links.h5 chunk.h5 \
big.data big[0-9][0-9][0-9][0-9][0-9].h5 dtypes1.h5 dtypes2.h5 \
- tattr.h5 tselect.h5 mtime.h5 ragged.h5 grptime.h5 unlink.h5 \
- overhead.h5 fillval_[0-9].h5 mount_[0-9].h5 trefer.h5 flush.h5
+ tattr.h5 tselect.h5 mtime.h5 ragged.h5 unlink.h5 overhead.h5 \
+ fillval_[0-9].h5 fillval.raw mount_[0-9].h5 trefer.h5 flush.h5
CLEAN=$(TIMINGS)
# Source and object files for programs... The TEST_SRC list contains all the
# source files and is used for things like dependencies, archiving, etc. The
# other source lists are for the individual tests, the files of which may
# overlap with other tests.
-TEST_SRC=testhdf5.c tattr.c tfile.c theap.c tmeta.c tohdr.c trefer.c \
- tselect.c tstab.c th5s.c dtypes.c hyperslab.c istore.c dsets.c \
- cmpd_dset.c extend.c external.c iopipe.c gheap.c big.c links.c chunk.c \
- bittests.c mtime.c ragged.c unlink.c overhead.c fillval.c mount.c \
- flush1.c flush2.c
+TEST_SRC=big.c bittests.c chunk.c cmpd_dset.c dsets.c dtypes.c extend.c \
+ external.c fillval.c flush1.c flush2.c gheap.c h5test.c hyperslab.c \
+ iopipe.c istore.c lheap.c links.c mount.c mtime.c ohdr.c overhead.c \
+ ragged.c space_overflow.c stab.c tattr.c testhdf5.c tfile.c th5s.c \
+ tmeta.c trefer.c tselect.c unlink.c
TEST_OBJ=$(TEST_SRC:.c=.o)
# Private header files (not to be installed)...
@@ -60,10 +65,19 @@ timings _timings: $(TIMINGS)
# How to build the tests... They all depend on the test and hdf5 libraries.
$(TEST_PROGS): libh5test.a ../src/libhdf5.a
-TESTHDF5_OBJ=testhdf5.o tattr.o tfile.o theap.o tmeta.o tohdr.o trefer.o tselect.o tstab.o th5s.o
+TESTHDF5_OBJ=testhdf5.o tattr.o tfile.o tmeta.o trefer.o tselect.o th5s.o
testhdf5: $(TESTHDF5_OBJ)
$(CC) $(CFLAGS) -o $@ $(TESTHDF5_OBJ) $(LDFLAGS) $(LIBS)
+lheap: lheap.o
+ $(CC) $(CFLAGS) -o $@ lheap.o $(LDFLAGS) $(LIBS)
+
+ohdr: ohdr.o
+ $(CC) $(CFLAGS) -o $@ ohdr.o $(LDFLAGS) $(LIBS)
+
+stab: stab.o
+ $(CC) $(CFLAGS) -o $@ stab.o $(LDFLAGS) $(LIBS)
+
gheap: gheap.o
$(CC) $(CFLAGS) -o $@ gheap.o $(LDFLAGS) $(LIBS)
@@ -94,9 +108,6 @@ external: external.o
iopipe: iopipe.o
$(CC) $(CFLAGS) -o $@ iopipe.o $(LDFLAGS) $(LIBS)
-grptime: grptime.o
- $(CC) $(CFLAGS) -o $@ grptime.o $(LDFLAGS) $(LIBS)
-
big: big.o
$(CC) $(CFLAGS) -o $@ big.o $(LDFLAGS) $(LIBS)
diff --git a/test/big.c b/test/big.c
index 0c49f09..d20f8fb 100644
--- a/test/big.c
+++ b/test/big.c
@@ -5,60 +5,50 @@
* Programmer: Robb Matzke <matzke@llnl.gov>
* Wednesday, April 8, 1998
*/
+#include <h5test.h>
-/* See H5private.h for how to include headers */
-#undef NDEBUG
-#include <hdf5.h>
-#include <H5private.h> /*needed for HDfprintf() and long_long*/
+const char *FILENAME[] = {
+ "big",
+ NULL
+};
-#define FNAME "big%05d.h5"
#define DNAME "big.data"
+
#define WRT_N 50
#define WRT_SIZE 4*1024
#define FAMILY_SIZE 1024*1024*1024
-#if SIZEOF_LONG_LONG > SIZEOF_LONG
-#define GB8LL ((unsigned long_long)8*1024*1024*1024)
-#elif SIZEOF___INT64 > SIZEOF_LONG
-#define GB8LL ((unsigned __int64)8*1024*1024*1024)
-#elif SIZEOF_LONG >= 8
-#define GB8LL ((unsigned long)8*1024*1024*1024)
+#if SIZEOF_LONG_LONG >= 8
+# define GB8LL ((unsigned long_long)8*1024*1024*1024)
#else
-#define GB8LL ((unsigned long)0) /* cannot do the test */
+# define GB8LL ((unsigned long_long)0) /*cannot do the test*/
#endif
-static hsize_t
-randll (hsize_t limit)
-{
- hsize_t acc = rand ();
- acc *= rand ();
-
- return acc % limit;
-}
-
/*-------------------------------------------------------------------------
- * Function: display_error_cb
+ * Function: randll
*
- * Purpose: Displays the error stack after printing "*FAILED*".
+ * Purpose: Create a random long_long value.
*
- * Return: Success: 0
+ * Return: Success: Random value
*
- * Failure: -1
+ * Failure: never fails
*
* Programmer: Robb Matzke
- * Wednesday, March 4, 1998
+ * Tuesday, November 24, 1998
*
* Modifications:
*
*-------------------------------------------------------------------------
*/
-static herr_t
-display_error_cb (void __unused__ *client_data)
+static hsize_t
+randll(hsize_t limit)
{
- puts ("*FAILED*");
- H5Eprint (stdout);
- return 0;
+
+ hsize_t acc = rand ();
+ acc *= rand ();
+
+ return acc % limit;
}
@@ -118,23 +108,23 @@ is_sparse(void)
*-------------------------------------------------------------------------
*/
static int
-enough_room(void)
+enough_room(hid_t fapl)
{
int ret_value=0;
int fd[68];
size_t i, size = (size_t)1 << 30;
- char name[32];
-
- /* verify if this machine supports 8GB sizes */
- if (GB8LL==0)
- goto done;
+ char filename[1024], name[1024];
/* Initialize file descriptors */
for (i=0; i<NELMTS(fd); i++) fd[i] = -1;
+ /* Get file name template */
+ assert(H5F_LOW_FAMILY==H5Pget_driver(fapl));
+ h5_fixname(FILENAME[0], fapl, filename, sizeof filename);
+
/* Create files */
for (i=0; i<NELMTS(fd); i++) {
- sprintf(name, FNAME, i);
+ HDsnprintf(name, sizeof name, filename, i);
if ((fd[i]=open(name, O_RDWR|O_CREAT|O_TRUNC, 0666))<0) {
goto done;
}
@@ -149,7 +139,7 @@ enough_room(void)
done:
for (i=0; i<NELMTS(fd) && fd[i]>=0; i++) {
- sprintf(name, FNAME, i);
+ HDsnprintf(name, sizeof name, filename, i);
close(fd[i]);
unlink(name);
}
@@ -177,29 +167,27 @@ enough_room(void)
*-------------------------------------------------------------------------
*/
static int
-writer (int wrt_n)
+writer (hid_t fapl, int wrt_n)
{
hsize_t size1[4] = {8, 1024, 1024, 1024};
hsize_t size2[1] = {GB8LL};
hssize_t hs_start[1];
hsize_t hs_size[1];
- hid_t plist, file, space1, space2, mem_space, d1, d2;
+ hid_t file=-1, space1=-1, space2=-1, mem_space=-1, d1=-1, d2=-1;
int *buf = malloc (sizeof(int) * WRT_SIZE);
int i, j;
FILE *out = fopen(DNAME, "w");
+ char filename[1024];
- printf("%-70s", "Writing large dataset");
- fflush(stdout);
+ TESTING("large dataset write");
/*
* We might be on a machine that has 32-bit files, so create an HDF5 file
* which is a family of files. Each member of the family will be 1GB
*/
- if ((plist = H5Pcreate (H5P_FILE_ACCESS))<0) goto error;
- if (H5Pset_family (plist, FAMILY_SIZE, H5P_DEFAULT)<0) goto error;
- file = H5Fcreate (FNAME, H5F_ACC_TRUNC|H5F_ACC_DEBUG, H5P_DEFAULT, plist);
- if (file<0) goto error;
- if (H5Pclose (plist)<0) goto error;
+ h5_fixname(FILENAME[0], fapl, filename, sizeof filename);
+ if ((file=H5Fcreate(filename, H5F_ACC_TRUNC|H5F_ACC_DEBUG, H5P_DEFAULT,
+ fapl))<0) goto error;
/* Create simple data spaces according to the size specified above. */
if ((space1 = H5Screate_simple (4, size1, size1))<0 ||
@@ -237,10 +225,20 @@ writer (int wrt_n)
if (H5Fclose (file)<0) goto error;
free (buf);
fclose(out);
- puts(" PASSED");
+ PASSED();
return 0;
error:
+ H5E_BEGIN_TRY {
+ H5Dclose(d1);
+ H5Dclose(d2);
+ H5Sclose(space1);
+ H5Sclose(space2);
+ H5Sclose(mem_space);
+ H5Fclose(file);
+ } H5E_END_TRY;
+ if (buf) free(buf);
+ if (out) fclose(out);
return 1;
}
@@ -262,26 +260,25 @@ writer (int wrt_n)
*-------------------------------------------------------------------------
*/
static int
-reader (void)
+reader (hid_t fapl)
{
- FILE *script;
- hid_t plist, file, mspace, fspace, d2;
+ FILE *script = NULL;
+ hid_t file=-1, mspace=-1, fspace=-1, d2=-1;
char ln[128], *s;
hssize_t hs_offset[1];
hsize_t hs_size[1] = {WRT_SIZE};
int *buf = malloc (sizeof(int) * WRT_SIZE);
int i, j, zero, wrong, nerrors=0;
+ char filename[1024];
/* Open script file */
script = fopen (DNAME, "r");
/* Open HDF5 file */
- if ((plist = H5Pcreate (H5P_FILE_ACCESS))<0) goto error;
- if (H5Pset_family (plist, FAMILY_SIZE, H5P_DEFAULT)<0) goto error;
- if ((file = H5Fopen (FNAME, H5F_ACC_RDONLY|H5F_ACC_DEBUG, plist))<0) {
+ h5_fixname(FILENAME[0], fapl, filename, sizeof filename);
+ if ((file=H5Fopen(filename, H5F_ACC_RDONLY|H5F_ACC_DEBUG, fapl))<0) {
goto error;
}
- if (H5Pclose (plist)<0) goto error;
/* Open the dataset */
if ((d2 = H5Dopen (file, "d2"))<0) goto error;
@@ -310,14 +307,14 @@ reader (void)
else if (buf[j]!=i+1) wrong++;
}
if (zero) {
- puts("*FAILED*");
- printf(" %d zero%s\n", zero, 1==zero?"":"s");
+ FAILED();
+ printf(" %d zero%s\n", zero, 1==zero?"":"s");
} else if (wrong) {
- puts("--SKIP--");
- puts(" Possible overlap with another region.");
+ SKIPPED();
+ puts(" Possible overlap with another region.");
nerrors++;
} else {
- puts(" PASSED");
+ PASSED();
}
}
@@ -330,41 +327,19 @@ reader (void)
return nerrors;
error:
+ H5E_BEGIN_TRY {
+ H5Dclose(d2);
+ H5Sclose(mspace);
+ H5Sclose(fspace);
+ H5Fclose(file);
+ } H5E_END_TRY;
+ if (buf) free(buf);
+ if (script) fclose(script);
return 1;
}
/*-------------------------------------------------------------------------
- * Function: cleanup
- *
- * Purpose: Removes test files
- *
- * Return: void
- *
- * Programmer: Robb Matzke
- * Thursday, June 4, 1998
- *
- * Modifications:
- *
- *-------------------------------------------------------------------------
- */
-static void
-cleanup (void)
-{
- int i;
- char buf[256];
-
- if (!getenv ("HDF5_NOCLEANUP")) {
- for (i=0; i<512; i++) {
- sprintf(buf, FNAME, i);
- remove(buf);
- }
- remove(DNAME);
- }
-}
-
-
-/*-------------------------------------------------------------------------
* Function: main
*
* Purpose:
@@ -383,18 +358,41 @@ cleanup (void)
int
main (void)
{
- int nerrors = 0;
+ hid_t fapl=-1;
+ hsize_t family_size;
+ /* Reset library */
+ h5_reset();
+ fapl = h5_fileaccess();
+
+ /* The file driver must be the family driver */
+ if (H5F_LOW_FAMILY!=H5Pget_driver(fapl)) {
+ printf("Changing file drivers to the family driver, %lu bytes each\n",
+ (unsigned long)FAMILY_SIZE);
+ if (H5Pset_family(fapl, FAMILY_SIZE, H5P_DEFAULT)<0) goto error;
+ } else if (H5Pget_family(fapl, &family_size, NULL)<0) {
+ goto error;
+ } else if (family_size!=FAMILY_SIZE) {
+ printf("Changing family member size from %lu to %lu\n",
+ (unsigned long)family_size, (unsigned long)FAMILY_SIZE);
+ if (H5Pset_family(fapl, FAMILY_SIZE, H5P_DEFAULT)<0) goto error;
+ }
+
/*
* We shouldn't run this test if the file system doesn't support holes
* because we would generate multi-gigabyte files.
*/
puts("Checking if file system is adequate for this test...");
+ if (sizeof(long_long)<8 || 0==GB8LL) {
+ puts("Test skipped because sizeof(long_long) is too small. This");
+ puts("hardware apparently doesn't support 64-bit integer types.");
+ exit(0);
+ }
if (!is_sparse()) {
puts("Test skipped because file system does not support holes.");
exit(0);
}
- if (!enough_room()) {
+ if (!enough_room(fapl)) {
puts("Test skipped because of quota (file size or num open files).");
exit(0);
}
@@ -403,13 +401,15 @@ main (void)
puts("--disable-hsizet flag in order to work around a compiler bug.");
exit(0);
}
-
- /* Set the error handler */
- H5Eset_auto (display_error_cb, NULL);
+ /* Do the test */
+ if (writer(fapl, WRT_N)) goto error;
+ if (reader(fapl)) goto error;
+ puts("All big tests passed.");
+ if (h5_cleanup(fapl)) remove(DNAME);
+ return 0;
- if ((nerrors=writer(WRT_N))>0) exit(nerrors);
- nerrors = reader();
- cleanup();
- return nerrors;
+ error:
+ puts("*** TEST FAILED ***");
+ return 1;
}
diff --git a/test/dtypes.c b/test/dtypes.c
index fef773a..fee49ab 100644
--- a/test/dtypes.c
+++ b/test/dtypes.c
@@ -10,9 +10,12 @@
#include <h5test.h>
-#if SIZEOF_DOUBLE != SIZEOF_LONG_DOUBLE
-# define USE_LDOUBLE
-#endif
+/* Number of times to run each test */
+#define NTESTS 1
+
+/* Define if you want to see a count of overflows */
+#undef SHOW_OVERFLOWS
+
const char *FILENAME[] = {
"dtypes1",
@@ -38,7 +41,7 @@ typedef enum flt_t {
typedef enum int_t {
INT_CHAR, INT_UCHAR, INT_SHORT, INT_USHORT, INT_INT, INT_UINT,
- INT_LONG, INT_ULONG, INT_OTHER
+ INT_LONG, INT_ULONG, INT_LLONG, INT_ULLONG, INT_OTHER
} int_t;
/* Count the number of overflows */
@@ -217,7 +220,9 @@ static void
reset_hdf5(void)
{
h5_reset();
+#ifdef SHOW_OVERFLOWS
H5Tset_overflow(overflow_handler);
+#endif
if (without_hardware_g) h5_no_hwconv();
}
@@ -958,7 +963,7 @@ test_conv_str_2(void)
{
char *buf=NULL, s[80];
hid_t c_type, f_type;
- const size_t nelmts = 200000, ntests=5;
+ const size_t nelmts = 200000, ntests=NTESTS;
size_t i, j, nchars;
herr_t ret_value = -1;
@@ -978,8 +983,12 @@ test_conv_str_2(void)
/* Do the conversions */
for (i=0; i<ntests; i++) {
- sprintf(s, "Testing random string conversion speed (test %d/%d)",
- (int)(i+1), (int)ntests);
+ if (ntests>1) {
+ sprintf(s, "Testing random string conversion speed (test %d/%d)",
+ (int)(i+1), (int)ntests);
+ } else {
+ sprintf(s, "Testing random string conversion speed");
+ }
printf("%-70s", s);
fflush(stdout);
if (H5Tconvert(c_type, f_type, nelmts, buf, NULL)<0) goto error;
@@ -1141,7 +1150,7 @@ test_conv_int (void)
static int
test_conv_int_1(const char *name, hid_t src, hid_t dst)
{
- const size_t ntests=5; /*number of tests */
+ const size_t ntests=NTESTS; /*number of tests */
const size_t nelmts=200000; /*num values per test */
const size_t max_fails=8; /*max number of failures*/
size_t fails_all_tests=0; /*number of failures */
@@ -1168,6 +1177,8 @@ test_conv_int_1(const char *name, hid_t src, hid_t dst)
unsigned hw_uint;
long hw_long;
unsigned long hw_ulong;
+ long_long hw_llong;
+ unsigned long_long hw_ullong;
/* What are the names of the source and destination types */
@@ -1195,6 +1206,12 @@ test_conv_int_1(const char *name, hid_t src, hid_t dst)
} else if (H5Tequal(src, H5T_NATIVE_ULONG)) {
src_type_name = "unsigned long";
src_type = INT_ULONG;
+ } else if (H5Tequal(src, H5T_NATIVE_LLONG)) {
+ src_type_name = "long long";
+ src_type = INT_LLONG;
+ } else if (H5Tequal(src, H5T_NATIVE_ULLONG)) {
+ src_type_name = "unsigned long long";
+ src_type = INT_ULLONG;
} else {
src_type_name = "UNKNOWN";
src_type = INT_OTHER;
@@ -1224,6 +1241,12 @@ test_conv_int_1(const char *name, hid_t src, hid_t dst)
} else if (H5Tequal(dst, H5T_NATIVE_ULONG)) {
dst_type_name = "unsigned long";
dst_type = INT_ULONG;
+ } else if (H5Tequal(dst, H5T_NATIVE_LLONG)) {
+ dst_type_name = "long long";
+ dst_type = INT_LLONG;
+ } else if (H5Tequal(dst, H5T_NATIVE_ULLONG)) {
+ dst_type_name = "unsigned long long";
+ dst_type = INT_ULLONG;
} else {
dst_type_name = "UNKNOWN";
dst_type = INT_OTHER;
@@ -1249,8 +1272,13 @@ test_conv_int_1(const char *name, hid_t src, hid_t dst)
/* The tests */
for (i=0; i<ntests; i++) {
- sprintf(str, "Testing random %s %s -> %s conversions (test %d/%d)",
- name, src_type_name, dst_type_name, (int)i+1, (int)ntests);
+ if (ntests>1) {
+ sprintf(str, "Testing random %s %s -> %s conversions (test %d/%d)",
+ name, src_type_name, dst_type_name, (int)i+1, (int)ntests);
+ } else {
+ sprintf(str, "Testing random %s %s -> %s conversions",
+ name, src_type_name, dst_type_name);
+ }
printf("%-70s", str);
fflush(stdout);
fails_this_test=0;
@@ -1294,6 +1322,12 @@ test_conv_int_1(const char *name, hid_t src, hid_t dst)
case INT_ULONG:
hw_char = ((unsigned long*)saved)[j];
break;
+ case INT_LLONG:
+ hw_char = ((long_long*)saved)[j];
+ break;
+ case INT_ULLONG:
+ hw_char = ((unsigned long_long*)saved)[j];
+ break;
case INT_OTHER:
break;
}
@@ -1324,6 +1358,12 @@ test_conv_int_1(const char *name, hid_t src, hid_t dst)
case INT_ULONG:
hw_uchar = ((unsigned long*)saved)[j];
break;
+ case INT_LLONG:
+ hw_uchar = ((long_long*)saved)[j];
+ break;
+ case INT_ULLONG:
+ hw_uchar = ((unsigned long_long*)saved)[j];
+ break;
case INT_OTHER:
break;
}
@@ -1354,6 +1394,12 @@ test_conv_int_1(const char *name, hid_t src, hid_t dst)
case INT_ULONG:
hw_short = ((unsigned long*)saved)[j];
break;
+ case INT_LLONG:
+ hw_short = ((long_long*)saved)[j];
+ break;
+ case INT_ULLONG:
+ hw_short = ((unsigned long_long*)saved)[j];
+ break;
case INT_OTHER:
break;
}
@@ -1384,6 +1430,12 @@ test_conv_int_1(const char *name, hid_t src, hid_t dst)
case INT_ULONG:
hw_ushort = ((unsigned long*)saved)[j];
break;
+ case INT_LLONG:
+ hw_ushort = ((long_long*)saved)[j];
+ break;
+ case INT_ULLONG:
+ hw_ushort = ((unsigned long_long*)saved)[j];
+ break;
case INT_OTHER:
break;
}
@@ -1414,6 +1466,12 @@ test_conv_int_1(const char *name, hid_t src, hid_t dst)
case INT_ULONG:
hw_int = ((unsigned long*)saved)[j];
break;
+ case INT_LLONG:
+ hw_int = ((long_long*)saved)[j];
+ break;
+ case INT_ULLONG:
+ hw_int = ((unsigned long_long*)saved)[j];
+ break;
case INT_OTHER:
break;
}
@@ -1444,6 +1502,12 @@ test_conv_int_1(const char *name, hid_t src, hid_t dst)
case INT_ULONG:
hw_uint = ((unsigned long*)saved)[j];
break;
+ case INT_LLONG:
+ hw_uint = ((long_long*)saved)[j];
+ break;
+ case INT_ULLONG:
+ hw_uint = ((unsigned long_long*)saved)[j];
+ break;
case INT_OTHER:
break;
}
@@ -1474,6 +1538,12 @@ test_conv_int_1(const char *name, hid_t src, hid_t dst)
case INT_ULONG:
hw_long = ((unsigned long*)saved)[j];
break;
+ case INT_LLONG:
+ hw_long = ((long_long*)saved)[j];
+ break;
+ case INT_ULLONG:
+ hw_long = ((unsigned long_long*)saved)[j];
+ break;
case INT_OTHER:
break;
}
@@ -1504,6 +1574,84 @@ test_conv_int_1(const char *name, hid_t src, hid_t dst)
case INT_ULONG:
hw_ulong = ((unsigned long*)saved)[j];
break;
+ case INT_LLONG:
+ hw_ulong = ((long_long*)saved)[j];
+ break;
+ case INT_ULLONG:
+ hw_ulong = ((unsigned long_long*)saved)[j];
+ break;
+ case INT_OTHER:
+ break;
+ }
+ } else if (INT_LLONG==dst_type) {
+ hw = (unsigned char*)&hw_llong;
+ switch (src_type) {
+ case INT_CHAR:
+ hw_llong = ((signed char*)saved)[j];
+ break;
+ case INT_UCHAR:
+ hw_llong = ((unsigned char*)saved)[j];
+ break;
+ case INT_SHORT:
+ hw_llong = ((short*)saved)[j];
+ break;
+ case INT_USHORT:
+ hw_llong = ((unsigned short*)saved)[j];
+ break;
+ case INT_INT:
+ hw_llong = ((int*)saved)[j];
+ break;
+ case INT_UINT:
+ hw_llong = ((unsigned*)saved)[j];
+ break;
+ case INT_LONG:
+ hw_llong = ((long*)saved)[j];
+ break;
+ case INT_ULONG:
+ hw_llong = ((unsigned long*)saved)[j];
+ break;
+ case INT_LLONG:
+ hw_llong = ((long_long*)saved)[j];
+ break;
+ case INT_ULLONG:
+ hw_llong = ((unsigned long_long*)saved)[j];
+ break;
+ case INT_OTHER:
+ break;
+ }
+ } else if (INT_ULLONG==dst_type) {
+ hw = (unsigned char*)&hw_ullong;
+ switch (src_type) {
+ case INT_CHAR:
+ hw_ullong = ((signed char*)saved)[j];
+ break;
+ case INT_UCHAR:
+ hw_ullong = ((unsigned char*)saved)[j];
+ break;
+ case INT_SHORT:
+ hw_ullong = ((short*)saved)[j];
+ break;
+ case INT_USHORT:
+ hw_ullong = ((unsigned short*)saved)[j];
+ break;
+ case INT_INT:
+ hw_ullong = ((int*)saved)[j];
+ break;
+ case INT_UINT:
+ hw_ullong = ((unsigned*)saved)[j];
+ break;
+ case INT_LONG:
+ hw_ullong = ((long*)saved)[j];
+ break;
+ case INT_ULONG:
+ hw_ullong = ((unsigned long*)saved)[j];
+ break;
+ case INT_LLONG:
+ hw_ullong = ((long_long*)saved)[j];
+ break;
+ case INT_ULLONG:
+ hw_ullong = ((unsigned long_long*)saved)[j];
+ break;
case INT_OTHER:
break;
}
@@ -1663,6 +1811,13 @@ test_conv_int_1(const char *name, hid_t src, hid_t dst)
case INT_ULONG:
printf(" %29lu\n", ((unsigned long*)saved)[j]);
break;
+ case INT_LLONG:
+ printf(" %29"PRINTF_LL_WIDTH"d\n", ((long_long*)saved)[j]);
+ break;
+ case INT_ULLONG:
+ printf(" %29"PRINTF_LL_WIDTH"u\n",
+ ((unsigned long_long*)saved)[j]);
+ break;
case INT_OTHER:
break;
}
@@ -1697,6 +1852,13 @@ test_conv_int_1(const char *name, hid_t src, hid_t dst)
case INT_ULONG:
printf(" %29lu\n", ((unsigned long*)buf)[j]);
break;
+ case INT_LLONG:
+ printf(" %29"PRINTF_LL_WIDTH"d\n", ((long_long*)buf)[j]);
+ break;
+ case INT_ULLONG:
+ printf(" %29"PRINTF_LL_WIDTH"u\n",
+ ((unsigned long_long*)buf)[j]);
+ break;
case INT_OTHER:
break;
}
@@ -1731,6 +1893,12 @@ test_conv_int_1(const char *name, hid_t src, hid_t dst)
case INT_ULONG:
printf(" %29lu\n", *((unsigned long*)hw));
break;
+ case INT_LLONG:
+ printf(" %29"PRINTF_LL_WIDTH"d\n", *((long_long*)hw));
+ break;
+ case INT_ULLONG:
+ printf(" %29"PRINTF_LL_WIDTH"u\n", *((unsigned long_long*)hw));
+ break;
case INT_OTHER:
break;
}
@@ -1742,9 +1910,12 @@ test_conv_int_1(const char *name, hid_t src, hid_t dst)
}
PASSED();
}
+#ifdef SHOW_OVERFLOWS
if (noverflows_g>0) {
- printf(" %d overflow%s\n", noverflows_g, 1==noverflows_g?"":"s");
+ printf(" %d overflow%s in previous test\n",
+ noverflows_g, 1==noverflows_g?"":"s");
}
+#endif
done:
if (buf) free(buf);
@@ -1791,7 +1962,7 @@ my_isnan(flt_t type, void *val)
retval = (*((double*)val)!=*((double*)val));
break;
-#ifdef USE_LDOUBLE
+#if SIZEOF_LDOUBLE!=SIZEOF_DOUBLE
case FLT_LDOUBLE:
retval = (*((long double*)val)!=*((long double*)val));
break;
@@ -1815,7 +1986,7 @@ my_isnan(flt_t type, void *val)
sprintf(s, "%g", *((double*)val));
break;
-#ifdef USE_LDOUBLE
+#if SIZEOF_LDOUBLE!=SIZEOF_DOUBLE
case FLT_LDOUBLE:
sprintf(s, "%Lg", *((long double*)val));
break;
@@ -1856,7 +2027,7 @@ static int
test_conv_flt_1 (const char *name, hid_t src, hid_t dst)
{
flt_t src_type, dst_type; /*data types */
- const size_t ntests=5; /*number of tests */
+ const size_t ntests=NTESTS; /*number of tests */
const size_t nelmts=200000; /*num values per test */
const size_t max_fails=8; /*max number of failures*/
size_t fails_all_tests=0; /*number of failures */
@@ -1869,7 +2040,7 @@ test_conv_flt_1 (const char *name, hid_t src, hid_t dst)
char str[256]; /*hello string */
float hw_f; /*hardware-converted */
double hw_d; /*hardware-converted */
-#ifdef USE_LDOUBLE
+#if SIZEOF_LDOUBLE!=SIZEOF_DOUBLE
long double hw_ld; /*hardware-converted */
#endif
unsigned char *hw=NULL; /*ptr to hardware-conv'd*/
@@ -1917,7 +2088,7 @@ test_conv_flt_1 (const char *name, hid_t src, hid_t dst)
} else if (H5Tequal(src, H5T_NATIVE_DOUBLE)) {
src_type_name = "double";
src_type = FLT_DOUBLE;
-#ifdef USE_LDOUBLE
+#if SIZEOF_LDOUBLE!=SIZEOF_DOUBLE
} else if (H5Tequal(src, H5T_NATIVE_LDOUBLE)) {
src_type_name = "long double";
src_type = FLT_LDOUBLE;
@@ -1933,7 +2104,7 @@ test_conv_flt_1 (const char *name, hid_t src, hid_t dst)
} else if (H5Tequal(dst, H5T_NATIVE_DOUBLE)) {
dst_type_name = "double";
dst_type = FLT_DOUBLE;
-#ifdef USE_LDOUBLE
+#if SIZEOF_LDOUBLE!=SIZEOF_DOUBLE
} else if (H5Tequal(dst, H5T_NATIVE_LDOUBLE)) {
dst_type_name = "long double";
dst_type = FLT_LDOUBLE;
@@ -1968,8 +2139,13 @@ test_conv_flt_1 (const char *name, hid_t src, hid_t dst)
* If it looks like it might take a long time then print a progress
* report between each test.
*/
- sprintf(str, "Testing random %s %s -> %s conversions (test %d/%d)",
- name, src_type_name, dst_type_name, (int)i+1, (int)ntests);
+ if (ntests>1) {
+ sprintf(str, "Testing random %s %s -> %s conversions (test %d/%d)",
+ name, src_type_name, dst_type_name, (int)i+1, (int)ntests);
+ } else {
+ sprintf(str, "Testing random %s %s -> %s conversions",
+ name, src_type_name, dst_type_name);
+ }
printf("%-70s", str);
fflush(stdout);
fails_this_test = 0;
@@ -1984,7 +2160,7 @@ test_conv_flt_1 (const char *name, hid_t src, hid_t dst)
} else {
for (j=0; j<nelmts; j++) {
/* Do it this way for alignment reasons */
-#ifdef USE_LDOUBLE
+#if SIZEOF_LDOUBLE!=SIZEOF_DOUBLE
long double temp[1];
#else
double temp[1];
@@ -1998,7 +2174,7 @@ test_conv_flt_1 (const char *name, hid_t src, hid_t dst)
if (FLT_DOUBLE==src_type && FLT_FLOAT==dst_type) {
hw_d = *((float*)temp);
memcpy(buf+j*src_size, &hw_d, src_size);
-#ifdef USE_LDOUBLE
+#if SIZEOF_LDOUBLE!=SIZEOF_DOUBLE
} else if (FLT_LDOUBLE==src_type && FLT_FLOAT==dst_type) {
hw_ld = *((float*)temp);
memcpy(buf+j*src_size, &hw_ld, src_size);
@@ -2019,7 +2195,7 @@ test_conv_flt_1 (const char *name, hid_t src, hid_t dst)
for (j=0; j<nelmts; j++) {
hw_f = 911.0;
hw_d = 911.0;
-#ifdef USE_LDOUBLE
+#if SIZEOF_LDOUBLE!=SIZEOF_DOUBLE
hw_ld = 911.0;
#endif
@@ -2031,7 +2207,7 @@ test_conv_flt_1 (const char *name, hid_t src, hid_t dst)
} else if (FLT_DOUBLE==dst_type) {
hw_d = ((float*)saved)[j];
hw = (unsigned char*)&hw_d;
-#ifdef USE_LDOUBLE
+#if SIZEOF_LDOUBLE!=SIZEOF_DOUBLE
} else {
hw_ld = ((float*)saved)[j];
hw = (unsigned char*)&hw_ld;
@@ -2044,13 +2220,13 @@ test_conv_flt_1 (const char *name, hid_t src, hid_t dst)
} else if (FLT_DOUBLE==dst_type) {
hw_d = ((double*)saved)[j];
hw = (unsigned char*)&hw_d;
-#ifdef USE_LDOUBLE
+#if SIZEOF_LDOUBLE!=SIZEOF_DOUBLE
} else {
hw_ld = ((double*)saved)[j];
hw = (unsigned char*)&hw_ld;
#endif
}
-#ifdef USE_LDOUBLE
+#if SIZEOF_LDOUBLE!=SIZEOF_DOUBLE
} else {
if (FLT_FLOAT==dst_type) {
hw_f = ((long double*)saved)[j];
@@ -2086,7 +2262,7 @@ test_conv_flt_1 (const char *name, hid_t src, hid_t dst)
my_isnan(dst_type, (double*)buf+j) &&
my_isnan(dst_type, hw)) {
continue;
-#ifdef USE_LDOUBLE
+#if SIZEOF_LDOUBLE!=SIZEOF_DOUBLE
} else if (FLT_LDOUBLE==dst_type &&
my_isnan(dst_type, (long double*)buf+j) &&
my_isnan(dst_type, hw)) {
@@ -2121,7 +2297,7 @@ test_conv_flt_1 (const char *name, hid_t src, hid_t dst)
} else if (FLT_DOUBLE==dst_type) {
check_mant[0] = frexp(((double*)buf)[j], check_expo+0);
check_mant[1] = frexp(((double*)hw)[0], check_expo+1);
-#ifdef USE_LDOUBLE
+#if SIZEOF_LDOUBLE!=SIZEOF_DOUBLE
} else {
check_mant[0] = frexp(((long double*)buf)[j],check_expo+0);
check_mant[1] = frexp(((long double*)hw)[0],check_expo+1);
@@ -2146,7 +2322,7 @@ test_conv_flt_1 (const char *name, hid_t src, hid_t dst)
printf(" %29.20e\n", ((float*)saved)[j]);
} else if (FLT_DOUBLE==src_type) {
printf(" %29.20e\n", ((double*)saved)[j]);
-#ifdef USE_LDOUBLE
+#if SIZEOF_LDOUBLE!=SIZEOF_DOUBLE
} else {
printf(" %29.20Le\n", ((long double*)saved)[j]);
#endif
@@ -2161,7 +2337,7 @@ test_conv_flt_1 (const char *name, hid_t src, hid_t dst)
printf(" %29.20e\n", ((float*)buf)[j]);
} else if (FLT_DOUBLE==dst_type) {
printf(" %29.20e\n", ((double*)buf)[j]);
-#ifdef USE_LDOUBLE
+#if SIZEOF_LDOUBLE!=SIZEOF_DOUBLE
} else {
printf(" %29.20Le\n", ((long double*)buf)[j]);
#endif
@@ -2176,7 +2352,7 @@ test_conv_flt_1 (const char *name, hid_t src, hid_t dst)
printf(" %29.20e\n", hw_f);
} else if (FLT_DOUBLE==dst_type) {
printf(" %29.20e\n", hw_d);
-#ifdef USE_LDOUBLE
+#if SIZEOF_LDOUBLE!=SIZEOF_DOUBLE
} else {
printf(" %29.20Le\n", hw_ld);
#endif
@@ -2189,9 +2365,12 @@ test_conv_flt_1 (const char *name, hid_t src, hid_t dst)
}
PASSED();
}
+#ifdef SHOW_OVERFLOWS
if (noverflows_g>0) {
- printf(" %d overflow%s\n", noverflows_g, 1==noverflows_g?"":"s");
+ printf(" %d overflow%s in previous test\n",
+ noverflows_g, 1==noverflows_g?"":"s");
}
+#endif
done:
if (buf) free (buf);
@@ -2218,6 +2397,169 @@ test_conv_flt_1 (const char *name, hid_t src, hid_t dst)
/*-------------------------------------------------------------------------
+ * Function: run_integer_tests
+ *
+ * Purpose: Runs all integer tests.
+ *
+ * Return: Number of errors
+ *
+ * Programmer: Robb Matzke
+ * Tuesday, November 24, 1998
+ *
+ * Modifications:
+ *
+ *-------------------------------------------------------------------------
+ */
+static int
+run_integer_tests(const char *name)
+{
+ int nerrors = 0;
+
+ nerrors += test_conv_int_1(name, H5T_NATIVE_CHAR, H5T_NATIVE_UCHAR);
+ nerrors += test_conv_int_1(name, H5T_NATIVE_CHAR, H5T_NATIVE_SHORT);
+ nerrors += test_conv_int_1(name, H5T_NATIVE_CHAR, H5T_NATIVE_USHORT);
+ nerrors += test_conv_int_1(name, H5T_NATIVE_CHAR, H5T_NATIVE_INT);
+ nerrors += test_conv_int_1(name, H5T_NATIVE_CHAR, H5T_NATIVE_UINT);
+#if SIZEOF_LONG!=SIZEOF_INT
+ nerrors += test_conv_int_1(name, H5T_NATIVE_CHAR, H5T_NATIVE_LONG);
+ nerrors += test_conv_int_1(name, H5T_NATIVE_CHAR, H5T_NATIVE_ULONG);
+#endif
+#if SIZEOF_LONG_LONG!=SIZEOF_LONG
+ nerrors += test_conv_int_1(name, H5T_NATIVE_CHAR, H5T_NATIVE_LLONG);
+ nerrors += test_conv_int_1(name, H5T_NATIVE_CHAR, H5T_NATIVE_ULLONG);
+#endif
+
+ nerrors += test_conv_int_1(name, H5T_NATIVE_UCHAR, H5T_NATIVE_CHAR);
+ nerrors += test_conv_int_1(name, H5T_NATIVE_UCHAR, H5T_NATIVE_SHORT);
+ nerrors += test_conv_int_1(name, H5T_NATIVE_UCHAR, H5T_NATIVE_USHORT);
+ nerrors += test_conv_int_1(name, H5T_NATIVE_UCHAR, H5T_NATIVE_INT);
+ nerrors += test_conv_int_1(name, H5T_NATIVE_UCHAR, H5T_NATIVE_UINT);
+#if SIZEOF_LONG!=SIZEOF_INT
+ nerrors += test_conv_int_1(name, H5T_NATIVE_UCHAR, H5T_NATIVE_LONG);
+ nerrors += test_conv_int_1(name, H5T_NATIVE_UCHAR, H5T_NATIVE_ULONG);
+#endif
+#if SIZEOF_LONG_LONG!=SIZEOF_LONG
+ nerrors += test_conv_int_1(name, H5T_NATIVE_UCHAR, H5T_NATIVE_LLONG);
+ nerrors += test_conv_int_1(name, H5T_NATIVE_UCHAR, H5T_NATIVE_ULLONG);
+#endif
+
+ nerrors += test_conv_int_1(name, H5T_NATIVE_SHORT, H5T_NATIVE_CHAR);
+ nerrors += test_conv_int_1(name, H5T_NATIVE_SHORT, H5T_NATIVE_UCHAR);
+ nerrors += test_conv_int_1(name, H5T_NATIVE_SHORT, H5T_NATIVE_USHORT);
+ nerrors += test_conv_int_1(name, H5T_NATIVE_SHORT, H5T_NATIVE_INT);
+ nerrors += test_conv_int_1(name, H5T_NATIVE_SHORT, H5T_NATIVE_UINT);
+#if SIZEOF_LONG!=SIZEOF_INT
+ nerrors += test_conv_int_1(name, H5T_NATIVE_SHORT, H5T_NATIVE_LONG);
+ nerrors += test_conv_int_1(name, H5T_NATIVE_SHORT, H5T_NATIVE_ULONG);
+#endif
+#if SIZEOF_LONG_LONG!=SIZEOF_LONG
+ nerrors += test_conv_int_1(name, H5T_NATIVE_SHORT, H5T_NATIVE_LLONG);
+ nerrors += test_conv_int_1(name, H5T_NATIVE_SHORT, H5T_NATIVE_ULLONG);
+#endif
+
+ nerrors += test_conv_int_1(name, H5T_NATIVE_USHORT, H5T_NATIVE_CHAR);
+ nerrors += test_conv_int_1(name, H5T_NATIVE_USHORT, H5T_NATIVE_UCHAR);
+ nerrors += test_conv_int_1(name, H5T_NATIVE_USHORT, H5T_NATIVE_SHORT);
+ nerrors += test_conv_int_1(name, H5T_NATIVE_USHORT, H5T_NATIVE_INT);
+ nerrors += test_conv_int_1(name, H5T_NATIVE_USHORT, H5T_NATIVE_UINT);
+#if SIZEOF_LONG!=SIZEOF_INT
+ nerrors += test_conv_int_1(name, H5T_NATIVE_USHORT, H5T_NATIVE_LONG);
+ nerrors += test_conv_int_1(name, H5T_NATIVE_USHORT, H5T_NATIVE_ULONG);
+#endif
+#if SIZEOF_LONG_LONG!=SIZEOF_LONG
+ nerrors += test_conv_int_1(name, H5T_NATIVE_USHORT, H5T_NATIVE_LLONG);
+ nerrors += test_conv_int_1(name, H5T_NATIVE_USHORT, H5T_NATIVE_ULLONG);
+#endif
+
+ nerrors += test_conv_int_1(name, H5T_NATIVE_INT, H5T_NATIVE_CHAR);
+ nerrors += test_conv_int_1(name, H5T_NATIVE_INT, H5T_NATIVE_UCHAR);
+ nerrors += test_conv_int_1(name, H5T_NATIVE_INT, H5T_NATIVE_SHORT);
+ nerrors += test_conv_int_1(name, H5T_NATIVE_INT, H5T_NATIVE_USHORT);
+ nerrors += test_conv_int_1(name, H5T_NATIVE_INT, H5T_NATIVE_UINT);
+#if SIZEOF_LONG!=SIZEOF_INT
+ nerrors += test_conv_int_1(name, H5T_NATIVE_INT, H5T_NATIVE_LONG);
+ nerrors += test_conv_int_1(name, H5T_NATIVE_INT, H5T_NATIVE_ULONG);
+#endif
+#if SIZEOF_LONG_LONG!=SIZEOF_LONG
+ nerrors += test_conv_int_1(name, H5T_NATIVE_INT, H5T_NATIVE_LLONG);
+ nerrors += test_conv_int_1(name, H5T_NATIVE_INT, H5T_NATIVE_ULLONG);
+#endif
+
+ nerrors += test_conv_int_1(name, H5T_NATIVE_UINT, H5T_NATIVE_CHAR);
+ nerrors += test_conv_int_1(name, H5T_NATIVE_UINT, H5T_NATIVE_UCHAR);
+ nerrors += test_conv_int_1(name, H5T_NATIVE_UINT, H5T_NATIVE_SHORT);
+ nerrors += test_conv_int_1(name, H5T_NATIVE_UINT, H5T_NATIVE_USHORT);
+ nerrors += test_conv_int_1(name, H5T_NATIVE_UINT, H5T_NATIVE_INT);
+#if SIZEOF_LONG!=SIZEOF_INT
+ nerrors += test_conv_int_1(name, H5T_NATIVE_UINT, H5T_NATIVE_LONG);
+ nerrors += test_conv_int_1(name, H5T_NATIVE_UINT, H5T_NATIVE_ULONG);
+#endif
+#if SIZEOF_LONG_LONG!=SIZEOF_LONG
+ nerrors += test_conv_int_1(name, H5T_NATIVE_UINT, H5T_NATIVE_LLONG);
+ nerrors += test_conv_int_1(name, H5T_NATIVE_UINT, H5T_NATIVE_ULLONG);
+#endif
+
+#if SIZEOF_LONG!=SIZEOF_INT
+ nerrors += test_conv_int_1(name, H5T_NATIVE_LONG, H5T_NATIVE_CHAR);
+ nerrors += test_conv_int_1(name, H5T_NATIVE_LONG, H5T_NATIVE_UCHAR);
+ nerrors += test_conv_int_1(name, H5T_NATIVE_LONG, H5T_NATIVE_SHORT);
+ nerrors += test_conv_int_1(name, H5T_NATIVE_LONG, H5T_NATIVE_USHORT);
+ nerrors += test_conv_int_1(name, H5T_NATIVE_LONG, H5T_NATIVE_INT);
+ nerrors += test_conv_int_1(name, H5T_NATIVE_LONG, H5T_NATIVE_UINT);
+ nerrors += test_conv_int_1(name, H5T_NATIVE_LONG, H5T_NATIVE_ULONG);
+#if SIZEOF_LONG_LONG!=SIZEOF_LONG
+ nerrors += test_conv_int_1(name, H5T_NATIVE_LONG, H5T_NATIVE_LLONG);
+ nerrors += test_conv_int_1(name, H5T_NATIVE_LONG, H5T_NATIVE_ULLONG);
+#endif
+#endif
+
+#if SIZEOF_LONG!=SIZEOF_INT
+ nerrors += test_conv_int_1(name, H5T_NATIVE_ULONG, H5T_NATIVE_CHAR);
+ nerrors += test_conv_int_1(name, H5T_NATIVE_ULONG, H5T_NATIVE_UCHAR);
+ nerrors += test_conv_int_1(name, H5T_NATIVE_ULONG, H5T_NATIVE_SHORT);
+ nerrors += test_conv_int_1(name, H5T_NATIVE_ULONG, H5T_NATIVE_USHORT);
+ nerrors += test_conv_int_1(name, H5T_NATIVE_ULONG, H5T_NATIVE_INT);
+ nerrors += test_conv_int_1(name, H5T_NATIVE_ULONG, H5T_NATIVE_UINT);
+ nerrors += test_conv_int_1(name, H5T_NATIVE_ULONG, H5T_NATIVE_LONG);
+#if SIZEOF_LONG_LONG!=SIZEOF_LONG
+ nerrors += test_conv_int_1(name, H5T_NATIVE_ULONG, H5T_NATIVE_LLONG);
+ nerrors += test_conv_int_1(name, H5T_NATIVE_ULONG, H5T_NATIVE_ULLONG);
+#endif
+#endif
+
+#if SIZEOF_LONG_LONG!=SIZEOF_LONG
+ nerrors += test_conv_int_1(name, H5T_NATIVE_LLONG, H5T_NATIVE_CHAR);
+ nerrors += test_conv_int_1(name, H5T_NATIVE_LLONG, H5T_NATIVE_UCHAR);
+ nerrors += test_conv_int_1(name, H5T_NATIVE_LLONG, H5T_NATIVE_SHORT);
+ nerrors += test_conv_int_1(name, H5T_NATIVE_LLONG, H5T_NATIVE_USHORT);
+ nerrors += test_conv_int_1(name, H5T_NATIVE_LLONG, H5T_NATIVE_INT);
+ nerrors += test_conv_int_1(name, H5T_NATIVE_LLONG, H5T_NATIVE_UINT);
+#if SIZEOF_LONG!=SIZEOF_INT
+ nerrors += test_conv_int_1(name, H5T_NATIVE_LLONG, H5T_NATIVE_LONG);
+ nerrors += test_conv_int_1(name, H5T_NATIVE_LLONG, H5T_NATIVE_ULONG);
+#endif
+ nerrors += test_conv_int_1(name, H5T_NATIVE_LLONG, H5T_NATIVE_ULLONG);
+#endif
+
+#if SIZEOF_LONG_LONG!=SIZEOF_LONG
+ nerrors += test_conv_int_1(name, H5T_NATIVE_ULLONG, H5T_NATIVE_CHAR);
+ nerrors += test_conv_int_1(name, H5T_NATIVE_ULLONG, H5T_NATIVE_UCHAR);
+ nerrors += test_conv_int_1(name, H5T_NATIVE_ULLONG, H5T_NATIVE_SHORT);
+ nerrors += test_conv_int_1(name, H5T_NATIVE_ULLONG, H5T_NATIVE_USHORT);
+ nerrors += test_conv_int_1(name, H5T_NATIVE_ULLONG, H5T_NATIVE_INT);
+ nerrors += test_conv_int_1(name, H5T_NATIVE_ULLONG, H5T_NATIVE_UINT);
+#if SIZEOF_LONG!=SIZEOF_INT
+ nerrors += test_conv_int_1(name, H5T_NATIVE_ULLONG, H5T_NATIVE_LONG);
+ nerrors += test_conv_int_1(name, H5T_NATIVE_ULLONG, H5T_NATIVE_ULONG);
+#endif
+ nerrors += test_conv_int_1(name, H5T_NATIVE_ULLONG, H5T_NATIVE_LLONG);
+#endif
+
+ return nerrors;
+}
+
+
+/*-------------------------------------------------------------------------
* Function: main
*
* Purpose: Test the data type interface.
@@ -2248,6 +2590,7 @@ main(void)
nerrors += test_compound()<0 ? 1 : 0;
nerrors += test_transient (fapl)<0 ? 1 : 0;
nerrors += test_named (fapl)<0 ? 1 : 0;
+ h5_cleanup (fapl); /*must happen before first reset*/
reset_hdf5();
nerrors += test_conv_str_1()<0 ? 1 : 0;
@@ -2262,182 +2605,26 @@ main(void)
nerrors += test_conv_flt_1("noop", H5T_NATIVE_DOUBLE, H5T_NATIVE_DOUBLE);
/* Test hardware integer conversion functions */
- nerrors += test_conv_int_1("hw", H5T_NATIVE_CHAR, H5T_NATIVE_UCHAR);
- nerrors += test_conv_int_1("hw", H5T_NATIVE_CHAR, H5T_NATIVE_SHORT);
- nerrors += test_conv_int_1("hw", H5T_NATIVE_CHAR, H5T_NATIVE_USHORT);
- nerrors += test_conv_int_1("hw", H5T_NATIVE_CHAR, H5T_NATIVE_INT);
- nerrors += test_conv_int_1("hw", H5T_NATIVE_CHAR, H5T_NATIVE_UINT);
-#if SIZEOF_INT != SIZEOF_LONG
- nerrors += test_conv_int_1("hw", H5T_NATIVE_CHAR, H5T_NATIVE_LONG);
- nerrors += test_conv_int_1("hw", H5T_NATIVE_CHAR, H5T_NATIVE_ULONG);
-#endif
-
- nerrors += test_conv_int_1("hw", H5T_NATIVE_UCHAR, H5T_NATIVE_CHAR);
- nerrors += test_conv_int_1("hw", H5T_NATIVE_UCHAR, H5T_NATIVE_SHORT);
- nerrors += test_conv_int_1("hw", H5T_NATIVE_UCHAR, H5T_NATIVE_USHORT);
- nerrors += test_conv_int_1("hw", H5T_NATIVE_UCHAR, H5T_NATIVE_INT);
- nerrors += test_conv_int_1("hw", H5T_NATIVE_UCHAR, H5T_NATIVE_UINT);
-#if SIZEOF_INT != SIZEOF_LONG
- nerrors += test_conv_int_1("hw", H5T_NATIVE_UCHAR, H5T_NATIVE_LONG);
- nerrors += test_conv_int_1("hw", H5T_NATIVE_UCHAR, H5T_NATIVE_ULONG);
-#endif
-
- nerrors += test_conv_int_1("hw", H5T_NATIVE_SHORT, H5T_NATIVE_CHAR);
- nerrors += test_conv_int_1("hw", H5T_NATIVE_SHORT, H5T_NATIVE_UCHAR);
- nerrors += test_conv_int_1("hw", H5T_NATIVE_SHORT, H5T_NATIVE_USHORT);
- nerrors += test_conv_int_1("hw", H5T_NATIVE_SHORT, H5T_NATIVE_INT);
- nerrors += test_conv_int_1("hw", H5T_NATIVE_SHORT, H5T_NATIVE_UINT);
-#if SIZEOF_INT != SIZEOF_LONG
- nerrors += test_conv_int_1("hw", H5T_NATIVE_SHORT, H5T_NATIVE_LONG);
- nerrors += test_conv_int_1("hw", H5T_NATIVE_SHORT, H5T_NATIVE_ULONG);
-#endif
-
- nerrors += test_conv_int_1("hw", H5T_NATIVE_USHORT, H5T_NATIVE_CHAR);
- nerrors += test_conv_int_1("hw", H5T_NATIVE_USHORT, H5T_NATIVE_UCHAR);
- nerrors += test_conv_int_1("hw", H5T_NATIVE_USHORT, H5T_NATIVE_SHORT);
- nerrors += test_conv_int_1("hw", H5T_NATIVE_USHORT, H5T_NATIVE_INT);
- nerrors += test_conv_int_1("hw", H5T_NATIVE_USHORT, H5T_NATIVE_UINT);
-#if SIZEOF_INT != SIZEOF_LONG
- nerrors += test_conv_int_1("hw", H5T_NATIVE_USHORT, H5T_NATIVE_LONG);
- nerrors += test_conv_int_1("hw", H5T_NATIVE_USHORT, H5T_NATIVE_ULONG);
-#endif
-
- nerrors += test_conv_int_1("hw", H5T_NATIVE_INT, H5T_NATIVE_CHAR);
- nerrors += test_conv_int_1("hw", H5T_NATIVE_INT, H5T_NATIVE_UCHAR);
- nerrors += test_conv_int_1("hw", H5T_NATIVE_INT, H5T_NATIVE_SHORT);
- nerrors += test_conv_int_1("hw", H5T_NATIVE_INT, H5T_NATIVE_USHORT);
- nerrors += test_conv_int_1("hw", H5T_NATIVE_INT, H5T_NATIVE_UINT);
-#if SIZEOF_INT != SIZEOF_LONG
- nerrors += test_conv_int_1("hw", H5T_NATIVE_INT, H5T_NATIVE_LONG);
- nerrors += test_conv_int_1("hw", H5T_NATIVE_INT, H5T_NATIVE_ULONG);
-#endif
-
- nerrors += test_conv_int_1("hw", H5T_NATIVE_UINT, H5T_NATIVE_CHAR);
- nerrors += test_conv_int_1("hw", H5T_NATIVE_UINT, H5T_NATIVE_UCHAR);
- nerrors += test_conv_int_1("hw", H5T_NATIVE_UINT, H5T_NATIVE_SHORT);
- nerrors += test_conv_int_1("hw", H5T_NATIVE_UINT, H5T_NATIVE_USHORT);
- nerrors += test_conv_int_1("hw", H5T_NATIVE_UINT, H5T_NATIVE_INT);
-#if SIZEOF_INT != SIZEOF_LONG
- nerrors += test_conv_int_1("hw", H5T_NATIVE_UINT, H5T_NATIVE_LONG);
- nerrors += test_conv_int_1("hw", H5T_NATIVE_UINT, H5T_NATIVE_ULONG);
-#endif
-
-#if SIZEOF_INT != SIZEOF_LONG
- nerrors += test_conv_int_1("hw", H5T_NATIVE_LONG, H5T_NATIVE_CHAR);
- nerrors += test_conv_int_1("hw", H5T_NATIVE_LONG, H5T_NATIVE_UCHAR);
- nerrors += test_conv_int_1("hw", H5T_NATIVE_LONG, H5T_NATIVE_SHORT);
- nerrors += test_conv_int_1("hw", H5T_NATIVE_LONG, H5T_NATIVE_USHORT);
- nerrors += test_conv_int_1("hw", H5T_NATIVE_LONG, H5T_NATIVE_INT);
- nerrors += test_conv_int_1("hw", H5T_NATIVE_LONG, H5T_NATIVE_UINT);
- nerrors += test_conv_int_1("hw", H5T_NATIVE_LONG, H5T_NATIVE_ULONG);
-#endif
-
-#if SIZEOF_INT != SIZEOF_LONG
- nerrors += test_conv_int_1("hw", H5T_NATIVE_ULONG, H5T_NATIVE_CHAR);
- nerrors += test_conv_int_1("hw", H5T_NATIVE_ULONG, H5T_NATIVE_UCHAR);
- nerrors += test_conv_int_1("hw", H5T_NATIVE_ULONG, H5T_NATIVE_SHORT);
- nerrors += test_conv_int_1("hw", H5T_NATIVE_ULONG, H5T_NATIVE_USHORT);
- nerrors += test_conv_int_1("hw", H5T_NATIVE_ULONG, H5T_NATIVE_INT);
- nerrors += test_conv_int_1("hw", H5T_NATIVE_ULONG, H5T_NATIVE_UINT);
- nerrors += test_conv_int_1("hw", H5T_NATIVE_ULONG, H5T_NATIVE_LONG);
-#endif
+ nerrors += run_integer_tests("hw");
/* Test hardware floating-point conversion functions */
nerrors += test_conv_flt_1("hw", H5T_NATIVE_FLOAT, H5T_NATIVE_DOUBLE);
nerrors += test_conv_flt_1("hw", H5T_NATIVE_DOUBLE, H5T_NATIVE_FLOAT);
/*----------------------------------------------------------------------
- * Software tests follow
+ * Software tests
*----------------------------------------------------------------------
*/
without_hardware_g = TRUE;
reset_hdf5();
/* Test software integer conversion functions */
- nerrors += test_conv_int_1("sw", H5T_NATIVE_CHAR, H5T_NATIVE_UCHAR);
- nerrors += test_conv_int_1("sw", H5T_NATIVE_CHAR, H5T_NATIVE_SHORT);
- nerrors += test_conv_int_1("sw", H5T_NATIVE_CHAR, H5T_NATIVE_USHORT);
- nerrors += test_conv_int_1("sw", H5T_NATIVE_CHAR, H5T_NATIVE_INT);
- nerrors += test_conv_int_1("sw", H5T_NATIVE_CHAR, H5T_NATIVE_UINT);
-#if SIZEOF_INT != SIZEOF_LONG
- nerrors += test_conv_int_1("sw", H5T_NATIVE_CHAR, H5T_NATIVE_LONG);
- nerrors += test_conv_int_1("sw", H5T_NATIVE_CHAR, H5T_NATIVE_ULONG);
-#endif
-
- nerrors += test_conv_int_1("sw", H5T_NATIVE_UCHAR, H5T_NATIVE_CHAR);
- nerrors += test_conv_int_1("sw", H5T_NATIVE_UCHAR, H5T_NATIVE_SHORT);
- nerrors += test_conv_int_1("sw", H5T_NATIVE_UCHAR, H5T_NATIVE_USHORT);
- nerrors += test_conv_int_1("sw", H5T_NATIVE_UCHAR, H5T_NATIVE_INT);
- nerrors += test_conv_int_1("sw", H5T_NATIVE_UCHAR, H5T_NATIVE_UINT);
-#if SIZEOF_INT != SIZEOF_LONG
- nerrors += test_conv_int_1("sw", H5T_NATIVE_UCHAR, H5T_NATIVE_LONG);
- nerrors += test_conv_int_1("sw", H5T_NATIVE_UCHAR, H5T_NATIVE_ULONG);
-#endif
-
- nerrors += test_conv_int_1("sw", H5T_NATIVE_SHORT, H5T_NATIVE_CHAR);
- nerrors += test_conv_int_1("sw", H5T_NATIVE_SHORT, H5T_NATIVE_UCHAR);
- nerrors += test_conv_int_1("sw", H5T_NATIVE_SHORT, H5T_NATIVE_USHORT);
- nerrors += test_conv_int_1("sw", H5T_NATIVE_SHORT, H5T_NATIVE_INT);
- nerrors += test_conv_int_1("sw", H5T_NATIVE_SHORT, H5T_NATIVE_UINT);
-#if SIZEOF_INT != SIZEOF_LONG
- nerrors += test_conv_int_1("sw", H5T_NATIVE_SHORT, H5T_NATIVE_LONG);
- nerrors += test_conv_int_1("sw", H5T_NATIVE_SHORT, H5T_NATIVE_ULONG);
-#endif
-
- nerrors += test_conv_int_1("sw", H5T_NATIVE_USHORT, H5T_NATIVE_CHAR);
- nerrors += test_conv_int_1("sw", H5T_NATIVE_USHORT, H5T_NATIVE_UCHAR);
- nerrors += test_conv_int_1("sw", H5T_NATIVE_USHORT, H5T_NATIVE_SHORT);
- nerrors += test_conv_int_1("sw", H5T_NATIVE_USHORT, H5T_NATIVE_INT);
- nerrors += test_conv_int_1("sw", H5T_NATIVE_USHORT, H5T_NATIVE_UINT);
-#if SIZEOF_INT != SIZEOF_LONG
- nerrors += test_conv_int_1("sw", H5T_NATIVE_USHORT, H5T_NATIVE_LONG);
- nerrors += test_conv_int_1("sw", H5T_NATIVE_USHORT, H5T_NATIVE_ULONG);
-#endif
-
- nerrors += test_conv_int_1("sw", H5T_NATIVE_INT, H5T_NATIVE_CHAR);
- nerrors += test_conv_int_1("sw", H5T_NATIVE_INT, H5T_NATIVE_UCHAR);
- nerrors += test_conv_int_1("sw", H5T_NATIVE_INT, H5T_NATIVE_SHORT);
- nerrors += test_conv_int_1("sw", H5T_NATIVE_INT, H5T_NATIVE_USHORT);
- nerrors += test_conv_int_1("sw", H5T_NATIVE_INT, H5T_NATIVE_UINT);
-#if SIZEOF_INT != SIZEOF_LONG
- nerrors += test_conv_int_1("sw", H5T_NATIVE_INT, H5T_NATIVE_LONG);
- nerrors += test_conv_int_1("sw", H5T_NATIVE_INT, H5T_NATIVE_ULONG);
-#endif
-
- nerrors += test_conv_int_1("sw", H5T_NATIVE_UINT, H5T_NATIVE_CHAR);
- nerrors += test_conv_int_1("sw", H5T_NATIVE_UINT, H5T_NATIVE_UCHAR);
- nerrors += test_conv_int_1("sw", H5T_NATIVE_UINT, H5T_NATIVE_SHORT);
- nerrors += test_conv_int_1("sw", H5T_NATIVE_UINT, H5T_NATIVE_USHORT);
- nerrors += test_conv_int_1("sw", H5T_NATIVE_UINT, H5T_NATIVE_INT);
-#if SIZEOF_INT != SIZEOF_LONG
- nerrors += test_conv_int_1("sw", H5T_NATIVE_UINT, H5T_NATIVE_LONG);
- nerrors += test_conv_int_1("sw", H5T_NATIVE_UINT, H5T_NATIVE_ULONG);
-#endif
-
-#if SIZEOF_INT != SIZEOF_LONG
- nerrors += test_conv_int_1("sw", H5T_NATIVE_LONG, H5T_NATIVE_CHAR);
- nerrors += test_conv_int_1("sw", H5T_NATIVE_LONG, H5T_NATIVE_UCHAR);
- nerrors += test_conv_int_1("sw", H5T_NATIVE_LONG, H5T_NATIVE_SHORT);
- nerrors += test_conv_int_1("sw", H5T_NATIVE_LONG, H5T_NATIVE_USHORT);
- nerrors += test_conv_int_1("sw", H5T_NATIVE_LONG, H5T_NATIVE_INT);
- nerrors += test_conv_int_1("sw", H5T_NATIVE_LONG, H5T_NATIVE_UINT);
- nerrors += test_conv_int_1("sw", H5T_NATIVE_LONG, H5T_NATIVE_ULONG);
-#endif
-
-#if SIZEOF_INT != SIZEOF_LONG
- nerrors += test_conv_int_1("sw", H5T_NATIVE_ULONG, H5T_NATIVE_CHAR);
- nerrors += test_conv_int_1("sw", H5T_NATIVE_ULONG, H5T_NATIVE_UCHAR);
- nerrors += test_conv_int_1("sw", H5T_NATIVE_ULONG, H5T_NATIVE_SHORT);
- nerrors += test_conv_int_1("sw", H5T_NATIVE_ULONG, H5T_NATIVE_USHORT);
- nerrors += test_conv_int_1("sw", H5T_NATIVE_ULONG, H5T_NATIVE_INT);
- nerrors += test_conv_int_1("sw", H5T_NATIVE_ULONG, H5T_NATIVE_UINT);
- nerrors += test_conv_int_1("sw", H5T_NATIVE_ULONG, H5T_NATIVE_LONG);
-#endif
+ nerrors += run_integer_tests("sw");
/* Test software floating-point conversion functions */
nerrors += test_conv_flt_1("sw", H5T_NATIVE_FLOAT, H5T_NATIVE_DOUBLE);
nerrors += test_conv_flt_1("sw", H5T_NATIVE_DOUBLE, H5T_NATIVE_FLOAT);
-#ifdef USE_LDOUBLE
+#if SIZEOF_LDOUBLE!=SIZEOF_DOUBLE
nerrors += test_conv_flt_1("sw", H5T_NATIVE_FLOAT, H5T_NATIVE_LDOUBLE);
nerrors += test_conv_flt_1("sw", H5T_NATIVE_DOUBLE, H5T_NATIVE_LDOUBLE);
nerrors += test_conv_flt_1("sw", H5T_NATIVE_LDOUBLE, H5T_NATIVE_FLOAT);
@@ -2450,6 +2637,5 @@ main(void)
exit(1);
}
printf("All data type tests passed.\n");
- h5_cleanup (fapl);
return 0;
}
diff --git a/test/extend.c b/test/extend.c
index 42348bc..a996d3f 100644
--- a/test/extend.c
+++ b/test/extend.c
@@ -40,7 +40,6 @@ main (void)
{
hid_t file, dataset, mem_space, file_space, cparms;
hid_t fapl;
- herr_t status;
int i, j, k, m;
static int buf1[NY][NX], buf2[NX/2][NY/2];
static const hsize_t dims[2] = {NX, NY};
diff --git a/test/external.c b/test/external.c
index b17df58..48aea9c 100644
--- a/test/external.c
+++ b/test/external.c
@@ -824,10 +824,7 @@ main (void)
if (H5Fclose(file)<0) goto error;
puts("All external storage tests passed.");
- h5_cleanup(fapl);
-
- /* cleanup external files */
- if (!getenv("HDF5_NOCLEANUP")) {
+ if (h5_cleanup(fapl)) {
remove("extern_1a.raw");
remove("extern_1b.raw");
remove("extern_2a.raw");
diff --git a/test/fillval.c b/test/fillval.c
index 71aa7fb..53190a1 100644
--- a/test/fillval.c
+++ b/test/fillval.c
@@ -726,8 +726,7 @@ main(int argc, char *argv[])
if (nerrors) goto error;
puts("All fill value tests passed.");
- h5_cleanup(fapl);
- if (!getenv("HDF5_NOCLEANUP")) remove(FILE_NAME_RAW);
+ if (h5_cleanup(fapl)) remove(FILE_NAME_RAW);
return 0;
error:
diff --git a/test/gheap.c b/test/gheap.c
index 9218c3a..404b24a 100644
--- a/test/gheap.c
+++ b/test/gheap.c
@@ -9,59 +9,22 @@
* collections but the collections are not related to one
* another by anything that appears in the file format.
*/
+#include <h5test.h>
#include <H5private.h>
#include <H5Eprivate.h>
#include <H5Fprivate.h>
#include <H5Gprivate.h>
#include <H5HGprivate.h>
+#include <H5Iprivate.h>
#include <H5Pprivate.h>
-#ifndef HAVE_FUNCTION
-# undef __FUNCTION__
-# define __FUNCTION__ ""
-#endif
-
-#define TEST_FILE_NAME0 "gheap0.h5"
-#define TEST_FILE_NAME1 "gheap1.h5"
-#define TEST_FILE_NAME2 "gheap2.h5"
-#define TEST_FILE_NAME3 "gheap3.h5"
-#define TEST_FILE_NAME4 "gheap4.h5"
-
-#define FAILED(S) { \
- puts ("*FAILED*"); \
- printf (" Failed at %s:%d in %s()%s%s\n", \
- __FILE__, __LINE__, __FUNCTION__, \
- (S)&&*(S)?": ":"", (S)?(S):""); \
- H5Eprint (stdout); \
-}
-
-
-/*-------------------------------------------------------------------------
- * Function: emit_diagnostics
- *
- * Purpose: If debugging is turned on then this function will cause the
- * library to emit its diagnostic messages now instead of when
- * we're trying to make the output look nice.
- *
- * Return: void
- *
- * Programmer: Robb Matzke
- * Tuesday, March 31, 1998
- *
- * Modifications:
- *
- *-------------------------------------------------------------------------
- */
-static void
-emit_diagnostics (void)
-{
- H5F_t *f = H5F_open (TEST_FILE_NAME0,
- H5F_ACC_CREAT|H5F_ACC_RDWR|H5F_ACC_TRUNC,
- NULL, NULL);
- H5G_t *g = H5G_create (H5G_entof(f->shared->root_grp), "emit", 0);
- H5G_close (g);
- H5F_close (f);
-}
+const char *FILENAME[] = {
+ "gheap1",
+ "gheap2",
+ "gheap3",
+ "gheap4",
+ NULL
+};
/*-------------------------------------------------------------------------
@@ -72,7 +35,7 @@ emit_diagnostics (void)
*
* Return: Success: 0
*
- * Failure: -1
+ * Failure: number of errors
*
* Programmer: Robb Matzke
* Tuesday, March 31, 1998
@@ -82,28 +45,29 @@ emit_diagnostics (void)
*-------------------------------------------------------------------------
*/
static int
-test_1 (void)
+test_1 (hid_t fapl)
{
- H5F_t *f;
+ hid_t file=-1;
+ H5F_t *f=NULL;
H5HG_t obj[1024];
uint8_t out[1024];
uint8_t in[1024];
int i;
size_t size;
herr_t status;
- int retval = 0;
+ int nerrors=0;
+ char filename[1024];
- printf ("%-70s", "...monotonically increasing lengths");
- fflush (stdout);
+ TESTING("monotonically increasing lengths");
/* Open a clean file */
- H5Eclear ();
- f = H5F_open (TEST_FILE_NAME1,
- H5F_ACC_CREAT|H5F_ACC_RDWR|H5F_ACC_TRUNC|H5F_ACC_DEBUG,
- NULL, NULL);
- if (!f) {
- FAILED ("unable to create file");
- return -1;
+ h5_fixname(FILENAME[0], fapl, filename, sizeof filename);
+ if ((file=H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl))<0)
+ goto error;
+ if (NULL==(f=H5I_object(file))) {
+ FAILED();
+ puts(" Unable to create file");
+ goto error;
}
/*
@@ -117,11 +81,13 @@ test_1 (void)
H5Eclear ();
status = H5HG_insert (f, size, out, obj+i);
if (status<0) {
- FAILED ("unable to insert object into global heap");
- --retval;
+ FAILED();
+ puts(" Unable to insert object into global heap");
+ nerrors++;
} else if (i && H5F_addr_gt (&(obj[i-1].addr), &(obj[i].addr))) {
- FAILED ("collection addresses are not monotonically increasing");
- --retval;
+ FAILED();
+ puts(" Collection addresses are not monotonically increasing");
+ nerrors++;
}
}
@@ -133,17 +99,26 @@ test_1 (void)
memset (out, 'A'+i%26, size);
H5Eclear ();
if (NULL==H5HG_read (f, obj+i, in)) {
- FAILED ("unable to read object");
- --retval;
+ FAILED();
+ puts(" Unable to read object");
+ nerrors++;
} else if (memcmp (in, out, size)) {
- FAILED ("value read doesn't match value written");
- --retval;
+ FAILED();
+ puts(" Value read doesn't match value written");
+ nerrors++;
}
}
- puts (" PASSED");
- H5F_close (f);
- return retval;
+ if (H5Fclose(file)<0) goto error;
+ if (nerrors) goto error;
+ PASSED();
+ return 0;
+
+ error:
+ H5E_BEGIN_TRY {
+ H5Fclose(file);
+ } H5E_END_TRY;
+ return MAX(1, nerrors);
}
@@ -155,7 +130,7 @@ test_1 (void)
*
* Return: Success: 0
*
- * Failure: -1
+ * Failure: number of errors
*
* Programmer: Robb Matzke
* Tuesday, March 31, 1998
@@ -165,28 +140,28 @@ test_1 (void)
*-------------------------------------------------------------------------
*/
static int
-test_2 (void)
+test_2 (hid_t fapl)
{
- H5F_t *f;
+ hid_t file=-1;
+ H5F_t *f=NULL;
H5HG_t obj[1024];
uint8_t out[1024];
uint8_t in[1024];
int i;
size_t size;
- herr_t status;
- int retval = 0;
+ int nerrors=0;
+ char filename[1024];
- printf ("%-70s", "...monotonically decreasing lengths");
- fflush (stdout);
+ TESTING("monotonically decreasing lengths");
/* Open a clean file */
- H5Eclear ();
- f = H5F_open (TEST_FILE_NAME2,
- H5F_ACC_CREAT|H5F_ACC_RDWR|H5F_ACC_TRUNC|H5F_ACC_DEBUG,
- NULL, NULL);
- if (!f) {
- FAILED ("unable to create file");
- return -1;
+ h5_fixname(FILENAME[1], fapl, filename, sizeof filename);
+ if ((file=H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl))<0)
+ goto error;
+ if (NULL==(f=H5I_object(file))) {
+ FAILED();
+ puts(" Unable to create file");
+ goto error;
}
/*
@@ -196,10 +171,10 @@ test_2 (void)
size = 1024-i;
memset (out, 'A'+i%26, size);
H5Eclear ();
- status = H5HG_insert (f, size, out, obj+i);
- if (status<0) {
- FAILED ("unable to insert object into global heap");
- --retval;
+ if (H5HG_insert (f, size, out, obj+i)<0) {
+ FAILED();
+ puts(" Unable to insert object into global heap");
+ nerrors++;
}
}
@@ -211,17 +186,26 @@ test_2 (void)
memset (out, 'A'+i%26, size);
H5Eclear ();
if (NULL==H5HG_read (f, obj+i, in)) {
- FAILED ("unable to read object");
- --retval;
+ FAILED();
+ puts(" Unable to read object");
+ nerrors++;
} else if (memcmp (in, out, size)) {
- FAILED ("value read doesn't match value written");
- --retval;
+ FAILED();
+ puts(" Value read doesn't match value written");
+ nerrors++;
}
}
- puts (" PASSED");
- H5F_close (f);
- return retval;
+ if (H5Fclose(file)<0) goto error;
+ if (nerrors) goto error;
+ PASSED();
+ return 0;
+
+ error:
+ H5E_BEGIN_TRY {
+ H5Fclose(file);
+ } H5E_END_TRY;
+ return MAX(1, nerrors);
}
@@ -233,7 +217,7 @@ test_2 (void)
*
* Return: Success: 0
*
- * Failure: -1
+ * Failure: number of errors
*
* Programmer: Robb Matzke
* Tuesday, March 31, 1998
@@ -243,27 +227,28 @@ test_2 (void)
*-------------------------------------------------------------------------
*/
static int
-test_3 (void)
+test_3 (hid_t fapl)
{
- H5F_t *f;
+ hid_t file=-1;
+ H5F_t *f=NULL;
H5HG_t obj[1024];
uint8_t out[1024];
int i;
size_t size;
herr_t status;
- int retval = 0;
+ int nerrors=0;
+ char filename[1024];
- printf ("%-70s", "...complete object removal");
- fflush (stdout);
+ TESTING("complete object removal");
/* Open a clean file */
- H5Eclear ();
- f = H5F_open (TEST_FILE_NAME3,
- H5F_ACC_CREAT|H5F_ACC_RDWR|H5F_ACC_TRUNC|H5F_ACC_DEBUG,
- NULL, NULL);
- if (!f) {
- FAILED ("unable to create file");
- return -1;
+ h5_fixname(FILENAME[2], fapl, filename, sizeof filename);
+ if ((file=H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl))<0)
+ goto error;
+ if (NULL==(f=H5I_object(file))) {
+ FAILED();
+ puts(" Unable to create file");
+ goto error;
}
/* Create some stuff */
@@ -273,8 +258,9 @@ test_3 (void)
H5Eclear ();
status = H5HG_insert (f, size, out, obj+i);
if (status<0) {
- FAILED ("unable to insert object into global heap");
- --retval;
+ FAILED();
+ puts(" Unable to insert object into global heap");
+ nerrors++;
}
}
@@ -282,14 +268,22 @@ test_3 (void)
for (i=0; i<1024; i++) {
status = H5HG_remove (f, obj+i);
if (status<0) {
- FAILED ("unable to remove object");
- --retval;
+ FAILED();
+ puts(" Unable to remove object");
+ nerrors++;
}
}
- puts (" PASSED");
- H5F_close (f);
- return retval;
+ if (H5Fclose(file)<0) goto error;
+ if (nerrors) goto error;
+ PASSED();
+ return 0;
+
+ error:
+ H5E_BEGIN_TRY {
+ H5Fclose(file);
+ } H5E_END_TRY;
+ return MAX(1, nerrors);
}
@@ -302,7 +296,7 @@ test_3 (void)
*
* Return: Success: 0
*
- * Failure: -1
+ * Failure: number of errors
*
* Programmer: Robb Matzke
* Tuesday, March 31, 1998
@@ -312,30 +306,30 @@ test_3 (void)
*-------------------------------------------------------------------------
*/
static int
-test_4 (void)
+test_4 (hid_t fapl)
{
- H5F_t *f;
+ hid_t file=-1;
+ H5F_t *f=NULL;
H5HG_t obj[1024];
uint8_t out[1024];
int i;
size_t size;
herr_t status;
- int retval = 0;
+ int nerrors=0;
+ char filename[1024];
- printf ("%-70s", "...partial object removal");
- fflush (stdout);
+ TESTING("partial object removal");
/* Open a clean file */
- H5Eclear ();
- f = H5F_open (TEST_FILE_NAME4,
- H5F_ACC_CREAT|H5F_ACC_RDWR|H5F_ACC_TRUNC|H5F_ACC_DEBUG,
- NULL, NULL);
- if (!f) {
- FAILED ("unable to create file");
- return -1;
+ h5_fixname(FILENAME[3], fapl, filename, sizeof filename);
+ if ((file=H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl))<0)
+ goto error;
+ if (NULL==(f=H5I_object(file))) {
+ FAILED();
+ puts(" Unable to create file");
+ goto error;
}
-
for (i=0; i<1024; i++) {
/* Insert */
size = i%30+100;
@@ -343,8 +337,9 @@ test_4 (void)
H5Eclear ();
status = H5HG_insert (f, size, out, obj+i);
if (status<0) {
- FAILED ("unable to insert object into global heap");
- --retval;
+ FAILED();
+ puts(" Unable to insert object into global heap");
+ nerrors++;
}
/*
@@ -356,46 +351,26 @@ test_4 (void)
H5Eclear ();
status = H5HG_remove (f, obj+i-1);
if (status<0) {
- FAILED ("unable to remove object");
- --retval;
+ FAILED();
+ puts(" Unable to remove object");
+ nerrors++;
}
memset (obj+i-1, 0, sizeof *obj);
}
}
- puts (" PASSED");
- H5F_close (f);
- return retval;
-}
-
+ if (H5Fclose(file)<0) goto error;
+ if (nerrors) goto error;
+ PASSED();
+ return 0;
-
-/*-------------------------------------------------------------------------
- * Function: cleanup
- *
- * Purpose: Cleanup temporary test files
- *
- * Return: none
- *
- * Programmer: Albert Cheng
- * May 28, 1998
- *
- * Modifications:
- *
- *-------------------------------------------------------------------------
- */
-static void
-cleanup(void)
-{
- if (!getenv ("HDF5_NOCLEANUP")) {
- remove(TEST_FILE_NAME0);
- remove(TEST_FILE_NAME1);
- remove(TEST_FILE_NAME2);
- remove(TEST_FILE_NAME3);
- remove(TEST_FILE_NAME4);
- }
+ error:
+ H5E_BEGIN_TRY {
+ H5Fclose(file);
+ } H5E_END_TRY;
+ return MAX(1, nerrors);
}
-
+
/*-------------------------------------------------------------------------
* Function: main
@@ -416,22 +391,23 @@ cleanup(void)
int
main (void)
{
- int nfailed=0;
+ int nerrors=0;
+ hid_t fapl;
- emit_diagnostics ();
-
+ h5_reset();
+ fapl = h5_fileaccess();
- nfailed += test_1()<0 ? 1 : 0;
- nfailed += test_2()<0 ? 1 : 0;
- nfailed += test_3()<0 ? 1 : 0;
- nfailed += test_4()<0 ? 1 : 0;
+ nerrors += test_1(fapl);
+ nerrors += test_2(fapl);
+ nerrors += test_3(fapl);
+ nerrors += test_4(fapl);
+ if (nerrors) goto error;
- if (nfailed) {
- printf ("*** %d global heap test%s failed ***\n",
- nfailed, 1==nfailed?"":"s");
- } else {
- printf ("All global heap tests passed.\n");
- cleanup();
- }
- return nfailed?-1:0;
+ puts("All global heap tests passed.");
+ h5_cleanup(fapl);
+ return 0;
+
+ error:
+ puts("*** TESTS FAILED ***");
+ return 1;
}
diff --git a/test/h5test.c b/test/h5test.c
index 0e2ef53..f124e0e 100644
--- a/test/h5test.c
+++ b/test/h5test.c
@@ -66,7 +66,7 @@ h5_errors(void __unused__ *client_data)
* `extern const char *FILENAMES[]' -- these are only the base
* names. The file access property list is also closed.
*
- * Return: none
+ * Return: Non-zero if cleanup actions were performed; zero otherwise.
*
* Programmer: Albert Cheng
* May 28, 1998
@@ -75,12 +75,13 @@ h5_errors(void __unused__ *client_data)
*
*-------------------------------------------------------------------------
*/
-void
+int
h5_cleanup(hid_t fapl)
{
char filename[1024];
char temp[2048];
int i, j;
+ int retval=0;
if (!getenv("HDF5_NOCLEANUP")) {
for (i=0; FILENAME[i]; i++) {
@@ -113,8 +114,10 @@ h5_cleanup(hid_t fapl)
break;
}
}
+ retval=1;
}
H5Pclose(fapl);
+ return retval;
}
@@ -135,10 +138,27 @@ h5_cleanup(hid_t fapl)
void
h5_reset(void)
{
+ char filename[1024];
+
fflush(stdout);
fflush(stderr);
H5close();
- H5Eset_auto (h5_errors, NULL);}
+ H5Eset_auto (h5_errors, NULL);
+
+ /*
+ * Cause the library to emit some diagnostics early so they don't
+ * interfere with other formatted output.
+ */
+ sprintf(filename, "/tmp/h5emit-%05d.h5", getpid());
+ H5E_BEGIN_TRY {
+ hid_t file = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT,
+ H5P_DEFAULT);
+ hid_t grp = H5Gcreate(file, "emit", 0);
+ H5Gclose(grp);
+ H5Fclose(file);
+ unlink(filename);
+ } H5E_END_TRY;
+}
/*-------------------------------------------------------------------------
@@ -304,6 +324,8 @@ h5_no_hwconv(void)
H5Tunregister(H5T_conv_char_uint);
H5Tunregister(H5T_conv_char_long);
H5Tunregister(H5T_conv_char_ulong);
+ H5Tunregister(H5T_conv_char_llong);
+ H5Tunregister(H5T_conv_char_ullong);
H5Tunregister(H5T_conv_uchar_char);
H5Tunregister(H5T_conv_uchar_short);
@@ -312,6 +334,8 @@ h5_no_hwconv(void)
H5Tunregister(H5T_conv_uchar_uint);
H5Tunregister(H5T_conv_uchar_long);
H5Tunregister(H5T_conv_uchar_ulong);
+ H5Tunregister(H5T_conv_uchar_llong);
+ H5Tunregister(H5T_conv_uchar_ullong);
H5Tunregister(H5T_conv_short_char);
H5Tunregister(H5T_conv_short_uchar);
@@ -320,6 +344,8 @@ h5_no_hwconv(void)
H5Tunregister(H5T_conv_short_uint);
H5Tunregister(H5T_conv_short_long);
H5Tunregister(H5T_conv_short_ulong);
+ H5Tunregister(H5T_conv_short_llong);
+ H5Tunregister(H5T_conv_short_ullong);
H5Tunregister(H5T_conv_ushort_char);
H5Tunregister(H5T_conv_ushort_uchar);
@@ -328,6 +354,8 @@ h5_no_hwconv(void)
H5Tunregister(H5T_conv_ushort_uint);
H5Tunregister(H5T_conv_ushort_long);
H5Tunregister(H5T_conv_ushort_ulong);
+ H5Tunregister(H5T_conv_ushort_llong);
+ H5Tunregister(H5T_conv_ushort_ullong);
H5Tunregister(H5T_conv_int_char);
H5Tunregister(H5T_conv_int_uchar);
@@ -336,6 +364,8 @@ h5_no_hwconv(void)
H5Tunregister(H5T_conv_int_uint);
H5Tunregister(H5T_conv_int_long);
H5Tunregister(H5T_conv_int_ulong);
+ H5Tunregister(H5T_conv_int_llong);
+ H5Tunregister(H5T_conv_int_ullong);
H5Tunregister(H5T_conv_uint_char);
H5Tunregister(H5T_conv_uint_uchar);
@@ -344,6 +374,8 @@ h5_no_hwconv(void)
H5Tunregister(H5T_conv_uint_int);
H5Tunregister(H5T_conv_uint_long);
H5Tunregister(H5T_conv_uint_ulong);
+ H5Tunregister(H5T_conv_uint_llong);
+ H5Tunregister(H5T_conv_uint_ullong);
H5Tunregister(H5T_conv_long_char);
H5Tunregister(H5T_conv_long_uchar);
@@ -352,6 +384,8 @@ h5_no_hwconv(void)
H5Tunregister(H5T_conv_long_int);
H5Tunregister(H5T_conv_long_uint);
H5Tunregister(H5T_conv_long_ulong);
+ H5Tunregister(H5T_conv_long_llong);
+ H5Tunregister(H5T_conv_long_ullong);
H5Tunregister(H5T_conv_ulong_char);
H5Tunregister(H5T_conv_ulong_uchar);
@@ -360,6 +394,28 @@ h5_no_hwconv(void)
H5Tunregister(H5T_conv_ulong_int);
H5Tunregister(H5T_conv_ulong_uint);
H5Tunregister(H5T_conv_ulong_long);
+ H5Tunregister(H5T_conv_ulong_llong);
+ H5Tunregister(H5T_conv_ulong_ullong);
+
+ H5Tunregister(H5T_conv_llong_char);
+ H5Tunregister(H5T_conv_llong_uchar);
+ H5Tunregister(H5T_conv_llong_short);
+ H5Tunregister(H5T_conv_llong_ushort);
+ H5Tunregister(H5T_conv_llong_int);
+ H5Tunregister(H5T_conv_llong_uint);
+ H5Tunregister(H5T_conv_llong_long);
+ H5Tunregister(H5T_conv_llong_ulong);
+ H5Tunregister(H5T_conv_llong_ullong);
+
+ H5Tunregister(H5T_conv_ullong_char);
+ H5Tunregister(H5T_conv_ullong_uchar);
+ H5Tunregister(H5T_conv_ullong_short);
+ H5Tunregister(H5T_conv_ullong_ushort);
+ H5Tunregister(H5T_conv_ullong_int);
+ H5Tunregister(H5T_conv_ullong_uint);
+ H5Tunregister(H5T_conv_ullong_long);
+ H5Tunregister(H5T_conv_ullong_ulong);
+ H5Tunregister(H5T_conv_ullong_llong);
H5Tunregister(H5T_conv_float_double);
H5Tunregister(H5T_conv_double_float);
diff --git a/test/h5test.h b/test/h5test.h
index fa69b9f..fc26f2f 100644
--- a/test/h5test.h
+++ b/test/h5test.h
@@ -54,8 +54,7 @@ extern const char *FILENAME[];
extern "C" {
#endif
-void h5_cleanup(hid_t fapl);
-void h5_cleanup(hid_t fapl);
+int h5_cleanup(hid_t fapl);
herr_t h5_errors(void __unused__ *client_data);
char *h5_fixname(const char *basename, hid_t fapl, char *fullname,
size_t size);
diff --git a/test/istore.c b/test/istore.c
index da458a4..93c47b7 100644
--- a/test/istore.c
+++ b/test/istore.c
@@ -7,6 +7,7 @@
*
* Purpose: Tests various aspects of indexed raw data storage.
*/
+#include <h5test.h>
#include <H5private.h>
#include <H5Dprivate.h>
#include <H5Iprivate.h>
@@ -17,29 +18,16 @@
#include <H5Oprivate.h>
#include <H5Vprivate.h>
-#if 1
-# define FILETYPE H5F_LOW_DFLT
-# define FILENAME "istore.h5"
-#elif 0
-# define FILETYPE H5F_LOW_FAM
-# define FILENAME "istore-%05d.h5"
-# define TEST_FAMILY 1
-#else
-# define FILETYPE H5F_LOW_SPLIT
-# define FILENAME "istore-split"
-#endif
+const char *FILENAME[] = {
+ "istore",
+ NULL
+};
+
#define TEST_SMALL 0x0001
#define TEST_MEDIUM 0x0002
#define TEST_LARGE 0x0004
-#ifndef HAVE_FUNCTION
-#undef __FUNCTION__
-#define __FUNCTION__ ""
-#endif
-#define AT() printf (" at %s:%d in %s()...\n", \
- __FILE__, __LINE__, __FUNCTION__);
-
hsize_t align_g[3] = {50, 50, 50};
hssize_t zero[H5O_LAYOUT_NDIMS];
@@ -82,6 +70,7 @@ print_array(uint8_t *array, size_t nx, size_t ny, size_t nz)
printf("\n");
}
}
+
/*-------------------------------------------------------------------------
* Function: new_object
@@ -89,9 +78,9 @@ print_array(uint8_t *array, size_t nx, size_t ny, size_t nz)
* Purpose: Creates a new object that refers to a indexed storage of raw
* data. No raw data is stored.
*
- * Return: Success: Handle to a new open object.
+ * Return: Success: 0
*
- * Failure: NULL, error message printed.
+ * Failure: -1
*
* Programmer: Robb Matzke
* Wednesday, October 15, 1997
@@ -108,13 +97,11 @@ new_object(H5F_t *f, const char *name, intn ndims, H5G_entry_t *ent/*out*/)
/* Create the object header */
if (H5O_create(f, 64, ent)) {
- puts("*FAILED*");
- if (!isatty(1)) {
- AT();
- printf(" H5O_create() = NULL\n");
- }
- return -1;
+ FAILED();
+ puts(" H5O_create() = NULL");
+ goto error;
}
+
/* create chunked storage */
layout.type = H5D_CHUNKED;
layout.ndims = ndims;
@@ -127,27 +114,26 @@ new_object(H5F_t *f, const char *name, intn ndims, H5G_entry_t *ent/*out*/)
}
H5F_arr_create(f, &layout/*in,out*/);
if (H5O_modify(ent, H5O_LAYOUT, H5O_NEW_MESG, 0, &layout) < 0) {
- printf("*FAILED*\n");
- if (!isatty(1)) {
- AT();
- printf(" H5O_modify istore message failure\n");
- }
- return -1;
+ FAILED();
+ puts(" H5O_modify istore message failure.");
+ goto error;
}
+
/* Give the object header a name */
if (H5G_insert(H5G_entof(H5G_rootof(f)), name, ent) < 0) {
- printf("*FAILED*\n");
- if (!isatty(1)) {
- AT();
- printf(" H5G_insert(f, name=\"%s\", ent) failed\n", name);
- }
- return -1;
+ FAILED();
+ printf(" H5G_insert(f, name=\"%s\", ent) failed\n", name);
+ goto error;
}
+
/* Close the header */
H5O_close(ent);
-
return 0;
+
+ error:
+ return -1;
}
+
/*-------------------------------------------------------------------------
* Function: test_create
@@ -173,17 +159,18 @@ test_create(H5F_t *f, const char *prefix)
intn i;
char name[256];
- printf("%-70s", "Testing istore create");
+ TESTING("istore create");
for (i = 1; i <= H5O_LAYOUT_NDIMS; i++) {
- sprintf(name, "%s_%02d", prefix, i);
+ HDsnprintf(name, sizeof name, "%s_%02d", prefix, i);
if (new_object(f, name, i, &handle) < 0)
return FAIL;
}
- puts(" PASSED");
+ PASSED();
return SUCCEED;
}
+
/*-------------------------------------------------------------------------
* Function: test_extend
@@ -244,26 +231,17 @@ test_extend(H5F_t *f, const char *prefix,
/* Build the new empty object */
sprintf(name, "%s_%s", prefix, dims);
if (new_object(f, name, ndims, &handle) < 0) {
- if (!isatty(1)) {
- AT();
- printf(" Cannot create %d-d object `%s'\n", ndims, name);
- }
+ printf(" Cannot create %d-d object `%s'\n", ndims, name);
goto error;
}
if (NULL == H5O_read(&handle, H5O_LAYOUT, 0, &layout)) {
- puts("*FAILED*");
- if (!isatty(1)) {
- AT();
- printf(" Unable to read istore message\n");
- }
+ FAILED();
+ puts(" Unable to read istore message.");
goto error;
}
if (ndims != layout.ndims) {
- puts("*FAILED*");
- if (!isatty(1)) {
- AT();
- printf(" Header read error: istore.ndims != %d\n", ndims);
- }
+ FAILED();
+ printf(" Header read error: istore.ndims != %d\n", ndims);
goto error;
}
whole_size[0] = nx;
@@ -298,7 +276,7 @@ test_extend(H5F_t *f, const char *prefix,
#if 0
if (0 == ctr)
printf("\n");
- printf(" Insert: ctr=%d, corner=(%d", ctr, offset[0]);
+ printf(" Insert: ctr=%d, corner=(%d", ctr, offset[0]);
if (ndims > 1)
printf(",%d", offset[1]);
if (ndims > 2)
@@ -321,42 +299,35 @@ test_extend(H5F_t *f, const char *prefix,
/* Write to disk */
if (H5F_arr_write(f, &H5D_xfer_dflt, &layout, NULL, NULL, NULL, size,
size, zero, offset, buf)<0) {
- puts("*FAILED*");
- if (!isatty(1)) {
- AT();
- printf(" Write failed: ctr=%lu\n", (unsigned long)ctr);
- }
+ FAILED();
+ printf(" Write failed: ctr=%lu\n", (unsigned long)ctr);
goto error;
}
+
/* Read from disk */
memset(check, 0xff, (size_t)nelmts);
if (H5F_arr_read(f, &H5D_xfer_dflt, &layout, NULL, NULL, NULL, size,
size, zero, offset, check)<0) {
- puts("*FAILED*");
- if (!isatty(1)) {
- AT();
- printf(" Read failed: ctr=%lu\n", (unsigned long)ctr);
- }
+ FAILED();
+ printf(" Read failed: ctr=%lu\n", (unsigned long)ctr);
goto error;
}
if (memcmp(buf, check, (size_t)nelmts)) {
- puts("*FAILED*");
- if (!isatty(1)) {
- AT();
- printf(" Read check failed: ctr=%lu\n", (unsigned long)ctr);
- printf(" Wrote:\n");
- print_array(buf, (size_t)size[0], (size_t)size[1],
- (size_t)size[2]);
- printf(" Read:\n");
- print_array(check, (size_t)size[0], (size_t)size[1],
- (size_t)size[2]);
- }
+ FAILED();
+ printf(" Read check failed: ctr=%lu\n", (unsigned long)ctr);
+ printf(" Wrote:\n");
+ print_array(buf, (size_t)size[0], (size_t)size[1],
+ (size_t)size[2]);
+ printf(" Read:\n");
+ print_array(check, (size_t)size[0], (size_t)size[1],
+ (size_t)size[2]);
goto error;
}
+
/* Write to `whole' buffer for later checking */
H5V_hyper_copy(ndims, size,
- whole_size, offset, whole, /*dst */
- size, H5V_ZERO, buf); /*src */
+ whole_size, offset, whole, /*dst*/
+ size, H5V_ZERO, buf); /*src*/
/* Update max corner */
for (i=0; i<(size_t)ndims; i++) {
@@ -368,42 +339,36 @@ test_extend(H5F_t *f, const char *prefix,
memset(buf, 0xff, nx * ny * nz);
if (H5F_arr_read(f, &H5D_xfer_dflt, &layout, NULL, NULL, NULL, whole_size,
whole_size, zero, zero, buf)<0) {
- puts("*FAILED*");
- if (!isatty(1)) {
- AT();
- printf(" Read failed for whole array\n");
- }
+ FAILED();
+ puts(" Read failed for whole array.");
goto error;
}
- for (i = 0; i < nx; i++) {
- for (j = 0; j < ny; j++) {
- for (k = 0; k < nz; k++) {
- if (whole[i * ny * nz + j * nz + k] != buf[i * ny * nz + j * nz + k]) {
- puts("*FAILED*");
- if (!isatty(1)) {
- AT();
- printf(" Check failed at i=%lu", (unsigned long)i);
- if (ndims > 1) {
- printf(", j=%lu", (unsigned long)j);
- }
- if (ndims > 2) {
- printf(", k=%lu", (unsigned long)k);
- }
- printf("\n Check array is:\n");
- print_array(whole, nx, ny, nz);
- printf(" Value read is:\n");
- print_array(buf, nx, ny, nz);
+ for (i=0; i<nx; i++) {
+ for (j=0; j<ny; j++) {
+ for (k=0; k<nz; k++) {
+ if (whole[i*ny*nz + j*nz + k] != buf[i*ny*nz + j*nz + k]) {
+ FAILED();
+ printf(" Check failed at i=%lu", (unsigned long)i);
+ if (ndims > 1) {
+ printf(", j=%lu", (unsigned long)j);
+ }
+ if (ndims > 2) {
+ printf(", k=%lu", (unsigned long)k);
}
+ printf("\n Check array is:\n");
+ print_array(whole, nx, ny, nz);
+ printf(" Value read is:\n");
+ print_array(buf, nx, ny, nz);
goto error;
}
}
}
}
- puts(" PASSED");
H5MM_xfree(buf);
H5MM_xfree(check);
H5MM_xfree(whole);
+ PASSED();
return SUCCEED;
error:
@@ -412,6 +377,7 @@ test_extend(H5F_t *f, const char *prefix,
H5MM_xfree(whole);
return FAIL;
}
+
/*-------------------------------------------------------------------------
* Function: test_sparse
@@ -466,18 +432,12 @@ test_sparse(H5F_t *f, const char *prefix, size_t nblocks,
/* Build the new empty object */
sprintf(name, "%s_%s", prefix, dims);
if (new_object(f, name, ndims, &handle) < 0) {
- if (!isatty(1)) {
- AT();
- printf(" Cannot create %d-d object `%s'\n", ndims, name);
- }
+ printf(" Cannot create %d-d object `%s'\n", ndims, name);
goto error;
}
if (NULL == H5O_read(&handle, H5O_LAYOUT, 0, &layout)) {
- puts("*FAILED*");
- if (!isatty(1)) {
- AT();
- printf(" Unable to read istore message\n");
- }
+ FAILED();
+ printf(" Unable to read istore message\n");
goto error;
}
for (ctr=0; ctr<nblocks; ctr++) {
@@ -492,22 +452,19 @@ test_sparse(H5F_t *f, const char *prefix, size_t nblocks,
/* write to disk */
if (H5F_arr_write(f, &H5D_xfer_dflt, &layout, NULL, NULL, NULL, size,
size, zero, offset, buf)<0) {
- puts("*FAILED*");
- if (!isatty(1)) {
- AT();
- printf(" Write failed: ctr=%lu\n", (unsigned long)ctr);
- printf(" offset=(%lu", (unsigned long) (offset[0]));
- if (ndims > 1)
- printf(",%lu", (unsigned long) (offset[1]));
- if (ndims > 2)
- printf(",%lu", (unsigned long) (offset[2]));
- printf("), size=(%lu", (unsigned long) (size[0]));
- if (ndims > 1)
- printf(",%lu", (unsigned long) (size[1]));
- if (ndims > 2)
- printf(",%lu", (unsigned long) (size[2]));
- printf(")\n");
- }
+ FAILED();
+ printf(" Write failed: ctr=%lu\n", (unsigned long)ctr);
+ printf(" offset=(%lu", (unsigned long) (offset[0]));
+ if (ndims > 1)
+ printf(",%lu", (unsigned long) (offset[1]));
+ if (ndims > 2)
+ printf(",%lu", (unsigned long) (offset[2]));
+ printf("), size=(%lu", (unsigned long) (size[0]));
+ if (ndims > 1)
+ printf(",%lu", (unsigned long) (size[1]));
+ if (ndims > 2)
+ printf(",%lu", (unsigned long) (size[2]));
+ printf(")\n");
goto error;
}
total += nx * ny * nz;
@@ -518,36 +475,14 @@ test_sparse(H5F_t *f, const char *prefix, size_t nblocks,
/* We don't test reading yet.... */
}
- puts(" PASSED");
H5MM_xfree(buf);
+ PASSED();
return SUCCEED;
error:
H5MM_xfree(buf);
return FAIL;
}
-
-/*-------------------------------------------------------------------------
- * Function: cleanup
- *
- * Purpose: Cleanup temporary test files
- *
- * Return: none
- *
- * Programmer: Albert Cheng
- * May 28, 1998
- *
- * Modifications:
- *
- *-------------------------------------------------------------------------
- */
-static void
-cleanup(void)
-{
- if (!getenv ("HDF5_NOCLEANUP")) {
- remove(FILENAME);
- }
-}
/*-------------------------------------------------------------------------
@@ -569,15 +504,12 @@ cleanup(void)
int
main(int argc, char *argv[])
{
- H5F_t *f;
- herr_t status;
- int nerrors = 0;
- uintn size_of_test;
- hid_t template_id;
- H5F_create_t *creation_template = NULL;
- H5G_t *dir = NULL;
-
- setbuf(stdout, NULL);
+ hid_t fapl=-1, file=-1, fcpl=-1;
+ H5F_t *f;
+ herr_t status;
+ int nerrors = 0;
+ uintn size_of_test;
+ char filename[1024];
/* Parse arguments or assume `small' */
if (1 == argc) {
@@ -608,40 +540,31 @@ main(int argc, char *argv[])
printf(" LARGE");
printf("\n");
- /*
- * Use larger file addresses...
- */
- template_id = H5Pcreate(H5P_FILE_CREATE);
- H5Pset_sizes(template_id, 8, 0);
- creation_template = H5I_object(template_id);
+ /* Reset library */
+ h5_reset();
+ fapl = h5_fileaccess();
+
+ /* Use larger file addresses... */
+ fcpl = H5Pcreate(H5P_FILE_CREATE);
+ H5Pset_sizes(fcpl, 8, 0);
/* Create the test file */
- if (NULL == (f = H5F_open(FILENAME,
- (H5F_ACC_CREAT | H5F_ACC_RDWR | H5F_ACC_TRUNC |
- H5F_ACC_DEBUG),
- creation_template, NULL))) {
- printf("Cannot create file %s; test aborted\n", FILENAME);
+ h5_fixname(FILENAME[0], fapl, filename, sizeof filename);
+ if ((file=H5Fcreate(filename, H5F_ACC_TRUNC, fcpl, fapl))<0 ||
+ NULL==(f=H5I_object(file))) {
+ printf("Cannot create file %s; test aborted\n", filename);
exit(1);
}
-#ifdef TEST_FAMILY
- {
- /*
- * For testing file families, fool the library into thinking it already
- * allocated a whole bunch of data.
- */
- haddr_t addr;
- addr.offset = 8 * ((uint64) 1 << 30); /*8 GB */
- H5F_low_seteof(f->shared->lf, &addr);
- }
-#endif
-
+
/*
- * By creating a group we cause the library to emit it's debugging
- * diagnostic messages before we begin testing...
+ * For testing file families, fool the library into thinking it already
+ * allocated a whole bunch of data.
*/
- dir = H5G_create(H5G_entof(H5G_rootof(f)), "flushing_diagnostics", 0);
- H5G_close(dir);
- dir = NULL;
+ if (H5F_LOW_FAMILY==H5Pget_driver(fapl)) {
+ haddr_t addr;
+ addr.offset = 8 * ((uint64_t)1<<30); /*8 GB */
+ H5F_low_seteof(f->shared->lf, &addr);
+ }
/*
* Creation test: Creates empty objects with various raw data sizes
@@ -686,19 +609,17 @@ main(int argc, char *argv[])
status = test_sparse(f, "sparse", 800, 50, 50, 50);
nerrors += status < 0 ? 1 : 0;
}
+
/* Close the test file and exit */
- H5F_close(f);
+ H5Fclose(file);
+
if (nerrors) {
printf("***** %d I-STORE 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);
}
- H5Pclose (template_id);
+
printf("All i-store tests passed.\n");
- cleanup();
+ h5_cleanup(fapl);
return 0;
}
diff --git a/test/lheap.c b/test/lheap.c
new file mode 100644
index 0000000..d281bf2
--- /dev/null
+++ b/test/lheap.c
@@ -0,0 +1,131 @@
+/*
+ * Copyright © 1998 NCSA
+ * All rights reserved.
+ *
+ * Programmer: Robb Matzke <matzke@llnl.gov>
+ * Tuesday, November 24, 1998
+ *
+ * Purpose: Test local heaps used by symbol tables (groups).
+ */
+#include <h5test.h>
+#include <H5HLprivate.h>
+#include <H5Iprivate.h>
+
+const char *FILENAME[] = {
+ "lheap",
+ NULL
+};
+
+#define NOBJS 40
+
+
+/*-------------------------------------------------------------------------
+ * Function: main
+ *
+ * Purpose: Create a file, create a local heap, write data into the local
+ * heap, close the file, open the file, read data out of the
+ * local heap, close the file.
+ *
+ * Return: Success: zero
+ *
+ * Failure: non-zero
+ *
+ * Programmer: Robb Matzke
+ * Tuesday, November 24, 1998
+ *
+ * Modifications:
+ *
+ *-------------------------------------------------------------------------
+ */
+int
+main(void)
+{
+ hid_t fapl=-1; /*file access properties */
+ hid_t file=-1; /*hdf5 file */
+ H5F_t *f=NULL; /*hdf5 file pointer */
+ char filename[1024]; /*file name */
+ haddr_t heap_addr; /*local heap address */
+ size_t obj[NOBJS]; /*offsets within the heap */
+ int i, j; /*miscellaneous counters */
+ char buf[1024]; /*the value to store */
+ const char *s; /*value to read */
+
+ /* Reset library */
+ h5_reset();
+ fapl = h5_fileaccess();
+
+ /*
+ * Test writing to the heap...
+ */
+ TESTING("local heap write");
+ h5_fixname(FILENAME[0], fapl, filename, sizeof filename);
+ if ((file=H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl))<0)
+ goto error;
+ if (NULL==(f=H5I_object(file))) {
+ FAILED();
+ H5Eprint(stdout);
+ goto error;
+ }
+ if (H5HL_create(f, 0, &heap_addr/*out*/)<0) {
+ FAILED();
+ H5Eprint(stdout);
+ goto error;
+ }
+ for (i = 0; i < NOBJS; i++) {
+ sprintf(buf, "%03d-", i);
+ for (j=4; j<i; j++) buf[j] = '0' + j%10;
+ if (j>4) buf[j] = '\0';
+
+ if ((size_t)(-1)==(obj[i]=H5HL_insert(f, &heap_addr, strlen(buf)+1,
+ buf))) {
+ FAILED();
+ H5Eprint(stdout);
+ goto error;
+ }
+ }
+ if (H5Fclose(file)<0) goto error;
+ PASSED();
+
+ /*
+ * Test reading from the heap...
+ */
+ TESTING("local heap read");
+ h5_fixname(FILENAME[0], fapl, filename, sizeof filename);
+ if ((file=H5Fopen(filename, H5F_ACC_RDONLY, fapl))<0) goto error;
+ if (NULL==(f=H5I_object(file))) {
+ FAILED();
+ H5Eprint(stdout);
+ goto error;
+ }
+ for (i=0; i<NOBJS; i++) {
+ sprintf(buf, "%03d-", i);
+ for (j=4; j<i; j++) buf[j] = '0' + j%10;
+ if (j>4) buf[j] = '\0';
+ if (NULL==(s=H5HL_peek(f, &heap_addr, obj[i]))) {
+ FAILED();
+ H5Eprint(stdout);
+ goto error;
+ }
+ if (strcmp(s, buf)) {
+ FAILED();
+ printf(" i=%d, heap offset=%lu\n", i, (unsigned long)(obj[i]));
+ printf(" got: \"%s\"\n", s);
+ printf(" ans: \"%s\"\n", buf);
+ goto error;
+ }
+ }
+ if (H5Fclose(file)<0) goto error;
+ PASSED();
+
+
+ puts("All local heap tests passed.");
+ h5_cleanup(fapl);
+ return 0;
+
+ error:
+ puts("*** TESTS FAILED ***");
+ H5E_BEGIN_TRY {
+ H5Fclose(file);
+ } H5E_END_TRY;
+ return 1;
+}
diff --git a/test/ohdr.c b/test/ohdr.c
new file mode 100644
index 0000000..ec6c3b1
--- /dev/null
+++ b/test/ohdr.c
@@ -0,0 +1,278 @@
+/*
+ * Copyright © 1998 NCSA
+ * All rights reserved.
+ *
+ * Programmer: Robb Matzke <matzke@llnl.gov>
+ * Tuesday, November 24, 1998
+ */
+#include <h5test.h>
+#include <H5Iprivate.h>
+#include <H5Oprivate.h>
+
+/*
+ * This file needs to access private datatypes from the H5G package.
+ */
+#define H5G_PACKAGE
+#include <H5Gpkg.h>
+
+const char *FILENAME[] = {
+ "ohdr",
+ NULL
+};
+
+
+/*-------------------------------------------------------------------------
+ * Function: main
+ *
+ * Purpose:
+ *
+ * Return: Success:
+ *
+ * Failure:
+ *
+ * Programmer: Robb Matzke
+ * Tuesday, November 24, 1998
+ *
+ * Modifications:
+ *
+ *-------------------------------------------------------------------------
+ */
+int
+main(void)
+{
+ hid_t fapl=-1, file=-1;
+ H5F_t *f=NULL;
+ char filename[1024];
+ H5G_entry_t oh_ent;
+ H5O_stab_t stab, ro, *ptr=NULL;
+ int i;
+
+ /* Reset library */
+ h5_reset();
+ fapl = h5_fileaccess();
+ h5_fixname(FILENAME[0], fapl, filename, sizeof filename);
+ if ((file=H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl))<0)
+ goto error;
+ if (NULL==(f=H5I_object(file))) {
+ H5Eprint(stdout);
+ goto error;
+ }
+
+ /*
+ * Test object header creation
+ */
+ TESTING("object header creation");
+ if (H5O_create(f, 64, &oh_ent/*out*/)<0) {
+ FAILED();
+ H5Eprint(stdout);
+ goto error;
+ }
+ PASSED();
+
+ /* create a new message */
+ TESTING("message creation");
+ stab.btree_addr.offset = 11111111;
+ stab.heap_addr.offset = 22222222;
+ if (H5O_modify(&oh_ent, H5O_STAB, H5O_NEW_MESG, 0, &stab)<0) {
+ FAILED();
+ H5Eprint(stdout);
+ goto error;
+ }
+ if (H5AC_flush(f, NULL, 0, TRUE)<0) {
+ FAILED();
+ H5Eprint(stdout);
+ goto error;
+ }
+ if (NULL==(ptr=H5O_read(&oh_ent, H5O_STAB, 0, &ro))) {
+ FAILED();
+ H5Eprint(stdout);
+ goto error;
+ }
+ if (H5F_addr_ne(&(ro.btree_addr), &(stab.btree_addr)) ||
+ H5F_addr_ne(&(ro.heap_addr), &(stab.heap_addr))) {
+ FAILED();
+ HDfprintf(stdout, " got: {%a, %a}\n",
+ &(ro.btree_addr), &(ro.heap_addr));
+ HDfprintf(stdout, " ans: {%a, %a}\n",
+ &(stab.btree_addr), &(stab.heap_addr));
+ goto error;
+ }
+ PASSED();
+
+ /*
+ * Test modification of an existing message.
+ */
+ TESTING("message modification");
+ stab.btree_addr.offset = 33333333;
+ stab.heap_addr.offset = 44444444;
+ if (H5O_modify(&oh_ent, H5O_STAB, 0, 0, &stab)<0) {
+ FAILED();
+ H5Eprint(stdout);
+ goto error;
+ }
+ if (H5AC_flush(f, NULL, 0, TRUE)<0) {
+ FAILED();
+ H5Eprint(stdout);
+ goto error;
+ }
+ if (NULL==(ptr=H5O_read(&oh_ent, H5O_STAB, 0, &ro))) {
+ FAILED();
+ H5Eprint(stdout);
+ goto error;
+ }
+ if (H5F_addr_ne(&(ro.btree_addr), &(stab.btree_addr)) ||
+ H5F_addr_ne(&(ro.heap_addr), &(stab.heap_addr))) {
+ FAILED();
+ HDfprintf(stdout, " got: {%a, %a}\n",
+ &(ro.btree_addr), &(ro.heap_addr));
+ HDfprintf(stdout, " ans: {%a, %a}\n",
+ &(stab.btree_addr), &(stab.heap_addr));
+ goto error;
+ }
+ PASSED();
+
+
+ /*
+ * Test creation of a second message of the same type.
+ */
+ TESTING("duplicate message creation");
+ stab.btree_addr.offset = 55555555;
+ stab.heap_addr.offset = 66666666;
+ if (H5O_modify(&oh_ent, H5O_STAB, H5O_NEW_MESG, 0, &stab)<0) {
+ FAILED();
+ H5Eprint(stdout);
+ goto error;
+ }
+ if (H5AC_flush(f, NULL, 0, TRUE)<0) {
+ FAILED();
+ H5Eprint(stdout);
+ goto error;
+ }
+ if (NULL==(ptr=H5O_read(&oh_ent, H5O_STAB, 1, &ro))) {
+ FAILED();
+ H5Eprint(stdout);
+ goto error;
+ }
+ if (H5F_addr_ne(&(ro.btree_addr), &(stab.btree_addr)) ||
+ H5F_addr_ne(&(ro.heap_addr), &(stab.heap_addr))) {
+ FAILED();
+ HDfprintf(stdout, " got: {%a, %a}\n",
+ &(ro.btree_addr), &(ro.heap_addr));
+ HDfprintf(stdout, " ans: {%a, %a}\n",
+ &(stab.btree_addr), &(stab.heap_addr));
+ goto error;
+ }
+ PASSED();
+
+ /*
+ * Test modification of the second message with a symbol table.
+ */
+ TESTING("duplicate message modification");
+ stab.btree_addr.offset = 77777777;
+ stab.heap_addr.offset = 88888888;
+ if (H5O_modify(&oh_ent, H5O_STAB, 1, 0, &stab)<0) {
+ FAILED();
+ H5Eprint(stdout);
+ goto error;
+ }
+ if (H5AC_flush(f, NULL, 0, TRUE)<0) {
+ FAILED();
+ H5Eprint(stdout);
+ goto error;
+ }
+ if (NULL==(ptr=H5O_read(&oh_ent, H5O_STAB, 1, &ro))) {
+ FAILED();
+ H5Eprint(stdout);
+ goto error;
+ }
+ if (H5F_addr_ne(&(ro.btree_addr), &(stab.btree_addr)) ||
+ H5F_addr_ne(&(ro.heap_addr), &(stab.heap_addr))) {
+ FAILED();
+ HDfprintf(stdout, " got: {%a, %a}\n",
+ &(ro.btree_addr), &(ro.heap_addr));
+ HDfprintf(stdout, " ans: {%a, %a}\n",
+ &(stab.btree_addr), &(stab.heap_addr));
+ goto error;
+ }
+ PASSED();
+
+ /*
+ * Test creation of a bunch of messages one after another to see
+ * what happens when the object header overflows in core.
+ */
+ TESTING("object header overflow in memory");
+ for (i=0; i<40; i++) {
+ stab.btree_addr.offset = (i+1)*1000+1;
+ stab.heap_addr.offset = (i+1)*1000+2;
+ if (H5O_modify(&oh_ent, H5O_STAB, H5O_NEW_MESG, 0, &stab)<0) {
+ FAILED();
+ H5Eprint(stdout);
+ goto error;
+ }
+ }
+ if (H5AC_flush(f, NULL, 0, TRUE)<0) {
+ FAILED();
+ H5Eprint(stdout);
+ goto error;
+ }
+ PASSED();
+
+ /*
+ * Test creation of a bunch of messages one after another to see
+ * what happens when the object header overflows on disk.
+ */
+ TESTING("object header overflow on disk");
+ for (i=0; i<10; i++) {
+ stab.btree_addr.offset = (i + 1) * 1000 + 10;
+ stab.heap_addr.offset = (i + 1) * 1000 + 20;
+ if (H5O_modify(&oh_ent, H5O_STAB, H5O_NEW_MESG, 0, &stab)<0) {
+ FAILED();
+ H5Eprint(stdout);
+ goto error;
+ }
+ if (H5AC_flush(f, NULL, 0, TRUE)<0) {
+ FAILED();
+ H5Eprint(stdout);
+ goto error;
+ }
+ }
+ PASSED();
+
+ /*
+ * Delete all symbol table messages.
+ */
+ TESTING("message deletion");
+ if (H5O_remove(&oh_ent, H5O_STAB, H5O_ALL)<0) {
+ FAILED();
+ H5Eprint(stdout);
+ goto error;
+ }
+ if (H5O_read(&oh_ent, H5O_STAB, 0, &ro)) {
+ FAILED();
+ puts(" H5O_read() should have failed but didn't");
+ H5Eclear();
+ goto error;
+ }
+ PASSED();
+
+
+ /* release resources */
+ TESTING("object header closing");
+ if (H5O_close(&oh_ent)<0) {
+ FAILED();
+ H5Eprint(stdout);
+ goto error;
+ }
+ if (H5Fclose(file)<0) goto error;
+ PASSED();
+
+ puts("All object header tests passed.");
+ h5_cleanup(fapl);
+ return 0;
+
+ error:
+ H5E_BEGIN_TRY {
+ H5Fclose(file);
+ } H5E_END_TRY;
+ return 1;
+}
diff --git a/test/stab.c b/test/stab.c
new file mode 100644
index 0000000..5ea730e
--- /dev/null
+++ b/test/stab.c
@@ -0,0 +1,199 @@
+/*
+ * Copyright © 1998 NCSA
+ * All rights reserved.
+ *
+ * Programmer: Robb Matzke <matzke@llnl.gov>
+ * Tuesday, November 24, 1998
+ */
+#include <h5test.h>
+
+/*
+ * This file needs to access private datatypes from the H5G package.
+ */
+#define H5G_PACKAGE
+#include <H5Gpkg.h>
+
+const char *FILENAME[] = {
+ "stab1",
+ "stab2",
+ NULL
+};
+
+
+/*-------------------------------------------------------------------------
+ * Function: test_misc
+ *
+ * Purpose: Test miscellaneous group stuff.
+ *
+ * Return: Success: 0
+ *
+ * Failure: number of errors
+ *
+ * Programmer: Robb Matzke
+ * Tuesday, November 24, 1998
+ *
+ * Modifications:
+ *
+ *-------------------------------------------------------------------------
+ */
+static int
+test_misc(hid_t fapl)
+{
+ hid_t file=-1;
+ hid_t g1=-1, g2=-1, g3=-1;
+ char comment[64], filename[1024];
+
+ /* Test current working groups */
+ TESTING("miscellaneous group tests");
+
+ h5_fixname(FILENAME[0], fapl, filename, sizeof filename);
+ if ((file=H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl))<0)
+ goto error;
+
+ if ((g1=H5Gcreate(file, "test_1a", 0))<0) goto error;
+ if ((g2=H5Gcreate(g1, "sub_1", 0))<0) goto error;
+ if ((g3=H5Gcreate(file, "test_1b", 0))<0) goto error;
+ if (H5Gset_comment(g3, ".", "hello world")<0) goto error;
+
+ /* Close all groups */
+ if (H5Gclose(g1)<0) goto error;
+ if (H5Gclose(g2)<0) goto error;
+ if (H5Gclose(g3)<0) goto error;
+
+ /* Open all groups with absolute names to check for exsistence */
+ if ((g1=H5Gopen(file, "/test_1a"))<0) goto error;
+ if ((g2=H5Gopen(file, "/test_1a/sub_1"))<0) goto error;
+ if ((g3=H5Gopen(file, "/test_1b"))<0) goto error;
+ if (H5Gget_comment(g3, "././.", sizeof comment, comment)<0) goto error;
+ if (strcmp(comment, "hello world")) {
+ FAILED();
+ puts(" Read the wrong comment string from the group.");
+ printf(" got: \"%s\"\n ans: \"hello world\"\n", comment);
+ goto error;
+ }
+
+ /* Close everything */
+ if (H5Gclose(g1)<0) goto error;
+ if (H5Gclose(g2)<0) goto error;
+ if (H5Gclose(g3)<0) goto error;
+ if (H5Fclose(file)<0) goto error;
+ PASSED();
+ return 0;
+
+ error:
+ H5E_BEGIN_TRY {
+ H5Gclose(g1);
+ H5Gclose(g2);
+ H5Gclose(g3);
+ H5Fclose(file);
+ } H5E_END_TRY;
+ return 1;
+}
+
+
+/*-------------------------------------------------------------------------
+ * Function: test_large
+ *
+ * Purpose: Creates a really large directory.
+ *
+ * Return: Success: 0
+ *
+ * Failure: number of errors
+ *
+ * Programmer: Robb Matzke
+ * robb@maya.nuance.com
+ * Aug 29 1997
+ *
+ * Modifications:
+ *
+ *-------------------------------------------------------------------------
+ */
+static int
+test_large(hid_t fapl)
+{
+ hid_t file=-1, cwg=-1, fcpl=-1, dir=-1;
+ int i;
+ char name[1024];
+ int nsyms = 5000;
+
+ TESTING("large directories");
+
+ /*
+ * Use larger symbol table data structures to be more efficient, use
+ * defaults to bang harder on the library for testing.
+ */
+ fcpl = H5Pcreate(H5P_FILE_CREATE);
+ H5Pset_sym_k(fcpl, 16, 16);
+ h5_fixname(FILENAME[1], fapl, name, sizeof name);
+ if ((file=H5Fcreate(name, H5F_ACC_TRUNC, fcpl, fapl))<0) goto error;
+
+ /*
+ * Create a directory that has so many entries that the root
+ * of the B-tree ends up splitting.
+ */
+ if ((cwg=H5Gcreate(file, "/big", (size_t)nsyms*16+2))<0) goto error;
+ for (i=0; i<nsyms; i++) {
+ sprintf(name, "%05d%05d", rand()%100000, i);
+ if ((dir=H5Gcreate(cwg, name, 0))<0) goto error;
+ if (H5Gclose(dir)<0) goto error;
+ }
+ if (H5Gclose(cwg)<0) goto error;
+
+ /* Close everything */
+ if (H5Pclose(fcpl)<0) goto error;
+ if (H5Fclose(file)<0) goto error;
+ PASSED();
+ return 0;
+
+ error:
+ H5E_BEGIN_TRY {
+ H5Pclose(fcpl);
+ H5Gclose(dir);
+ H5Gclose(cwg);
+ H5Fclose(file);
+ } H5E_END_TRY;
+ return 1;
+}
+
+
+/*-------------------------------------------------------------------------
+ * Function: main
+ *
+ * Purpose: Test groups
+ *
+ * Return: Success: zero
+ *
+ * Failure: non-zero
+ *
+ * Programmer: Robb Matzke
+ * Tuesday, November 24, 1998
+ *
+ * Modifications:
+ *
+ *-------------------------------------------------------------------------
+ */
+int
+main(void)
+{
+ hid_t fapl;
+ int nerrors=0;
+
+ /* Reset library */
+ h5_reset();
+ fapl = h5_fileaccess();
+
+ /* Perform tests */
+ nerrors += test_misc(fapl);
+ nerrors += test_large(fapl);
+ if (nerrors) goto error;
+
+ /* Cleanup */
+ puts("All symbol table tests passed.");
+ h5_cleanup(fapl);
+ return 0;
+
+ error:
+ puts("*** TESTS FAILED ***");
+ return 1;
+}
+
diff --git a/test/testhdf5.c b/test/testhdf5.c
index 85b22a2..787d9b0 100644
--- a/test/testhdf5.c
+++ b/test/testhdf5.c
@@ -164,9 +164,6 @@ main(int argc, char *argv[])
/* Tests are generally arranged from least to most complexity... */
InitTest("metadata", test_metadata, cleanup_metadata, "Encode/decode metadata code");
InitTest("file", test_file, cleanup_file, "Low-Level File I/O");
- InitTest("heap", test_heap, cleanup_heap, "Object and Name Heaps");
- InitTest("ohdr", test_ohdr, cleanup_ohdr, "Object Headers");
- InitTest("stab", test_stab, cleanup_stab, "Symbol Tables");
InitTest("h5s", test_h5s, cleanup_h5s, "Dataspaces");
InitTest("attr", test_attr, cleanup_attr, "Attributes");
InitTest("select", test_select, cleanup_select, "Selections");
diff --git a/test/testhdf5.h b/test/testhdf5.h
index 3aafe88..a9d99f5 100644
--- a/test/testhdf5.h
+++ b/test/testhdf5.h
@@ -119,9 +119,6 @@ int print_func(const char *,...);
/* Prototypes for the test routines */
void test_metadata(void);
void test_file(void);
-void test_heap(void);
-void test_ohdr(void);
-void test_stab(void);
void test_h5t(void);
void test_h5s(void);
void test_h5d(void);
@@ -132,9 +129,6 @@ void test_reference(void);
/* Prototypes for the cleanup routines */
void cleanup_metadata(void);
void cleanup_file(void);
-void cleanup_heap(void);
-void cleanup_ohdr(void);
-void cleanup_stab(void);
void cleanup_h5s(void);
void cleanup_attr(void);
void cleanup_select(void);
diff --git a/test/theap.c b/test/theap.c
deleted file mode 100644
index c4ebe0a..0000000
--- a/test/theap.c
+++ /dev/null
@@ -1,113 +0,0 @@
-/*-------------------------------------------------------------------------
- * Copyright (C) 1997 National Center for Supercomputing Applications.
- * All rights reserved.
- *
- *-------------------------------------------------------------------------
- *
- * Created: theap.c
- * Jul 17 1997
- * Robb Matzke <robb@maya.nuance.com>
- *
- * Purpose:
- *
- * Modifications:
- *
- *-------------------------------------------------------------------------
- */
-#include <testhdf5.h>
-
-#include <H5private.h>
-#include <H5Iprivate.h>
-#include <H5ACprivate.h>
-#include <H5Pprivate.h>
-#include <H5Fprivate.h>
-#include <H5HLprivate.h>
-
-#define FILE "theap.h5"
-#define NOBJS 40
-
-/*-------------------------------------------------------------------------
- * Function: test_heap
- *
- * Purpose: Test name and object heaps.
- *
- * Return: void
- *
- * Programmer: Robb Matzke
- * robb@maya.nuance.com
- * Jul 17 1997
- *
- * Modifications:
- *
- *-------------------------------------------------------------------------
- */
-void
-test_heap(void)
-{
- int i, j;
- hid_t fid;
- H5F_t *f;
- haddr_t heap_addr;
- char buf[NOBJS + 8];
- const char *s;
- size_t obj[NOBJS];
- herr_t status;
-
- MESSAGE(5, ("Testing Heaps\n"));
-
- /* Create the file */
- fid = H5Fcreate(FILE, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
- CHECK(fid, FAIL, "H5Fcreate");
- f = H5I_object(fid);
- CHECK(f, NULL, "H5I_object");
-
- /* Create a new heap */
- status = H5HL_create(f, 0, &heap_addr /*out */ );
- CHECK_I(status, "H5HL_create");
-
- /* Add stuff to the heap */
- for (i = 0; i < NOBJS; i++) {
- sprintf(buf, "%03d-", i);
- for (j = 4; j < i; j++)
- buf[j] = '0' + j % 10;
- if (j > 4)
- buf[j] = '\0';
-
- obj[i] = H5HL_insert(f, &heap_addr, strlen(buf) + 1, buf);
- assert ((size_t)(-1)!=obj[i]);
- }
-
- /* Flush the cache and invalidate everything */
- H5AC_flush(f, NULL, 0, TRUE);
-
- /* Read the objects back out */
- for (i = 0; i < NOBJS; i++) {
- s = H5HL_peek(f, &heap_addr, obj[i]);
- MESSAGE(8, ("object is `%s'\n", s));
- }
-
- /* Close the file */
- H5Fclose(fid);
-}
-
-
-/*-------------------------------------------------------------------------
- * Function: cleanup_heap
- *
- * Purpose: Cleanup temporary test files
- *
- * Return: none
- *
- * Programmer: Albert Cheng
- * July 2, 1998
- *
- * Modifications:
- *
- *-------------------------------------------------------------------------
- */
-void
-cleanup_heap(void)
-{
- remove(FILE);
-}
-
diff --git a/test/tohdr.c b/test/tohdr.c
deleted file mode 100644
index 4b249de..0000000
--- a/test/tohdr.c
+++ /dev/null
@@ -1,197 +0,0 @@
-/*-------------------------------------------------------------------------
- * Copyright (C) 1997 National Center for Supercomputing Applications.
- * All rights reserved.
- *
- *-------------------------------------------------------------------------
- *
- * Created: tohdr.c
- * Aug 6 1997
- * Robb Matzke <robb@maya.nuance.com>
- *
- * Purpose:
- *
- * Modifications:
- *
- *-------------------------------------------------------------------------
- */
-
-#include <testhdf5.h>
-
-#include <H5private.h>
-#include <H5Iprivate.h>
-#include <H5ACprivate.h>
-#include <H5Pprivate.h>
-#include <H5Fprivate.h>
-#include <H5Gprivate.h>
-#include <H5Oprivate.h>
-
-#define TEST_FILE "tohdr.h5"
-
-/*
- * This file needs to access private datatypes from the H5G package.
- */
-#define H5G_PACKAGE
-#include <H5Gpkg.h>
-
-/*-------------------------------------------------------------------------
- * Function: test_ohdr
- *
- * Purpose: Test object headers.
- *
- * Return: void
- *
- * Programmer: Robb Matzke
- * robb@maya.nuance.com
- * Aug 6 1997
- *
- * Modifications:
- *
- *-------------------------------------------------------------------------
- */
-void
-test_ohdr(void)
-{
- hid_t fid;
- H5F_t *f;
- H5G_entry_t oh_ent;
- H5O_stab_t stab, ro;
- herr_t status;
- void *ptr;
- int i;
-
- MESSAGE(5, ("Testing Object Headers\n"));
-
- /* create the file */
- fid = H5Fcreate(TEST_FILE, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
- CHECK(fid, FAIL, "H5Fcreate");
- f = H5I_object(fid);
- CHECK(f, NULL, "H5I_object");
-
- /* the new object header */
- MESSAGE(8, ("Creating new object header...\n"));
- status = H5O_create(f, 64, &oh_ent /*out */ );
- CHECK_I(status, "H5O_new");
-
- /*
- * Test creation of a new message.
- */
- MESSAGE(8, ("Creating new message...\n"));
- stab.btree_addr.offset = 11111111;
- stab.heap_addr.offset = 22222222;
- status = H5O_modify(&oh_ent, H5O_STAB, H5O_NEW_MESG, 0, &stab);
- VERIFY(status, 0, "H5O_modify");
-
- H5AC_flush(f, NULL, 0, TRUE);
- ptr = H5O_read(&oh_ent, H5O_STAB, 0, &ro);
- CHECK_PTR(ptr, "H5O_read");
- VERIFY(ptr, &ro, "H5O_read");
- VERIFY(ro.btree_addr.offset, stab.btree_addr.offset, "H5O_read");
- VERIFY(ro.heap_addr.offset, stab.heap_addr.offset, "H5O_read");
-
- /*
- * Test modification of an existing message.
- */
- MESSAGE(8, ("Modifying message...\n"));
- stab.btree_addr.offset = 33333333;
- stab.heap_addr.offset = 44444444;
- status = H5O_modify(&oh_ent, H5O_STAB, 0, 0, &stab);
- VERIFY(status, 0, "H5O_modify");
-
- H5AC_flush(f, NULL, 0, TRUE);
- ptr = H5O_read(&oh_ent, H5O_STAB, 0, &ro);
- CHECK_PTR(ptr, "H5O_read");
- VERIFY(ptr, &ro, "H5O_read");
- VERIFY(ro.btree_addr.offset, stab.btree_addr.offset, "H5O_read");
- VERIFY(ro.heap_addr.offset, stab.heap_addr.offset, "H5O_read");
-
- /*
- * Test creation of a second message of the same type with a symbol
- * table.
- */
- MESSAGE(8, ("Creating a duplicate message...\n"));
- stab.btree_addr.offset = 55555555;
- stab.heap_addr.offset = 66666666;
- status = H5O_modify(&oh_ent, H5O_STAB, H5O_NEW_MESG, 0, &stab);
- VERIFY(status, 1, "H5O_modify");
-
- H5AC_flush(f, NULL, 0, TRUE);
- ptr = H5O_read(&oh_ent, H5O_STAB, 1, &ro);
- CHECK_PTR(ptr, "H5O_read");
- VERIFY(ptr, &ro, "H5O_read");
- VERIFY(ro.btree_addr.offset, stab.btree_addr.offset, "H5O_read");
- VERIFY(ro.heap_addr.offset, stab.heap_addr.offset, "H5O_read");
-
- /*
- * Test modification of the second message with a symbol table.
- */
- MESSAGE(8, ("Modifying the duplicate message...\n"));
- stab.btree_addr.offset = 77777777;
- stab.heap_addr.offset = 88888888;
- status = H5O_modify(&oh_ent, H5O_STAB, 1, 0, &stab);
- VERIFY(status, 1, "H5O_modify");
-
- H5AC_flush(f, NULL, 0, TRUE);
- ptr = H5O_read(&oh_ent, H5O_STAB, 1, &ro);
- CHECK_PTR(ptr, "H5O_read");
- VERIFY(ptr, &ro, "H5O_read");
- VERIFY(ro.btree_addr.offset, stab.btree_addr.offset, "H5O_read");
- VERIFY(ro.heap_addr.offset, stab.heap_addr.offset, "H5O_read");
-
- /*
- * Test creation of a bunch of messages one after another to see
- * what happens when the object header overflows in core.
- */
- MESSAGE(8, ("Overflowing header in core...\n"));
- for (i = 0; i < 40; i++) {
- stab.btree_addr.offset = (i + 1) * 1000 + 1;
- stab.heap_addr.offset = (i + 1) * 1000 + 2;
- status = H5O_modify(&oh_ent, H5O_STAB, H5O_NEW_MESG, 0, &stab);
- VERIFY(status, 2 + i, "H5O_modify");
- }
- H5AC_flush(f, NULL, 0, TRUE);
-
- /*
- * Test creation of a bunch of messages one after another to see
- * what happens when the object header overflows on disk.
- */
- MESSAGE(8, ("Overflowing header on disk...\n"));
- for (i = 0; i < 10; i++) {
- stab.btree_addr.offset = (i + 1) * 1000 + 10;
- stab.heap_addr.offset = (i + 1) * 1000 + 20;
- status = H5O_modify(&oh_ent, H5O_STAB, H5O_NEW_MESG, 0, &stab);
- VERIFY(status, 42 + i, "H5O_modify");
- H5AC_flush(f, NULL, 0, TRUE);
- }
-
- /*
- * Delete all symbol table messages.
- */
- status = H5O_remove(&oh_ent, H5O_STAB, H5O_ALL);
- CHECK_I(status, "H5O_remove");
-
- /* release resources */
- H5O_close(&oh_ent);
- H5Fclose(fid);
-}
-
-
-/*-------------------------------------------------------------------------
- * Function: cleanup_ohdr
- *
- * Purpose: Cleanup temporary test files
- *
- * Return: none
- *
- * Programmer: Albert Cheng
- * July 2, 1998
- *
- * Modifications:
- *
- *-------------------------------------------------------------------------
- */
-void
-cleanup_ohdr(void)
-{
- remove(TEST_FILE);
-}
-
diff --git a/test/tstab.c b/test/tstab.c
deleted file mode 100644
index 52bc8cb..0000000
--- a/test/tstab.c
+++ /dev/null
@@ -1,251 +0,0 @@
-/*-------------------------------------------------------------------------
- * Copyright (C) 1997 National Center for Supercomputing Applications.
- * All rights reserved.
- *
- *-------------------------------------------------------------------------
- *
- * Created: tstab.c
- * Aug 7 1997
- * Robb Matzke <matzke@llnl.gov>
- *
- * Purpose:
- *
- * Modifications:
- *
- *-------------------------------------------------------------------------
- */
-#include <testhdf5.h>
-
-#include <H5private.h>
-#include <H5Iprivate.h>
-#include <H5ACprivate.h>
-#include <H5Pprivate.h>
-#include <H5Fprivate.h>
-#include <H5Gprivate.h>
-#include <H5Oprivate.h>
-
-#define TEST_FILE_1 "tstab1.h5"
-#define TEST_FILE_2 "tstab2.h5"
-
-/*
- * This file needs to access private datatypes from the H5G package.
- */
-#define H5G_PACKAGE
-#include <H5Gpkg.h>
-
-
-/*-------------------------------------------------------------------------
- * Function: test_1
- *
- * Purpose: Miscellaneous group tests
- *
- * Return: void
- *
- * Programmer: Robb Matzke
- * Friday, September 11, 1998
- *
- * Modifications:
- *
- *-------------------------------------------------------------------------
- */
-static void
-test_1(void)
-{
- hid_t file;
- hid_t g1, g2, g3;
- herr_t status;
- char comment[64];
- int cmp;
-
- /* Test current working groups */
- MESSAGE(2, ("........current working groups\n"));
- file = H5Fcreate(TEST_FILE_1, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
- CHECK_I(file, "H5Fcreate");
-
- g1 = H5Gcreate(file, "test_1a", 0);
- CHECK_I(g1, "H5Gcreate");
-
- g2 = H5Gcreate(g1, "sub_1", 0);
- CHECK_I(g2, "H5Gcreate");
-
- g3 = H5Gcreate(file, "test_1b", 0);
- CHECK_I(g3, "H5Gcreate");
- status = H5Gset_comment(g3, ".", "hello world");
- CHECK_I(status, "H5Gset_comment");
-
- /* Close all groups */
- status = H5Gclose(g1);
- CHECK_I(status, "H5Gclose");
- status = H5Gclose(g2);
- CHECK_I(status, "H5Gclose");
- status = H5Gclose(g3);
- CHECK_I(status, "H5Gclose");
-
- /* Open all groups with absolute names to check for exsistence */
- g1 = H5Gopen(file, "/test_1a");
- CHECK_I(g1, "H5Gopen");
- g2 = H5Gopen(file, "/test_1a/sub_1");
- CHECK_I(g2, "H5Gopen");
- g3 = H5Gopen(file, "/test_1b");
- CHECK_I(g3, "H5Gopen");
- status = H5Gget_comment(g3, "././.", sizeof comment, comment);
- CHECK_I(status, "H5Gget_comment");
- cmp = strcmp(comment, "hello world");
- VERIFY(cmp, 0, "strcmp");
-
- /* Close all groups */
- status = H5Gclose(g1);
- CHECK_I(status, "H5Gclose");
- status = H5Gclose(g2);
- CHECK_I(status, "H5Gclose");
- status = H5Gclose(g3);
- CHECK_I(status, "H5Gclose");
-
- /* Close file */
- status = H5Fclose(file);
- CHECK_I(status, "H5Fclose");
-}
-
-
-/*-------------------------------------------------------------------------
- * Function: test_2
- *
- * Purpose: Creates a really large directory.
- *
- * Return: void
- *
- * Programmer: Robb Matzke
- * robb@maya.nuance.com
- * Aug 29 1997
- *
- * Modifications:
- *
- *-------------------------------------------------------------------------
- */
-static void
-test_2(void)
-{
- hid_t fid, cwg, create_plist, access_plist, dir;
- H5F_t *f;
- int i;
- char name[256];
- herr_t status;
- int nsyms = 5000;
-
- MESSAGE(2, ("........large directories\n"));
-
- /*
- * Use larger symbol table data structures to be more efficient, use
- * defaults to bang harder on the library for testing.
- */
- create_plist = H5Pcreate(H5P_FILE_CREATE);
- H5Pset_sym_k(create_plist, 16, 16);
-
- /*
- * File access property list.
- */
- access_plist = H5Pcreate (H5P_FILE_ACCESS);
-
-#if 0
- /* Try temporary core files */
- H5Cset_core (access_plist, 3000000);
-#elif 0
- /* Try a default split file but with our own name extensions */
- H5Cset_split (access_plist, ".XX1", H5C_DEFAULT, ".XX2", H5C_DEFAULT);
-#elif 0
- {
- /* Try a split file with an in-core meta data part */
- hid_t meta_access = H5Ccreate (H5C_FILE_ACCESS);
- H5Cset_core (meta_access, 1024*1024);
- H5Cset_split (access_plist, NULL, meta_access, NULL, H5C_DEFAULT);
- }
-#elif 0
- {
- /* Try a split file with an in-core raw data part */
- hid_t raw_access = H5Ccreate (H5C_FILE_ACCESS);
- H5Cset_core (raw_access, 1024*1024);
- H5Cset_split (access_plist, NULL, H5C_DEFAULT, NULL, raw_access);
- }
-#endif
-
- /* create the file */
- fid = H5Fcreate(TEST_FILE_2, H5F_ACC_TRUNC, create_plist, access_plist);
- CHECK(fid, FAIL, "H5Fcreate");
- f = H5I_object(fid);
- CHECK(f, NULL, "H5I_object");
- f->intent |= H5F_ACC_DEBUG;
-
- /*
- * Create a directory that has so many entries that the root
- * of the B-tree ends up splitting.
- */
- cwg = H5Gcreate(fid, "/big", (size_t)nsyms*16+2);
- CHECK_I(cwg, "H5Gcreate");
-
- for (i = 0; i < nsyms; i++) {
- sprintf(name, "%05d%05d", rand() % 100000, i);
- MESSAGE(8, ("%s\n", name));
- dir = H5Gcreate(cwg, name, 0);
- CHECK_I(dir, "H5Gcreate");
- status = H5Gclose(dir);
- CHECK_I(status, "H5Gclose");
- }
-
- status = H5Gclose(cwg);
- CHECK_I(status, "H5Gclose");
-
- /* close the property lists */
- status = H5Pclose(create_plist);
- CHECK_I(status, "H5Pclose");
- status = H5Pclose(access_plist);
- CHECK_I(status, "H5Pclose");
-
- /* close the file */
- status = H5Fclose(fid);
- CHECK_I(status, "H5Fclose");
-}
-
-/*-------------------------------------------------------------------------
- * Function: test_stab
- *
- * Purpose: Test symbol tables
- *
- * Return: void
- *
- * Programmer: Robb Matzke
- * matzke@viper.llnl.gov
- * Aug 7 1997
- *
- * Modifications:
- *
- *-------------------------------------------------------------------------
- */
-void
-test_stab(void)
-{
- test_1();
- test_2();
-}
-
-
-/*-------------------------------------------------------------------------
- * Function: cleanup_stab
- *
- * Purpose: Cleanup temporary test files
- *
- * Return: none
- *
- * Programmer: Albert Cheng
- * July 2, 1998
- *
- * Modifications:
- *
- *-------------------------------------------------------------------------
- */
-void
-cleanup_stab(void)
-{
- remove(TEST_FILE_1);
- remove(TEST_FILE_2);
-}
-