[svn-r6997]

Purpose:
    Code cleanup

Description:
    Moved a utility function out so other tests can use the same
    function and avoid code duplication.  Future utility functions
    can also benefit from this move.

Platforms tested:
    SunOS 5.7 (arabica)
    Linux 2.4 (eirene)
    IRIX 6.5.11 (modi4)
    HPUX 11.00 (kelgia)
This commit is contained in:
Binh-Minh Ribler 2003-06-09 12:42:02 -05:00
parent 47f9421dd5
commit 01f726e305
4 changed files with 116 additions and 57 deletions

View File

@ -37,7 +37,7 @@ LT_LINK_LIB=$(LT) --mode=link $(CXX) -rpath $(libdir)
## executed, generally most specific tests to least specific tests.
RUNTEST=$(LT_RUN)
TEST_SRC=dsets.cpp testhdf5.cpp tfile.cpp th5s.cpp
TEST_SRC=dsets.cpp testhdf5.cpp tfile.cpp th5s.cpp h5cpputil.cpp
TEST_OBJ=$(TEST_SRC:.cpp=.lo)
TEST_PROGS=dsets testhdf5
@ -52,7 +52,7 @@ $(TEST_PROGS): $(LIB) $(LIBHDF5)
testhdf5: $(TEST_OBJ)
@$(LT_LINK_EXE) $(CFLAGS) -o $@ $(TESTHDF5_OBJ) $(LIB) $(LIBHDF5) $(LDFLAGS) $(LIBS) $(DEFAULT_LIBS)
dsets: dsets.lo
@$(LT_LINK_EXE) $(CFLAGS) -o $@ dsets.lo $(hdf5_builddir)/../test/h5test.lo $(LIB) $(LIBHDF5) $(LDFLAGS) $(LIBS) $(DEFAULT_LIBS)
dsets: dsets.lo h5cpputil.lo
@$(LT_LINK_EXE) $(CFLAGS) -o $@ dsets.lo h5cpputil.lo $(hdf5_builddir)/../test/h5test.lo $(LIB) $(LIBHDF5) $(LDFLAGS) $(LIBS) $(DEFAULT_LIBS)
@CONCLUDE@

View File

@ -40,6 +40,8 @@
using namespace H5;
#endif
#include "h5cpputil.h"
const char *FILENAME[] = {
"dataset",
NULL
@ -257,7 +259,6 @@ test_simple_io( H5File& file)
/* Create a small conversion buffer to test strip mining */
DSetMemXferPropList xfer;
//if (H5Pset_buffer (xfer, 1000, tconv_buf, NULL)<0) goto error;
xfer.setBuffer (1000, tconv_buf, NULL);
/* Create the dataset */
@ -516,7 +517,6 @@ test_compression(H5File& file)
}
}
//if (H5Dwrite(dataset, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, xfer, points)<0) goto error;
dataset->write ((void*) points, PredType::NATIVE_INT, DataSpace::ALL, DataSpace::ALL, xfer);
PASSED();
@ -581,7 +581,6 @@ test_compression(H5File& file)
delete dataset;
//if ((dataset = H5Dopen (file, DSET_COMPRESS_NAME))<0) goto error;
dataset = new DataSet (file.openDataSet (DSET_COMPRESS_NAME));
dataset->read ((void*)check, PredType::NATIVE_INT, DataSpace::ALL, DataSpace::ALL, xfer);
@ -649,7 +648,6 @@ test_compression(H5File& file)
*/
TESTING("compression (app-defined method)");
// BMR: not sure how to handle this yet
#ifdef H5_WANT_H5_V1_4_COMPAT
if (H5Zregister (H5Z_FILTER_BOGUS, "bogus", bogus)<0) goto error;
#else /* H5_WANT_H5_V1_4_COMPAT */
@ -669,7 +667,8 @@ test_compression(H5File& file)
for (j = 0; j < size[1]; j++)
{
int status = check_values (i, j, points[i][j], check[i][j]);
if (status == -1) goto error;
if (status == -1)
goto error;
}
PASSED();
@ -733,11 +732,7 @@ test_multiopen (H5File& file)
// Create first dataset
DataSet dset1 = file.createDataSet ("multiopen", PredType::NATIVE_INT, *space, dcpl);
//BMR: Quincey said Rob gave a tweak to have dataset being the first
// argument in this call but actually shouldn't be valid, so just
// ignore the argument dset1. Just open the first dataset again
// from the file to another DataSet object.
// if ((dset2=H5Dopen (dset1, "."))<0) goto error;
// Open again the first dataset from the file to another DataSet object.
DataSet dset2 = file.openDataSet ("multiopen");
// Relieve the dataspace
@ -748,11 +743,9 @@ test_multiopen (H5File& file)
dset1.extend (cur_size);
/* Get the size from the second handle */
//if ((space = H5Dget_space (dset2))<0) goto error;
space = new DataSpace (dset2.getSpace());
hsize_t tmp_size[1];
//if (H5Sget_simple_extent_dims (space, tmp_size, NULL)<0) goto error;
space->getSimpleExtentDims (tmp_size);
if (cur_size[0]!=tmp_size[0])
{
@ -780,7 +773,7 @@ test_multiopen (H5File& file)
/*-------------------------------------------------------------------------
* Function: test_types
*
* Purpose: Make some datasets with various types so we can test h5ls.
* Purpose: Test various types - should be moved to dtypes.cpp
*
* Return: Success: 0
*
@ -973,45 +966,6 @@ test_types(H5File& file)
error:
return -1;
}
/*-------------------------------------------------------------------------
* Function: test_report
*
* Purpose: Prints out the number of errors for dataset tests if there
* were any failures occurred. If no failure, test_report
* prints out the "All dataset tests passed" message
*
* Return: if any failure has occurred: 1
*
* if no failure occurs: 0
*
* Programmer: Binh-Minh Ribler (using C code segment for reporting tests)
* Friday, February 6, 2001
*
* Modifications:
*
*-------------------------------------------------------------------------
*/
int test_report( int nerrors )
{
if (nerrors)
{
nerrors = MAX(1, nerrors);
if (1 == nerrors)
cout << "***** " << nerrors << " DATASET TEST"
<< " FAILED! *****" << endl;
else
cout << "***** " << nerrors << " DATASET TESTS"
<< " FAILED! *****" << endl;
return 1;
}
else
{
cout << "All dataset tests passed." << endl;
return 0;
}
}
/*-------------------------------------------------------------------------
* Function: main
@ -1076,11 +1030,11 @@ main(void)
}
catch (Exception E)
{
return( test_report( nerrors ));
return(test_report(nerrors, string(" DATASET TESTS")));
}
/* use C test utility routine to clean up data files */
h5_cleanup(FILENAME, fapl_id);
/* print out dsets test results */
return( test_report( nerrors ));
return(test_report(nerrors, string(" DATASET TESTS")));
}

