mirror of
https://github.com/HDFGroup/hdf5.git
synced 2025-02-17 16:10:24 +08:00
151 lines
4.3 KiB
C
151 lines
4.3 KiB
C
|
/****************************************************************************
|
|||
|
* 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. *
|
|||
|
* *
|
|||
|
****************************************************************************/
|
|||
|
|
|||
|
/* $Id$ */
|
|||
|
|
|||
|
/***********************************************************
|
|||
|
*
|
|||
|
* Test program: tmisc
|
|||
|
*
|
|||
|
* Test miscellaneous features not tested elsewhere. Generally
|
|||
|
* regression tests for bugs that are reported and don't
|
|||
|
* have an existing test to add them to.
|
|||
|
*
|
|||
|
*************************************************************/
|
|||
|
|
|||
|
#include "hdf5.h"
|
|||
|
#include "testhdf5.h"
|
|||
|
|
|||
|
#define FILE "tmisc.h5"
|
|||
|
|
|||
|
/* Definitions for misc. test #1 */
|
|||
|
#define MISC1_VAL (13417386) /* 0xccbbaa */
|
|||
|
#define MISC1_VAL2 (15654348) /* 0xeeddcc */
|
|||
|
#define MISC1_DSET_NAME "/scalar_set"
|
|||
|
|
|||
|
/****************************************************************
|
|||
|
**
|
|||
|
** test_misc1(): test unlinking a dataset from a group and immediately
|
|||
|
** re-using the dataset name
|
|||
|
**
|
|||
|
****************************************************************/
|
|||
|
static void
|
|||
|
test_misc1(void)
|
|||
|
{
|
|||
|
int i;
|
|||
|
int i_check;
|
|||
|
hid_t file, dataspace, dataset;
|
|||
|
herr_t ret;
|
|||
|
|
|||
|
/* Output message about test being performed */
|
|||
|
MESSAGE(5, ("Testing Unlinking Dataset and Re-creating It\n"));
|
|||
|
|
|||
|
file = H5Fcreate(FILE, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
|
|||
|
CHECK(file, FAIL, "H5Fcreate");
|
|||
|
|
|||
|
dataspace = H5Screate(H5S_SCALAR);
|
|||
|
CHECK(dataspace, FAIL, "H5Screate");
|
|||
|
|
|||
|
/* Write the dataset the first time. */
|
|||
|
dataset = H5Dcreate(file, MISC1_DSET_NAME, H5T_NATIVE_INT, dataspace, H5P_DEFAULT);
|
|||
|
CHECK(dataset, FAIL, "H5Dcreate");
|
|||
|
|
|||
|
i = MISC1_VAL;
|
|||
|
ret = H5Dwrite(dataset, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, &i);
|
|||
|
CHECK(ret, FAIL, "H5Dwrite");
|
|||
|
|
|||
|
ret = H5Dclose(dataset);
|
|||
|
CHECK(ret, FAIL, "H5Dclose");
|
|||
|
|
|||
|
/* Remove the dataset. */
|
|||
|
ret = H5Gunlink(file, MISC1_DSET_NAME);
|
|||
|
CHECK(ret, FAIL, "H5Gunlink");
|
|||
|
|
|||
|
/* Write the dataset for the second time with a different value. */
|
|||
|
dataset = H5Dcreate(file, MISC1_DSET_NAME, H5T_NATIVE_INT, dataspace, H5P_DEFAULT);
|
|||
|
CHECK(dataset, FAIL, "H5Dcreate");
|
|||
|
|
|||
|
i = MISC1_VAL2;
|
|||
|
ret = H5Dwrite(dataset, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, &i);
|
|||
|
CHECK(ret, FAIL, "H5Dwrite");
|
|||
|
|
|||
|
ret = H5Dclose(dataset);
|
|||
|
CHECK(ret, FAIL, "H5Dclose");
|
|||
|
|
|||
|
ret = H5Sclose(dataspace);
|
|||
|
CHECK(ret, FAIL, "H5Sclose");
|
|||
|
|
|||
|
ret = H5Fclose(file);
|
|||
|
CHECK(ret, FAIL, "H5Fclose");
|
|||
|
|
|||
|
/* Now, check the value written to the dataset, after it was re-created */
|
|||
|
file = H5Fopen(FILE, H5F_ACC_RDONLY, H5P_DEFAULT);
|
|||
|
CHECK(file, FAIL, "H5Fopen");
|
|||
|
|
|||
|
dataspace = H5Screate(H5S_SCALAR);
|
|||
|
CHECK(dataspace, FAIL, "H5Screate");
|
|||
|
|
|||
|
dataset = H5Dopen(file, MISC1_DSET_NAME);
|
|||
|
CHECK(dataset, FAIL, "H5Dopen");
|
|||
|
|
|||
|
ret = H5Dread(dataset, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, &i_check);
|
|||
|
CHECK(ret, FAIL, "H5Dread");
|
|||
|
VERIFY(i_check,MISC1_VAL2,"H5Dread");
|
|||
|
|
|||
|
ret = H5Sclose(dataspace);
|
|||
|
CHECK(ret, FAIL, "H5Sclose");
|
|||
|
|
|||
|
ret = H5Dclose(dataset);
|
|||
|
CHECK(ret, FAIL, "H5Dclose");
|
|||
|
|
|||
|
ret = H5Fclose(file);
|
|||
|
CHECK(ret, FAIL, "H5Fclose");
|
|||
|
|
|||
|
} /* end test_misc1() */
|
|||
|
|
|||
|
/****************************************************************
|
|||
|
**
|
|||
|
** test_misc(): Main misc. test routine.
|
|||
|
**
|
|||
|
****************************************************************/
|
|||
|
void
|
|||
|
test_misc(void)
|
|||
|
{
|
|||
|
/* Output message about test being performed */
|
|||
|
MESSAGE(5, ("Testing Miscellaneous Routines\n"));
|
|||
|
|
|||
|
/* Various tests, using the same test file */
|
|||
|
test_misc1(); /* Test unlinking a dataset & immediately re-using name */
|
|||
|
|
|||
|
} /* test_misc() */
|
|||
|
|
|||
|
|
|||
|
/*-------------------------------------------------------------------------
|
|||
|
* Function: cleanup_misc
|
|||
|
*
|
|||
|
* Purpose: Cleanup temporary test files
|
|||
|
*
|
|||
|
* Return: none
|
|||
|
*
|
|||
|
* Programmer: Albert Cheng
|
|||
|
* July 2, 1998
|
|||
|
*
|
|||
|
* Modifications:
|
|||
|
*
|
|||
|
*-------------------------------------------------------------------------
|
|||
|
*/
|
|||
|
void
|
|||
|
cleanup_misc(void)
|
|||
|
{
|
|||
|
remove(FILE);
|
|||
|
}
|