diff options
Diffstat (limited to 'tools')
-rw-r--r-- | tools/testfiles/h5dumptst.c | 344 |
1 files changed, 117 insertions, 227 deletions
diff --git a/tools/testfiles/h5dumptst.c b/tools/testfiles/h5dumptst.c index 36bd35c..6baba03 100644 --- a/tools/testfiles/h5dumptst.c +++ b/tools/testfiles/h5dumptst.c @@ -1,7 +1,6 @@ /* * Generate the binary hdf5 files for the h5dump tests. */ -#include <limits.h> #include "hdf5.h" #define FILE1 "tgroup.h5" @@ -11,8 +10,7 @@ #define FILE5 "thlink.h5" #define FILE6 "tcompound.h5" #define FILE7 "tall.h5" -#define FILE8 "tdset2.h5" -#define FILE9 "tcompound2.h5" +#define FILE10 "tloop.h5" static void test_group(void) { hid_t fid, group; @@ -62,7 +60,7 @@ static void test_dataset(void) { hid_t fid, dataset, space; hsize_t dims[2]; int dset1[10][20]; -double dset2[30][10]; +double dset2[30][20]; int i, j; fid = H5Fcreate(FILE2, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); @@ -79,56 +77,12 @@ int i, j; H5Dclose(dataset); /* dset2 */ - dims[0] = 30; dims[1] = 10; + dims[0] = 30; dims[1] = 20; space = H5Screate_simple(2, dims, NULL); dataset = H5Dcreate(fid, "/dset2", H5T_IEEE_F64BE, space, H5P_DEFAULT); for (i = 0; i < 30; i++) - for (j = 0; j < 10; j++) - dset2[i][j] = j; - H5Dwrite(dataset, H5T_IEEE_F64BE, H5S_ALL, H5S_ALL, H5P_DEFAULT, dset2); - H5Sclose(space); - H5Dclose(dataset); - - - H5Fclose(fid); -} - -static void test_dataset2(void) { -hid_t fid, dataset, space, create_plist; -hsize_t dims[2]; -hsize_t maxdims[2]; -int dset1[10][20]; -double dset2[30][10]; -int i, j; - - - fid = H5Fcreate(FILE8, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - - create_plist = H5Pcreate(H5P_DATASET_CREATE); - - dims[0] = 5; dims[1] = 5; - H5Pset_chunk(create_plist, 2, dims); - - /* dset1 */ - dims[0] = 10; dims[1] = 20; - maxdims[0] = H5S_UNLIMITED; maxdims[1] = 20; - space = H5Screate_simple(2, dims, maxdims); - dataset = H5Dcreate(fid, "/dset1", H5T_STD_I32BE, space, create_plist); - for (i = 0; i < 10; i++) for (j = 0; j < 20; j++) - dset1[i][j] = j; - H5Dwrite(dataset, H5T_STD_I32BE, H5S_ALL, H5S_ALL, H5P_DEFAULT, dset1); - H5Sclose(space); - H5Dclose(dataset); - - /* dset2 */ - dims[0] = 30; dims[1] = 10; - maxdims[0] = 30; maxdims[1] = H5S_UNLIMITED; - space = H5Screate_simple(2, dims, maxdims); - dataset = H5Dcreate(fid, "/dset2", H5T_IEEE_F64BE, space, create_plist); - for (i = 0; i < 30; i++) - for (j = 0; j < 10; j++) - dset2[i][j] = j; + dset2[i][j] = 0.0001*j; H5Dwrite(dataset, H5T_IEEE_F64BE, H5S_ALL, H5S_ALL, H5P_DEFAULT, dset2); H5Sclose(space); H5Dclose(dataset); @@ -137,24 +91,39 @@ int i, j; H5Fclose(fid); } + static void test_attribute(void) { -hid_t fid, root, space, attr; +hid_t fid, root, space, attr, type; hsize_t dims[2]; char buf[60]; int i, data[20]; double d[10]; +char string[]= "string attribute"; +char str[10][8]; +int point = 100; +int tmp[2]; fid = H5Fcreate(FILE3, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); root = H5Gopen (fid, "/"); + /* attribute 0 */ +/* + dims[0] = 2; + space = H5Screate_simple(1, dims, NULL); + attr = H5Acreate (root, "attr0", H5T_STD_I32LE, space, H5P_DEFAULT); + tmp[0] = 64; tmp[1] = 65; + H5Awrite(attr, H5T_STD_I32LE, tmp); + H5Sclose(space); + H5Aclose(attr); +*/ /* attribute 1 */ dims[0] = 24; space = H5Screate_simple(1, dims, NULL); - attr = H5Acreate (root, "attr1", H5T_NATIVE_CHAR, space, H5P_DEFAULT); + attr = H5Acreate (root, "attr1", H5T_NATIVE_SCHAR, space, H5P_DEFAULT); sprintf(buf, "attribute of root group"); - H5Awrite(attr, H5T_NATIVE_CHAR, buf); + H5Awrite(attr, H5T_NATIVE_SCHAR, buf); H5Sclose(space); H5Aclose(attr); @@ -177,6 +146,38 @@ double d[10]; H5Sclose(space); H5Aclose(attr); + /* attribute 4 */ + space = H5Screate(H5S_SCALAR); + attr = H5Acreate (root, "attr4", H5T_STD_I32BE, space, H5P_DEFAULT); + H5Awrite(attr, H5T_STD_I32BE, &point); + H5Sclose(space); + H5Aclose(attr); + + /* attribute 5 */ + space = H5Screate(H5S_SCALAR); + type = H5Tcopy(H5T_C_S1); + H5Tset_size(type, 17); + attr = H5Acreate (root, "attr5", type, space, H5P_DEFAULT); + H5Awrite(attr, type, string); + H5Tclose(type); + H5Sclose(space); + H5Aclose(attr); + + /* attribute 6 */ +/* + dims[0] = 10; + space = H5Screate_simple(1, dims, NULL); + type = H5Tcopy(H5T_C_S1); + H5Tset_size(type, 8); + attr = H5Acreate (root, "attr6", type, space, H5P_DEFAULT); + for (i = 0; i < 10; i++) + sprintf(str[i], "string%d", i); + H5Awrite(attr, type, str); + H5Tclose(type); + H5Sclose(space); + H5Aclose(attr); +*/ + H5Gclose(root); H5Fclose(fid); @@ -201,13 +202,18 @@ herr_t status; } /* - / - / | \ - g1 g2 dset + / + + / | \ the dataset is hardlinked to three names + /dset1, /g1/dset2, and /g1/g1.1/dset3 + dset1 g1 g2 + /g2 and /g1/g1.1 are hardlinked to the same object. + / \ + dset2 g1.1 + | + dset3 +*/ - / \ | - link1 link2 link3 -(g2) (dset) (dset) */ static void test_hardlink(void) { hid_t fid, group, dataset, space; @@ -218,22 +224,22 @@ int i, dset[5]; dim = 5; space = H5Screate_simple(1, &dim, NULL); - dataset = H5Dcreate(fid, "/dset", H5T_STD_I32BE, space, H5P_DEFAULT); + dataset = H5Dcreate(fid, "/dset1", H5T_STD_I32BE, space, H5P_DEFAULT); for (i = 0; i < 5; i++) dset[i] = i; H5Dwrite(dataset, H5T_STD_I32BE, H5S_ALL, H5S_ALL, H5P_DEFAULT, dset); H5Sclose(space); H5Dclose(dataset); group = H5Gcreate (fid, "/g1", 0); - H5Glink (group, H5G_LINK_HARD, "/dset", "link2"); + H5Glink (group, H5G_LINK_HARD, "/dset1", "dset2"); H5Gclose(group); group = H5Gcreate (fid, "/g2", 0); - H5Glink (group, H5G_LINK_HARD, "/dset", "link3"); + H5Glink (group, H5G_LINK_HARD, "/dset1", "dset3"); H5Gclose(group); group = H5Gopen(fid, "/g1"); - H5Glink (group, H5G_LINK_HARD, "/g2", "link1"); + H5Glink (group, H5G_LINK_HARD, "/g2", "g1.1"); H5Gclose(group); H5Fclose(fid); @@ -248,7 +254,7 @@ int i, dset[5]; */ static void test_compound_dt(void) { /* test compound data type */ -hid_t fid, group, dataset, space, type; +hid_t fid, group, dataset, space, space3, type; typedef struct { int a; float b; @@ -266,6 +272,7 @@ typedef struct { int a[4]; float b[5][6]; } dset3_t; +dset3_t dset3[3][6]; typedef struct { int a; @@ -279,12 +286,13 @@ typedef struct { } dset5_t; dset5_t dset5[5]; -int i, ndims; -const int perm[2]; +int i, j, k, l, ndims; size_t dim[2]; hsize_t sdim = 5; +hsize_t dset3_dim[2]; + for (i = 0; i < (int)sdim; i++) { dset1[i].a = i; dset1[i].b = i*i; @@ -297,9 +305,10 @@ hsize_t sdim = 5; dset4[i].b = i*1.0; dset5[i].a = i; - dset5[i].b = i*1.0; + dset5[i].b = i*0.1; } + fid = H5Fcreate(FILE6, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); space = H5Screate_simple(1, &sdim, NULL); @@ -334,170 +343,35 @@ hsize_t sdim = 5; /* shared data type 2 */ type = H5Tcreate (H5T_COMPOUND, sizeof(dset3_t)); ndims = 1; dim[0] = 4; - H5Tinsert_array(type, "int_array", HOFFSET(dset3_t, a), ndims, dim, perm, H5T_STD_I32BE); + H5Tinsert_array(type, "int_array", HOFFSET(dset3_t, a), ndims, dim, NULL, H5T_STD_I32BE); ndims = 2; dim[0] = 5; dim[1] = 6; - H5Tinsert_array(type, "float_array", HOFFSET(dset3_t, b), ndims, dim, perm, H5T_STD_I32BE); + H5Tinsert_array(type, "float_array", HOFFSET(dset3_t, b), ndims, dim, NULL, H5T_IEEE_F32BE); H5Tcommit(fid, "type2", type); - H5Tclose(type); - - /* shared data type 3 */ - type = H5Tcreate (H5T_COMPOUND, sizeof(dset4_t)); - H5Tinsert(type, "int", HOFFSET(dset4_t, a), H5T_STD_I32BE); - H5Tinsert(type, "float", HOFFSET(dset4_t, b), H5T_IEEE_F32BE); - H5Tcommit(group, "type3", type); - - dataset = H5Dcreate(group, "dset4", type, space, H5P_DEFAULT); - H5Dwrite(dataset, type, H5S_ALL, H5S_ALL, H5P_DEFAULT, dset4); - - H5Tclose(type); - H5Dclose(dataset); - H5Gclose(group); - - - /* unamed data type */ - group = H5Gcreate (fid, "/group2", 0); - - type = H5Tcreate (H5T_COMPOUND, sizeof(dset5_t)); - H5Tinsert(type, "int", HOFFSET(dset5_t, a), H5T_STD_I32BE); - H5Tinsert(type, "float", HOFFSET(dset5_t, b), H5T_IEEE_F32BE); - H5Tcommit(group, "type4", type); - dataset = H5Dcreate(group, "dset5", type, space, H5P_DEFAULT); - H5Dwrite(dataset, type, H5S_ALL, H5S_ALL, H5P_DEFAULT, dset5); - - H5Gunlink(group,"type4"); - - H5Tclose(type); - H5Dclose(dataset); - H5Sclose(space); - H5Gclose(group); - - H5Fclose(fid); - -} - -/* - / - / | \ \ - dset1 group1 type1 type2 - | - dset2 - -*/ -static void test_compound_dt2(void) { /* test compound data type */ -hid_t fid, group, dataset, space, type, create_plist; -typedef struct { - int a; - float b; - double c; -} dset1_t; -dset1_t dset1[10]; - -typedef struct { - int a; - float b; -} dset2_t; -dset2_t dset2[10]; - -typedef struct { - int a[4]; - float b[5][6]; -} dset3_t; - -typedef struct { - int a; - float b; -} dset4_t; -dset4_t dset4[10]; - -typedef struct { - int a; - float b; -} dset5_t; -dset5_t dset5[10]; - -int i, ndims; -const int perm[2]; -size_t dim[2]; - -hsize_t sdim, maxdim; - - sdim = 10; - for (i = 0; i < (int)sdim; i++) { - dset1[i].a = i; - dset1[i].b = i*i; - dset1[i].c = 1./(i+1); - - dset2[i].a = i; - dset2[i].b = i+ i*0.1; - - dset4[i].a = i; - dset4[i].b = i*1.0; - dset5[i].a = i; - dset5[i].b = i*1.0; + dset3_dim[0] = 3; dset3_dim[1] = 6; + space3 = H5Screate_simple(2, dset3_dim, NULL); + dataset = H5Dcreate(group, "dset3", type, space3, H5P_DEFAULT); + for (i = 0; i < dset3_dim[0]; i++) { + for (j = 0; j < dset3_dim[1]; j++) { + for (k = 0; k < 4; k++) + dset3[i][j].a[k] = k; + for (k = 0; k < 5; k++) + for (l = 0; l < 6; l++) + dset3[i][j].b[k][l] = 0.1* (k+1); + } } - - fid = H5Fcreate(FILE9, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - - create_plist = H5Pcreate(H5P_DATASET_CREATE); - - sdim = 2; - H5Pset_chunk(create_plist, 1, &sdim); - - sdim = 6; - maxdim = H5S_UNLIMITED; - - space = H5Screate_simple(1, &sdim, &maxdim); - - type = H5Tcreate (H5T_COMPOUND, sizeof(dset1[0])); - - H5Tinsert(type, "a_name", HOFFSET(dset1_t, a), H5T_STD_I32BE); - H5Tinsert(type, "b_name", HOFFSET(dset1_t, b), H5T_IEEE_F32BE); - H5Tinsert(type, "c_name", HOFFSET(dset1_t, c), H5T_IEEE_F64BE); - - dataset = H5Dcreate(fid, "/dset1", type, space, create_plist); - H5Dwrite(dataset, type, H5S_ALL, H5S_ALL, H5P_DEFAULT, dset1); - - H5Tclose(type); - H5Sclose(space); - H5Dclose(dataset); - - sdim = 6; - maxdim = 10; - - space = H5Screate_simple(1, &sdim, &maxdim); - - /* shared data type 1 */ - type = H5Tcreate (H5T_COMPOUND, sizeof(dset2_t)); - H5Tinsert(type, "int_name", HOFFSET(dset2_t, a), H5T_STD_I32BE); - H5Tinsert(type, "float_name", HOFFSET(dset2_t, b), H5T_IEEE_F32BE); - H5Tcommit(fid, "type1", type); - - group = H5Gcreate (fid, "/group1", 0); - - dataset = H5Dcreate(group, "dset2", type, space, create_plist); - H5Dwrite(dataset, type, H5S_ALL, H5S_ALL, H5P_DEFAULT, dset2); - + H5Dwrite(dataset, type, H5S_ALL, H5S_ALL, H5P_DEFAULT, dset3); + H5Sclose(space3); H5Tclose(type); H5Dclose(dataset); - - /* shared data type 2 */ - type = H5Tcreate (H5T_COMPOUND, sizeof(dset3_t)); - ndims = 1; dim[0] = 4; - H5Tinsert_array(type, "int_array", HOFFSET(dset3_t, a), ndims, dim, perm, H5T_STD_I32BE); - ndims = 2; dim[0] = 5; dim[1] = 6; - H5Tinsert_array(type, "float_array", HOFFSET(dset3_t, b), ndims, dim, perm, H5T_STD_I32BE); - H5Tcommit(fid, "type2", type); - H5Tclose(type); - /* shared data type 3 */ type = H5Tcreate (H5T_COMPOUND, sizeof(dset4_t)); H5Tinsert(type, "int", HOFFSET(dset4_t, a), H5T_STD_I32BE); H5Tinsert(type, "float", HOFFSET(dset4_t, b), H5T_IEEE_F32BE); H5Tcommit(group, "type3", type); - dataset = H5Dcreate(group, "dset4", type, space, create_plist); + dataset = H5Dcreate(group, "dset4", type, space, H5P_DEFAULT); H5Dwrite(dataset, type, H5S_ALL, H5S_ALL, H5P_DEFAULT, dset4); H5Tclose(type); @@ -512,7 +386,7 @@ hsize_t sdim, maxdim; H5Tinsert(type, "int", HOFFSET(dset5_t, a), H5T_STD_I32BE); H5Tinsert(type, "float", HOFFSET(dset5_t, b), H5T_IEEE_F32BE); H5Tcommit(group, "type4", type); - dataset = H5Dcreate(group, "dset5", type, space, create_plist); + dataset = H5Dcreate(group, "dset5", type, space, H5P_DEFAULT); H5Dwrite(dataset, type, H5S_ALL, H5S_ALL, H5P_DEFAULT, dset5); H5Gunlink(group,"type4"); @@ -526,6 +400,7 @@ hsize_t sdim, maxdim; } + /* / : g1 g2 attr1 attr2 @@ -568,9 +443,9 @@ float dset2_1[10], dset2_2[3][5]; dims[0] = 10; space = H5Screate_simple(1, dims, NULL); - attr = H5Acreate (group, "attr1", H5T_NATIVE_CHAR, space, H5P_DEFAULT); + attr = H5Acreate (group, "attr1", H5T_NATIVE_SCHAR, space, H5P_DEFAULT); sprintf(buf, "abcdefghi"); - H5Awrite(attr, H5T_NATIVE_CHAR, buf); + H5Awrite(attr, H5T_NATIVE_SCHAR, buf); H5Sclose(space); H5Aclose(attr); @@ -599,17 +474,17 @@ float dset2_1[10], dset2_2[3][5]; /* attributes of dset1.1.1 */ dims[0] = 27; space = H5Screate_simple(1, dims, NULL); - attr = H5Acreate (dataset, "attr1", H5T_NATIVE_CHAR, space, H5P_DEFAULT); + attr = H5Acreate (dataset, "attr1", H5T_NATIVE_SCHAR, space, H5P_DEFAULT); sprintf(buf, "1st attribute of dset1.1.1"); - H5Awrite(attr, H5T_NATIVE_CHAR, buf); + H5Awrite(attr, H5T_NATIVE_SCHAR, buf); H5Sclose(space); H5Aclose(attr); dims[0] = 27; space = H5Screate_simple(1, dims, NULL); - attr = H5Acreate (dataset, "attr2", H5T_NATIVE_CHAR, space, H5P_DEFAULT); + attr = H5Acreate (dataset, "attr2", H5T_NATIVE_SCHAR, space, H5P_DEFAULT); sprintf(buf, "2nd attribute of dset1.1.1"); - H5Awrite(attr, H5T_NATIVE_CHAR, buf); + H5Awrite(attr, H5T_NATIVE_SCHAR, buf); H5Sclose(space); H5Aclose(attr); @@ -661,6 +536,22 @@ float dset2_1[10], dset2_2[3][5]; } +static void test_loop(void) { +hid_t fid, group; + + fid = H5Fcreate(FILE10, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); + + group = H5Gcreate (fid, "/g1", 0); + H5Gclose(group); + group = H5Gcreate (fid, "/g2", 0); + H5Gclose(group); + + H5Glink(fid, H5G_LINK_HARD, "/g2", "/g1/g1.1"); + H5Glink(fid, H5G_LINK_HARD, "/g1", "/g2/g2.1"); + + H5Fclose(fid); +} + int main(void){ @@ -668,10 +559,9 @@ test_group(); test_attribute(); test_softlink(); test_dataset(); -test_dataset2(); test_hardlink(); test_compound_dt(); -test_compound_dt2(); +test_loop(); test_all(); return 0; |