diff options
Diffstat (limited to 'test/tmisc.c')
-rw-r--r-- | test/tmisc.c | 111 |
1 files changed, 110 insertions, 1 deletions
diff --git a/test/tmisc.c b/test/tmisc.c index 6b3caac..0d2ffcd 100644 --- a/test/tmisc.c +++ b/test/tmisc.c @@ -112,6 +112,13 @@ typedef struct #define MISC6_DSETNAME2 "dset2" #define MISC6_NUMATTR 16 +/* Definitions for misc. test #7 */ +#define MISC7_FILE "tmisc7.h5" +#define MISC7_DSETNAME1 "Dataset1" +#define MISC7_DSETNAME2 "Dataset2" +#define MISC7_TYPENAME1 "Datatype1" +#define MISC7_TYPENAME2 "Datatype2" + /**************************************************************** ** ** test_misc1(): test unlinking a dataset from a group and immediately @@ -905,6 +912,106 @@ test_misc6(void) /**************************************************************** ** +** test_misc7(): Test that datatypes are sensible to store on +** disk. (i.e. not partially initialized) +** +****************************************************************/ +static void +test_misc7(void) +{ + hid_t fid, did, tid, sid; + int enum_value=1; + herr_t ret; + + /* Output message about test being performed */ + MESSAGE(5, ("Testing sensible datatype on disk code \n")); + + /* Attempt to commit a non-sensible datatype */ + + /* Create the file */ + fid=H5Fcreate(MISC7_FILE,H5F_ACC_TRUNC,H5P_DEFAULT,H5P_DEFAULT); + CHECK(fid,FAIL,"H5Fcreate"); + + /* Create the dataspace */ + sid=H5Screate(H5S_SCALAR); + CHECK(sid,FAIL,"H5Screate"); + + /* Create the compound datatype to commit*/ + tid=H5Tcreate(H5T_COMPOUND,32); + CHECK(tid,FAIL,"H5Tcreate"); + + /* Attempt to commit an empty compound datatype */ + ret=H5Tcommit(fid,MISC7_TYPENAME1,tid); + VERIFY(ret,FAIL,"H5Tcommit"); + + /* Attempt to use empty compound datatype to create dataset */ + did=H5Dcreate(fid,MISC7_DSETNAME1,tid,sid,H5P_DEFAULT); + VERIFY(ret,FAIL,"H5Dcreate"); + + /* Add a field to the compound datatype */ + ret=H5Tinsert(tid,"a",0,H5T_NATIVE_INT); + CHECK(ret,FAIL,"H5Tinsert"); + + /* Attempt to commit the compound datatype now - should work */ + ret=H5Tcommit(fid,MISC7_TYPENAME1,tid); + CHECK(ret,FAIL,"H5Tcommit"); + + /* Attempt to use compound datatype to create dataset now - should work */ + did=H5Dcreate(fid,MISC7_DSETNAME1,tid,sid,H5P_DEFAULT); + CHECK(did,FAIL,"H5Dcreate"); + + /* Close dataset */ + ret=H5Dclose(did); + CHECK(ret, FAIL, "H5Dclose"); + + /* Close compound datatype */ + ret=H5Tclose(tid); + CHECK(ret, FAIL, "H5Tclose"); + + /* Create the enum datatype to commit*/ + tid=H5Tenum_create(H5T_NATIVE_INT); + CHECK(tid,FAIL,"H5Tenum_create"); + + /* Attempt to commit an empty enum datatype */ + ret=H5Tcommit(fid,MISC7_TYPENAME2,tid); + VERIFY(ret,FAIL,"H5Tcommit"); + + /* Attempt to use empty enum datatype to create dataset */ + did=H5Dcreate(fid,MISC7_DSETNAME2,tid,sid,H5P_DEFAULT); + VERIFY(did,FAIL,"H5Dcreate"); + + /* Add a member to the enum datatype */ + ret=H5Tenum_insert(tid,"a",&enum_value); + CHECK(ret,FAIL,"H5Tenum_insert"); + + /* Attempt to commit the enum datatype now - should work */ + ret=H5Tcommit(fid,MISC7_TYPENAME2,tid); + CHECK(ret,FAIL,"H5Tcommit"); + + /* Attempt to use enum datatype to create dataset now - should work */ + did=H5Dcreate(fid,MISC7_DSETNAME2,tid,sid,H5P_DEFAULT); + CHECK(did,FAIL,"H5Dcreate"); + + /* Close dataset */ + ret=H5Dclose(did); + CHECK(ret, FAIL, "H5Dclose"); + + /* Close enum datatype */ + ret=H5Tclose(tid); + CHECK(ret, FAIL, "H5Tclose"); + + /* Close dataspace */ + ret=H5Sclose(sid); + CHECK(ret, FAIL, "H5Sclose"); + + /* Close file */ + ret=H5Fclose(fid); + CHECK(ret, FAIL, "H5Fclose"); + +} /* end test_misc7() */ + +/**************************************************************** +** ** test_misc(): Main misc. test routine. ** ****************************************************************/ @@ -919,7 +1026,8 @@ test_misc(void) test_misc3(); /* Test reading from chunked dataset with non-zero fill value */ test_misc4(); /* Test retrieving the fileno for various objects with H5Gget_objinfo() */ test_misc5(); /* Test several level deep nested compound & VL datatypes */ - test_misc6(); /* Test object header continuation code */ + test_misc6(); /* Test object header continuation code */ + test_misc7(); /* Test for sensible datatypes stored on disk */ } /* test_misc() */ @@ -949,4 +1057,5 @@ cleanup_misc(void) remove(MISC4_FILE_2); remove(MISC5_FILE); remove(MISC6_FILE); + remove(MISC7_FILE); } |