diff options
author | Robb Matzke <matzke@llnl.gov> | 1998-11-25 14:58:22 (GMT) |
---|---|---|
committer | Robb Matzke <matzke@llnl.gov> | 1998-11-25 14:58:22 (GMT) |
commit | 4354606d1e86a514958f20b21163c19c30dc26f5 (patch) | |
tree | db93fa4fa072524becbc7a8e6221a6c64fdbfa3f /test/lheap.c | |
parent | 49ca76e303a15bfb6a46d7b68086ca974044c5c1 (diff) | |
download | hdf5-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.
Diffstat (limited to 'test/lheap.c')
-rw-r--r-- | test/lheap.c | 131 |
1 files changed, 131 insertions, 0 deletions
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; +} |