diff options
-rw-r--r-- | tools/h5dumptst.c | 58 | ||||
-rw-r--r-- | tools/testfiles/tempty.ddl | 65 | ||||
-rw-r--r-- | tools/testfiles/tempty.h5 | bin | 0 -> 4304 bytes | |||
-rw-r--r-- | tools/testfiles/tempty.ls | 18 | ||||
-rwxr-xr-x | tools/testh5dump.sh | 6 | ||||
-rwxr-xr-x | tools/testh5ls.sh | 3 |
6 files changed, 147 insertions, 3 deletions
diff --git a/tools/h5dumptst.c b/tools/h5dumptst.c index c1c59d2..f31658e 100644 --- a/tools/h5dumptst.c +++ b/tools/h5dumptst.c @@ -36,6 +36,7 @@ #define FILE29 "tarray5.h5" #define FILE30 "tarray6.h5" #define FILE31 "tarray7.h5" +#define FILE32 "tempty.h5" #define LENSTR 50 #define LENSTR2 11 @@ -2466,6 +2467,61 @@ static void test_array7(void) ret = H5Fclose(fid1); } +static void test_empty(void) +{ + typedef struct { + int a; + float b; + char c; + } empty_struct; + hid_t file, dset, space, type; + hsize_t dims[] = { SPACE1_DIM1 }; + herr_t ret=0; + + ret = ret; /* so that compiler won't complain "is set but never used" */ + file = H5Fcreate(FILE32, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); + + space = H5Screate_simple(SPACE1_RANK, dims, NULL); + + /* write out an empty vlen dataset */ + type = H5Tvlen_create(H5T_NATIVE_INT); + dset = H5Dcreate(file, "Dataset1.0", type, space, H5P_DEFAULT); + /* Don't write any data */ + ret = H5Dclose(dset); + ret = H5Tclose(type); + + /* write out an empty native integer dataset dataset */ + dset = H5Dcreate(file, "Dataset2.0", H5T_NATIVE_INT, space, H5P_DEFAULT); + /* Don't write any data */ + ret = H5Dclose(dset); + + /* write out an empty native floating-point dataset dataset */ + dset = H5Dcreate(file, "Dataset3.0", H5T_NATIVE_FLOAT, space, H5P_DEFAULT); + /* Don't write any data */ + ret = H5Dclose(dset); + + /* write out an empty array dataset */ + type = H5Tarray_create(H5T_NATIVE_INT,SPACE1_RANK,dims,NULL); + dset = H5Dcreate(file, "Dataset4.0", type, space, H5P_DEFAULT); + /* Don't write any data */ + ret = H5Dclose(dset); + ret = H5Tclose(type); + + /* write out an empty compound dataset */ + type = H5Tcreate(H5T_COMPOUND,sizeof(empty_struct)); + H5Tinsert(type, "a", HOFFSET(empty_struct, a),H5T_NATIVE_INT); + H5Tinsert(type, "b", HOFFSET(empty_struct, b),H5T_NATIVE_FLOAT); + H5Tinsert(type, "c", HOFFSET(empty_struct, c),H5T_NATIVE_CHAR); + dset = H5Dcreate(file, "Dataset5.0", type, space, H5P_DEFAULT); + /* Don't write any data */ + ret = H5Dclose(dset); + ret = H5Tclose(type); + + ret = H5Sclose(space); + + ret = H5Fclose(file); +} + int main(void) { test_group(); @@ -2509,5 +2565,7 @@ int main(void) test_array6(); test_array7(); + test_empty(); + return 0; } diff --git a/tools/testfiles/tempty.ddl b/tools/testfiles/tempty.ddl new file mode 100644 index 0000000..7751725 --- /dev/null +++ b/tools/testfiles/tempty.ddl @@ -0,0 +1,65 @@ +############################# +Expected output for 'h5dump tempty.h5' +############################# +HDF5 "tempty.h5" { +GROUP "/" { + DATASET "Dataset1.0" { + DATATYPE H5T_VLEN { H5T_STD_I32LE} + DATASPACE SIMPLE { ( 4 ) / ( 4 ) } + DATA { + (), (), (), () + } + } + DATASET "Dataset2.0" { + DATATYPE H5T_STD_I32LE + DATASPACE SIMPLE { ( 4 ) / ( 4 ) } + DATA { + 0, 0, 0, 0 + } + } + DATASET "Dataset3.0" { + DATATYPE H5T_IEEE_F32LE + DATASPACE SIMPLE { ( 4 ) / ( 4 ) } + DATA { + 0, 0, 0, 0 + } + } + DATASET "Dataset4.0" { + DATATYPE H5T_ARRAY { [4] H5T_STD_I32LE } + DATASPACE SIMPLE { ( 4 ) / ( 4 ) } + DATA { + [ 0, 0, 0, 0 ], [ 0, 0, 0, 0 ], [ 0, 0, 0, 0 ], [ 0, 0, 0, 0 ] + } + } + DATASET "Dataset5.0" { + DATATYPE H5T_COMPOUND { + H5T_STD_I32LE "a"; + H5T_IEEE_F32LE "b"; + H5T_STD_I8LE "c"; + } + DATASPACE SIMPLE { ( 4 ) / ( 4 ) } + DATA { + { + 0, + 0, + 0 + }, + { + 0, + 0, + 0 + }, + { + 0, + 0, + 0 + }, + { + 0, + 0, + 0 + } + } + } +} +} diff --git a/tools/testfiles/tempty.h5 b/tools/testfiles/tempty.h5 Binary files differnew file mode 100644 index 0000000..ad4c2c4 --- /dev/null +++ b/tools/testfiles/tempty.h5 diff --git a/tools/testfiles/tempty.ls b/tools/testfiles/tempty.ls new file mode 100644 index 0000000..96ea64a --- /dev/null +++ b/tools/testfiles/tempty.ls @@ -0,0 +1,18 @@ +############################# + output for 'h5ls -w80 -d tempty.h5' +############################# +Dataset1.0 Dataset {4} + Data: + (0) (), (), (), () +Dataset2.0 Dataset {4} + Data: + (0) 0, 0, 0, 0 +Dataset3.0 Dataset {4} + Data: + (0) 0, 0, 0, 0 +Dataset4.0 Dataset {4} + Data: + (0) [0,0,0,0], [0,0,0,0], [0,0,0,0], [0,0,0,0] +Dataset5.0 Dataset {4} + Data: + (0) {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0} diff --git a/tools/testh5dump.sh b/tools/testh5dump.sh index d11c388..8046a10 100755 --- a/tools/testh5dump.sh +++ b/tools/testh5dump.sh @@ -128,20 +128,20 @@ TOOLTEST tsaf.ddl tsaf.h5 TOOLTEST tvldtypes1.ddl tvldtypes1.h5 TOOLTEST tvldtypes2.ddl tvldtypes2.h5 TOOLTEST tvldtypes3.ddl tvldtypes3.h5 -#dumping tvldtypes4.h5 is causing core-dumps on modi4 currently - QAK TOOLTEST tvldtypes4.ddl tvldtypes4.h5 # test for files with array data TOOLTEST tarray1.ddl tarray1.h5 TOOLTEST tarray2.ddl tarray2.h5 TOOLTEST tarray3.ddl tarray3.h5 -#dumping tarray4.h5 is causing core-dumps on modi4 currently - QAK TOOLTEST tarray4.ddl tarray4.h5 -#dumping tarray5.h5 is causing core-dumps on hawkwind currently - QAK TOOLTEST tarray5.ddl tarray5.h5 TOOLTEST tarray6.ddl tarray6.h5 TOOLTEST tarray7.ddl tarray7.h5 +# test for files with empty data +TOOLTEST tempty.ddl tempty.h5 + if test $nerrors -eq 0 ; then echo "All $h5tool tests passed." fi diff --git a/tools/testh5ls.sh b/tools/testh5ls.sh index 7e37100..7681b47 100755 --- a/tools/testh5ls.sh +++ b/tools/testh5ls.sh @@ -130,6 +130,9 @@ TOOLTEST tvldtypes1.ls -w80 -r -d tvldtypes1.h5 # test for array data types TOOLTEST tarray1.ls -w80 -r -d tarray1.h5 +# test for empty data +TOOLTEST tempty.ls -w80 -d tempty.h5 + if test $nerrors -eq 0 ; then echo "All $h5tool tests passed." fi |