73
c++/test/h5cpputil.cpp Normal file
View File

@ -0,0 +1,73 @@
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* Copyright by the Board of Trustees of the University of Illinois. *
* All rights reserved. *
* *
* This file is part of HDF5. The full HDF5 copyright notice, including *
* terms governing use, modification, and redistribution, is contained in *
* the files COPYING and Copyright.html. COPYING can be found at the root *
* of the source code distribution tree; Copyright.html can be found at the *
* root level of an installed copy of the electronic HDF5 document set and *
* is linked from the top-level documents page. It can also be found at *
* http://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have *
* access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
/*****************************************************************************
FILE
util.cpp - Utility routines for HDF5 C++ tests.
EXTERNAL ROUTINES/VARIABLES:
***************************************************************************/
#ifdef OLD_HEADER_FILENAME
#include <iostream.h>
#else
#include <iostream>
#endif
#include <string>
#ifndef H5_NO_STD
using namespace std;
#endif
#include "h5cpputil.h"
#include "h5test.h"
/*-------------------------------------------------------------------------
* Function: test_report
*
* Purpose: Prints out the number of errors for dataset tests if there
* were any failures occurred. If no failure, test_report
* prints out the "All dataset tests passed" message
*
* Return: if any failure has occurred: 1
*
* if no failure occurs: 0
*
* Programmer: Binh-Minh Ribler (using C code segment for reporting tests)
* Friday, February 6, 2001
*
* Modifications:
*
*-------------------------------------------------------------------------
*/
int test_report( int nerrors, const string& testname )
{
if (nerrors)
{
nerrors = MAX(1, nerrors);
if (1 == nerrors)
cout << "***** " << nerrors << testname
<< " FAILED! *****" << endl;
else
cout << "***** " << nerrors << testname
<< " FAILED! *****" << endl;
return 1;
}
else
{
cout << "All dataset tests passed." << endl;
return 0;
}
}

32
c++/test/h5cpputil.h Normal file
View File

@ -0,0 +1,32 @@
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* Copyright by the Board of Trustees of the University of Illinois. *
* All rights reserved. *
* *
* This file is part of HDF5. The full HDF5 copyright notice, including *
* terms governing use, modification, and redistribution, is contained in *
* the files COPYING and Copyright.html. COPYING can be found at the root *
* of the source code distribution tree; Copyright.html can be found at the *
* root level of an installed copy of the electronic HDF5 document set and *
* is linked from the top-level documents page. It can also be found at *
* http://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have *
* access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
/*****************************************************************************
FILE
h5cpputil.h - Header file of the utilities/misc for HDF5 C++ tests.
EXTERNAL ROUTINES/VARIABLES:
***************************************************************************/
#ifndef _h5cpputil_h
#define _h5cpputil_h
#ifndef H5_NO_STD
int test_report (int, const std::string&);
#else
int test_report (int, const string&);
#endif
#endif