1997-07-31 05:17:56 +08:00
|
|
|
|
/****************************************************************************
|
1998-04-09 05:43:02 +08:00
|
|
|
|
* NCSA HDF *
|
|
|
|
|
* Software Development Group *
|
|
|
|
|
* National Center for Supercomputing Applications *
|
|
|
|
|
* University of Illinois at Urbana-Champaign *
|
|
|
|
|
* 605 E. Springfield, Champaign IL 61820 *
|
|
|
|
|
* *
|
|
|
|
|
* For conditions of distribution and use, see the accompanying *
|
|
|
|
|
* hdf/COPYING file. *
|
|
|
|
|
* *
|
1997-07-31 05:17:56 +08:00
|
|
|
|
****************************************************************************/
|
|
|
|
|
|
|
|
|
|
/* $Id$ */
|
|
|
|
|
|
|
|
|
|
/***********************************************************
|
|
|
|
|
*
|
1998-04-09 05:43:02 +08:00
|
|
|
|
* Test program: tfile
|
1997-07-31 05:17:56 +08:00
|
|
|
|
*
|
|
|
|
|
* Test the low-level file I/O features.
|
|
|
|
|
*
|
|
|
|
|
*************************************************************/
|
|
|
|
|
|
2001-11-21 02:47:15 +08:00
|
|
|
|
#include "hdf5.h"
|
2001-04-04 02:09:16 +08:00
|
|
|
|
#include "testhdf5.h"
|
1997-07-31 05:17:56 +08:00
|
|
|
|
|
2001-04-04 02:09:16 +08:00
|
|
|
|
#include "H5Bprivate.h"
|
|
|
|
|
#include "H5Pprivate.h"
|
1997-08-16 00:53:11 +08:00
|
|
|
|
|
1998-04-09 05:43:02 +08:00
|
|
|
|
#define F1_USERBLOCK_SIZE (hsize_t)0
|
1999-08-18 03:12:59 +08:00
|
|
|
|
#define F1_OFFSET_SIZE sizeof(haddr_t)
|
1998-04-09 05:43:02 +08:00
|
|
|
|
#define F1_LENGTH_SIZE sizeof(hsize_t)
|
|
|
|
|
#define F1_SYM_LEAF_K 4
|
|
|
|
|
#define F1_SYM_INTERN_K 16
|
|
|
|
|
#define FILE1 "tfile1.h5"
|
|
|
|
|
|
|
|
|
|
#define F2_USERBLOCK_SIZE (hsize_t)512
|
|
|
|
|
#define F2_OFFSET_SIZE 8
|
|
|
|
|
#define F2_LENGTH_SIZE 8
|
|
|
|
|
#define F2_SYM_LEAF_K 8
|
|
|
|
|
#define F2_SYM_INTERN_K 32
|
2001-04-24 04:05:15 +08:00
|
|
|
|
#define F2_RANK 2
|
|
|
|
|
#define F2_DIM0 4
|
|
|
|
|
#define F2_DIM1 6
|
1998-04-09 05:43:02 +08:00
|
|
|
|
#define FILE2 "tfile2.h5"
|
|
|
|
|
|
|
|
|
|
#define F3_USERBLOCK_SIZE (hsize_t)0
|
|
|
|
|
#define F3_OFFSET_SIZE F2_OFFSET_SIZE
|
|
|
|
|
#define F3_LENGTH_SIZE F2_LENGTH_SIZE
|
|
|
|
|
#define F3_SYM_LEAF_K F2_SYM_LEAF_K
|
|
|
|
|
#define F3_SYM_INTERN_K F2_SYM_INTERN_K
|
|
|
|
|
#define FILE3 "tfile3.h5"
|
1997-07-31 05:17:56 +08:00
|
|
|
|
|
|
|
|
|
/****************************************************************
|
|
|
|
|
**
|
|
|
|
|
** test_file_create(): Low-level file creation I/O test routine.
|
|
|
|
|
**
|
|
|
|
|
****************************************************************/
|
1998-01-17 06:23:43 +08:00
|
|
|
|
static void
|
|
|
|
|
test_file_create(void)
|
1997-07-31 05:17:56 +08:00
|
|
|
|
{
|
1998-04-09 05:43:02 +08:00
|
|
|
|
hid_t fid1, fid2, fid3; /* HDF5 File IDs */
|
|
|
|
|
hid_t tmpl1, tmpl2; /*file creation templates */
|
|
|
|
|
hsize_t ublock; /*sizeof userblock */
|
|
|
|
|
size_t parm; /*file-creation parameters */
|
|
|
|
|
size_t parm2; /*file-creation parameters */
|
2001-11-04 06:27:54 +08:00
|
|
|
|
int iparm;
|
2001-12-06 00:42:40 +08:00
|
|
|
|
#ifdef H5_WANT_H5_V1_4_COMPAT
|
|
|
|
|
int iparm2;
|
|
|
|
|
#else /* H5_WANT_H5_V1_4_COMPAT */
|
2001-11-04 06:27:54 +08:00
|
|
|
|
unsigned iparm2;
|
2001-12-06 00:42:40 +08:00
|
|
|
|
#endif /* H5_WANT_H5_V1_4_COMPAT */
|
1998-04-09 05:43:02 +08:00
|
|
|
|
herr_t ret; /*generic return value */
|
1997-07-31 05:17:56 +08:00
|
|
|
|
|
|
|
|
|
/* Output message about test being performed */
|
1997-08-30 00:59:28 +08:00
|
|
|
|
MESSAGE(5, ("Testing Low-Level File Creation I/O\n"));
|
1997-07-31 05:17:56 +08:00
|
|
|
|
|
1998-04-24 06:08:16 +08:00
|
|
|
|
/* Test create with various sequences of H5F_ACC_EXCL and */
|
|
|
|
|
/* H5F_ACC_TRUNC flags */
|
|
|
|
|
|
|
|
|
|
/* Create with H5F_ACC_EXCL */
|
|
|
|
|
/* First ensure the file does not exist */
|
|
|
|
|
remove(FILE1);
|
|
|
|
|
fid1 = H5Fcreate(FILE1, H5F_ACC_EXCL, H5P_DEFAULT, H5P_DEFAULT);
|
|
|
|
|
CHECK(fid1, FAIL, "H5Fcreate");
|
|
|
|
|
|
1999-08-11 04:21:32 +08:00
|
|
|
|
/*
|
|
|
|
|
* try to create the same file with H5F_ACC_TRUNC. This should fail
|
|
|
|
|
* because fid1 is the same file and is currently open.
|
|
|
|
|
*/
|
1998-04-24 06:08:16 +08:00
|
|
|
|
fid2 = H5Fcreate(FILE1, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
|
|
|
|
|
VERIFY(fid2, FAIL, "H5Fcreate");
|
|
|
|
|
|
1999-08-11 04:21:32 +08:00
|
|
|
|
/* Close all files */
|
1998-04-24 06:08:16 +08:00
|
|
|
|
ret = H5Fclose(fid1);
|
|
|
|
|
CHECK(ret, FAIL, "H5Fclose");
|
1999-08-11 04:21:32 +08:00
|
|
|
|
ret = H5Fclose(fid2);
|
2001-01-17 02:11:54 +08:00
|
|
|
|
VERIFY(ret, FAIL, "H5Fclose"); /*file should not have been open */
|
1998-04-24 06:08:16 +08:00
|
|
|
|
|
1999-08-11 04:21:32 +08:00
|
|
|
|
/*
|
|
|
|
|
* Try again with H5F_ACC_EXCL. This should fail because the file already
|
|
|
|
|
* exists from the previous steps.
|
|
|
|
|
*/
|
1998-04-24 06:08:16 +08:00
|
|
|
|
fid1 = H5Fcreate(FILE1, H5F_ACC_EXCL, H5P_DEFAULT, H5P_DEFAULT);
|
|
|
|
|
VERIFY(fid1, FAIL, "H5Fcreate");
|
|
|
|
|
|
1999-08-11 04:21:32 +08:00
|
|
|
|
/* Test create with H5F_ACC_TRUNC. This will truncate the existing file. */
|
1998-02-26 03:13:49 +08:00
|
|
|
|
fid1 = H5Fcreate(FILE1, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
|
1998-01-17 06:23:43 +08:00
|
|
|
|
CHECK(fid1, FAIL, "H5Fcreate");
|
1997-07-31 05:17:56 +08:00
|
|
|
|
|
1999-08-11 04:21:32 +08:00
|
|
|
|
/*
|
|
|
|
|
* Try to truncate first file again. This should fail because fid1 is the
|
|
|
|
|
* same file and is currently open.
|
|
|
|
|
*/
|
1998-02-26 03:13:49 +08:00
|
|
|
|
fid2 = H5Fcreate(FILE1, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
|
1998-01-17 06:23:43 +08:00
|
|
|
|
VERIFY(fid2, FAIL, "H5Fcreate");
|
1997-07-31 05:17:56 +08:00
|
|
|
|
|
1999-08-11 04:21:32 +08:00
|
|
|
|
/*
|
|
|
|
|
* Try with H5F_ACC_EXCL. This should fail too because the file already
|
|
|
|
|
* exists.
|
|
|
|
|
*/
|
1998-04-24 06:08:16 +08:00
|
|
|
|
fid2 = H5Fcreate(FILE1, H5F_ACC_EXCL, H5P_DEFAULT, H5P_DEFAULT);
|
|
|
|
|
VERIFY(fid2, FAIL, "H5Fcreate");
|
|
|
|
|
|
1997-07-31 05:17:56 +08:00
|
|
|
|
/* Get the file-creation template */
|
1998-09-09 03:15:44 +08:00
|
|
|
|
tmpl1 = H5Fget_create_plist(fid1);
|
|
|
|
|
CHECK(tmpl1, FAIL, "H5Fget_create_plist");
|
1997-07-31 05:17:56 +08:00
|
|
|
|
|
|
|
|
|
/* Get the file-creation parameters */
|
1998-04-09 05:43:02 +08:00
|
|
|
|
ret = H5Pget_userblock(tmpl1, &ublock);
|
1998-02-26 03:13:49 +08:00
|
|
|
|
CHECK(ret, FAIL, "H5Pget_userblock");
|
1998-04-09 05:43:02 +08:00
|
|
|
|
VERIFY(ublock, F1_USERBLOCK_SIZE, "H5Pget_userblock");
|
1997-07-31 05:17:56 +08:00
|
|
|
|
|
1998-02-26 03:13:49 +08:00
|
|
|
|
ret = H5Pget_sizes(tmpl1, &parm, &parm2);
|
|
|
|
|
CHECK(ret, FAIL, "H5Pget_sizes");
|
|
|
|
|
VERIFY(parm, F1_OFFSET_SIZE, "H5Pget_sizes");
|
|
|
|
|
VERIFY(parm2, F1_LENGTH_SIZE, "H5Pget_sizes");
|
1997-07-31 05:17:56 +08:00
|
|
|
|
|
1998-02-26 03:13:49 +08:00
|
|
|
|
ret = H5Pget_sym_k(tmpl1, &iparm, &iparm2);
|
|
|
|
|
CHECK(ret, FAIL, "H5Pget_sym_k");
|
|
|
|
|
VERIFY(iparm, F1_SYM_INTERN_K, "H5Pget_sym_k");
|
|
|
|
|
VERIFY(iparm2, F1_SYM_LEAF_K, "H5Pget_sym_k");
|
1997-07-31 05:17:56 +08:00
|
|
|
|
|
|
|
|
|
/* Release file-creation template */
|
1998-03-13 05:04:53 +08:00
|
|
|
|
ret = H5Pclose(tmpl1);
|
|
|
|
|
CHECK(ret, FAIL, "H5Pclose");
|
1998-01-17 06:23:43 +08:00
|
|
|
|
|
1998-02-20 02:26:49 +08:00
|
|
|
|
#ifdef LATER
|
1997-07-31 05:17:56 +08:00
|
|
|
|
/* Double-check that the atom has been vaporized */
|
1998-03-13 05:04:53 +08:00
|
|
|
|
ret = H5Pclose(tmpl1);
|
|
|
|
|
VERIFY(ret, FAIL, "H5Pclose");
|
1998-02-20 02:26:49 +08:00
|
|
|
|
#endif
|
1997-07-31 05:17:56 +08:00
|
|
|
|
|
|
|
|
|
/* Create a new file with a non-standard file-creation template */
|
1998-02-26 03:13:49 +08:00
|
|
|
|
tmpl1 = H5Pcreate(H5P_FILE_CREATE);
|
|
|
|
|
CHECK(tmpl1, FAIL, "H5Pnew");
|
1997-07-31 05:17:56 +08:00
|
|
|
|
|
|
|
|
|
/* Set the new file-creation parameters */
|
1998-02-26 03:13:49 +08:00
|
|
|
|
ret = H5Pset_userblock(tmpl1, F2_USERBLOCK_SIZE);
|
|
|
|
|
CHECK(ret, FAIL, "H5Pset_userblock");
|
1997-07-31 05:17:56 +08:00
|
|
|
|
|
1998-02-26 03:13:49 +08:00
|
|
|
|
ret = H5Pset_sizes(tmpl1, F2_OFFSET_SIZE, F2_LENGTH_SIZE);
|
|
|
|
|
CHECK(ret, FAIL, "H5Pset_sizes");
|
1997-07-31 05:17:56 +08:00
|
|
|
|
|
1998-02-26 03:13:49 +08:00
|
|
|
|
ret = H5Pset_sym_k(tmpl1, F2_SYM_INTERN_K, F2_SYM_LEAF_K);
|
|
|
|
|
CHECK(ret, FAIL, "H5Pset_sym_k");
|
1997-08-13 23:37:09 +08:00
|
|
|
|
|
1998-01-08 01:14:26 +08:00
|
|
|
|
/*
|
|
|
|
|
* Try to create second file, with non-standard file-creation template
|
|
|
|
|
* params.
|
|
|
|
|
*/
|
1998-02-26 03:13:49 +08:00
|
|
|
|
fid2 = H5Fcreate(FILE2, H5F_ACC_TRUNC, tmpl1, H5P_DEFAULT);
|
1998-01-17 06:23:43 +08:00
|
|
|
|
CHECK(fid2, FAIL, "H5Fcreate");
|
1997-07-31 05:17:56 +08:00
|
|
|
|
|
|
|
|
|
/* Release file-creation template */
|
1998-03-13 05:04:53 +08:00
|
|
|
|
ret = H5Pclose(tmpl1);
|
|
|
|
|
CHECK(ret, FAIL, "H5Pclose");
|
1998-01-17 06:23:43 +08:00
|
|
|
|
|
2001-04-24 04:05:15 +08:00
|
|
|
|
/* Make certain we can create a dataset properly in the file with the userblock */
|
|
|
|
|
{
|
|
|
|
|
hid_t dataset_id, dataspace_id; /* identifiers */
|
|
|
|
|
hsize_t dims[F2_RANK];
|
|
|
|
|
int data[F2_DIM0][F2_DIM1];
|
2001-10-06 06:27:58 +08:00
|
|
|
|
unsigned i,j;
|
2001-04-24 04:05:15 +08:00
|
|
|
|
|
|
|
|
|
/* Create the data space for the dataset. */
|
|
|
|
|
dims[0] = F2_DIM0;
|
|
|
|
|
dims[1] = F2_DIM1;
|
|
|
|
|
dataspace_id = H5Screate_simple(F2_RANK, dims, NULL);
|
|
|
|
|
CHECK(dataspace_id, FAIL, "H5Screate_simple");
|
|
|
|
|
|
|
|
|
|
/* Create the dataset. */
|
|
|
|
|
dataset_id = H5Dcreate(fid2, "/dset", H5T_NATIVE_INT, dataspace_id, H5P_DEFAULT);
|
|
|
|
|
CHECK(dataset_id, FAIL, "H5Dcreate");
|
|
|
|
|
|
2001-10-06 06:27:58 +08:00
|
|
|
|
for(i=0; i<F2_DIM0; i++)
|
|
|
|
|
for(j=0; j<F2_DIM1; j++)
|
|
|
|
|
data[i][j]=i*10+j;
|
|
|
|
|
|
2001-04-24 04:05:15 +08:00
|
|
|
|
/* Write data to the new dataset */
|
|
|
|
|
ret = H5Dwrite(dataset_id, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, data);
|
|
|
|
|
CHECK(ret, FAIL, "H5Dwrite");
|
|
|
|
|
|
|
|
|
|
/* End access to the dataset and release resources used by it. */
|
|
|
|
|
ret = H5Dclose(dataset_id);
|
|
|
|
|
CHECK(ret, FAIL, "H5Dclose");
|
|
|
|
|
|
|
|
|
|
/* Terminate access to the data space. */
|
|
|
|
|
ret = H5Sclose(dataspace_id);
|
|
|
|
|
CHECK(ret, FAIL, "H5Sclose");
|
|
|
|
|
}
|
|
|
|
|
|
1997-07-31 05:17:56 +08:00
|
|
|
|
/* Get the file-creation template */
|
1998-09-09 03:15:44 +08:00
|
|
|
|
tmpl1 = H5Fget_create_plist(fid2);
|
|
|
|
|
CHECK(tmpl1, FAIL, "H5Fget_create_plist");
|
1997-07-31 05:17:56 +08:00
|
|
|
|
|
|
|
|
|
/* Get the file-creation parameters */
|
1998-04-09 05:43:02 +08:00
|
|
|
|
ret = H5Pget_userblock(tmpl1, &ublock);
|
1998-02-26 03:13:49 +08:00
|
|
|
|
CHECK(ret, FAIL, "H5Pget_userblock");
|
1998-04-09 05:43:02 +08:00
|
|
|
|
VERIFY(ublock, F2_USERBLOCK_SIZE, "H5Pget_userblock");
|
1997-07-31 05:17:56 +08:00
|
|
|
|
|
1998-02-26 03:13:49 +08:00
|
|
|
|
ret = H5Pget_sizes(tmpl1, &parm, &parm2);
|
|
|
|
|
CHECK(ret, FAIL, "H5Pget_sizes");
|
|
|
|
|
VERIFY(parm, F2_OFFSET_SIZE, "H5Pget_sizes");
|
|
|
|
|
VERIFY(parm2, F2_LENGTH_SIZE, "H5Pget_sizes");
|
1997-08-13 23:37:09 +08:00
|
|
|
|
|
1998-02-26 03:13:49 +08:00
|
|
|
|
ret = H5Pget_sym_k(tmpl1, &iparm, &iparm2);
|
|
|
|
|
CHECK(ret, FAIL, "H5Pget_sym_k");
|
|
|
|
|
VERIFY(iparm, F2_SYM_INTERN_K, "H5Pget_sym_k");
|
|
|
|
|
VERIFY(iparm2, F2_SYM_LEAF_K, "H5Pget_sym_k");
|
1997-07-31 05:17:56 +08:00
|
|
|
|
|
|
|
|
|
/* Clone the file-creation template */
|
1998-03-13 05:04:53 +08:00
|
|
|
|
tmpl2 = H5Pcopy(tmpl1);
|
|
|
|
|
CHECK(tmpl2, FAIL, "H5Pcopy");
|
1997-07-31 05:17:56 +08:00
|
|
|
|
|
|
|
|
|
/* Release file-creation template */
|
1998-03-13 05:04:53 +08:00
|
|
|
|
ret = H5Pclose(tmpl1);
|
|
|
|
|
CHECK(ret, FAIL, "H5Pclose");
|
1997-07-31 05:17:56 +08:00
|
|
|
|
|
|
|
|
|
/* Set the new file-creation parameter */
|
1998-02-26 03:13:49 +08:00
|
|
|
|
ret = H5Pset_userblock(tmpl2, F3_USERBLOCK_SIZE);
|
|
|
|
|
CHECK(ret, FAIL, "H5Pset_userblock");
|
1997-07-31 05:17:56 +08:00
|
|
|
|
|
1998-01-08 01:14:26 +08:00
|
|
|
|
/*
|
|
|
|
|
* Try to create second file, with non-standard file-creation template
|
|
|
|
|
* params
|
|
|
|
|
*/
|
1998-02-26 03:13:49 +08:00
|
|
|
|
fid3 = H5Fcreate(FILE3, H5F_ACC_TRUNC, tmpl2, H5P_DEFAULT);
|
1998-01-17 06:23:43 +08:00
|
|
|
|
CHECK(fid3, FAIL, "H5Fcreate");
|
1997-07-31 05:17:56 +08:00
|
|
|
|
|
|
|
|
|
/* Release file-creation template */
|
1998-03-13 05:04:53 +08:00
|
|
|
|
ret = H5Pclose(tmpl2);
|
|
|
|
|
CHECK(ret, FAIL, "H5Pclose");
|
1997-07-31 05:17:56 +08:00
|
|
|
|
|
|
|
|
|
/* Get the file-creation template */
|
1998-09-09 03:15:44 +08:00
|
|
|
|
tmpl1 = H5Fget_create_plist(fid3);
|
|
|
|
|
CHECK(tmpl1, FAIL, "H5Fget_create_plist");
|
1997-07-31 05:17:56 +08:00
|
|
|
|
|
|
|
|
|
/* Get the file-creation parameters */
|
1998-04-09 05:43:02 +08:00
|
|
|
|
ret = H5Pget_userblock(tmpl1, &ublock);
|
1998-02-26 03:13:49 +08:00
|
|
|
|
CHECK(ret, FAIL, "H5Pget_userblock");
|
1998-04-09 05:43:02 +08:00
|
|
|
|
VERIFY(ublock, F3_USERBLOCK_SIZE, "H5Pget_userblock");
|
1997-07-31 05:17:56 +08:00
|
|
|
|
|
1998-02-26 03:13:49 +08:00
|
|
|
|
ret = H5Pget_sizes(tmpl1, &parm, &parm2);
|
|
|
|
|
CHECK(ret, FAIL, "H5Pget_sizes");
|
|
|
|
|
VERIFY(parm, F3_OFFSET_SIZE, "H5Pget_sizes");
|
|
|
|
|
VERIFY(parm2, F3_LENGTH_SIZE, "H5Pget_sizes");
|
1997-07-31 05:17:56 +08:00
|
|
|
|
|
1998-02-26 03:13:49 +08:00
|
|
|
|
ret = H5Pget_sym_k(tmpl1, &iparm, &iparm2);
|
|
|
|
|
CHECK(ret, FAIL, "H5Pget_sym_k");
|
|
|
|
|
VERIFY(iparm, F3_SYM_INTERN_K, "H5Pget_sym_k");
|
|
|
|
|
VERIFY(iparm2, F3_SYM_LEAF_K, "H5Pget_sym_k");
|
1997-07-31 05:17:56 +08:00
|
|
|
|
|
|
|
|
|
/* Release file-creation template */
|
1998-03-13 05:04:53 +08:00
|
|
|
|
ret = H5Pclose(tmpl1);
|
|
|
|
|
CHECK(ret, FAIL, "H5Pclose");
|
1997-07-31 05:17:56 +08:00
|
|
|
|
|
|
|
|
|
/* Close first file */
|
1998-01-17 06:23:43 +08:00
|
|
|
|
ret = H5Fclose(fid1);
|
|
|
|
|
CHECK(ret, FAIL, "H5Fclose");
|
1997-07-31 05:17:56 +08:00
|
|
|
|
|
|
|
|
|
/* Close second file */
|
1998-01-17 06:23:43 +08:00
|
|
|
|
ret = H5Fclose(fid2);
|
|
|
|
|
CHECK(ret, FAIL, "H5Fclose");
|
1997-07-31 05:17:56 +08:00
|
|
|
|
|
|
|
|
|
/* Close third file */
|
1998-01-17 06:23:43 +08:00
|
|
|
|
ret = H5Fclose(fid3);
|
|
|
|
|
CHECK(ret, FAIL, "H5Fclose");
|
1998-04-09 05:43:02 +08:00
|
|
|
|
} /* test_file_create() */
|
1997-07-31 05:17:56 +08:00
|
|
|
|
|
|
|
|
|
/****************************************************************
|
|
|
|
|
**
|
|
|
|
|
** test_file_open(): Low-level file open I/O test routine.
|
|
|
|
|
**
|
|
|
|
|
****************************************************************/
|
1998-01-17 06:23:43 +08:00
|
|
|
|
static void
|
|
|
|
|
test_file_open(void)
|
1997-07-31 05:17:56 +08:00
|
|
|
|
{
|
1998-04-09 05:43:02 +08:00
|
|
|
|
hid_t fid1; /*HDF5 File IDs */
|
|
|
|
|
hid_t tmpl1; /*file creation templates */
|
|
|
|
|
hsize_t ublock; /*sizeof user block */
|
|
|
|
|
size_t parm; /*file-creation parameters */
|
|
|
|
|
size_t parm2; /*file-creation parameters */
|
2001-11-04 06:27:54 +08:00
|
|
|
|
int iparm;
|
2001-12-06 00:42:40 +08:00
|
|
|
|
#ifdef H5_WANT_H5_V1_4_COMPAT
|
|
|
|
|
int iparm2;
|
|
|
|
|
#else /* H5_WANT_H5_V1_4_COMPAT */
|
2001-11-04 06:27:54 +08:00
|
|
|
|
unsigned iparm2;
|
2001-12-06 00:42:40 +08:00
|
|
|
|
#endif /* H5_WANT_H5_V1_4_COMPAT */
|
1998-04-09 05:43:02 +08:00
|
|
|
|
herr_t ret; /*generic return value */
|
1997-07-31 05:17:56 +08:00
|
|
|
|
|
|
|
|
|
/* Output message about test being performed */
|
1997-08-30 00:59:28 +08:00
|
|
|
|
MESSAGE(5, ("Testing Low-Level File Opening I/O\n"));
|
1997-07-31 05:17:56 +08:00
|
|
|
|
|
1997-09-25 00:30:22 +08:00
|
|
|
|
/* Open first file */
|
1998-02-26 03:13:49 +08:00
|
|
|
|
fid1 = H5Fopen(FILE2, H5F_ACC_RDWR, H5P_DEFAULT);
|
1998-01-17 06:23:43 +08:00
|
|
|
|
CHECK(fid1, FAIL, "H5Fopen");
|
1997-07-31 05:17:56 +08:00
|
|
|
|
|
|
|
|
|
/* Get the file-creation template */
|
1998-09-09 03:15:44 +08:00
|
|
|
|
tmpl1 = H5Fget_create_plist(fid1);
|
|
|
|
|
CHECK(tmpl1, FAIL, "H5Fget_create_plist");
|
1997-07-31 05:17:56 +08:00
|
|
|
|
|
|
|
|
|
/* Get the file-creation parameters */
|
1998-04-09 05:43:02 +08:00
|
|
|
|
ret = H5Pget_userblock(tmpl1, &ublock);
|
1998-02-26 03:13:49 +08:00
|
|
|
|
CHECK(ret, FAIL, "H5Pget_userblock");
|
1998-04-09 05:43:02 +08:00
|
|
|
|
VERIFY(ublock, F2_USERBLOCK_SIZE, "H5Pget_userblock");
|
1998-02-26 03:13:49 +08:00
|
|
|
|
|
|
|
|
|
ret = H5Pget_sizes(tmpl1, &parm, &parm2);
|
|
|
|
|
CHECK(ret, FAIL, "H5Pget_sizes");
|
|
|
|
|
VERIFY(parm, F2_OFFSET_SIZE, "H5Pget_sizes");
|
|
|
|
|
VERIFY(parm2, F2_LENGTH_SIZE, "H5Pget_sizes");
|
|
|
|
|
|
|
|
|
|
ret = H5Pget_sym_k(tmpl1, &iparm, &iparm2);
|
|
|
|
|
CHECK(ret, FAIL, "H5Pget_sym_k");
|
|
|
|
|
VERIFY(iparm, F2_SYM_INTERN_K, "H5Pget_sym_k");
|
|
|
|
|
VERIFY(iparm2, F2_SYM_LEAF_K, "H5Pget_sym_k");
|
1997-07-31 05:17:56 +08:00
|
|
|
|
|
|
|
|
|
/* Release file-creation template */
|
1998-03-13 05:04:53 +08:00
|
|
|
|
ret = H5Pclose(tmpl1);
|
|
|
|
|
CHECK(ret, FAIL, "H5Pclose");
|
1997-07-31 05:17:56 +08:00
|
|
|
|
|
1998-01-17 06:23:43 +08:00
|
|
|
|
/* Close first file */
|
|
|
|
|
ret = H5Fclose(fid1);
|
|
|
|
|
CHECK(ret, FAIL, "H5Fclose");
|
1998-04-09 05:43:02 +08:00
|
|
|
|
} /* test_file_open() */
|
1997-07-31 05:17:56 +08:00
|
|
|
|
|
|
|
|
|
/****************************************************************
|
|
|
|
|
**
|
|
|
|
|
** test_file(): Main low-level file I/O test routine.
|
|
|
|
|
**
|
|
|
|
|
****************************************************************/
|
1998-01-17 06:23:43 +08:00
|
|
|
|
void
|
|
|
|
|
test_file(void)
|
1997-07-31 05:17:56 +08:00
|
|
|
|
{
|
|
|
|
|
/* Output message about test being performed */
|
1997-08-30 00:59:28 +08:00
|
|
|
|
MESSAGE(5, ("Testing Low-Level File I/O\n"));
|
1997-07-31 05:17:56 +08:00
|
|
|
|
|
1998-04-09 05:43:02 +08:00
|
|
|
|
test_file_create(); /* Test file creation (also creation templates) */
|
|
|
|
|
test_file_open(); /* Test file opening */
|
|
|
|
|
} /* test_file() */
|
1998-07-03 08:57:00 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*-------------------------------------------------------------------------
|
|
|
|
|
* Function: cleanup_file
|
|
|
|
|
*
|
|
|
|
|
* Purpose: Cleanup temporary test files
|
|
|
|
|
*
|
|
|
|
|
* Return: none
|
|
|
|
|
*
|
|
|
|
|
* Programmer: Albert Cheng
|
|
|
|
|
* July 2, 1998
|
|
|
|
|
*
|
|
|
|
|
* Modifications:
|
|
|
|
|
*
|
|
|
|
|
*-------------------------------------------------------------------------
|
|
|
|
|
*/
|
|
|
|
|
void
|
|
|
|
|
cleanup_file(void)
|
|
|
|
|
{
|
|
|
|
|
remove(FILE1);
|
|
|
|
|
remove(FILE2);
|
|
|
|
|
remove(FILE3);
|
|
|
|
|
}
|
|
|
|
|
|