summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--MANIFEST4
-rw-r--r--tools/h5dump/CMakeTests.cmake10
-rw-r--r--tools/h5dump/h5dumpgentest.c463
-rw-r--r--tools/h5dump/testh5dump.sh.in6
-rw-r--r--tools/testfiles/tcompound_complex2.ddl1051
-rw-r--r--tools/testfiles/tcompound_complex2.h5bin0 -> 21880 bytes
-rw-r--r--tools/testfiles/tvlenstr_array.ddl48
-rw-r--r--tools/testfiles/tvlenstr_array.h5bin0 -> 6720 bytes
8 files changed, 1564 insertions, 18 deletions
diff --git a/MANIFEST b/MANIFEST
index 3210aef..687f0f5 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -1538,6 +1538,8 @@
./tools/testfiles/tcompound.h5
./tools/testfiles/tcompound2.h5
./tools/testfiles/tcompound_complex.h5
+./tools/testfiles/tcompound_complex2.h5
+./tools/testfiles/tcompound_complex2.ddl
./tools/testfiles/tdatareg.h5
./tools/testfiles/tdatareg.ddl
./tools/testfiles/tdataregR.ddl
@@ -1707,6 +1709,8 @@
./tools/testfiles/tvldtypes4.h5
./tools/testfiles/tvldtypes5.ddl
./tools/testfiles/tvldtypes5.h5
+./tools/testfiles/tvlenstr_array.ddl
+./tools/testfiles/tvlenstr_array.h5
./tools/testfiles/tvlstr.h5
./tools/testfiles/tvlstr.ddl
./tools/testfiles/tvms.ddl
diff --git a/tools/h5dump/CMakeTests.cmake b/tools/h5dump/CMakeTests.cmake
index 346ab60..a5de05e 100644
--- a/tools/h5dump/CMakeTests.cmake
+++ b/tools/h5dump/CMakeTests.cmake
@@ -62,6 +62,7 @@
${HDF5_TOOLS_DIR}/testfiles/tcmpdintarray.ddl
${HDF5_TOOLS_DIR}/testfiles/tcmpdints.ddl
${HDF5_TOOLS_DIR}/testfiles/tcmpdintsize.ddl
+ ${HDF5_TOOLS_DIR}/testfiles/tcompound_complex2.ddl
${HDF5_TOOLS_DIR}/testfiles/tcomp-1.ddl
${HDF5_TOOLS_DIR}/testfiles/tcomp-2.ddl
${HDF5_TOOLS_DIR}/testfiles/tcomp-3.ddl
@@ -173,6 +174,7 @@
${HDF5_TOOLS_DIR}/testfiles/tvldtypes3.ddl
${HDF5_TOOLS_DIR}/testfiles/tvldtypes4.ddl
${HDF5_TOOLS_DIR}/testfiles/tvldtypes5.ddl
+ ${HDF5_TOOLS_DIR}/testfiles/tvlenstr_array.ddl
${HDF5_TOOLS_DIR}/testfiles/tvlstr.ddl
${HDF5_TOOLS_DIR}/testfiles/tvms.ddl
${HDF5_TOOLS_DIR}/testfiles/twidedisplay.ddl
@@ -222,6 +224,7 @@
${HDF5_TOOLS_DIR}/testfiles/tcmpdintsize.h5
${HDF5_TOOLS_DIR}/testfiles/tcompound.h5
${HDF5_TOOLS_DIR}/testfiles/tcompound_complex.h5
+ ${HDF5_TOOLS_DIR}/testfiles/tcompound_complex2.h5
${HDF5_TOOLS_DIR}/testfiles/tdatareg.h5
${HDF5_TOOLS_DIR}/testfiles/tdset.h5
${HDF5_TOOLS_DIR}/testfiles/tempty.h5
@@ -286,6 +289,7 @@
${HDF5_TOOLS_DIR}/testfiles/tvldtypes3.h5
${HDF5_TOOLS_DIR}/testfiles/tvldtypes4.h5
${HDF5_TOOLS_DIR}/testfiles/tvldtypes5.h5
+ ${HDF5_TOOLS_DIR}/testfiles/tvlenstr_array.h5
${HDF5_TOOLS_DIR}/testfiles/tvlstr.h5
${HDF5_TOOLS_DIR}/testfiles/tvms.h5
${HDF5_TOOLS_DIR}/testfiles/zerodim.h5
@@ -850,6 +854,8 @@
tcomp-4.out.err
tcompact.out
tcompact.out.err
+ tcompound_complex.out
+ tcompound_complex.out.err
tcontents.out
tcontents.out.err
tcontiguos.out
@@ -1066,6 +1072,8 @@
tvldtypes4.out.err
tvldtypes5.out
tvldtypes5.out.err
+ tvlenstr_array.out
+ tvlenstr_array.out.err
tvlstr.out
tvlstr.out.err
tvms.out
@@ -1174,6 +1182,7 @@
ADD_H5ERR_MASK_TEST (tcomp-3 0 "--enable-error-stack;-t;/#6632;-g;/group2;tcompound.h5")
# test complicated compound datatype
ADD_H5_TEST (tcomp-4 0 --enable-error-stack tcompound_complex.h5)
+ ADD_H5_TEST (tcompound_complex2 0 --enable-error-stack tcompound_complex2.h5)
# tests for bitfields and opaque data types
ADD_H5_TEST (tbitnopaque 0 --enable-error-stack tbitnopaque.h5)
@@ -1208,6 +1217,7 @@
#test for file with variable length string data
ADD_H5_TEST (tvlstr 0 --enable-error-stack tvlstr.h5)
+ ADD_H5_TEST (tvlenstr_array 0 --enable-error-stack tvlenstr_array.h5)
# test for files with array data
ADD_H5_TEST (tarray1 0 --enable-error-stack tarray1.h5)
diff --git a/tools/h5dump/h5dumpgentest.c b/tools/h5dump/h5dumpgentest.c
index 1cdf6cf..4506da2 100644
--- a/tools/h5dump/h5dumpgentest.c
+++ b/tools/h5dump/h5dumpgentest.c
@@ -112,6 +112,8 @@
#define FILE79 "tintsattrs.h5"
#define FILE80 "tbitnopaque.h5"
#define FILE81 "tints4dims.h5"
+#define FILE82 "tcompound_complex2.h5"
+#define FILE83 "tvlenstr_array.h5"
/*-------------------------------------------------------------------------
* prototypes
@@ -289,14 +291,14 @@ typedef struct s1_t {
#define F66_DUMMYDBL "DummyDBL"
/* Declarations for gent_dataset_idx() for "FILE68a" */
-#define F68a_DSET_FIXED "dset_fixed"
-#define F68a_DSET_FIXED_FILTER "dset_filter"
-#define F68a_DSET_BTREE "dset_btree"
-#define F68a_DIM200 200
-#define F68a_DIM100 100
-#define F68a_DIM20 20
-#define F68a_DIM10 10
-#define F68a_CHUNK 5
+#define F68a_DSET_FIXED "dset_fixed"
+#define F68a_DSET_FIXED_FILTER "dset_filter"
+#define F68a_DSET_BTREE "dset_btree"
+#define F68a_DIM200 200
+#define F68a_DIM100 100
+#define F68a_DIM20 20
+#define F68a_DIM10 10
+#define F68a_CHUNK 5
/* "FILE70" macros and for FILE71 */
/* Name of dataset to create in datafile */
@@ -371,6 +373,28 @@ typedef struct s1_t {
#define F81_YDIM 6
#define F81_ZDIM 4
+/* "File 82" macros */
+/* Name of dataset to create in datafile */
+#define F82_DATASETNAME "CompoundComplex1D"
+#define F82_DATASETNAME2 "CompoundComplex2D"
+#define F82_DATASETNAME3 "CompoundComplex3D"
+#define F82_DATASETNAME4 "CompoundComplex4D"
+/* Dataset dimensions */
+#define F82_DIM32 32
+#define F82_RANK 1
+#define F82_RANK2 2
+#define F82_RANK3 3
+#define F82_RANK4 4
+
+/* "File 83" macros */
+/* Name of dataset to create in datafile */
+#define F83_DATASETNAME "ScalarArrayOfVlenStr"
+#define F83_DATASETNAME2 "CompoundArrayOfVlenStr"
+/* Dataset dimensions */
+#define F83_DIM 5
+#define F83_RANK 1
+#define F83_ARRAYDIM 3
+
static void
gent_group(void)
{
@@ -7023,16 +7047,16 @@ gent_fs_strategy_threshold(void)
/*
* Create a file with new format:
- * Create one dataset with (set_chunk, fixed dims, null max. dims)
- * so that Fixed Array indexing will be used.
- * Create one dataset with (set_chunk, fixed dims, null max. dims, filter)
- * so that Fixed Array indexing will be used.
+ * Create one dataset with (set_chunk, fixed dims, null max. dims)
+ * so that Fixed Array indexing will be used.
+ * Create one dataset with (set_chunk, fixed dims, null max. dims, filter)
+ * so that Fixed Array indexing will be used.
* Create one dataset with (set_chunk, fixed dims, fixed max. dims)
- * so that Fixed Array indexing will be used.
- *
+ * so that Fixed Array indexing will be used.
+ *
* Modifications:
- * Fixed Array indexing will be used for chunked dataset
- * with fixed max. dims setting.
+ * Fixed Array indexing will be used for chunked dataset
+ * with fixed max. dims setting.
*
*/
static void
@@ -7062,7 +7086,7 @@ gent_dataset_idx(void)
assert(ret >= 0);
/* dataset with fixed dimensions */
- dims[0] = F68a_DIM20;
+ dims[0] = F68a_DIM20;
dims[1] = F68a_DIM10;
space = H5Screate_simple(RANK, dims, NULL);
@@ -7075,7 +7099,7 @@ gent_dataset_idx(void)
H5Sclose(space);
/* dataset with non-fixed dimensions */
- maxdims[0] = F68a_DIM200;
+ maxdims[0] = F68a_DIM200;
maxdims[1] = F68a_DIM100;
space = H5Screate_simple(RANK, dims, maxdims);
@@ -9838,6 +9862,407 @@ gent_intsfourdims(void)
H5Fclose(fid);
}
+/*-------------------------------------------------------------------------
+ * Function: gent_compound_complex2
+ *
+ * Purpose: Generate a file to be used in testing compound datatypes of
+ * various sizes, dimensions, member types and nesting.
+ *-------------------------------------------------------------------------
+ */
+static void gent_compound_complex2(void)
+{
+ /* Third-level nested compound */
+ typedef struct {
+ short deep_nested_short[10];
+ int deep_nested_int[10];
+ long deep_nested_long[10];
+ double deep_nested_double[10];
+ float deep_nested_float[10];
+ } third_level_compound;
+
+ /* Second-level multiply-nested compounds */
+ typedef struct {
+ unsigned int multiple_nested_a[5];
+ int multiple_nested_b[5];
+ unsigned long multiple_nested_c[5];
+ long multiple_nested_d[5];
+ } further_nested;
+
+ typedef struct {
+ char further_nested_string[11];
+ char further_nested_string_array[4][13];
+ third_level_compound deep_nest;
+ } further_nested2;
+
+ /* First First-level nested compound */
+ typedef struct
+ {
+ double nested_a;
+ char nested_string[23];
+ char nested_string_array[4][12];
+ } nested_compound;
+
+ /* Second First-level nested compound */
+ typedef struct
+ {
+ float a;
+ further_nested b;
+ further_nested2 c;
+ } multiple_nested_compound;
+
+ /* Compound datatype with different member types */
+ typedef struct
+ {
+ /* Arrays nested inside compound */
+ unsigned int a[4];
+ int b[6];
+ float c[2][4];
+ nested_compound d; /* Compound inside compound */
+ multiple_nested_compound e; /* Compound inside compound with further nested compound */
+ } compound;
+
+ compound buf[F82_DIM32]; /* compound */
+
+ hid_t file, grp=-1, type=-1, space=-1, dset=-1;
+ hid_t dset_array_a, dset_array_b, dset_array_c;
+ hid_t cmpd_tid1, cmpd_tid2, cmpd_tid3;
+ size_t i;
+ size_t j, k;
+ unsigned dset_array_ndims;
+ hsize_t dset_array_a_dims[1], dset_array_b_dims[1], dset_array_c_dims[2];
+ hsize_t nelmts = F82_DIM32;
+
+ file = H5Fcreate(FILE82, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
+
+ if ((space = H5Screate_simple(F82_RANK, &nelmts, NULL)) >= 0) {
+ /* CompoundComplex1D */
+ if ((type = H5Tcreate(H5T_COMPOUND, sizeof(compound))) >= 0) {
+ /* Insert top-level array members */
+ dset_array_ndims = 1; dset_array_a_dims[0] = 4;
+ dset_array_a = H5Tarray_create2(H5T_STD_U32LE, dset_array_ndims, dset_array_a_dims);
+ H5Tinsert(type, "a", HOFFSET(compound, a), dset_array_a);
+ H5Tclose(dset_array_a);
+
+ dset_array_ndims = 1; dset_array_b_dims[0] = 6;
+ dset_array_b = H5Tarray_create2(H5T_STD_I32LE, dset_array_ndims, dset_array_b_dims);
+ H5Tinsert(type, "b", HOFFSET(compound, b), dset_array_b);
+ H5Tclose(dset_array_b);
+
+ dset_array_ndims = 2; dset_array_c_dims[0] = 2; dset_array_c_dims[1] = 4;
+ dset_array_c = H5Tarray_create2(H5T_IEEE_F32LE, dset_array_ndims, dset_array_c_dims);
+ H5Tinsert(type, "c", HOFFSET(compound, c), dset_array_c);
+ H5Tclose(dset_array_c);
+
+ /* Insert first nested compound */
+ hid_t str_type, array;
+ hsize_t dims[1];
+ cmpd_tid1 = H5Tcreate(H5T_COMPOUND, sizeof(nested_compound));
+
+ H5Tinsert(cmpd_tid1, "nested_double", HOFFSET(nested_compound, nested_a), H5T_IEEE_F64LE);
+
+ dims[0] = 1;
+ str_type = mkstr(23, H5T_STR_NULLTERM);
+ array = H5Tarray_create2(str_type, 1, dims);
+ H5Tinsert(cmpd_tid1, "nested_string", HOFFSET(nested_compound, nested_string), array);
+ H5Tclose(array);
+ H5Tclose(str_type);
+
+ dims[0] = 4;
+ str_type = mkstr(12, H5T_STR_NULLTERM);
+ array = H5Tarray_create2(str_type, 1, dims);
+ H5Tinsert(cmpd_tid1, "nested_string_array", HOFFSET(nested_compound, nested_string_array), array);
+ H5Tclose(array);
+ H5Tclose(str_type);
+
+ H5Tinsert(type, "nested_compound", HOFFSET(compound, d), cmpd_tid1);
+
+ /* Insert second nested compound */
+ hid_t nest1, nest2;
+ cmpd_tid2 = H5Tcreate(H5T_COMPOUND, sizeof(multiple_nested_compound));
+
+ H5Tinsert(cmpd_tid2, "nested_float", HOFFSET(multiple_nested_compound, a), H5T_IEEE_F32LE);
+
+ /* Add first further nested compound */
+ nest1 = H5Tcreate(H5T_COMPOUND, sizeof(further_nested));
+
+ dims[0] = 5;
+ array = H5Tarray_create2(H5T_STD_U32LE, 1, dims);
+ H5Tinsert(nest1, "nested_unsigned_int", HOFFSET(further_nested, multiple_nested_a), array);
+ H5Tclose(array);
+
+ array = H5Tarray_create2(H5T_STD_I32LE, 1, dims);
+ H5Tinsert(nest1, "nested_int", HOFFSET(further_nested, multiple_nested_b), array);
+ H5Tclose(array);
+
+ array = H5Tarray_create2(H5T_STD_U64LE, 1, dims);
+ H5Tinsert(nest1, "nested_unsigned_long", HOFFSET(further_nested, multiple_nested_c), array);
+ H5Tclose(array);
+
+ array = H5Tarray_create2(H5T_STD_I64LE, 1, dims);
+ H5Tinsert(nest1, "nested_long", HOFFSET(further_nested, multiple_nested_d), array);
+ H5Tclose(array);
+
+ H5Tinsert(cmpd_tid2, "further_nested_compoundA", HOFFSET(multiple_nested_compound, b), nest1);
+ H5Tclose(nest1);
+
+ /* Add second further nested compound */
+ nest2 = H5Tcreate(H5T_COMPOUND, sizeof(further_nested2));
+
+ dims[0] = 1;
+ str_type = mkstr(11, H5T_STR_NULLTERM);
+ array = H5Tarray_create2(str_type, 1, dims);
+ H5Tinsert(nest2, "nested_string", HOFFSET(further_nested2, further_nested_string), array);
+ H5Tclose(array);
+ H5Tclose(str_type);
+
+ dims[0] = 4;
+ str_type = mkstr(13, H5T_STR_NULLTERM);
+ array = H5Tarray_create2(str_type, 1, dims);
+ H5Tinsert(nest2, "nested_string_array", HOFFSET(further_nested2, further_nested_string_array), array);
+ H5Tclose(array);
+ H5Tclose(str_type);
+
+ /* Add a final third-level nested compound to this second-level compound */
+ cmpd_tid3 = H5Tcreate(H5T_COMPOUND, sizeof(third_level_compound));
+
+ dims[0] = 10;
+ array = H5Tarray_create2(H5T_STD_I16LE, 1, dims);
+ H5Tinsert(cmpd_tid3, "deep_nested_short", HOFFSET(third_level_compound, deep_nested_short), array);
+ H5Tclose(array);
+
+ array = H5Tarray_create2(H5T_STD_I32LE, 1, dims);
+ H5Tinsert(cmpd_tid3, "deep_nested_int", HOFFSET(third_level_compound, deep_nested_int), array);
+ H5Tclose(array);
+
+ array = H5Tarray_create2(H5T_STD_I64LE, 1, dims);
+ H5Tinsert(cmpd_tid3, "deep_nested_long", HOFFSET(third_level_compound, deep_nested_long), array);
+ H5Tclose(array);
+
+ array = H5Tarray_create2(H5T_IEEE_F64LE, 1, dims);
+ H5Tinsert(cmpd_tid3, "deep_nested_double", HOFFSET(third_level_compound, deep_nested_double), array);
+ H5Tclose(array);
+
+ array = H5Tarray_create2(H5T_IEEE_F32LE, 1, dims);
+ H5Tinsert(cmpd_tid3, "deep_nested_float", HOFFSET(third_level_compound, deep_nested_float), array);
+ H5Tclose(array);
+
+ H5Tinsert(nest2, "deep_nested_compound", HOFFSET(further_nested2, deep_nest), cmpd_tid3);
+
+ H5Tinsert(cmpd_tid2, "further_nested_compoundB", HOFFSET(multiple_nested_compound, c), nest2);
+ H5Tclose(nest2);
+
+ H5Tinsert(type, "multiple_nested_compound", HOFFSET(compound, e), cmpd_tid2);
+
+
+ if ((dset = H5Dcreate2(file, F82_DATASETNAME, type, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) >= 0) {
+ for(i = 0; i < nelmts; i++) {
+ for (j = 0; j < dset_array_a_dims[0]; j++)
+ buf[i].a[j] = (unsigned int)(j + i*10);
+ for (j = 0; j < dset_array_b_dims[0]; j++)
+ buf[i].b[j] = (int)(j - i*10);
+ for (j = 0; j < dset_array_c_dims[0]; j++)
+ for (k = 0; k < dset_array_c_dims[1]; k++)
+ buf[i].c[j][k] = (float)(j + k + i*10) + (float)(j) * 0.1F;
+
+ /* Set up first nested compound */
+ buf[i].d.nested_a = (double) i;
+
+ strcpy(buf[i].d.nested_string, "This is a test string.");
+
+ for (j = 0; j < 4; j++)
+ strcpy(buf[i].d.nested_string_array[j], "String test");
+
+ /* Set up multiple nested compound */
+ buf[i].e.a = (float) i;
+
+ for (j = 0; j < 5; j++) {
+ buf[i].e.b.multiple_nested_a[j] = (unsigned int)(j + i*10);
+ buf[i].e.b.multiple_nested_b[j] = (int)(j - i*10);
+ buf[i].e.b.multiple_nested_c[j] = (unsigned long)(j + i*10);
+ buf[i].e.b.multiple_nested_d[j] = (long)(j - i*10);
+ }
+
+ strcpy(buf[i].e.c.further_nested_string, "1234567890");
+ for (j = 0; j < 4; j++)
+ strcpy(buf[i].e.c.further_nested_string_array[j], "STRING ARRAY");
+
+ for (j = 0; j < 10; j++) {
+ buf[i].e.c.deep_nest.deep_nested_short[j] = (short)(j + i*10);
+ buf[i].e.c.deep_nest.deep_nested_int[j] = (int)(j - i*10);
+ buf[i].e.c.deep_nest.deep_nested_long[j] = (long)(j + i*10);
+ buf[i].e.c.deep_nest.deep_nested_double[j] = (double)(j + i*10);
+ buf[i].e.c.deep_nest.deep_nested_float[j] = (float)(j + i*10);
+ }
+ }
+
+ if (H5Dwrite(dset, type, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf) < 0)
+ fprintf(stderr, "gent_tcompound_complex2 H5Dwrite failed\n");
+
+ H5Dclose(dset);
+ }
+ H5Tclose(type);
+ }
+ H5Tclose(cmpd_tid1);
+ H5Tclose(cmpd_tid2);
+ H5Tclose(cmpd_tid3);
+ H5Sclose(space);
+ }
+
+// /* CompoundComplex2D */
+// if ((type = H5Tcreate(H5T_COMPOUND, sizeof(s_t))) >= 0) {
+// H5Tinsert(type, "a", HOFFSET(s_t, a), H5T_STD_B8LE);
+// H5Tinsert(type, "b", HOFFSET(s_t, b), H5T_STD_B16LE);
+// H5Tinsert(type, "c", HOFFSET(s_t, c), H5T_STD_B32LE);
+// H5Tinsert(type, "d", HOFFSET(s_t, d), H5T_STD_B64LE);
+// if ((space = H5Screate_simple(F82_RANK2, &nelmts, NULL)) >= 0) {
+// if ((dset = H5Dcreate2(file, "compound_1", type, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) >= 0) {
+// for(i = 0; i < nelmts; i++) {
+// buf5[i].a = (unsigned char)0xff ^ (unsigned char)i;
+// buf5[i].b = (unsigned int)0xffff ^ (unsigned int)(i * 16);
+// buf5[i].c = (unsigned long)0xffffffff ^ (unsigned long)(i * 32);
+// buf5[i].d = (unsigned long long)0xffffffffffffffff ^ (unsigned long long)(i * 64);
+// }
+//
+// H5Dwrite(dset, type, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf5);
+// H5Dclose(dset);
+// }
+// H5Sclose(space);
+// }
+// H5Tclose(type);
+// }
+//
+// /* CompoundComplex3D */
+// if ((type = H5Tcreate(H5T_COMPOUND, sizeof(s_t))) >= 0) {
+// H5Tinsert(type, "a", HOFFSET(s_t, a), H5T_STD_B8LE);
+// H5Tinsert(type, "b", HOFFSET(s_t, b), H5T_STD_B16LE);
+// H5Tinsert(type, "c", HOFFSET(s_t, c), H5T_STD_B32LE);
+// H5Tinsert(type, "d", HOFFSET(s_t, d), H5T_STD_B64LE);
+// if ((space = H5Screate_simple(F82_RANK3, &nelmts, NULL)) >= 0) {
+// if ((dset = H5Dcreate2(file, "compound_1", type, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) >= 0) {
+// for(i = 0; i < nelmts; i++) {
+// buf5[i].a = (unsigned char)0xff ^ (unsigned char)i;
+// buf5[i].b = (unsigned int)0xffff ^ (unsigned int)(i * 16);
+// buf5[i].c = (unsigned long)0xffffffff ^ (unsigned long)(i * 32);
+// buf5[i].d = (unsigned long long)0xffffffffffffffff ^ (unsigned long long)(i * 64);
+// }
+//
+// H5Dwrite(dset, type, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf5);
+// H5Dclose(dset);
+// }
+// H5Sclose(space);
+// }
+// H5Tclose(type);
+// }
+//
+// /* CompoundComplex4D */
+// if ((type = H5Tcreate(H5T_COMPOUND, sizeof(s_t))) >= 0) {
+// H5Tinsert(type, "a", HOFFSET(s_t, a), H5T_STD_B8LE);
+// H5Tinsert(type, "b", HOFFSET(s_t, b), H5T_STD_B16LE);
+// H5Tinsert(type, "c", HOFFSET(s_t, c), H5T_STD_B32LE);
+// H5Tinsert(type, "d", HOFFSET(s_t, d), H5T_STD_B64LE);
+// if ((space = H5Screate_simple(F82_RANK4, &nelmts, NULL)) >= 0) {
+// if ((dset = H5Dcreate2(file, "compound_1", type, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) >= 0) {
+// for(i = 0; i < nelmts; i++) {
+// buf5[i].a = (unsigned char)0xff ^ (unsigned char)i;
+// buf5[i].b = (unsigned int)0xffff ^ (unsigned int)(i * 16);
+// buf5[i].c = (unsigned long)0xffffffff ^ (unsigned long)(i * 32);
+// buf5[i].d = (unsigned long long)0xffffffffffffffff ^ (unsigned long long)(i * 64);
+// }
+//
+// H5Dwrite(dset, type, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf5);
+// H5Dclose(dset);
+// }
+// H5Sclose(space);
+// }
+// H5Tclose(type);
+// }
+
+ H5Fclose(file);
+}
+
+/*-------------------------------------------------------------------------
+ * Function: gent_vlenstr_array
+ *
+ * Purpose: Generate a file to be used in testing Arrays of variable
+ * length strings.
+ *-------------------------------------------------------------------------
+ */
+static void gent_vlenstr_array(void)
+{
+ /* Compound datatype with different member types */
+ typedef struct compound
+ {
+ /* Array of variable-length strings*/
+ const char *vlen_array[F83_ARRAYDIM];
+ } compound;
+ compound buf[F83_DIM];
+
+ const char *test[F83_ARRAYDIM] = {
+ "This is a variable-length test string.",
+ "This test string is also variable-length.",
+ "A final test of variable-length strings. This string is longer than the others."
+ };
+ const char *buffer[F83_DIM*F83_ARRAYDIM];
+
+ hid_t file, type=-1, space=-1, dset=-1;
+ hid_t cmpd_tid1, array_tid;
+ int i, j;
+
+ hsize_t dims[] = {F83_DIM}, arraydim[] = {F83_ARRAYDIM};
+ /* Initialize scalar data */
+ for (i = 0; i < F83_DIM; i++)
+ for (j = 0; j < 3; j++)
+ buffer[j + 3*i] = test[j];
+
+ /* Initialize compound data */
+ for (i = 0; i < F83_DIM; i++)
+ for (j = 0; j < 3; j++)
+ buf[i].vlen_array[j] = test[j];
+
+ file = H5Fcreate(FILE83, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
+
+ if ((space = H5Screate_simple(F83_RANK, dims, NULL)) >= 0) {
+ array_tid = H5Tcopy(H5T_C_S1);
+ H5Tset_size(array_tid, H5T_VARIABLE);
+
+ /* ScalarArrayOfVlenStr */
+ if ((type = H5Tarray_create2(array_tid, F83_RANK, arraydim)) >= 0) {
+ if ((dset = H5Dcreate2(file, F83_DATASETNAME, type, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) >= 0) {
+ if (H5Dwrite(dset, type, H5S_ALL, H5S_ALL, H5P_DEFAULT, buffer) < 0)
+ fprintf(stderr, "gent_vlenstr_array H5Dwrite failed\n");
+
+ H5Dclose(dset);
+ }
+ H5Tclose(type);
+ }
+ H5Tclose(array_tid);
+ H5Sclose(space);
+ }
+
+ if ((space = H5Screate_simple(F83_RANK, dims, NULL)) >= 0) {
+ /* CompoundArrayOfVlenStr */
+ if ((type = H5Tcreate(H5T_COMPOUND, sizeof(compound))) >= 0) {
+ cmpd_tid1 = H5Tcopy(H5T_C_S1);
+ H5Tset_size(cmpd_tid1, H5T_VARIABLE);
+
+ array_tid = H5Tarray_create2(cmpd_tid1, F83_RANK, arraydim);
+ H5Tinsert(type, "vlen_str_array", HOFFSET(compound, vlen_array), array_tid);
+
+ if ((dset = H5Dcreate2(file, F83_DATASETNAME2, type, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) >= 0) {
+ if (H5Dwrite(dset, type, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf) < 0)
+ fprintf(stderr, "gent_vlenstr_array H5Dwrite failed\n");
+
+ H5Dclose(dset);
+ }
+ H5Tclose(cmpd_tid1);
+ H5Tclose(type);
+ }
+ H5Sclose(space);
+ }
+
+ H5Fclose(file);
+}
+
/*-------------------------------------------------------------------------
* Function: main
@@ -9892,9 +10317,11 @@ int main(void)
gent_multi();
gent_large_objname();
gent_vlstr();
+ gent_vlenstr_array();
gent_char();
gent_attr_all();
gent_compound_complex();
+ gent_compound_complex2();
gent_named_dtype_attr();
gent_null_space();
gent_zero_dim_size();
diff --git a/tools/h5dump/testh5dump.sh.in b/tools/h5dump/testh5dump.sh.in
index 944fb85..ef23d67 100644
--- a/tools/h5dump/testh5dump.sh.in
+++ b/tools/h5dump/testh5dump.sh.in
@@ -104,6 +104,7 @@ $SRC_H5DUMP_TESTFILES/tcmpdattrintsize.h5
$SRC_H5DUMP_TESTFILES/tcmpdintsize.h5
$SRC_H5DUMP_TESTFILES/tcompound.h5
$SRC_H5DUMP_TESTFILES/tcompound_complex.h5
+$SRC_H5DUMP_TESTFILES/tcompound_complex2.h5
$SRC_H5DUMP_TESTFILES/tdatareg.h5
$SRC_H5DUMP_TESTFILES/tdset.h5
$SRC_H5DUMP_TESTFILES/tempty.h5
@@ -169,6 +170,7 @@ $SRC_H5DUMP_TESTFILES/tvldtypes2.h5
$SRC_H5DUMP_TESTFILES/tvldtypes3.h5
$SRC_H5DUMP_TESTFILES/tvldtypes4.h5
$SRC_H5DUMP_TESTFILES/tvldtypes5.h5
+$SRC_H5DUMP_TESTFILES/tvlenstr_array.h5
$SRC_H5DUMP_TESTFILES/tvlstr.h5
$SRC_H5DUMP_TESTFILES/tvms.h5
"
@@ -229,6 +231,7 @@ $SRC_H5DUMP_TESTFILES/tcomp-1.ddl
$SRC_H5DUMP_TESTFILES/tcomp-2.ddl
$SRC_H5DUMP_TESTFILES/tcomp-3.ddl
$SRC_H5DUMP_TESTFILES/tcomp-4.ddl
+$SRC_H5DUMP_TESTFILES/tcompound_complex2.ddl
$SRC_H5DUMP_TESTFILES/tcompact.ddl
$SRC_H5DUMP_TESTFILES/tcontents.ddl
$SRC_H5DUMP_TESTFILES/tcontiguos.ddl
@@ -342,6 +345,7 @@ $SRC_H5DUMP_TESTFILES/tvldtypes2.ddl
$SRC_H5DUMP_TESTFILES/tvldtypes3.ddl
$SRC_H5DUMP_TESTFILES/tvldtypes4.ddl
$SRC_H5DUMP_TESTFILES/tvldtypes5.ddl
+$SRC_H5DUMP_TESTFILES/tvlenstr_array.ddl
$SRC_H5DUMP_TESTFILES/tvlstr.ddl
$SRC_H5DUMP_TESTFILES/tvms.ddl
$SRC_H5DUMP_TESTFILES/twidedisplay.ddl
@@ -1034,6 +1038,7 @@ TOOLTEST tcomp-2.ddl --enable-error-stack -N /type1 --any_path /type2 --any_path
TOOLTEST4 tcomp-3.ddl --enable-error-stack -t /#6632 -g /group2 tcompound.h5
# test complicated compound datatype
TOOLTEST tcomp-4.ddl --enable-error-stack tcompound_complex.h5
+TOOLTEST tcompound_complex.ddl --enable-error-stack tcompound_complex2.h5
# tests for bitfields and opaque data types
TOOLTEST tbitnopaque.ddl --enable-error-stack tbitnopaque.h5
@@ -1068,6 +1073,7 @@ TOOLTEST tvldtypes5.ddl --enable-error-stack tvldtypes5.h5
#test for file with variable length string data
TOOLTEST tvlstr.ddl --enable-error-stack tvlstr.h5
+TOOLTEST tvlenstr_array.ddl --enable-error-stack tvlenstr_array.h5
# test for files with array data
TOOLTEST tarray1.ddl --enable-error-stack tarray1.h5
diff --git a/tools/testfiles/tcompound_complex2.ddl b/tools/testfiles/tcompound_complex2.ddl
new file mode 100644
index 0000000..562235d
--- /dev/null
+++ b/tools/testfiles/tcompound_complex2.ddl
@@ -0,0 +1,1051 @@
+HDF5 "tcompound_complex2.h5" {
+GROUP "/" {
+ DATASET "CompoundComplex1D" {
+ DATATYPE H5T_COMPOUND {
+ H5T_ARRAY { [4] H5T_STD_U32LE } "a";
+ H5T_ARRAY { [6] H5T_STD_I32LE } "b";
+ H5T_ARRAY { [2][4] H5T_IEEE_F32LE } "c";
+ H5T_COMPOUND {
+ H5T_IEEE_F64LE "nested_double";
+ H5T_ARRAY { [1] H5T_STRING {
+ STRSIZE 23;
+ STRPAD H5T_STR_NULLTERM;
+ CSET H5T_CSET_ASCII;
+ CTYPE H5T_C_S1;
+ } } "nested_string";
+ H5T_ARRAY { [4] H5T_STRING {
+ STRSIZE 12;
+ STRPAD H5T_STR_NULLTERM;
+ CSET H5T_CSET_ASCII;
+ CTYPE H5T_C_S1;
+ } } "nested_string_array";
+ } "nested_compound";
+ H5T_COMPOUND {
+ H5T_IEEE_F32LE "nested_float";
+ H5T_COMPOUND {
+ H5T_ARRAY { [5] H5T_STD_U32LE } "nested_unsigned_int";
+ H5T_ARRAY { [5] H5T_STD_I32LE } "nested_int";
+ H5T_ARRAY { [5] H5T_STD_U64LE } "nested_unsigned_long";
+ H5T_ARRAY { [5] H5T_STD_I64LE } "nested_long";
+ } "further_nested_compoundA";
+ H5T_COMPOUND {
+ H5T_ARRAY { [1] H5T_STRING {
+ STRSIZE 11;
+ STRPAD H5T_STR_NULLTERM;
+ CSET H5T_CSET_ASCII;
+ CTYPE H5T_C_S1;
+ } } "nested_string";
+ H5T_ARRAY { [4] H5T_STRING {
+ STRSIZE 13;
+ STRPAD H5T_STR_NULLTERM;
+ CSET H5T_CSET_ASCII;
+ CTYPE H5T_C_S1;
+ } } "nested_string_array";
+ H5T_COMPOUND {
+ H5T_ARRAY { [10] H5T_STD_I16LE } "deep_nested_short";
+ H5T_ARRAY { [10] H5T_STD_I32LE } "deep_nested_int";
+ H5T_ARRAY { [10] H5T_STD_I64LE } "deep_nested_long";
+ H5T_ARRAY { [10] H5T_IEEE_F64LE } "deep_nested_double";
+ H5T_ARRAY { [10] H5T_IEEE_F32LE } "deep_nested_float";
+ } "deep_nested_compound";
+ } "further_nested_compoundB";
+ } "multiple_nested_compound";
+ }
+ DATASPACE SIMPLE { ( 32 ) / ( 32 ) }
+ DATA {
+ (0): {
+ [ 0, 1, 2, 3 ],
+ [ 0, 1, 2, 3, 4, 5 ],
+ [ 0, 1, 2, 3,
+ 1.1, 2.1, 3.1, 4.1 ],
+ {
+ 0,
+ [ "This is a test string." ],
+ [ "String test", "String test", "String test", "String test" ]
+ },
+ {
+ 0,
+ {
+ [ 0, 1, 2, 3, 4 ],
+ [ 0, 1, 2, 3, 4 ],
+ [ 0, 1, 2, 3, 4 ],
+ [ 0, 1, 2, 3, 4 ]
+ },
+ {
+ [ "1234567890" ],
+ [ "STRING ARRAY", "STRING ARRAY", "STRING ARRAY", "STRING ARRAY" ],
+ {
+ [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ],
+ [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ],
+ [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ],
+ [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ],
+ [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ]
+ }
+ }
+ }
+ },
+ (1): {
+ [ 10, 11, 12, 13 ],
+ [ -10, -9, -8, -7, -6, -5 ],
+ [ 10, 11, 12, 13,
+ 11.1, 12.1, 13.1, 14.1 ],
+ {
+ 1,
+ [ "This is a test string." ],
+ [ "String test", "String test", "String test", "String test" ]
+ },
+ {
+ 1,
+ {
+ [ 10, 11, 12, 13, 14 ],
+ [ -10, -9, -8, -7, -6 ],
+ [ 10, 11, 12, 13, 14 ],
+ [ -10, -9, -8, -7, -6 ]
+ },
+ {
+ [ "1234567890" ],
+ [ "STRING ARRAY", "STRING ARRAY", "STRING ARRAY", "STRING ARRAY" ],
+ {
+ [ 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 ],
+ [ -10, -9, -8, -7, -6, -5, -4, -3, -2, -1 ],
+ [ 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 ],
+ [ 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 ],
+ [ 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 ]
+ }
+ }
+ }
+ },
+ (2): {
+ [ 20, 21, 22, 23 ],
+ [ -20, -19, -18, -17, -16, -15 ],
+ [ 20, 21, 22, 23,
+ 21.1, 22.1, 23.1, 24.1 ],
+ {
+ 2,
+ [ "This is a test string." ],
+ [ "String test", "String test", "String test", "String test" ]
+ },
+ {
+ 2,
+ {
+ [ 20, 21, 22, 23, 24 ],
+ [ -20, -19, -18, -17, -16 ],
+ [ 20, 21, 22, 23, 24 ],
+ [ -20, -19, -18, -17, -16 ]
+ },
+ {
+ [ "1234567890" ],
+ [ "STRING ARRAY", "STRING ARRAY", "STRING ARRAY", "STRING ARRAY" ],
+ {
+ [ 20, 21, 22, 23, 24, 25, 26, 27, 28, 29 ],
+ [ -20, -19, -18, -17, -16, -15, -14, -13, -12, -11 ],
+ [ 20, 21, 22, 23, 24, 25, 26, 27, 28, 29 ],
+ [ 20, 21, 22, 23, 24, 25, 26, 27, 28, 29 ],
+ [ 20, 21, 22, 23, 24, 25, 26, 27, 28, 29 ]
+ }
+ }
+ }
+ },
+ (3): {
+ [ 30, 31, 32, 33 ],
+ [ -30, -29, -28, -27, -26, -25 ],
+ [ 30, 31, 32, 33,
+ 31.1, 32.1, 33.1, 34.1 ],
+ {
+ 3,
+ [ "This is a test string." ],
+ [ "String test", "String test", "String test", "String test" ]
+ },
+ {
+ 3,
+ {
+ [ 30, 31, 32, 33, 34 ],
+ [ -30, -29, -28, -27, -26 ],
+ [ 30, 31, 32, 33, 34 ],
+ [ -30, -29, -28, -27, -26 ]
+ },
+ {
+ [ "1234567890" ],
+ [ "STRING ARRAY", "STRING ARRAY", "STRING ARRAY", "STRING ARRAY" ],
+ {
+ [ 30, 31, 32, 33, 34, 35, 36, 37, 38, 39 ],
+ [ -30, -29, -28, -27, -26, -25, -24, -23, -22, -21 ],
+ [ 30, 31, 32, 33, 34, 35, 36, 37, 38, 39 ],
+ [ 30, 31, 32, 33, 34, 35, 36, 37, 38, 39 ],
+ [ 30, 31, 32, 33, 34, 35, 36, 37, 38, 39 ]
+ }
+ }
+ }
+ },
+ (4): {
+ [ 40, 41, 42, 43 ],
+ [ -40, -39, -38, -37, -36, -35 ],
+ [ 40, 41, 42, 43,
+ 41.1, 42.1, 43.1, 44.1 ],
+ {
+ 4,
+ [ "This is a test string." ],
+ [ "String test", "String test", "String test", "String test" ]
+ },
+ {
+ 4,
+ {
+ [ 40, 41, 42, 43, 44 ],
+ [ -40, -39, -38, -37, -36 ],
+ [ 40, 41, 42, 43, 44 ],
+ [ -40, -39, -38, -37, -36 ]
+ },
+ {
+ [ "1234567890" ],
+ [ "STRING ARRAY", "STRING ARRAY", "STRING ARRAY", "STRING ARRAY" ],
+ {
+ [ 40, 41, 42, 43, 44, 45, 46, 47, 48, 49 ],
+ [ -40, -39, -38, -37, -36, -35, -34, -33, -32, -31 ],
+ [ 40, 41, 42, 43, 44, 45, 46, 47, 48, 49 ],
+ [ 40, 41, 42, 43, 44, 45, 46, 47, 48, 49 ],
+ [ 40, 41, 42, 43, 44, 45, 46, 47, 48, 49 ]
+ }
+ }
+ }
+ },
+ (5): {
+ [ 50, 51, 52, 53 ],
+ [ -50, -49, -48, -47, -46, -45 ],
+ [ 50, 51, 52, 53,
+ 51.1, 52.1, 53.1, 54.1 ],
+ {
+ 5,
+ [ "This is a test string." ],
+ [ "String test", "String test", "String test", "String test" ]
+ },
+ {
+ 5,
+ {
+ [ 50, 51, 52, 53, 54 ],
+ [ -50, -49, -48, -47, -46 ],
+ [ 50, 51, 52, 53, 54 ],
+ [ -50, -49, -48, -47, -46 ]
+ },
+ {
+ [ "1234567890" ],
+ [ "STRING ARRAY", "STRING ARRAY", "STRING ARRAY", "STRING ARRAY" ],
+ {
+ [ 50, 51, 52, 53, 54, 55, 56, 57, 58, 59 ],
+ [ -50, -49, -48, -47, -46, -45, -44, -43, -42, -41 ],
+ [ 50, 51, 52, 53, 54, 55, 56, 57, 58, 59 ],
+ [ 50, 51, 52, 53, 54, 55, 56, 57, 58, 59 ],
+ [ 50, 51, 52, 53, 54, 55, 56, 57, 58, 59 ]
+ }
+ }
+ }
+ },
+ (6): {
+ [ 60, 61, 62, 63 ],
+ [ -60, -59, -58, -57, -56, -55 ],
+ [ 60, 61, 62, 63,
+ 61.1, 62.1, 63.1, 64.1 ],
+ {
+ 6,
+ [ "This is a test string." ],
+ [ "String test", "String test", "String test", "String test" ]
+ },
+ {
+ 6,
+ {
+ [ 60, 61, 62, 63, 64 ],
+ [ -60, -59, -58, -57, -56 ],
+ [ 60, 61, 62, 63, 64 ],
+ [ -60, -59, -58, -57, -56 ]
+ },
+ {
+ [ "1234567890" ],
+ [ "STRING ARRAY", "STRING ARRAY", "STRING ARRAY", "STRING ARRAY" ],
+ {
+ [ 60, 61, 62, 63, 64, 65, 66, 67, 68, 69 ],
+ [ -60, -59, -58, -57, -56, -55, -54, -53, -52, -51 ],
+ [ 60, 61, 62, 63, 64, 65, 66, 67, 68, 69 ],
+ [ 60, 61, 62, 63, 64, 65, 66, 67, 68, 69 ],
+ [ 60, 61, 62, 63, 64, 65, 66, 67, 68, 69 ]
+ }
+ }
+ }
+ },
+ (7): {
+ [ 70, 71, 72, 73 ],
+ [ -70, -69, -68, -67, -66, -65 ],
+ [ 70, 71, 72, 73,
+ 71.1, 72.1, 73.1, 74.1 ],
+ {
+ 7,
+ [ "This is a test string." ],
+ [ "String test", "String test", "String test", "String test" ]
+ },
+ {
+ 7,
+ {
+ [ 70, 71, 72, 73, 74 ],
+ [ -70, -69, -68, -67, -66 ],
+ [ 70, 71, 72, 73, 74 ],
+ [ -70, -69, -68, -67, -66 ]
+ },
+ {
+ [ "1234567890" ],
+ [ "STRING ARRAY", "STRING ARRAY", "STRING ARRAY", "STRING ARRAY" ],
+ {
+ [ 70, 71, 72, 73, 74, 75, 76, 77, 78, 79 ],
+ [ -70, -69, -68, -67, -66, -65, -64, -63, -62, -61 ],
+ [ 70, 71, 72, 73, 74, 75, 76, 77, 78, 79 ],
+ [ 70, 71, 72, 73, 74, 75, 76, 77, 78, 79 ],
+ [ 70, 71, 72, 73, 74, 75, 76, 77, 78, 79 ]
+ }
+ }
+ }
+ },
+ (8): {
+ [ 80, 81, 82, 83 ],
+ [ -80, -79, -78, -77, -76, -75 ],
+ [ 80, 81, 82, 83,
+ 81.1, 82.1, 83.1, 84.1 ],
+ {
+ 8,
+ [ "This is a test string." ],
+ [ "String test", "String test", "String test", "String test" ]
+ },
+ {
+ 8,
+ {
+ [ 80, 81, 82, 83, 84 ],
+ [ -80, -79, -78, -77, -76 ],
+ [ 80, 81, 82, 83, 84 ],
+ [ -80, -79, -78, -77, -76 ]
+ },
+ {
+ [ "1234567890" ],
+ [ "STRING ARRAY", "STRING ARRAY", "STRING ARRAY", "STRING ARRAY" ],
+ {
+ [ 80, 81, 82, 83, 84, 85, 86, 87, 88, 89 ],
+ [ -80, -79, -78, -77, -76, -75, -74, -73, -72, -71 ],
+ [ 80, 81, 82, 83, 84, 85, 86, 87, 88, 89 ],
+ [ 80, 81, 82, 83, 84, 85, 86, 87, 88, 89 ],
+ [ 80, 81, 82, 83, 84, 85, 86, 87, 88, 89 ]
+ }
+ }
+ }
+ },
+ (9): {
+ [ 90, 91, 92, 93 ],
+ [ -90, -89, -88, -87, -86, -85 ],
+ [ 90, 91, 92, 93,
+ 91.1, 92.1, 93.1, 94.1 ],
+ {
+ 9,
+ [ "This is a test string." ],
+ [ "String test", "String test", "String test", "String test" ]
+ },
+ {
+ 9,
+ {
+ [ 90, 91, 92, 93, 94 ],
+ [ -90, -89, -88, -87, -86 ],
+ [ 90, 91, 92, 93, 94 ],
+ [ -90, -89, -88, -87, -86 ]
+ },
+ {
+ [ "1234567890" ],
+ [ "STRING ARRAY", "STRING ARRAY", "STRING ARRAY", "STRING ARRAY" ],
+ {
+ [ 90, 91, 92, 93, 94, 95, 96, 97, 98, 99 ],
+ [ -90, -89, -88, -87, -86, -85, -84, -83, -82, -81 ],
+ [ 90, 91, 92, 93, 94, 95, 96, 97, 98, 99 ],
+ [ 90, 91, 92, 93, 94, 95, 96, 97, 98, 99 ],
+ [ 90, 91, 92, 93, 94, 95, 96, 97, 98, 99 ]
+ }
+ }
+ }
+ },
+ (10): {
+ [ 100, 101, 102, 103 ],
+ [ -100, -99, -98, -97, -96, -95 ],
+ [ 100, 101, 102, 103,
+ 101.1, 102.1, 103.1, 104.1 ],
+ {
+ 10,
+ [ "This is a test string." ],
+ [ "String test", "String test", "String test", "String test" ]
+ },
+ {
+ 10,
+ {
+ [ 100, 101, 102, 103, 104 ],
+ [ -100, -99, -98, -97, -96 ],
+ [ 100, 101, 102, 103, 104 ],
+ [ -100, -99, -98, -97, -96 ]
+ },
+ {
+ [ "1234567890" ],
+ [ "STRING ARRAY", "STRING ARRAY", "STRING ARRAY", "STRING ARRAY" ],
+ {
+ [ 100, 101, 102, 103, 104, 105, 106, 107, 108, 109 ],
+ [ -100, -99, -98, -97, -96, -95, -94, -93, -92, -91 ],
+ [ 100, 101, 102, 103, 104, 105, 106, 107, 108, 109 ],
+ [ 100, 101, 102, 103, 104, 105, 106, 107, 108, 109 ],
+ [ 100, 101, 102, 103, 104, 105, 106, 107, 108, 109 ]
+ }
+ }
+ }
+ },
+ (11): {
+ [ 110, 111, 112, 113 ],
+ [ -110, -109, -108, -107, -106, -105 ],
+ [ 110, 111, 112, 113,
+ 111.1, 112.1, 113.1, 114.1 ],
+ {
+ 11,
+ [ "This is a test string." ],
+ [ "String test", "String test", "String test", "String test" ]
+ },
+ {
+ 11,
+ {
+ [ 110, 111, 112, 113, 114 ],
+ [ -110, -109, -108, -107, -106 ],
+ [ 110, 111, 112, 113, 114 ],
+ [ -110, -109, -108, -107, -106 ]
+ },
+ {
+ [ "1234567890" ],
+ [ "STRING ARRAY", "STRING ARRAY", "STRING ARRAY", "STRING ARRAY" ],
+ {
+ [ 110, 111, 112, 113, 114, 115, 116, 117, 118, 119 ],
+ [ -110, -109, -108, -107, -106, -105, -104, -103, -102, -101 ],
+ [ 110, 111, 112, 113, 114, 115, 116, 117, 118, 119 ],
+ [ 110, 111, 112, 113, 114, 115, 116, 117, 118, 119 ],
+ [ 110, 111, 112, 113, 114, 115, 116, 117, 118, 119 ]
+ }
+ }
+ }
+ },
+ (12): {
+ [ 120, 121, 122, 123 ],
+ [ -120, -119, -118, -117, -116, -115 ],
+ [ 120, 121, 122, 123,
+ 121.1, 122.1, 123.1, 124.1 ],
+ {
+ 12,
+ [ "This is a test string." ],
+ [ "String test", "String test", "String test", "String test" ]
+ },
+ {
+ 12,
+ {
+ [ 120, 121, 122, 123, 124 ],
+ [ -120, -119, -118, -117, -116 ],
+ [ 120, 121, 122, 123, 124 ],
+ [ -120, -119, -118, -117, -116 ]
+ },
+ {
+ [ "1234567890" ],
+ [ "STRING ARRAY", "STRING ARRAY", "STRING ARRAY", "STRING ARRAY" ],
+ {
+ [ 120, 121, 122, 123, 124, 125, 126, 127, 128, 129 ],
+ [ -120, -119, -118, -117, -116, -115, -114, -113, -112, -111 ],
+ [ 120, 121, 122, 123, 124, 125, 126, 127, 128, 129 ],
+ [ 120, 121, 122, 123, 124, 125, 126, 127, 128, 129 ],
+ [ 120, 121, 122, 123, 124, 125, 126, 127, 128, 129 ]
+ }
+ }
+ }
+ },
+ (13): {
+ [ 130, 131, 132, 133 ],
+ [ -130, -129, -128, -127, -126, -125 ],
+ [ 130, 131, 132, 133,
+ 131.1, 132.1, 133.1, 134.1 ],
+ {
+ 13,
+ [ "This is a test string." ],
+ [ "String test", "String test", "String test", "String test" ]
+ },
+ {
+ 13,
+ {
+ [ 130, 131, 132, 133, 134 ],
+ [ -130, -129, -128, -127, -126 ],
+ [ 130, 131, 132, 133, 134 ],
+ [ -130, -129, -128, -127, -126 ]
+ },
+ {
+ [ "1234567890" ],
+ [ "STRING ARRAY", "STRING ARRAY", "STRING ARRAY", "STRING ARRAY" ],
+ {
+ [ 130, 131, 132, 133, 134, 135, 136, 137, 138, 139 ],
+ [ -130, -129, -128, -127, -126, -125, -124, -123, -122, -121 ],
+ [ 130, 131, 132, 133, 134, 135, 136, 137, 138, 139 ],
+ [ 130, 131, 132, 133, 134, 135, 136, 137, 138, 139 ],
+ [ 130, 131, 132, 133, 134, 135, 136, 137, 138, 139 ]
+ }
+ }
+ }
+ },
+ (14): {
+ [ 140, 141, 142, 143 ],
+ [ -140, -139, -138, -137, -136, -135 ],
+ [ 140, 141, 142, 143,
+ 141.1, 142.1, 143.1, 144.1 ],
+ {
+ 14,
+ [ "This is a test string." ],
+ [ "String test", "String test", "String test", "String test" ]
+ },
+ {
+ 14,
+ {
+ [ 140, 141, 142, 143, 144 ],
+ [ -140, -139, -138, -137, -136 ],
+ [ 140, 141, 142, 143, 144 ],
+ [ -140, -139, -138, -137, -136 ]
+ },
+ {
+ [ "1234567890" ],
+ [ "STRING ARRAY", "STRING ARRAY", "STRING ARRAY", "STRING ARRAY" ],
+ {
+ [ 140, 141, 142, 143, 144, 145, 146, 147, 148, 149 ],
+ [ -140, -139, -138, -137, -136, -135, -134, -133, -132, -131 ],
+ [ 140, 141, 142, 143, 144, 145, 146, 147, 148, 149 ],
+ [ 140, 141, 142, 143, 144, 145, 146, 147, 148, 149 ],
+ [ 140, 141, 142, 143, 144, 145, 146, 147, 148, 149 ]
+ }
+ }
+ }
+ },
+ (15): {
+ [ 150, 151, 152, 153 ],
+ [ -150, -149, -148, -147, -146, -145 ],
+ [ 150, 151, 152, 153,
+ 151.1, 152.1, 153.1, 154.1 ],
+ {
+ 15,
+ [ "This is a test string." ],
+ [ "String test", "String test", "String test", "String test" ]
+ },
+ {
+ 15,
+ {
+ [ 150, 151, 152, 153, 154 ],
+ [ -150, -149, -148, -147, -146 ],
+ [ 150, 151, 152, 153, 154 ],
+ [ -150, -149, -148, -147, -146 ]
+ },
+ {
+ [ "1234567890" ],
+ [ "STRING ARRAY", "STRING ARRAY", "STRING ARRAY", "STRING ARRAY" ],
+ {
+ [ 150, 151, 152, 153, 154, 155, 156, 157, 158, 159 ],
+ [ -150, -149, -148, -147, -146, -145, -144, -143, -142, -141 ],
+ [ 150, 151, 152, 153, 154, 155, 156, 157, 158, 159 ],
+ [ 150, 151, 152, 153, 154, 155, 156, 157, 158, 159 ],
+ [ 150, 151, 152, 153, 154, 155, 156, 157, 158, 159 ]
+ }
+ }
+ }
+ },
+ (16): {
+ [ 160, 161, 162, 163 ],
+ [ -160, -159, -158, -157, -156, -155 ],
+ [ 160, 161, 162, 163,
+ 161.1, 162.1, 163.1, 164.1 ],
+ {
+ 16,
+ [ "This is a test string." ],
+ [ "String test", "String test", "String test", "String test" ]
+ },
+ {
+ 16,
+ {
+ [ 160, 161, 162, 163, 164 ],
+ [ -160, -159, -158, -157, -156 ],
+ [ 160, 161, 162, 163, 164 ],
+ [ -160, -159, -158, -157, -156 ]
+ },
+ {
+ [ "1234567890" ],
+ [ "STRING ARRAY", "STRING ARRAY", "STRING ARRAY", "STRING ARRAY" ],
+ {
+ [ 160, 161, 162, 163, 164, 165, 166, 167, 168, 169 ],
+ [ -160, -159, -158, -157, -156, -155, -154, -153, -152, -151 ],
+ [ 160, 161, 162, 163, 164, 165, 166, 167, 168, 169 ],
+ [ 160, 161, 162, 163, 164, 165, 166, 167, 168, 169 ],
+ [ 160, 161, 162, 163, 164, 165, 166, 167, 168, 169 ]
+ }
+ }
+ }
+ },
+ (17): {
+ [ 170, 171, 172, 173 ],
+ [ -170, -169, -168, -167, -166, -165 ],
+ [ 170, 171, 172, 173,
+ 171.1, 172.1, 173.1, 174.1 ],
+ {
+ 17,
+ [ "This is a test string." ],
+ [ "String test", "String test", "String test", "String test" ]
+ },
+ {
+ 17,
+ {
+ [ 170, 171, 172, 173, 174 ],
+ [ -170, -169, -168, -167, -166 ],
+ [ 170, 171, 172, 173, 174 ],
+ [ -170, -169, -168, -167, -166 ]
+ },
+ {
+ [ "1234567890" ],
+ [ "STRING ARRAY", "STRING ARRAY", "STRING ARRAY", "STRING ARRAY" ],
+ {
+ [ 170, 171, 172, 173, 174, 175, 176, 177, 178, 179 ],
+ [ -170, -169, -168, -167, -166, -165, -164, -163, -162, -161 ],
+ [ 170, 171, 172, 173, 174, 175, 176, 177, 178, 179 ],
+ [ 170, 171, 172, 173, 174, 175, 176, 177, 178, 179 ],
+ [ 170, 171, 172, 173, 174, 175, 176, 177, 178, 179 ]
+ }
+ }
+ }
+ },
+ (18): {
+ [ 180, 181, 182, 183 ],
+ [ -180, -179, -178, -177, -176, -175 ],
+ [ 180, 181, 182, 183,
+ 181.1, 182.1, 183.1, 184.1 ],
+ {
+ 18,
+ [ "This is a test string." ],
+ [ "String test", "String test", "String test", "String test" ]
+ },
+ {
+ 18,
+ {
+ [ 180, 181, 182, 183, 184 ],
+ [ -180, -179, -178, -177, -176 ],
+ [ 180, 181, 182, 183, 184 ],
+ [ -180, -179, -178, -177, -176 ]
+ },
+ {
+ [ "1234567890" ],
+ [ "STRING ARRAY", "STRING ARRAY", "STRING ARRAY", "STRING ARRAY" ],
+ {
+ [ 180, 181, 182, 183, 184, 185, 186, 187, 188, 189 ],
+ [ -180, -179, -178, -177, -176, -175, -174, -173, -172, -171 ],
+ [ 180, 181, 182, 183, 184, 185, 186, 187, 188, 189 ],
+ [ 180, 181, 182, 183, 184, 185, 186, 187, 188, 189 ],
+ [ 180, 181, 182, 183, 184, 185, 186, 187, 188, 189 ]
+ }
+ }
+ }
+ },
+ (19): {
+ [ 190, 191, 192, 193 ],
+ [ -190, -189, -188, -187, -186, -185 ],
+ [ 190, 191, 192, 193,
+ 191.1, 192.1, 193.1, 194.1 ],
+ {
+ 19,
+ [ "This is a test string." ],
+ [ "String test", "String test", "String test", "String test" ]
+ },
+ {
+ 19,
+ {
+ [ 190, 191, 192, 193, 194 ],
+ [ -190, -189, -188, -187, -186 ],
+ [ 190, 191, 192, 193, 194 ],
+ [ -190, -189, -188, -187, -186 ]
+ },
+ {
+ [ "1234567890" ],
+ [ "STRING ARRAY", "STRING ARRAY", "STRING ARRAY", "STRING ARRAY" ],
+ {
+ [ 190, 191, 192, 193, 194, 195, 196, 197, 198, 199 ],
+ [ -190, -189, -188, -187, -186, -185, -184, -183, -182, -181 ],
+ [ 190, 191, 192, 193, 194, 195, 196, 197, 198, 199 ],
+ [ 190, 191, 192, 193, 194, 195, 196, 197, 198, 199 ],
+ [ 190, 191, 192, 193, 194, 195, 196, 197, 198, 199 ]
+ }
+ }
+ }
+ },
+ (20): {
+ [ 200, 201, 202, 203 ],
+ [ -200, -199, -198, -197, -196, -195 ],
+ [ 200, 201, 202, 203,
+ 201.1, 202.1, 203.1, 204.1 ],
+ {
+ 20,
+ [ "This is a test string." ],
+ [ "String test", "String test", "String test", "String test" ]
+ },
+ {
+ 20,
+ {
+ [ 200, 201, 202, 203, 204 ],
+ [ -200, -199, -198, -197, -196 ],
+ [ 200, 201, 202, 203, 204 ],
+ [ -200, -199, -198, -197, -196 ]
+ },
+ {
+ [ "1234567890" ],
+ [ "STRING ARRAY", "STRING ARRAY", "STRING ARRAY", "STRING ARRAY" ],
+ {
+ [ 200, 201, 202, 203, 204, 205, 206, 207, 208, 209 ],
+ [ -200, -199, -198, -197, -196, -195, -194, -193, -192, -191 ],
+ [ 200, 201, 202, 203, 204, 205, 206, 207, 208, 209 ],
+ [ 200, 201, 202, 203, 204, 205, 206, 207, 208, 209 ],
+ [ 200, 201, 202, 203, 204, 205, 206, 207, 208, 209 ]
+ }
+ }
+ }
+ },
+ (21): {
+ [ 210, 211, 212, 213 ],
+ [ -210, -209, -208, -207, -206, -205 ],
+ [ 210, 211, 212, 213,
+ 211.1, 212.1, 213.1, 214.1 ],
+ {
+ 21,
+ [ "This is a test string." ],
+ [ "String test", "String test", "String test", "String test" ]
+ },
+ {
+ 21,
+ {
+ [ 210, 211, 212, 213, 214 ],
+ [ -210, -209, -208, -207, -206 ],
+ [ 210, 211, 212, 213, 214 ],
+ [ -210, -209, -208, -207, -206 ]
+ },
+ {
+ [ "1234567890" ],
+ [ "STRING ARRAY", "STRING ARRAY", "STRING ARRAY", "STRING ARRAY" ],
+ {
+ [ 210, 211, 212, 213, 214, 215, 216, 217, 218, 219 ],
+ [ -210, -209, -208, -207, -206, -205, -204, -203, -202, -201 ],
+ [ 210, 211, 212, 213, 214, 215, 216, 217, 218, 219 ],
+ [ 210, 211, 212, 213, 214, 215, 216, 217, 218, 219 ],
+ [ 210, 211, 212, 213, 214, 215, 216, 217, 218, 219 ]
+ }
+ }
+ }
+ },
+ (22): {
+ [ 220, 221, 222, 223 ],
+ [ -220, -219, -218, -217, -216, -215 ],
+ [ 220, 221, 222, 223,
+ 221.1, 222.1, 223.1, 224.1 ],
+ {
+ 22,
+ [ "This is a test string." ],
+ [ "String test", "String test", "String test", "String test" ]
+ },
+ {
+ 22,
+ {
+ [ 220, 221, 222, 223, 224 ],
+ [ -220, -219, -218, -217, -216 ],
+ [ 220, 221, 222, 223, 224 ],
+ [ -220, -219, -218, -217, -216 ]
+ },
+ {
+ [ "1234567890" ],
+ [ "STRING ARRAY", "STRING ARRAY", "STRING ARRAY", "STRING ARRAY" ],
+ {
+ [ 220, 221, 222, 223, 224, 225, 226, 227, 228, 229 ],
+ [ -220, -219, -218, -217, -216, -215, -214, -213, -212, -211 ],
+ [ 220, 221, 222, 223, 224, 225, 226, 227, 228, 229 ],
+ [ 220, 221, 222, 223, 224, 225, 226, 227, 228, 229 ],
+ [ 220, 221, 222, 223, 224, 225, 226, 227, 228, 229 ]
+ }
+ }
+ }
+ },
+ (23): {
+ [ 230, 231, 232, 233 ],
+ [ -230, -229, -228, -227, -226, -225 ],
+ [ 230, 231, 232, 233,
+ 231.1, 232.1, 233.1, 234.1 ],
+ {
+ 23,
+ [ "This is a test string." ],
+ [ "String test", "String test", "String test", "String test" ]
+ },
+ {
+ 23,
+ {
+ [ 230, 231, 232, 233, 234 ],
+ [ -230, -229, -228, -227, -226 ],
+ [ 230, 231, 232, 233, 234 ],
+ [ -230, -229, -228, -227, -226 ]
+ },
+ {
+ [ "1234567890" ],
+ [ "STRING ARRAY", "STRING ARRAY", "STRING ARRAY", "STRING ARRAY" ],
+ {
+ [ 230, 231, 232, 233, 234, 235, 236, 237, 238, 239 ],
+ [ -230, -229, -228, -227, -226, -225, -224, -223, -222, -221 ],
+ [ 230, 231, 232, 233, 234, 235, 236, 237, 238, 239 ],
+ [ 230, 231, 232, 233, 234, 235, 236, 237, 238, 239 ],
+ [ 230, 231, 232, 233, 234, 235, 236, 237, 238, 239 ]
+ }
+ }
+ }
+ },
+ (24): {
+ [ 240, 241, 242, 243 ],
+ [ -240, -239, -238, -237, -236, -235 ],
+ [ 240, 241, 242, 243,
+ 241.1, 242.1, 243.1, 244.1 ],
+ {
+ 24,
+ [ "This is a test string." ],
+ [ "String test", "String test", "String test", "String test" ]
+ },
+ {
+ 24,
+ {
+ [ 240, 241, 242, 243, 244 ],
+ [ -240, -239, -238, -237, -236 ],
+ [ 240, 241, 242, 243, 244 ],
+ [ -240, -239, -238, -237, -236 ]
+ },
+ {
+ [ "1234567890" ],
+ [ "STRING ARRAY", "STRING ARRAY", "STRING ARRAY", "STRING ARRAY" ],
+ {
+ [ 240, 241, 242, 243, 244, 245, 246, 247, 248, 249 ],
+ [ -240, -239, -238, -237, -236, -235, -234, -233, -232, -231 ],
+ [ 240, 241, 242, 243, 244, 245, 246, 247, 248, 249 ],
+ [ 240, 241, 242, 243, 244, 245, 246, 247, 248, 249 ],
+ [ 240, 241, 242, 243, 244, 245, 246, 247, 248, 249 ]
+ }
+ }
+ }
+ },
+ (25): {
+ [ 250, 251, 252, 253 ],
+ [ -250, -249, -248, -247, -246, -245 ],
+ [ 250, 251, 252, 253,
+ 251.1, 252.1, 253.1, 254.1 ],
+ {
+ 25,
+ [ "This is a test string." ],
+ [ "String test", "String test", "String test", "String test" ]
+ },
+ {
+ 25,
+ {
+ [ 250, 251, 252, 253, 254 ],
+ [ -250, -249, -248, -247, -246 ],
+ [ 250, 251, 252, 253, 254 ],
+ [ -250, -249, -248, -247, -246 ]
+ },
+ {
+ [ "1234567890" ],
+ [ "STRING ARRAY", "STRING ARRAY", "STRING ARRAY", "STRING ARRAY" ],
+ {
+ [ 250, 251, 252, 253, 254, 255, 256, 257, 258, 259 ],
+ [ -250, -249, -248, -247, -246, -245, -244, -243, -242, -241 ],
+ [ 250, 251, 252, 253, 254, 255, 256, 257, 258, 259 ],
+ [ 250, 251, 252, 253, 254, 255, 256, 257, 258, 259 ],
+ [ 250, 251, 252, 253, 254, 255, 256, 257, 258, 259 ]
+ }
+ }
+ }
+ },
+ (26): {
+ [ 260, 261, 262, 263 ],
+ [ -260, -259, -258, -257, -256, -255 ],
+ [ 260, 261, 262, 263,
+ 261.1, 262.1, 263.1, 264.1 ],
+ {
+ 26,
+ [ "This is a test string." ],
+ [ "String test", "String test", "String test", "String test" ]
+ },
+ {
+ 26,
+ {
+ [ 260, 261, 262, 263, 264 ],
+ [ -260, -259, -258, -257, -256 ],
+ [ 260, 261, 262, 263, 264 ],
+ [ -260, -259, -258, -257, -256 ]
+ },
+ {
+ [ "1234567890" ],
+ [ "STRING ARRAY", "STRING ARRAY", "STRING ARRAY", "STRING ARRAY" ],
+ {
+ [ 260, 261, 262, 263, 264, 265, 266, 267, 268, 269 ],
+ [ -260, -259, -258, -257, -256, -255, -254, -253, -252, -251 ],
+ [ 260, 261, 262, 263, 264, 265, 266, 267, 268, 269 ],
+ [ 260, 261, 262, 263, 264, 265, 266, 267, 268, 269 ],
+ [ 260, 261, 262, 263, 264, 265, 266, 267, 268, 269 ]
+ }
+ }
+ }
+ },
+ (27): {
+ [ 270, 271, 272, 273 ],
+ [ -270, -269, -268, -267, -266, -265 ],
+ [ 270, 271, 272, 273,
+ 271.1, 272.1, 273.1, 274.1 ],
+ {
+ 27,
+ [ "This is a test string." ],
+ [ "String test", "String test", "String test", "String test" ]
+ },
+ {
+ 27,
+ {
+ [ 270, 271, 272, 273, 274 ],
+ [ -270, -269, -268, -267, -266 ],
+ [ 270, 271, 272, 273, 274 ],
+ [ -270, -269, -268, -267, -266 ]
+ },
+ {
+ [ "1234567890" ],
+ [ "STRING ARRAY", "STRING ARRAY", "STRING ARRAY", "STRING ARRAY" ],
+ {
+ [ 270, 271, 272, 273, 274, 275, 276, 277, 278, 279 ],
+ [ -270, -269, -268, -267, -266, -265, -264, -263, -262, -261 ],
+ [ 270, 271, 272, 273, 274, 275, 276, 277, 278, 279 ],
+ [ 270, 271, 272, 273, 274, 275, 276, 277, 278, 279 ],
+ [ 270, 271, 272, 273, 274, 275, 276, 277, 278, 279 ]
+ }
+ }
+ }
+ },
+ (28): {
+ [ 280, 281, 282, 283 ],
+ [ -280, -279, -278, -277, -276, -275 ],
+ [ 280, 281, 282, 283,
+ 281.1, 282.1, 283.1, 284.1 ],
+ {
+ 28,
+ [ "This is a test string." ],
+ [ "String test", "String test", "String test", "String test" ]
+ },
+ {
+ 28,
+ {
+ [ 280, 281, 282, 283, 284 ],
+ [ -280, -279, -278, -277, -276 ],
+ [ 280, 281, 282, 283, 284 ],
+ [ -280, -279, -278, -277, -276 ]
+ },
+ {
+ [ "1234567890" ],
+ [ "STRING ARRAY", "STRING ARRAY", "STRING ARRAY", "STRING ARRAY" ],
+ {
+ [ 280, 281, 282, 283, 284, 285, 286, 287, 288, 289 ],
+ [ -280, -279, -278, -277, -276, -275, -274, -273, -272, -271 ],
+ [ 280, 281, 282, 283, 284, 285, 286, 287, 288, 289 ],
+ [ 280, 281, 282, 283, 284, 285, 286, 287, 288, 289 ],
+ [ 280, 281, 282, 283, 284, 285, 286, 287, 288, 289 ]
+ }
+ }
+ }
+ },
+ (29): {
+ [ 290, 291, 292, 293 ],
+ [ -290, -289, -288, -287, -286, -285 ],
+ [ 290, 291, 292, 293,
+ 291.1, 292.1, 293.1, 294.1 ],
+ {
+ 29,
+ [ "This is a test string." ],
+ [ "String test", "String test", "String test", "String test" ]
+ },
+ {
+ 29,
+ {
+ [ 290, 291, 292, 293, 294 ],
+ [ -290, -289, -288, -287, -286 ],
+ [ 290, 291, 292, 293, 294 ],
+ [ -290, -289, -288, -287, -286 ]
+ },
+ {
+ [ "1234567890" ],
+ [ "STRING ARRAY", "STRING ARRAY", "STRING ARRAY", "STRING ARRAY" ],
+ {
+ [ 290, 291, 292, 293, 294, 295, 296, 297, 298, 299 ],
+ [ -290, -289, -288, -287, -286, -285, -284, -283, -282, -281 ],
+ [ 290, 291, 292, 293, 294, 295, 296, 297, 298, 299 ],
+ [ 290, 291, 292, 293, 294, 295, 296, 297, 298, 299 ],
+ [ 290, 291, 292, 293, 294, 295, 296, 297, 298, 299 ]
+ }
+ }
+ }
+ },
+ (30): {
+ [ 300, 301, 302, 303 ],
+ [ -300, -299, -298, -297, -296, -295 ],
+ [ 300, 301, 302, 303,
+ 301.1, 302.1, 303.1, 304.1 ],
+ {
+ 30,
+ [ "This is a test string." ],
+ [ "String test", "String test", "String test", "String test" ]
+ },
+ {
+ 30,
+ {
+ [ 300, 301, 302, 303, 304 ],
+ [ -300, -299, -298, -297, -296 ],
+ [ 300, 301, 302, 303, 304 ],
+ [ -300, -299, -298, -297, -296 ]
+ },
+ {
+ [ "1234567890" ],
+ [ "STRING ARRAY", "STRING ARRAY", "STRING ARRAY", "STRING ARRAY" ],
+ {
+ [ 300, 301, 302, 303, 304, 305, 306, 307, 308, 309 ],
+ [ -300, -299, -298, -297, -296, -295, -294, -293, -292, -291 ],
+ [ 300, 301, 302, 303, 304, 305, 306, 307, 308, 309 ],
+ [ 300, 301, 302, 303, 304, 305, 306, 307, 308, 309 ],
+ [ 300, 301, 302, 303, 304, 305, 306, 307, 308, 309 ]
+ }
+ }
+ }
+ },
+ (31): {
+ [ 310, 311, 312, 313 ],
+ [ -310, -309, -308, -307, -306, -305 ],
+ [ 310, 311, 312, 313,
+ 311.1, 312.1, 313.1, 314.1 ],
+ {
+ 31,
+ [ "This is a test string." ],
+ [ "String test", "String test", "String test", "String test" ]
+ },
+ {
+ 31,
+ {
+ [ 310, 311, 312, 313, 314 ],
+ [ -310, -309, -308, -307, -306 ],
+ [ 310, 311, 312, 313, 314 ],
+ [ -310, -309, -308, -307, -306 ]
+ },
+ {
+ [ "1234567890" ],
+ [ "STRING ARRAY", "STRING ARRAY", "STRING ARRAY", "STRING ARRAY" ],
+ {
+ [ 310, 311, 312, 313, 314, 315, 316, 317, 318, 319 ],
+ [ -310, -309, -308, -307, -306, -305, -304, -303, -302, -301 ],
+ [ 310, 311, 312, 313, 314, 315, 316, 317, 318, 319 ],
+ [ 310, 311, 312, 313, 314, 315, 316, 317, 318, 319 ],
+ [ 310, 311, 312, 313, 314, 315, 316, 317, 318, 319 ]
+ }
+ }
+ }
+ }
+ }
+ }
+}
+}
diff --git a/tools/testfiles/tcompound_complex2.h5 b/tools/testfiles/tcompound_complex2.h5
new file mode 100644
index 0000000..eee6073
--- /dev/null
+++ b/tools/testfiles/tcompound_complex2.h5
Binary files differ
diff --git a/tools/testfiles/tvlenstr_array.ddl b/tools/testfiles/tvlenstr_array.ddl
new file mode 100644
index 0000000..87efbb6
--- /dev/null
+++ b/tools/testfiles/tvlenstr_array.ddl
@@ -0,0 +1,48 @@
+HDF5 "tvlenstr_array.h5" {
+GROUP "/" {
+ DATASET "CompoundArrayOfVlenStr" {
+ DATATYPE H5T_COMPOUND {
+ H5T_ARRAY { [3] H5T_STRING {
+ STRSIZE H5T_VARIABLE;
+ STRPAD H5T_STR_NULLTERM;
+ CSET H5T_CSET_ASCII;
+ CTYPE H5T_C_S1;
+ } } "vlen_str_array";
+ }
+ DATASPACE SIMPLE { ( 5 ) / ( 5 ) }
+ DATA {
+ (0): {
+ [ "This is a variable-length test string.", "This test string is also variable-length.", "A final test of variable-length strings. This string is longer than the others." ]
+ },
+ (1): {
+ [ "This is a variable-length test string.", "This test string is also variable-length.", "A final test of variable-length strings. This string is longer than the others." ]
+ },
+ (2): {
+ [ "This is a variable-length test string.", "This test string is also variable-length.", "A final test of variable-length strings. This string is longer than the others." ]
+ },
+ (3): {
+ [ "This is a variable-length test string.", "This test string is also variable-length.", "A final test of variable-length strings. This string is longer than the others." ]
+ },
+ (4): {
+ [ "This is a variable-length test string.", "This test string is also variable-length.", "A final test of variable-length strings. This string is longer than the others." ]
+ }
+ }
+ }
+ DATASET "ScalarArrayOfVlenStr" {
+ DATATYPE H5T_ARRAY { [3] H5T_STRING {
+ STRSIZE H5T_VARIABLE;
+ STRPAD H5T_STR_NULLTERM;
+ CSET H5T_CSET_ASCII;
+ CTYPE H5T_C_S1;
+ } }
+ DATASPACE SIMPLE { ( 5 ) / ( 5 ) }
+ DATA {
+ (0): [ "This is a variable-length test string.", "This test string is also variable-length.", "A final test of variable-length strings. This string is longer than the others." ],
+ (1): [ "This is a variable-length test string.", "This test string is also variable-length.", "A final test of variable-length strings. This string is longer than the others." ],
+ (2): [ "This is a variable-length test string.", "This test string is also variable-length.", "A final test of variable-length strings. This string is longer than the others." ],
+ (3): [ "This is a variable-length test string.", "This test string is also variable-length.", "A final test of variable-length strings. This string is longer than the others." ],
+ (4): [ "This is a variable-length test string.", "This test string is also variable-length.", "A final test of variable-length strings. This string is longer than the others." ]
+ }
+ }
+}
+}
diff --git a/tools/testfiles/tvlenstr_array.h5 b/tools/testfiles/tvlenstr_array.h5
new file mode 100644
index 0000000..4277f20
--- /dev/null
+++ b/tools/testfiles/tvlenstr_array.h5
Binary files differ