summaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorPaul Harten <pharten@ncsa.uiuc.edu>1999-02-01 23:14:38 (GMT)
committerPaul Harten <pharten@ncsa.uiuc.edu>1999-02-01 23:14:38 (GMT)
commitff7883566f95178ce4ce60a2c649a4000be2938d (patch)
tree6eea9b5c07f646be0d97d11f454f66f744f053c6 /tools
parent224b6224fbf43f5c11cddc4b77f8ea046873f8d4 (diff)
downloadhdf5-ff7883566f95178ce4ce60a2c649a4000be2938d.zip
hdf5-ff7883566f95178ce4ce60a2c649a4000be2938d.tar.gz
hdf5-ff7883566f95178ce4ce60a2c649a4000be2938d.tar.bz2
[svn-r1046] Purpose:
New feature Solution: Modified h5dumptst.c to generate more single dimension datasets of H5T_STRING type held in file tstr2.h5. Platform tested: Solaris2.5
Diffstat (limited to 'tools')
-rw-r--r--tools/testfiles/h5dumptst.c177
-rw-r--r--tools/testfiles/tstr.dmp104
-rw-r--r--tools/testfiles/tstr2.dmp304
-rw-r--r--tools/testfiles/tstr2.h5bin0 -> 11096 bytes
4 files changed, 580 insertions, 5 deletions
diff --git a/tools/testfiles/h5dumptst.c b/tools/testfiles/h5dumptst.c
index 57d74ba..9dc078b 100644
--- a/tools/testfiles/h5dumptst.c
+++ b/tools/testfiles/h5dumptst.c
@@ -3,6 +3,7 @@
*/
#include <limits.h>
#include "hdf5.h"
+#include <H5private.h>
#define FILE1 "tgroup.h5"
#define FILE2 "tdset.h5"
@@ -17,6 +18,7 @@
#define FILE11 "tloop2.h5"
#define FILE12 "tmany.h5"
#define FILE13 "tstr.h5"
+#define FILE14 "tstr2.h5"
static void test_group(void) {
hid_t fid, group;
@@ -463,7 +465,7 @@ typedef struct {
dset5_t dset5[10];
int i, ndims;
-const int perm[2];
+const int perm[2]={0,1};
size_t dim[2];
hsize_t sdim, maxdim;
@@ -811,9 +813,7 @@ const int perm[4] = {0,1,2,3}; /* the 0'th and the 3'rd indices are permuted */
H5Tinsert_array(type, "b_array", HOFFSET(dset1_t, b), 4, dim, perm, H5T_IEEE_F64BE);
H5Tinsert_array(type, "c_array", HOFFSET(dset1_t, c), 4, dim, perm, H5T_IEEE_F64BE);
-/*
H5Tcommit(group, "type1", type);
-*/
/* dset1 */
sdim = 6;
@@ -1055,6 +1055,174 @@ size_t mdims[2];
H5Fclose(fid);
}
+/*
+ /
+ / / | \ \ \
+ g1 g2 g3 g4 g5 g6
+ | | | | \ \
+ string1 string3 string5
+ string2 string4 string6
+*/
+
+static void test_str2(void) {
+hid_t fid, group, attr, dataset, space, space2, mem_space, hyper_space, type;
+hid_t fxdlenstr, fxdlenstr2, memtype;
+hsize_t dims[1], size[1], start[1], stride[1], count[1], block[1];
+
+int lenstr = 50;
+int lenstr2 = 11;
+int i, j;
+int i0, i1, i2, i3;
+char buf[lenstr+10];
+char buf2[3*lenstr2];
+hsize_t sdim, maxdim;
+
+ fid = H5Fcreate(FILE14, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
+
+ fxdlenstr = H5Tcopy(H5T_C_S1);
+ H5Tset_size(fxdlenstr, lenstr);
+ H5Tset_cset(fxdlenstr, H5T_CSET_ASCII);
+ H5Tset_strpad(fxdlenstr, H5T_STR_NULLTERM);
+
+ memtype = H5Tcopy(H5T_C_S1);
+ H5Tset_size(memtype, lenstr);
+ H5Tset_cset(memtype, H5T_CSET_ASCII);
+ H5Tset_strpad(memtype, H5T_STR_NULLTERM);
+
+ sdim = 10;
+ size[0] = sdim;
+ space = H5Screate_simple(1, size, NULL);
+ size[0] = 1;
+ mem_space = H5Screate_simple(1,size,NULL);
+ hyper_space = H5Scopy(space);
+
+ /* dset1 */
+
+ group = H5Gcreate (fid, "/g1", 0);
+ dataset = H5Dcreate(group, "dset1", fxdlenstr, space, H5P_DEFAULT);
+
+ /* add attributes to dset1 */
+
+ fxdlenstr2 = H5Tcopy(H5T_C_S1);
+ H5Tset_size(fxdlenstr2, lenstr2);
+ H5Tset_cset(fxdlenstr2, H5T_CSET_ASCII);
+ H5Tset_strpad(fxdlenstr2, H5T_STR_NULLTERM);
+
+ dims[0] = 3;
+ space2 = H5Screate_simple(1, dims, NULL);
+ attr = H5Acreate (dataset, "attr1", fxdlenstr2, space2, H5P_DEFAULT);
+ sprintf(&(buf2[0*lenstr2]), "0123456789");
+ sprintf(&(buf2[1*lenstr2]), "abcdefghij");
+ sprintf(&(buf2[2*lenstr2]), "ABCDEFGHIJ");
+ H5Awrite(attr, fxdlenstr2, buf2);
+ H5Sclose(space2);
+ H5Tclose(fxdlenstr2);
+ H5Aclose(attr);
+
+ stride[0]=1;
+ count[0]=1;
+ block[0]=1;
+
+ for (i = 0; i < sdim; i++) {
+ start[0] = i;
+ sprintf(buf,"This is row %1d of type H5T_STR_NULLTERM of",i);
+ H5Tset_size(memtype, HDstrlen(buf)+1);
+ H5Sselect_hyperslab(hyper_space, H5S_SELECT_SET, start, stride, count, block);
+ H5Dwrite(dataset, memtype, mem_space, hyper_space, H5P_DEFAULT, buf);
+ }
+ H5Dclose(dataset);
+ H5Gclose(group);
+
+ group = H5Gcreate (fid, "/g2", 0);
+ dataset = H5Dcreate(group, "dset2", fxdlenstr, space, H5P_DEFAULT);
+
+ for (i = 0; i < sdim; i++) {
+ start[0] = i;
+ sprintf(buf,"This is row %1d of type H5T_STR_NULLTERM of string array",i);
+ H5Tset_size(memtype, HDstrlen(buf)+1);
+ H5Sselect_hyperslab(hyper_space, H5S_SELECT_SET, start, stride, count, block);
+ H5Dwrite(dataset, memtype, mem_space, hyper_space, H5P_DEFAULT, buf);
+ }
+ H5Dclose(dataset);
+ H5Gclose(group);
+
+
+ H5Tclose(fxdlenstr);
+ fxdlenstr = H5Tcopy(H5T_C_S1);
+ H5Tset_size(fxdlenstr, lenstr);
+ H5Tset_cset(fxdlenstr, H5T_CSET_ASCII);
+ H5Tset_strpad(fxdlenstr, H5T_STR_NULLPAD);
+
+ group = H5Gcreate (fid, "/g3", 0);
+ dataset = H5Dcreate(group, "dset3", fxdlenstr, space, H5P_DEFAULT);
+
+ for (i = 0; i < sdim; i++) {
+ start[0] = i;
+ sprintf(buf,"This is row %1d of type H5T_STR_NULLPAD of",i);
+ H5Tset_size(memtype, HDstrlen(buf)+1);
+ H5Sselect_hyperslab(hyper_space, H5S_SELECT_SET, start, stride, count, block);
+ H5Dwrite(dataset, memtype, mem_space, hyper_space, H5P_DEFAULT, buf);
+ }
+ H5Dclose(dataset);
+ H5Gclose(group);
+
+
+ group = H5Gcreate (fid, "/g4", 0);
+ dataset = H5Dcreate(group, "dset4", fxdlenstr, space, H5P_DEFAULT);
+
+ for (i = 0; i < sdim; i++) {
+ start[0] = i;
+ sprintf(buf,"This is row %1d of type H5T_STR_NULLPAD of string array",i);
+ H5Tset_size(memtype, HDstrlen(buf)+1);
+ H5Sselect_hyperslab(hyper_space, H5S_SELECT_SET, start, stride, count, block);
+ H5Dwrite(dataset, memtype, mem_space, hyper_space, H5P_DEFAULT, buf);
+ }
+ H5Dclose(dataset);
+ H5Gclose(group);
+
+ H5Tclose(fxdlenstr);
+ fxdlenstr = H5Tcopy(H5T_C_S1);
+ H5Tset_size(fxdlenstr, lenstr);
+ H5Tset_cset(fxdlenstr, H5T_CSET_ASCII);
+ H5Tset_strpad(fxdlenstr, H5T_STR_SPACEPAD);
+
+ group = H5Gcreate (fid, "/g5", 0);
+ dataset = H5Dcreate(group, "dset5", fxdlenstr, space, H5P_DEFAULT);
+
+ for (i = 0; i < sdim; i++) {
+ start[0] = i;
+ sprintf(buf,"This is row %1d of type H5T_STR_SPACEPAD of",i);
+ H5Tset_size(memtype, HDstrlen(buf)+1);
+ H5Sselect_hyperslab(hyper_space, H5S_SELECT_SET, start, stride, count, block);
+ H5Dwrite(dataset, memtype, mem_space, hyper_space, H5P_DEFAULT, buf);
+ }
+ H5Dclose(dataset);
+ H5Gclose(group);
+
+
+ group = H5Gcreate (fid, "/g6", 0);
+ dataset = H5Dcreate(group, "dset6", fxdlenstr, space, H5P_DEFAULT);
+
+ for (i = 0; i < sdim; i++) {
+ start[0] = i;
+ sprintf(buf,"This is row %1d of type H5T_STR_SPACEPAD of string array",i);
+ H5Tset_size(memtype, HDstrlen(buf)+1);
+ H5Sselect_hyperslab(hyper_space, H5S_SELECT_SET, start, stride, count, block);
+ H5Dwrite(dataset, memtype, mem_space, hyper_space, H5P_DEFAULT, buf);
+ }
+ H5Dclose(dataset);
+ H5Gclose(group);
+
+ H5Tclose(fxdlenstr);
+ H5Tclose(memtype);
+ H5Sclose(mem_space);
+ H5Sclose(hyper_space);
+ H5Sclose(space);
+
+ H5Fclose(fid);
+
+}
+
int main(void){
test_group();
@@ -1067,13 +1235,12 @@ test_all();
test_loop();
test_dataset2();
-/*
test_compound_dt2();
-*/
test_loop2();
test_many();
test_str();
+test_str2();
return 0;
diff --git a/tools/testfiles/tstr.dmp b/tools/testfiles/tstr.dmp
new file mode 100644
index 0000000..71a0131
--- /dev/null
+++ b/tools/testfiles/tstr.dmp
@@ -0,0 +1,104 @@
+File name: testfiles/tstr.hdf
+
+
+Vgroup:0
+ tag = 1965; reference = 2;
+ name = /; class = HDF5;
+ number of entries = 3;
+ number of attributes = 0
+Entries:-
+ #0 (Vdata)
+ tag = 1962; reference = 3;
+ number of records = 20; interlace = 0;
+ fields = [string];
+ record size (in bytes) = 11;
+ name = string2; class = HDF5;
+ total number of attributes = 0.
+ #1 (Vdata)
+ tag = 1962; reference = 4;
+ number of records = 27; interlace = 0;
+ fields = [string];
+ record size (in bytes) = 8;
+ name = string3; class = HDF5;
+ total number of attributes = 0.
+ #2 (Vdata)
+ tag = 1962; reference = 7;
+ number of records = 3; interlace = 0;
+ fields = [string];
+ record size (in bytes) = 168;
+ name = string4; class = HDF5;
+ total number of attributes = 0.
+
+
+Graphical representation of the file:-
+(vg#: vgroup; vd: vdata)
+
+ vg0 -- vd
+ -- vd
+ -- vd
+
+File name: testfiles/tstr.hdf
+
+Vdata: 0
+ tag = 1962; reference = 3;
+ number of records = 20; interlace = 0;
+ fields = [string];
+ record size (in bytes) = 11;
+ name = string2; class = HDF5;
+ number of attributes = 0
+- field index 0: [string], type=20, order=11
+ number of attributes = 0
+Loc. Data
+00 97 98 32 99 100 32 101 102 49 32 32 ; 97 98 32 99 100 32 101 102 50 32 32 ;
+02 97 98 32 99 100 32 101 102 51 32 32 ; 97 98 32 99 100 32 101 102 52 32 32 ;
+04 97 98 32 99 100 32 101 102 53 32 32 ; 97 98 32 99 100 32 101 102 54 32 32 ;
+06 97 98 32 99 100 32 101 102 55 32 32 ; 97 98 32 99 100 32 101 102 56 32 32 ;
+08 97 98 32 99 100 32 101 102 57 32 32 ; 97 98 32 99 100 32 101 102 48 32 32 ;
+10 97 98 32 99 100 32 101 102 49 32 32 ; 97 98 32 99 100 32 101 102 50 32 32 ;
+12 97 98 32 99 100 32 101 102 51 32 32 ; 97 98 32 99 100 32 101 102 52 32 32 ;
+14 97 98 32 99 100 32 101 102 53 32 32 ; 97 98 32 99 100 32 101 102 54 32 32 ;
+16 97 98 32 99 100 32 101 102 55 32 32 ; 97 98 32 99 100 32 101 102 56 32 32 ;
+18 97 98 32 99 100 32 101 102 57 32 32 ; 97 98 32 99 100 32 101 102 48 32 32 ;
+
+
+Vdata: 1
+ tag = 1962; reference = 4;
+ number of records = 27; interlace = 0;
+ fields = [string];
+ record size (in bytes) = 8;
+ name = string3; class = HDF5;
+ number of attributes = 0
+- field index 0: [string], type=20, order=8
+ number of attributes = 0
+Loc. Data
+00 97 98 99 100 48 0 0 0 ; 97 98 99 100 49 0 0 0 ;
+02 97 98 99 100 50 0 0 0 ; 97 98 99 100 51 0 0 0 ;
+04 97 98 99 100 52 0 0 0 ; 97 98 99 100 53 0 0 0 ;
+06 97 98 99 100 54 0 0 0 ; 97 98 99 100 55 0 0 0 ;
+08 97 98 99 100 56 0 0 0 ; 97 98 99 100 57 0 0 0 ;
+10 97 98 99 100 48 0 0 0 ; 97 98 99 100 49 0 0 0 ;
+12 97 98 99 100 50 0 0 0 ; 97 98 99 100 51 0 0 0 ;
+14 97 98 99 100 52 0 0 0 ; 97 98 99 100 53 0 0 0 ;
+16 97 98 99 100 54 0 0 0 ; 97 98 99 100 55 0 0 0 ;
+18 97 98 99 100 56 0 0 0 ; 97 98 99 100 57 0 0 0 ;
+20 97 98 99 100 48 0 0 0 ; 97 98 99 100 49 0 0 0 ;
+22 97 98 99 100 50 0 0 0 ; 97 98 99 100 51 0 0 0 ;
+24 97 98 99 100 52 0 0 0 ; 97 98 99 100 53 0 0 0 ;
+26 97 98 99 100 54 0 0 0 ;
+
+Vdata: 2
+ tag = 1962; reference = 7;
+ number of records = 3; interlace = 0;
+ fields = [string];
+ record size (in bytes) = 168;
+ name = string4; class = HDF5;
+ number of attributes = 0
+- field index 0: [string], type=20, order=168
+ number of attributes = 0
+Loc. Data
+0 115 49 50 51 52 53 54 55 56 57 48 49 50 51 52 53 54 55 56 57 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 ;
+1 115 49 50 51 52 53 54 55 56 57 48 49 50 51 52 53 54 55 56 57 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 ;
+2 115 49 50 51 52 53 54 55 56 57 48 49 50 51 52 53 54 55 56 57 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 ;
+
+
+File name: testfiles/tstr.hdf
diff --git a/tools/testfiles/tstr2.dmp b/tools/testfiles/tstr2.dmp
new file mode 100644
index 0000000..450f7d7
--- /dev/null
+++ b/tools/testfiles/tstr2.dmp
@@ -0,0 +1,304 @@
+File name: testfiles/tstr2.hdf
+
+
+Vgroup:0
+ tag = 1965; reference = 2;
+ name = /; class = HDF5;
+ number of entries = 6;
+ number of attributes = 0
+Entries:-
+ #0 (Vgroup)
+ tag = 1965;reference = 3;
+ number of entries = 1;
+ name = g1; class = HDF5
+ number of attributes = 0
+ #1 (Vgroup)
+ tag = 1965;reference = 6;
+ number of entries = 1;
+ name = g2; class = HDF5
+ number of attributes = 0
+ #2 (Vgroup)
+ tag = 1965;reference = 8;
+ number of entries = 1;
+ name = g3; class = HDF5
+ number of attributes = 0
+ #3 (Vgroup)
+ tag = 1965;reference = 10;
+ number of entries = 1;
+ name = g4; class = HDF5
+ number of attributes = 0
+ #4 (Vgroup)
+ tag = 1965;reference = 13;
+ number of entries = 1;
+ name = g5; class = HDF5
+ number of attributes = 0
+ #5 (Vgroup)
+ tag = 1965;reference = 16;
+ number of entries = 1;
+ name = g6; class = HDF5
+ number of attributes = 0
+
+
+Vgroup:1
+ tag = 1965; reference = 3;
+ name = g1; class = HDF5;
+ number of entries = 1;
+ number of attributes = 0
+Entries:-
+ #0 (Vdata)
+ tag = 1962; reference = 4;
+ number of records = 10; interlace = 0;
+ fields = [string];
+ record size (in bytes) = 50;
+ name = dset1; class = HDF5;
+ total number of attributes = 1.
+
+
+Vgroup:2
+ tag = 1965; reference = 6;
+ name = g2; class = HDF5;
+ number of entries = 1;
+ number of attributes = 0
+Entries:-
+ #0 (Vdata)
+ tag = 1962; reference = 7;
+ number of records = 10; interlace = 0;
+ fields = [string];
+ record size (in bytes) = 50;
+ name = dset2; class = HDF5;
+ total number of attributes = 0.
+
+
+Vgroup:3
+ tag = 1965; reference = 8;
+ name = g3; class = HDF5;
+ number of entries = 1;
+ number of attributes = 0
+Entries:-
+ #0 (Vdata)
+ tag = 1962; reference = 9;
+ number of records = 10; interlace = 0;
+ fields = [string];
+ record size (in bytes) = 50;
+ name = dset3; class = HDF5;
+ total number of attributes = 0.
+
+
+Vgroup:4
+ tag = 1965; reference = 10;
+ name = g4; class = HDF5;
+ number of entries = 1;
+ number of attributes = 0
+Entries:-
+ #0 (Vdata)
+ tag = 1962; reference = 11;
+ number of records = 10; interlace = 0;
+ fields = [string];
+ record size (in bytes) = 50;
+ name = dset4; class = HDF5;
+ total number of attributes = 0.
+
+
+Vgroup:5
+ tag = 1965; reference = 13;
+ name = g5; class = HDF5;
+ number of entries = 1;
+ number of attributes = 0
+Entries:-
+ #0 (Vdata)
+ tag = 1962; reference = 14;
+ number of records = 10; interlace = 0;
+ fields = [string];
+ record size (in bytes) = 50;
+ name = dset5; class = HDF5;
+ total number of attributes = 0.
+
+
+Vgroup:6
+ tag = 1965; reference = 16;
+ name = g6; class = HDF5;
+ number of entries = 1;
+ number of attributes = 0
+Entries:-
+ #0 (Vdata)
+ tag = 1962; reference = 17;
+ number of records = 10; interlace = 0;
+ fields = [string];
+ record size (in bytes) = 50;
+ name = dset6; class = HDF5;
+ total number of attributes = 0.
+
+
+Graphical representation of the file:-
+(vg#: vgroup; vd: vdata)
+
+ vg0 -- vg1 -- vd
+ -- vg2 -- vd
+ -- vg3 -- vd
+ -- vg4 -- vd
+ -- vg5 -- vd
+ -- vg6 -- vd
+
+ vg1 -- vd
+
+ vg2 -- vd
+
+ vg3 -- vd
+
+ vg4 -- vd
+
+ vg5 -- vd
+
+ vg6 -- vd
+
+File name: testfiles/tstr2.hdf
+
+Vdata: 0
+ tag = 1962; reference = 4;
+ number of records = 10; interlace = 0;
+ fields = [string];
+ record size (in bytes) = 50;
+ name = dset1; class = HDF5;
+ number of attributes = 1
+ attr0: name=attr1 type=20 count=33 size=33
+ 48 49 50 51 52 53 54 55 56 57 0 97 98 99 100 101 102 103
+ 104 105 106 0 65 66 67 68 69 70 71 72 73 74 0
+- field index 0: [string], type=20, order=50
+ number of attributes = 0
+Loc. Data
+0 84 104 105 115 32 105 115 32 114 111 119 32 48 32 111 102 32 116 121 112 101 32 72 53 84 95 83 84 82 95 78 85 76 76 84 69 82 77 32 111 102 0 0 0 0 0 0 0 0 0 ;
+1 84 104 105 115 32 105 115 32 114 111 119 32 49 32 111 102 32 116 121 112 101 32 72 53 84 95 83 84 82 95 78 85 76 76 84 69 82 77 32 111 102 0 0 0 0 0 0 0 0 0 ;
+2 84 104 105 115 32 105 115 32 114 111 119 32 50 32 111 102 32 116 121 112 101 32 72 53 84 95 83 84 82 95 78 85 76 76 84 69 82 77 32 111 102 0 0 0 0 0 0 0 0 0 ;
+3 84 104 105 115 32 105 115 32 114 111 119 32 51 32 111 102 32 116 121 112 101 32 72 53 84 95 83 84 82 95 78 85 76 76 84 69 82 77 32 111 102 0 0 0 0 0 0 0 0 0 ;
+4 84 104 105 115 32 105 115 32 114 111 119 32 52 32 111 102 32 116 121 112 101 32 72 53 84 95 83 84 82 95 78 85 76 76 84 69 82 77 32 111 102 0 0 0 0 0 0 0 0 0 ;
+5 84 104 105 115 32 105 115 32 114 111 119 32 53 32 111 102 32 116 121 112 101 32 72 53 84 95 83 84 82 95 78 85 76 76 84 69 82 77 32 111 102 0 0 0 0 0 0 0 0 0 ;
+6 84 104 105 115 32 105 115 32 114 111 119 32 54 32 111 102 32 116 121 112 101 32 72 53 84 95 83 84 82 95 78 85 76 76 84 69 82 77 32 111 102 0 0 0 0 0 0 0 0 0 ;
+7 84 104 105 115 32 105 115 32 114 111 119 32 55 32 111 102 32 116 121 112 101 32 72 53 84 95 83 84 82 95 78 85 76 76 84 69 82 77 32 111 102 0 0 0 0 0 0 0 0 0 ;
+8 84 104 105 115 32 105 115 32 114 111 119 32 56 32 111 102 32 116 121 112 101 32 72 53 84 95 83 84 82 95 78 85 76 76 84 69 82 77 32 111 102 0 0 0 0 0 0 0 0 0 ;
+9 84 104 105 115 32 105 115 32 114 111 119 32 57 32 111 102 32 116 121 112 101 32 72 53 84 95 83 84 82 95 78 85 76 76 84 69 82 77 32 111 102 0 0 0 0 0 0 0 0 0 ;
+
+
+Vdata: 1
+ tag = 1962; reference = 5;
+ number of records = 1; interlace = 0;
+ fields = [VALUES];
+ record size (in bytes) = 33;
+ name = attr1; class = Attr0.0;
+ number of attributes = 0
+- field index 0: [VALUES], type=20, order=33
+ number of attributes = 0
+Loc. Data
+0 48 49 50 51 52 53 54 55 56 57 0 97 98 99 100 101 102 103 104 105 106 0 65 66 67 68 69 70 71 72 73 74 0 ;
+
+
+Vdata: 2
+ tag = 1962; reference = 7;
+ number of records = 10; interlace = 0;
+ fields = [string];
+ record size (in bytes) = 50;
+ name = dset2; class = HDF5;
+ number of attributes = 0
+- field index 0: [string], type=20, order=50
+ number of attributes = 0
+Loc. Data
+0 84 104 105 115 32 105 115 32 114 111 119 32 48 32 111 102 32 116 121 112 101 32 72 53 84 95 83 84 82 95 78 85 76 76 84 69 82 77 32 111 102 32 115 116 114 105 110 103 32 0 ;
+1 84 104 105 115 32 105 115 32 114 111 119 32 49 32 111 102 32 116 121 112 101 32 72 53 84 95 83 84 82 95 78 85 76 76 84 69 82 77 32 111 102 32 115 116 114 105 110 103 32 0 ;
+2 84 104 105 115 32 105 115 32 114 111 119 32 50 32 111 102 32 116 121 112 101 32 72 53 84 95 83 84 82 95 78 85 76 76 84 69 82 77 32 111 102 32 115 116 114 105 110 103 32 0 ;
+3 84 104 105 115 32 105 115 32 114 111 119 32 51 32 111 102 32 116 121 112 101 32 72 53 84 95 83 84 82 95 78 85 76 76 84 69 82 77 32 111 102 32 115 116 114 105 110 103 32 0 ;
+4 84 104 105 115 32 105 115 32 114 111 119 32 52 32 111 102 32 116 121 112 101 32 72 53 84 95 83 84 82 95 78 85 76 76 84 69 82 77 32 111 102 32 115 116 114 105 110 103 32 0 ;
+5 84 104 105 115 32 105 115 32 114 111 119 32 53 32 111 102 32 116 121 112 101 32 72 53 84 95 83 84 82 95 78 85 76 76 84 69 82 77 32 111 102 32 115 116 114 105 110 103 32 0 ;
+6 84 104 105 115 32 105 115 32 114 111 119 32 54 32 111 102 32 116 121 112 101 32 72 53 84 95 83 84 82 95 78 85 76 76 84 69 82 77 32 111 102 32 115 116 114 105 110 103 32 0 ;
+7 84 104 105 115 32 105 115 32 114 111 119 32 55 32 111 102 32 116 121 112 101 32 72 53 84 95 83 84 82 95 78 85 76 76 84 69 82 77 32 111 102 32 115 116 114 105 110 103 32 0 ;
+8 84 104 105 115 32 105 115 32 114 111 119 32 56 32 111 102 32 116 121 112 101 32 72 53 84 95 83 84 82 95 78 85 76 76 84 69 82 77 32 111 102 32 115 116 114 105 110 103 32 0 ;
+9 84 104 105 115 32 105 115 32 114 111 119 32 57 32 111 102 32 116 121 112 101 32 72 53 84 95 83 84 82 95 78 85 76 76 84 69 82 77 32 111 102 32 115 116 114 105 110 103 32 0 ;
+
+
+Vdata: 3
+ tag = 1962; reference = 9;
+ number of records = 10; interlace = 0;
+ fields = [string];
+ record size (in bytes) = 50;
+ name = dset3; class = HDF5;
+ number of attributes = 0
+- field index 0: [string], type=20, order=50
+ number of attributes = 0
+Loc. Data
+0 84 104 105 115 32 105 115 32 114 111 119 32 48 32 111 102 32 116 121 112 101 32 72 53 84 95 83 84 82 95 78 85 76 76 80 65 68 32 111 102 0 0 0 0 0 0 0 0 0 0 ;
+1 84 104 105 115 32 105 115 32 114 111 119 32 49 32 111 102 32 116 121 112 101 32 72 53 84 95 83 84 82 95 78 85 76 76 80 65 68 32 111 102 0 0 0 0 0 0 0 0 0 0 ;
+2 84 104 105 115 32 105 115 32 114 111 119 32 50 32 111 102 32 116 121 112 101 32 72 53 84 95 83 84 82 95 78 85 76 76 80 65 68 32 111 102 0 0 0 0 0 0 0 0 0 0 ;
+3 84 104 105 115 32 105 115 32 114 111 119 32 51 32 111 102 32 116 121 112 101 32 72 53 84 95 83 84 82 95 78 85 76 76 80 65 68 32 111 102 0 0 0 0 0 0 0 0 0 0 ;
+4 84 104 105 115 32 105 115 32 114 111 119 32 52 32 111 102 32 116 121 112 101 32 72 53 84 95 83 84 82 95 78 85 76 76 80 65 68 32 111 102 0 0 0 0 0 0 0 0 0 0 ;
+5 84 104 105 115 32 105 115 32 114 111 119 32 53 32 111 102 32 116 121 112 101 32 72 53 84 95 83 84 82 95 78 85 76 76 80 65 68 32 111 102 0 0 0 0 0 0 0 0 0 0 ;
+6 84 104 105 115 32 105 115 32 114 111 119 32 54 32 111 102 32 116 121 112 101 32 72 53 84 95 83 84 82 95 78 85 76 76 80 65 68 32 111 102 0 0 0 0 0 0 0 0 0 0 ;
+7 84 104 105 115 32 105 115 32 114 111 119 32 55 32 111 102 32 116 121 112 101 32 72 53 84 95 83 84 82 95 78 85 76 76 80 65 68 32 111 102 0 0 0 0 0 0 0 0 0 0 ;
+8 84 104 105 115 32 105 115 32 114 111 119 32 56 32 111 102 32 116 121 112 101 32 72 53 84 95 83 84 82 95 78 85 76 76 80 65 68 32 111 102 0 0 0 0 0 0 0 0 0 0 ;
+9 84 104 105 115 32 105 115 32 114 111 119 32 57 32 111 102 32 116 121 112 101 32 72 53 84 95 83 84 82 95 78 85 76 76 80 65 68 32 111 102 0 0 0 0 0 0 0 0 0 0 ;
+
+
+Vdata: 4
+ tag = 1962; reference = 11;
+ number of records = 10; interlace = 0;
+ fields = [string];
+ record size (in bytes) = 50;
+ name = dset4; class = HDF5;
+ number of attributes = 0
+- field index 0: [string], type=20, order=50
+ number of attributes = 0
+Loc. Data
+0 84 104 105 115 32 105 115 32 114 111 119 32 48 32 111 102 32 116 121 112 101 32 72 53 84 95 83 84 82 95 78 85 76 76 80 65 68 32 111 102 32 115 116 114 105 110 103 32 97 114 ;
+1 84 104 105 115 32 105 115 32 114 111 119 32 49 32 111 102 32 116 121 112 101 32 72 53 84 95 83 84 82 95 78 85 76 76 80 65 68 32 111 102 32 115 116 114 105 110 103 32 97 114 ;
+2 84 104 105 115 32 105 115 32 114 111 119 32 50 32 111 102 32 116 121 112 101 32 72 53 84 95 83 84 82 95 78 85 76 76 80 65 68 32 111 102 32 115 116 114 105 110 103 32 97 114 ;
+3 84 104 105 115 32 105 115 32 114 111 119 32 51 32 111 102 32 116 121 112 101 32 72 53 84 95 83 84 82 95 78 85 76 76 80 65 68 32 111 102 32 115 116 114 105 110 103 32 97 114 ;
+4 84 104 105 115 32 105 115 32 114 111 119 32 52 32 111 102 32 116 121 112 101 32 72 53 84 95 83 84 82 95 78 85 76 76 80 65 68 32 111 102 32 115 116 114 105 110 103 32 97 114 ;
+5 84 104 105 115 32 105 115 32 114 111 119 32 53 32 111 102 32 116 121 112 101 32 72 53 84 95 83 84 82 95 78 85 76 76 80 65 68 32 111 102 32 115 116 114 105 110 103 32 97 114 ;
+6 84 104 105 115 32 105 115 32 114 111 119 32 54 32 111 102 32 116 121 112 101 32 72 53 84 95 83 84 82 95 78 85 76 76 80 65 68 32 111 102 32 115 116 114 105 110 103 32 97 114 ;
+7 84 104 105 115 32 105 115 32 114 111 119 32 55 32 111 102 32 116 121 112 101 32 72 53 84 95 83 84 82 95 78 85 76 76 80 65 68 32 111 102 32 115 116 114 105 110 103 32 97 114 ;
+8 84 104 105 115 32 105 115 32 114 111 119 32 56 32 111 102 32 116 121 112 101 32 72 53 84 95 83 84 82 95 78 85 76 76 80 65 68 32 111 102 32 115 116 114 105 110 103 32 97 114 ;
+9 84 104 105 115 32 105 115 32 114 111 119 32 57 32 111 102 32 116 121 112 101 32 72 53 84 95 83 84 82 95 78 85 76 76 80 65 68 32 111 102 32 115 116 114 105 110 103 32 97 114 ;
+
+
+Vdata: 5
+ tag = 1962; reference = 14;
+ number of records = 10; interlace = 0;
+ fields = [string];
+ record size (in bytes) = 50;
+ name = dset5; class = HDF5;
+ number of attributes = 0
+- field index 0: [string], type=20, order=50
+ number of attributes = 0
+Loc. Data
+0 84 104 105 115 32 105 115 32 114 111 119 32 48 32 111 102 32 116 121 112 101 32 72 53 84 95 83 84 82 95 83 80 65 67 69 80 65 68 32 111 102 32 32 32 32 32 32 32 32 32 ;
+1 84 104 105 115 32 105 115 32 114 111 119 32 49 32 111 102 32 116 121 112 101 32 72 53 84 95 83 84 82 95 83 80 65 67 69 80 65 68 32 111 102 32 32 32 32 32 32 32 32 32 ;
+2 84 104 105 115 32 105 115 32 114 111 119 32 50 32 111 102 32 116 121 112 101 32 72 53 84 95 83 84 82 95 83 80 65 67 69 80 65 68 32 111 102 32 32 32 32 32 32 32 32 32 ;
+3 84 104 105 115 32 105 115 32 114 111 119 32 51 32 111 102 32 116 121 112 101 32 72 53 84 95 83 84 82 95 83 80 65 67 69 80 65 68 32 111 102 32 32 32 32 32 32 32 32 32 ;
+4 84 104 105 115 32 105 115 32 114 111 119 32 52 32 111 102 32 116 121 112 101 32 72 53 84 95 83 84 82 95 83 80 65 67 69 80 65 68 32 111 102 32 32 32 32 32 32 32 32 32 ;
+5 84 104 105 115 32 105 115 32 114 111 119 32 53 32 111 102 32 116 121 112 101 32 72 53 84 95 83 84 82 95 83 80 65 67 69 80 65 68 32 111 102 32 32 32 32 32 32 32 32 32 ;
+6 84 104 105 115 32 105 115 32 114 111 119 32 54 32 111 102 32 116 121 112 101 32 72 53 84 95 83 84 82 95 83 80 65 67 69 80 65 68 32 111 102 32 32 32 32 32 32 32 32 32 ;
+7 84 104 105 115 32 105 115 32 114 111 119 32 55 32 111 102 32 116 121 112 101 32 72 53 84 95 83 84 82 95 83 80 65 67 69 80 65 68 32 111 102 32 32 32 32 32 32 32 32 32 ;
+8 84 104 105 115 32 105 115 32 114 111 119 32 56 32 111 102 32 116 121 112 101 32 72 53 84 95 83 84 82 95 83 80 65 67 69 80 65 68 32 111 102 32 32 32 32 32 32 32 32 32 ;
+9 84 104 105 115 32 105 115 32 114 111 119 32 57 32 111 102 32 116 121 112 101 32 72 53 84 95 83 84 82 95 83 80 65 67 69 80 65 68 32 111 102 32 32 32 32 32 32 32 32 32 ;
+
+
+Vdata: 6
+ tag = 1962; reference = 17;
+ number of records = 10; interlace = 0;
+ fields = [string];
+ record size (in bytes) = 50;
+ name = dset6; class = HDF5;
+ number of attributes = 0
+- field index 0: [string], type=20, order=50
+ number of attributes = 0
+Loc. Data
+0 84 104 105 115 32 105 115 32 114 111 119 32 48 32 111 102 32 116 121 112 101 32 72 53 84 95 83 84 82 95 83 80 65 67 69 80 65 68 32 111 102 32 115 116 114 105 110 103 32 97 ;
+1 84 104 105 115 32 105 115 32 114 111 119 32 49 32 111 102 32 116 121 112 101 32 72 53 84 95 83 84 82 95 83 80 65 67 69 80 65 68 32 111 102 32 115 116 114 105 110 103 32 97 ;
+2 84 104 105 115 32 105 115 32 114 111 119 32 50 32 111 102 32 116 121 112 101 32 72 53 84 95 83 84 82 95 83 80 65 67 69 80 65 68 32 111 102 32 115 116 114 105 110 103 32 97 ;
+3 84 104 105 115 32 105 115 32 114 111 119 32 51 32 111 102 32 116 121 112 101 32 72 53 84 95 83 84 82 95 83 80 65 67 69 80 65 68 32 111 102 32 115 116 114 105 110 103 32 97 ;
+4 84 104 105 115 32 105 115 32 114 111 119 32 52 32 111 102 32 116 121 112 101 32 72 53 84 95 83 84 82 95 83 80 65 67 69 80 65 68 32 111 102 32 115 116 114 105 110 103 32 97 ;
+5 84 104 105 115 32 105 115 32 114 111 119 32 53 32 111 102 32 116 121 112 101 32 72 53 84 95 83 84 82 95 83 80 65 67 69 80 65 68 32 111 102 32 115 116 114 105 110 103 32 97 ;
+6 84 104 105 115 32 105 115 32 114 111 119 32 54 32 111 102 32 116 121 112 101 32 72 53 84 95 83 84 82 95 83 80 65 67 69 80 65 68 32 111 102 32 115 116 114 105 110 103 32 97 ;
+7 84 104 105 115 32 105 115 32 114 111 119 32 55 32 111 102 32 116 121 112 101 32 72 53 84 95 83 84 82 95 83 80 65 67 69 80 65 68 32 111 102 32 115 116 114 105 110 103 32 97 ;
+8 84 104 105 115 32 105 115 32 114 111 119 32 56 32 111 102 32 116 121 112 101 32 72 53 84 95 83 84 82 95 83 80 65 67 69 80 65 68 32 111 102 32 115 116 114 105 110 103 32 97 ;
+9 84 104 105 115 32 105 115 32 114 111 119 32 57 32 111 102 32 116 121 112 101 32 72 53 84 95 83 84 82 95 83 80 65 67 69 80 65 68 32 111 102 32 115 116 114 105 110 103 32 97 ;
+
+
+File name: testfiles/tstr2.hdf
diff --git a/tools/testfiles/tstr2.h5 b/tools/testfiles/tstr2.h5
new file mode 100644
index 0000000..30aa8a0
--- /dev/null
+++ b/tools/testfiles/tstr2.h5
Binary files differ