summaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorRobb Matzke <matzke@llnl.gov>1998-10-26 19:55:54 (GMT)
committerRobb Matzke <matzke@llnl.gov>1998-10-26 19:55:54 (GMT)
commitf7545efc76fdb4e3fb7e93b93f0e404a3a651081 (patch)
tree29b59ab23912342bdaf6eaaf75fd2a0f8e1def46 /test
parentac90ad84f606a9482ee11caf417b017c6a28c1a9 (diff)
downloadhdf5-f7545efc76fdb4e3fb7e93b93f0e404a3a651081.zip
hdf5-f7545efc76fdb4e3fb7e93b93f0e404a3a651081.tar.gz
hdf5-f7545efc76fdb4e3fb7e93b93f0e404a3a651081.tar.bz2
[svn-r795] Changes since 19981026
---------------------- ./MANIFEST ./test/th5s.h5 [NEW] ./test/th5s.c Added a test to make sure that creating a data space with too large a rank fails. Added a test to make sure that reading a file that has a dataset with a space with too large a rank fails. Actually, this one is a little weird: the code that reads the data space message assumes the space is scalar if the message cannot be read. Fortunately the layout message fails also, preventing the dataset from being opened. However, since the data type message is still visible h5ls will report that the object is a named data type. ./test/space_overflow.c [NEW] This is the little program that makes the th5s.h5 file. ./src/H5A.c ./src/H5R.c ./src/H5Sselect.c Updated trace info. ./src/H5Olayout.c ./src/H5Osdspace.c Added code to fail if the dimensionality is too large when decoding a layout or simple data space message. ./src/H5Oprivate.h Redefined H5O_LAYOUT_NDIMS in terms of H5S_MAX_RANK. ./src/H5P.c ./src/H5S.c Check for ndims>H5S_MAX_RANK in API function calls, added assert to internal functions. ./src/H5V.c Changed a `<' to an `<=' in an assert. ./test/flush2.c Includes stdlib.h for getenv(). ./tools/h5tools.c Able to handle up to H5S_MAX_RANK dimensions during output.
Diffstat (limited to 'test')
-rw-r--r--test/flush2.c1
-rw-r--r--test/th5s.c31
-rw-r--r--test/th5s.h5bin0 -> 1665 bytes
3 files changed, 29 insertions, 3 deletions
diff --git a/test/flush2.c b/test/flush2.c
index a799619..6e24075 100644
--- a/test/flush2.c
+++ b/test/flush2.c
@@ -15,6 +15,7 @@
#include <hdf5.h>
#include <math.h>
#include <stdio.h>
+#include <stdlib.h>
#include <H5config.h>
#ifndef HAVE_ATTRIBUTE
diff --git a/test/th5s.c b/test/th5s.c
index abb16cd..b53e9aa 100644
--- a/test/th5s.c
+++ b/test/th5s.c
@@ -85,10 +85,14 @@ test_h5s_basic(void)
{
hid_t fid1; /* HDF5 File IDs */
hid_t sid1, sid2; /* Dataspace ID */
+ hid_t dset1; /* Dataset ID */
unsigned rank; /* Logical rank of dataspace */
hsize_t dims1[] = {SPACE1_DIM1, SPACE1_DIM2, SPACE1_DIM3};
- hsize_t dims2[] = {SPACE2_DIM1, SPACE2_DIM2, SPACE2_DIM3, SPACE2_DIM4};
- hsize_t max2[] = {SPACE2_MAX1, SPACE2_MAX2, SPACE2_MAX3, SPACE2_MAX4};
+ hsize_t dims2[] = {SPACE2_DIM1, SPACE2_DIM2, SPACE2_DIM3,
+ SPACE2_DIM4};
+ hsize_t dims3[H5S_MAX_RANK+1];
+ hsize_t max2[] = {SPACE2_MAX1, SPACE2_MAX2, SPACE2_MAX3,
+ SPACE2_MAX4};
hsize_t tdims[4]; /* Dimension array to test with */
hsize_t tmax[4];
size_t n; /* Number of dataspace elements */
@@ -106,7 +110,8 @@ test_h5s_basic(void)
n = H5Sget_simple_extent_npoints(sid1);
CHECK(n, UFAIL, "H5Sget_simple_extent_npoints");
- VERIFY(n, SPACE1_DIM1 * SPACE1_DIM2 * SPACE1_DIM3, "H5Sget_simple_extent_npoints");
+ VERIFY(n, SPACE1_DIM1 * SPACE1_DIM2 * SPACE1_DIM3,
+ "H5Sget_simple_extent_npoints");
rank = H5Sget_simple_extent_ndims(sid1);
CHECK(rank, UFAIL, "H5Sget_simple_extent_ndims");
@@ -145,6 +150,26 @@ test_h5s_basic(void)
/* Close first file */
ret = H5Fclose(fid1);
CHECK(ret, FAIL, "H5Fclose");
+
+ /*
+ * Check to be sure we can't create a simple data space that has too many
+ * dimensions.
+ */
+ H5E_BEGIN_TRY {
+ sid1 = H5Screate_simple(H5S_MAX_RANK+1, dims3, NULL);
+ } H5E_END_TRY;
+ VERIFY(sid1, FAIL, "H5Screate_simple");
+
+ /*
+ * Try reading a file that has been prepared that has a dataset with a
+ * higher dimensionality than what the library can handle.
+ */
+ fid1 = H5Fopen("th5s.h5", H5F_ACC_RDONLY, H5P_DEFAULT);
+ CHECK_I(fid1, "H5Fopen(th5s.h5)");
+ dset1 = H5Dopen(fid1, "dset");
+ VERIFY(dset1, FAIL, "H5Dopen");
+ ret = H5Fclose(fid1);
+ CHECK_I(ret, "H5Fclose");
} /* test_h5s_basic() */
/****************************************************************
diff --git a/test/th5s.h5 b/test/th5s.h5
new file mode 100644
index 0000000..452b3d4
--- /dev/null
+++ b/test/th5s.h5
Binary files differ