summaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorRuey-Hsia Li <rli@ncsa.uiuc.edu>1998-12-17 21:53:07 (GMT)
committerRuey-Hsia Li <rli@ncsa.uiuc.edu>1998-12-17 21:53:07 (GMT)
commitc91120b4b8717dbb1b9e37c6f578c4f1fcb073ae (patch)
tree4ad8884b36177c362f8d21c68d7d4da22ebdf21e /tools
parent09aaf83332da95084928082e0a8b834460c47dbf (diff)
downloadhdf5-c91120b4b8717dbb1b9e37c6f578c4f1fcb073ae.zip
hdf5-c91120b4b8717dbb1b9e37c6f578c4f1fcb073ae.tar.gz
hdf5-c91120b4b8717dbb1b9e37c6f578c4f1fcb073ae.tar.bz2
[svn-r973] Added tests for scalar data space, string data type, loop detection and
compound data type.
Diffstat (limited to 'tools')
-rw-r--r--tools/testfiles/h5dumptst.c344
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;