summaryrefslogtreecommitdiffstats
path: root/test/tarray.c
diff options
context:
space:
mode:
Diffstat (limited to 'test/tarray.c')
-rw-r--r--test/tarray.c55
1 files changed, 54 insertions, 1 deletions
diff --git a/test/tarray.c b/test/tarray.c
index bb59d72..4175d9f 100644
--- a/test/tarray.c
+++ b/test/tarray.c
@@ -21,6 +21,7 @@
*************************************************************/
#include "testhdf5.h"
+
#include "hdf5.h"
#define FILENAME "tarray1.h5"
@@ -709,11 +710,13 @@ test_array_compound_array(void)
hsize_t sdims1[] = {SPACE1_DIM1};
hsize_t tdims1[] = {ARRAY1_DIM1};
#ifdef WANT_H5_V1_2_COMPAT
+ size_t msize;
size_t otdims1[] = {ARRAY1_DIM1};
#endif /* WANT_H5_V1_2_COMPAT */
int ndims; /* Array rank for reading */
hsize_t rdims1[H5S_MAX_RANK]; /* Array dimensions for reading */
#ifdef WANT_H5_V1_2_COMPAT
+ size_t rdims2[H5S_MAX_RANK]; /* Array dimensions for reading */
size_t ordims1[H5S_MAX_RANK]; /* Array dimensions for reading */
#endif /* WANT_H5_V1_2_COMPAT */
int nmemb; /* Number of compound members */
@@ -769,7 +772,7 @@ test_array_compound_array(void)
/* Compatibility code to verify that the old API functions are still working */
#ifdef WANT_H5_V1_2_COMPAT
- /* Insert float array field */
+ /* Insert double array field */
ret = H5Tinsert_array (tid2, "d", HOFFSET(s1_t,d), ARRAY1_RANK,otdims1,NULL,H5T_NATIVE_DOUBLE);
CHECK(ret, FAIL, "H5Tinsert_array");
#endif /* WANT_H5_V1_2_COMPAT */
@@ -887,6 +890,29 @@ test_array_compound_array(void)
mtid=H5Tget_member_type(tid2,1);
CHECK(mtid, FAIL, "H5Tget_member_type");
+#ifdef WANT_H5_V1_2_COMPAT
+ /* H5Tget_member_type() returns the base type in v1.2 */
+ /* Get the 2nd field's class */
+ mclass=H5Tget_class(mtid);
+ VERIFY(mclass, H5T_FLOAT, "H5Tget_class");
+
+ /* Get the 2nd field's size */
+ msize=H5Tget_size(mtid);
+ VERIFY(msize, sizeof(float), "H5Tget_size");
+
+ /* Get the array dimensions */
+ ndims=H5Tget_member_dims(tid2,1,rdims2,NULL);
+ VERIFY(ndims, ARRAY1_RANK, "H5Tget_member_dims");
+ VERIFY(rdims2[0], ARRAY1_DIM1, "H5Tget_member_dims");
+
+ /* Check the array dimensions */
+ for(i=0; i<ndims; i++)
+ if(rdims2[i]!=tdims1[i]) {
+ num_errs++;
+ printf("Nested array dimension information doesn't match!, rdims2[%d]=%d, tdims1[%d]=%d\n",(int)i,(int)rdims2[i],(int)i,(int)tdims1[i]);
+ continue;
+ } /* end if */
+#else /* WANT_H5_V1_2_COMPAT */
/* Get the 2nd field's class */
mclass=H5Tget_class(mtid);
VERIFY(mclass, H5T_ARRAY, "H5Tget_class");
@@ -919,6 +945,7 @@ test_array_compound_array(void)
/* Close the array's base type datatype */
ret=H5Tclose(tid3);
CHECK(mtid, FAIL, "H5Tclose");
+#endif /* WANT_H5_V1_2_COMPAT */
/* Close the member datatype */
ret=H5Tclose(mtid);
@@ -939,6 +966,19 @@ test_array_compound_array(void)
off=H5Tget_member_offset(tid2,2);
VERIFY(off, HOFFSET(s1_t,d), "H5Tget_member_offset");
+ /* Check the 2nd field's datatype */
+ mtid=H5Tget_member_type(tid2,2);
+ CHECK(mtid, FAIL, "H5Tget_member_type");
+
+ /* H5Tget_member_type() returns the base type in v1.2 */
+ /* Get the 3rd field's class */
+ mclass=H5Tget_class(mtid);
+ VERIFY(mclass, H5T_FLOAT, "H5Tget_class");
+
+ /* Get the 3rd field's size */
+ msize=H5Tget_size(mtid);
+ VERIFY(msize, sizeof(double), "H5Tget_size");
+
/* Check the array rank */
ndims=H5Tget_member_dims(tid2,2,ordims1,NULL);
VERIFY(ndims,ARRAY1_RANK,"H5Tget_member_dims");
@@ -950,6 +990,11 @@ test_array_compound_array(void)
printf("Nested array dimension information doesn't match!, ordims1[%d]=%d, otdims1[%d]=%d\n",(int)i,(int)ordims1[i],(int)i,(int)otdims1[i]);
continue;
} /* end if */
+
+ /* Close the member datatype */
+ ret=H5Tclose(mtid);
+ CHECK(mtid, FAIL, "H5Tclose");
+
#endif /* WANT_H5_V1_2_COMPAT */
/* Close Compound Datatype */
@@ -1830,16 +1875,20 @@ test_compat(void)
hid_t fid1; /* HDF5 File IDs */
hid_t dataset; /* Dataset ID */
hid_t tid1; /* Array Datatype ID */
+#ifndef WANT_H5_V1_2_COMPAT
hid_t tid2; /* Datatype ID */
hsize_t tdims1[] = {ARRAY1_DIM1};
int ndims; /* Array rank for reading */
hsize_t rdims1[H5S_MAX_RANK]; /* Array dimensions for reading */
+#endif /* !WANT_H5_V1_2_COMPAT */
H5T_class_t mclass; /* Datatype class for VL */
int nmemb; /* Number of compound members */
char *mname; /* Name of compound field */
size_t off; /* Offset of compound field */
hid_t mtid; /* Datatype ID for field */
+#ifndef WANT_H5_V1_2_COMPAT
intn i; /* Index variables */
+#endif /* !WANT_H5_V1_2_COMPAT */
herr_t ret; /* Generic return value */
/* Output message about test being performed */
@@ -2013,6 +2062,7 @@ test_compat(void)
off=H5Tget_member_offset(tid1,1);
VERIFY(off, 4, "H5Tget_member_offset");
+#ifndef WANT_H5_V1_2_COMPAT
/* Check the 2nd field's datatype */
mtid=H5Tget_member_type(tid1,1);
CHECK(mtid, FAIL, "H5Tget_member_type");
@@ -2049,6 +2099,7 @@ test_compat(void)
CHECK(ret, FAIL, "H5Tclose");
ret=H5Tclose(mtid);
CHECK(ret, FAIL, "H5Tclose");
+#endif /* !WANT_H5_V1_2_COMPAT */
/* Check the 3rd field's name */
mname=H5Tget_member_name(tid1,2);
@@ -2063,6 +2114,7 @@ test_compat(void)
off=H5Tget_member_offset(tid1,2);
VERIFY(off, 20, "H5Tget_member_offset");
+#ifndef WANT_H5_V1_2_COMPAT
/* Check the 3rd field's datatype */
mtid=H5Tget_member_type(tid1,2);
CHECK(mtid, FAIL, "H5Tget_member_type");
@@ -2099,6 +2151,7 @@ test_compat(void)
CHECK(ret, FAIL, "H5Tclose");
ret=H5Tclose(mtid);
CHECK(ret, FAIL, "H5Tclose");
+#endif /* !WANT_H5_V1_2_COMPAT */
/* Check the 4th field's name */
mname=H5Tget_member_name(tid1,3);