diff options
author | Binh-Minh Ribler <bmribler@hdfgroup.org> | 2007-03-17 16:26:53 (GMT) |
---|---|---|
committer | Binh-Minh Ribler <bmribler@hdfgroup.org> | 2007-03-17 16:26:53 (GMT) |
commit | 1c4e6d163f781003ce1151781b3d403dc9b52e66 (patch) | |
tree | b07834021d14510d51e90736877fd938c1a9d904 /c++/test/ttypes.cpp | |
parent | c4bbce8be19cd60e7ffd0180194c0e0e92091381 (diff) | |
download | hdf5-1c4e6d163f781003ce1151781b3d403dc9b52e66.zip hdf5-1c4e6d163f781003ce1151781b3d403dc9b52e66.tar.gz hdf5-1c4e6d163f781003ce1151781b3d403dc9b52e66.tar.bz2 |
[svn-r13524] Purpose: Cleanup tests
Description:
Added extern "C" to cleanup functions as well, forgot last time.
Cleaned up/Added comments to some of the newly added tests.
Platforms tested
AIX 5.1 (copper)
Linux 2.6 (kagiso)
SunOS 5.8 64-bit (sol)
Diffstat (limited to 'c++/test/ttypes.cpp')
-rw-r--r-- | c++/test/ttypes.cpp | 419 |
1 files changed, 85 insertions, 334 deletions
diff --git a/c++/test/ttypes.cpp b/c++/test/ttypes.cpp index 4e9faae..bdebcf7 100644 --- a/c++/test/ttypes.cpp +++ b/c++/test/ttypes.cpp @@ -15,7 +15,7 @@ /***************************************************************************** FILE - ttypes.cpp - HDF5 C++ testing the general data type functionality + ttypes.cpp - HDF5 C++ testing the general datatype functionality ***************************************************************************/ @@ -42,16 +42,6 @@ #include "h5cpputil.h" // C++ utilility header file -const H5std_string DATAFILE("ttypes.h5"); - -#define NTESTS 1 - -/* Number of elements in each test */ -#define NTESTELEM 100000 - -/* Define if you want to see a count of overflows */ -#undef SHOW_OVERFLOWS - /* * Offset from alinged memory returned by malloc(). This can be used to test * that type conversions handle non-aligned buffers correctly. @@ -60,7 +50,7 @@ const H5std_string DATAFILE("ttypes.h5"); /* * Define if you want to test alignment code on a machine that doesn't - * normally require alignment. When set, all native data types must be aligned + * normally require alignment. When set, all native datatypes must be aligned * on a byte boundary equal to the data size. */ #define TEST_ALIGNMENT @@ -97,98 +87,13 @@ typedef enum int_t { INT_LONG, INT_ULONG, INT_LLONG, INT_ULLONG, INT_OTHER } int_t; -/* Count the number of overflows */ -#ifdef SHOW_OVERFLOWS -static int noverflows_g = 0; -#endif - -/* Skip overflow tests if non-zero */ -static int skip_overflow_tests_g = 0; - -/* Don't use hardware conversions if set */ -static int without_hardware_g = 0; - -/* Count opaque conversions */ -static int num_opaque_conversions_g = 0; - -/* - * Although we check whether a floating point overflow generates a SIGFPE and - * turn off overflow tests in that case, it might still be possible for an - * overflow condition to occur. Once a SIGFPE is raised the program cannot - * be allowed to continue (cf. Posix signals) so in order to recover from a - * SIGFPE we run tests that might generate one in a child process. - */ -#if defined(H5_HAVE_FORK) && defined(H5_HAVE_WAITPID) -# define HANDLE_SIGFPE -#endif - -/* Allocates memory aligned on a certain boundary. */ -#define aligned_malloc(Z) ((void*)((char*)malloc(ALIGNMENT+Z)+ALIGNMENT)) -#define aligned_free(M) free((char*)(M)-ALIGNMENT) - - -/*------------------------------------------------------------------------- - * Function: fpe_handler - * - * Purpose: Exit with 255 - * - * Return: void - * - * Programmer: Robb Matzke - * Monday, July 6, 1998 - * - * Modifications: - * - *------------------------------------------------------------------------- - */ -static void -fpe_handler(int UNUSED signo) -{ - SKIPPED(); - puts(" Test skipped due to SIGFPE."); -#ifndef HANDLE_SIGFPE - puts(" Remaining tests could not be run."); - puts(" Please turn off SIGFPE on overflows and try again."); -#endif - exit(255); -} - - -/*------------------------------------------------------------------------- - * Function: overflow_handler - * - * Purpose: Gets called for all data type conversion overflows. - * - * Return: Success: 0 - * - * Failure: -1 - * - * Programmer: Robb Matzke - * Tuesday, July 7, 1998 - * - * Modifications: - * - *------------------------------------------------------------------------- - */ -#ifdef SHOW_OVERFLOWS -static herr_t -overflow_handler(hid_t UNUSED src_id, hid_t UNUSED dst_id, - void UNUSED *src_buf, void UNUSED *dst_buf) -{ - noverflows_g++; - return -1; -} -#endif - /*------------------------------------------------------------------------- * Function: test_classes * * Purpose: Test type classes * - * Return: Success: 0 - * - * Failure: number of errors + * Return: None. * * Programmer: Binh-Minh Ribler (using C version) * January, 2007 @@ -197,27 +102,27 @@ overflow_handler(hid_t UNUSED src_id, hid_t UNUSED dst_id, * *------------------------------------------------------------------------- */ -static void test_classes(void) +static void test_classes() { SUBTEST("PredType::getClass()"); try { + int curr_nerrors = GetTestNumErrs(); + // PredType::NATIVE_INT should be in H5T_INTEGER class H5T_class_t tcls = PredType::NATIVE_INT.getClass(); if (H5T_INTEGER!=tcls) { - H5_FAILED(); puts(" Invalid type class for H5T_NATIVE_INT"); } // PredType::NATIVE_DOUBLE should be in H5T_FLOAT class tcls = PredType::NATIVE_DOUBLE.getClass(); if (H5T_FLOAT!=tcls) { - H5_FAILED(); - puts(" Invalid type class for H5T_NATIVE_DOUBLE"); + verify_val(tcls, H5T_FLOAT, "test_class: invalid type class for NATIVE_DOUBLE -", __LINE__, __FILE__); } PASSED(); } // end of try block - catch (DataTypeIException E) { - issue_fail_msg(E.getCFuncName(), __LINE__, __FILE__, E.getCDetailMsg()); + catch (Exception E) { + issue_fail_msg("test_classes", __LINE__, __FILE__, E.getCDetailMsg()); } } @@ -237,12 +142,11 @@ static void test_classes(void) * *------------------------------------------------------------------------- */ -static void test_copy(void) +static void test_copy() { hid_t a_copy; herr_t status; - //MESSAGE(5, ("DataType::copy() and DataType::operator=")); SUBTEST("DataType::copy() and DataType::operator="); try { // Test copying from a predefined datatype using DataType::operator= @@ -275,8 +179,8 @@ static void test_copy(void) PASSED(); } - catch (DataTypeIException E) { - issue_fail_msg(E.getCFuncName(), __LINE__, __FILE__, E.getCDetailMsg()); + catch (Exception E) { + issue_fail_msg("test_copy", __LINE__, __FILE__, E.getCDetailMsg()); } } @@ -301,7 +205,7 @@ static void test_copy(void) const H5std_string CompT_NAME("Compound_type"); const H5std_string EnumT_NAME("Enum_type"); -static void test_query(void) +static void test_query() { typedef struct { int a; @@ -316,10 +220,10 @@ static void test_query(void) SUBTEST("Query functions of compound and enumeration types"); try { - /* Create File */ + // Create File H5File file(FILENAME[2], H5F_ACC_TRUNC); - /* Create a compound datatype */ + // Create a compound datatype CompType tid1(sizeof(s_type_t)); tid1.insertMember("a", HOFFSET(s_type_t, a), PredType::NATIVE_INT); @@ -327,7 +231,7 @@ static void test_query(void) tid1.insertMember("c", HOFFSET(s_type_t, c), PredType::NATIVE_LONG); tid1.insertMember("d", HOFFSET(s_type_t, d), PredType::NATIVE_DOUBLE); - /* Create a enumerate datatype */ + // Create a enumerate datatype EnumType tid2(sizeof(short)); tid2.insert("RED", (enum_val=0,&enum_val)); @@ -336,56 +240,53 @@ static void test_query(void) tid2.insert("ORANGE", (enum_val=3,&enum_val)); tid2.insert("YELLOW", (enum_val=4,&enum_val)); - /* Query member number and member index by name, for compound type */ + // Query member number and member index by name, for compound type int nmembs = tid1.getNmembers(); verify_val(nmembs, 4, "CompType::getNmembers()", __LINE__, __FILE__); int index = tid1.getMemberIndex("c"); verify_val(index, 2, "CompType::getMemberIndex()", __LINE__, __FILE__); - /* Query member number and member index by name, for enumeration type. */ + // Query member number and member index by name, for enumeration type. nmembs = tid2.getNmembers(); verify_val(nmembs, 5, "EnumType::getNmembers()", __LINE__, __FILE__); index = tid2.getMemberIndex("ORANGE"); verify_val(index, 3, "EnumType::getMemberIndex()", __LINE__, __FILE__); - /* Commit compound datatype and close it */ + // Commit compound datatype and close it tid1.commit(file, CompT_NAME); tid1.close(); - /* Commit enumeration datatype and close it */ + // Commit enumeration datatype and close it tid2.commit(file, EnumT_NAME); tid2.close(); - /* Open the datatype for query */ + // Open the datatypes for query tid1 = file.openCompType(CompT_NAME); - tid2 = file.openEnumType(EnumT_NAME); - /* Query member number and member index by name, for compound type */ + // Query member number and member index by name, for compound type nmembs = tid1.getNmembers(); verify_val(nmembs, 4, "CompType::getNmembers()", __LINE__, __FILE__); - index = tid1.getMemberIndex("c"); verify_val(index, 2, "CompType::getMemberIndex()", __LINE__, __FILE__); - /* Query member number and member index by name, for enumeration type */ + // Query member number and member index by name, for enumeration type nmembs = tid2.getNmembers(); verify_val(nmembs, 5, "EnumType::getNmembers()", __LINE__, __FILE__); - index = tid2.getMemberIndex("ORANGE"); verify_val(index, 3, "EnumType::getMemberIndex()", __LINE__, __FILE__); - /* Close data types and file */ + // Close datatypes and file tid1.close(); tid2.close(); file.close(); - PASSED(); + PASSED(); } // end of try block catch (Exception E) { - issue_fail_msg(E.getCFuncName(), __LINE__, __FILE__, E.getCDetailMsg()); + issue_fail_msg("test_query", __LINE__, __FILE__, E.getCDetailMsg()); } } // test_query @@ -393,7 +294,7 @@ static void test_query(void) /*------------------------------------------------------------------------- * Function: test_transient * - * Purpose: Tests transient data types. + * Purpose: Tests transient datatypes. * * Return: Success: 0 * @@ -411,67 +312,50 @@ static void test_transient () { static hsize_t ds_size[2] = {10, 20}; - //MESSAGE(5, ("transient data types")); - SUBTEST("Transient data types"); + SUBTEST("Transient datatypes"); try { + // Create the file and the dataspace. H5File file(filename1, H5F_ACC_TRUNC); DataSpace space(2, ds_size, ds_size); - /* Predefined types cannot be modified or closed */ -// PredType::NATIVE_INT is a constant and cannot make a call, don't need these tests - - /* Copying a predefined type results in a modifiable copy */ + // Copying a predefined type results in a modifiable copy IntType type(PredType::NATIVE_INT); type.setPrecision(256); - /* It should not be possible to create an attribute for a transient type */ + // It should not be possible to create an attribute for a transient type try { Attribute attr(type.createAttribute("attr1", PredType::NATIVE_INT, space)); // Should FAIL but didn't, so throw an invalid action exception throw InvalidActionException("H5Object::createAttribute", "Attempted to commit a predefined datatype."); - } catch (AttributeIException err) {} + } catch (AttributeIException err) {} // do nothing, failure expected - /* Create a dataset from a transient data type */ -// type.close(); - put printf in H5Tclose to make sure it's closed + // Create a dataset from a transient datatype + // type.close(); - put trace in H5Tclose to make sure it's closed type.copy(PredType::NATIVE_INT); DataSet dset(file.createDataSet("dset1", type, space)); - /* The type returned from a dataset should not be modifiable */ + // The type returned from a dataset should not be modifiable IntType itype(dset); try { itype.setPrecision(256); // Should FAIL but didn't, so throw an invalid action exception - throw InvalidActionException("PredType::setPrecision", "Dataset data types should not be modifiable!"); + throw InvalidActionException("PredType::setPrecision", "Dataset datatypes should not be modifiable!"); } catch (DataTypeIException err) {} - itype.close(); - /* - * Get the dataset data type by applying H5Tcopy() to the dataset. The - * result should be modifiable. - */ + // Get a copy of the dataset's datatype by applying DataType::copy() + // to the dataset. The resulted datatype should be modifiable. itype.copy(dset); itype.setPrecision(256); + itype.close(); - /* - * Close the dataset and reopen it, testing that its type is still - * read-only. <--- how come modifiable below? - */ + // Close the dataset and reopen it, testing that its type is still + // read-only. (Note that a copy of it is modifiable.) dset.close(); - //if (H5Dclose (dset)<0) printf("goto error in C\n"); dset = file.openDataSet("dset1"); - //if ((dset=H5Dopen (file, "dset1"))<0) printf("goto error in C\n"); - /* - * Get the dataset data type by applying H5Tcopy() to the dataset. The - * result should be modifiable. - */ - itype.copy(dset); - itype.setPrecision(256); - itype.close(); - // Close objects and file. dset.close(); file.close(); @@ -480,7 +364,7 @@ static void test_transient () PASSED(); } // end of try block catch (Exception E) { - issue_fail_msg(E.getCFuncName(), __LINE__, __FILE__, E.getCDetailMsg()); + issue_fail_msg("test_transient", __LINE__, __FILE__, E.getCDetailMsg()); } } // test_transient @@ -488,7 +372,7 @@ static void test_transient () /*------------------------------------------------------------------------- * Function: test_named * - * Purpose: Tests named data types. + * Purpose: Tests named datatypes. * * Return: Success: 0 * @@ -510,133 +394,69 @@ static void test_named () unsigned attr_data[10][20]; char filename[1024]; - //MESSAGE(5, ("named data types")); - SUBTEST("Named data types"); + SUBTEST("Named datatypes"); try { - -// h5_fixname(FILENAME[1], fapl_id, filename, sizeof filename); + // Create the file. H5File file(filename2, H5F_ACC_TRUNC); + // Create a simple dataspace. DataSpace space(2, ds_size, ds_size); - /* Predefined types cannot be committed */ + // Predefined types cannot be committed. try { -PredType nativeint(PredType::NATIVE_INT); -nativeint.commit(file, "test_named_1 (should not exist)"); - //PredType::NATIVE_INT.commit(file, "test_named_1 (should not exist)"); + PredType nativeint(PredType::NATIVE_INT); + nativeint.commit(file, "test_named_1 (should not exist)"); + // Should FAIL but didn't, so throw an invalid action exception throw InvalidActionException("PredType::commit", "Attempted to commit a predefined datatype."); } catch (DataTypeIException err) {} -/* - H5E_BEGIN_TRY { - status = H5Tcommit (file, "test_named_1 (should not exist)", - H5T_NATIVE_INT); - } H5E_END_TRY; - if (status>=0) { - H5_FAILED(); - puts (" Predefined types should not be committable!"); - printf("goto error in C\n"); - } -*/ - - /* Copy a predefined data type and commit the copy */ + // Copy a predefined datatype and commit the copy. IntType itype(PredType::NATIVE_INT); - //if ((type = H5Tcopy (H5T_NATIVE_INT))<0) printf("goto error in C\n"); - itype.commit(file, "native-int"); - //if (H5Tcommit (file, "native-int", type)<0) printf("goto error in C\n");0, + // Check that it is committed. if (itype.committed() <= 0) cerr << "IntType::committed() returned false" << endl; - -/* - if ((status=H5Tcommitted (type))<0) printf("goto error in C\n"); - if (0==status) { - H5_FAILED(); - puts (" H5Tcommitted() returned false!"); - printf("goto error in C\n"); - } -*/ - /* We should not be able to modify a type after it has been committed. */ + // We should not be able to modify a type after it has been committed. try { - itype.setPrecision(256); + itype.setPrecision(256); // attempt an invalid action... // Should FAIL but didn't, so throw an invalid action exception throw InvalidActionException("IntType::setPrecision", "Attempted to modify a committed datatype."); } catch (DataTypeIException err) {} -/* - H5E_BEGIN_TRY { - status = H5Tset_precision (type, 256); - } H5E_END_TRY; - if (status>=0) { - H5_FAILED(); - puts (" Committed type is not constant!"); - printf("goto error in C\n"); - } -*/ - /* We should not be able to re-commit a committed type */ + // We should not be able to re-commit a committed type try { itype.commit(file, "test_named_2 (should not exist)"); // Should FAIL but didn't, so throw an invalid action exception - throw InvalidActionException("IntType::commit", "Attempted to re-commit a committed data type."); - } catch (DataTypeIException err) {} - -/* - H5E_BEGIN_TRY { - status = H5Tcommit(file, "test_named_2 (should not exist)", type); - } H5E_END_TRY; - if (status>=0) { - H5_FAILED(); - puts (" Committed types should not be recommitted!"); - printf("goto error in C\n"); - } -*/ + throw InvalidActionException("IntType::commit", "Attempted to re-commit a committed datatype."); + } catch (DataTypeIException err) {} // do nothing, failure expected - /* It should be possible to define an attribute for the named type */ + // It should be possible to define an attribute for the named type Attribute attr1 = itype.createAttribute("attr1", PredType::NATIVE_UCHAR, space); - //if ((attr1=H5Acreate (type, "attr1", H5T_NATIVE_UCHAR, space, -// H5P_DEFAULT))<0) printf("goto error in C\n"); - - - for (i=0; i<ds_size[0]*ds_size[1]; i++) attr_data[0][i] = (int)i;/*tricky*/ - + for (i=0; i<ds_size[0]*ds_size[1]; i++) + attr_data[0][i] = (int)i;/*tricky*/ attr1.write(PredType::NATIVE_UINT, attr_data); attr1.close(); - //if (H5Awrite(attr1, H5T_NATIVE_UINT, attr_data)<0) printf("goto error in C\n"); - //if (H5Aclose (attr1)<0) printf("goto error in C\n"); - /* - * Copying a committed type should result in a transient type which is - * not locked. - */ + // Copying a committed type should result in a transient type which is + // not locked. IntType trans_type; trans_type.copy(itype); bool iscommitted = trans_type.committed(); verify_val(iscommitted, 0, "DataType::committed() - Copying a named type should result in a transient type!", __LINE__, __FILE__); -/* - if ((t2 = H5Tcopy (type))<0) printf("goto error in C\n"); - if ((status=H5Tcommitted (t2))<0) printf("goto error in C\n"); - if (status) { - H5_FAILED(); - puts (" Copying a named type should result in a transient type!"); - printf("goto error in C\n"); - } -*/ trans_type.setPrecision(256); trans_type.close(); - //if (H5Tset_precision (t2, 256)<0) printf("goto error in C\n"); - //if (H5Tclose (t2)<0) printf("goto error in C\n"); /* * Close the committed type and reopen it. It should return a named type. - */ -/* This had something to do with the way IntType was returned and assigned +* This had something to do with the way IntType was returned and assigned and caused itype.committed not working correctly. So, use another_type for now. + itype.close(); itype = file.openIntType("native-int"); iscommitted = itype.committed(); */ @@ -645,139 +465,68 @@ now. if (!iscommitted) throw InvalidActionException("IntType::committed()", "Opened named types should be named types!"); -/* - if (H5Tclose (type)<0) printf("goto error in C\n"); - if ((type=H5Topen (file, "native-int"))<0) printf("goto error in C\n"); - if ((status=H5Tcommitted (type))<0) printf("goto error in C\n"); - if (!status) { - H5_FAILED(); - puts (" Opened named types should be named types!"); - printf("goto error in C\n"); - } - */ - /* Create a dataset that uses the named type */ - DataSet dset = file.createDataSet("dset1", itype, space); - //if ((dset = H5Dcreate (file, "dset1", type, space, H5P_DEFAULT))<0) - - /* Get the dataset's data type and make sure it's a named type */ + // Create a dataset that uses the named type, then get the dataset's + // datatype and make sure it's a named type. + DataSet dset = file.createDataSet("dset1", another_type, space); DataType *ds_type = new DataType(dset.getDataType()); iscommitted = ds_type->committed(); if (!iscommitted) throw InvalidActionException("IntType::committed()", "1 Dataset type should be named type!"); - -/* - if ((t2 = H5Dget_type (dset))<0) printf("goto error in C\n"); - if ((status=H5Tcommitted (t2))<0) printf("goto error in C\n"); - if (!status) { - H5_FAILED(); - puts (" Dataset type should be a named type!"); - printf("goto error in C\n"); - } -*/ - - /* Close the dataset, then close its type, then reopen the dataset */ dset.close(); ds_type->close(); - //if (H5Dclose (dset)<0) printf("goto error in C\n"); - //if (H5Tclose (t2)<0) printf("goto error in C\n"); + // Reopen the dataset and its type, then make sure the type is + // a named type. dset = file.openDataSet("dset1"); - //if ((dset = H5Dopen (file, "dset1"))<0) printf("goto error in C\n"); - - /* Get the dataset's type and make sure it's named */ - /* Get the dataset's data type and make sure it's a named type */ ds_type = new DataType(dset.getDataType()); iscommitted = ds_type->committed(); if (!iscommitted) throw InvalidActionException("IntType::committed()", "Dataset type should be named type!"); -/* - if ((t2 = H5Dget_type (dset))<0) printf("goto error in C\n"); - if ((status=H5Tcommitted (t2))<0) printf("goto error in C\n"); - if (!status) { - H5_FAILED(); - puts (" Dataset type should be a named type!"); - printf("goto error in C\n"); - } -*/ - /* - * Close the dataset and create another with the type returned from the - * first dataset. - */ + // Close the dataset and create another with the type returned from + // the first dataset. dset.close(); - //if (H5Dclose (dset)<0) printf("goto error in C\n"); dset = file.createDataSet("dset2", *ds_type, space); - //if ((dset=H5Dcreate (file, "dset2", t2, space, H5P_DEFAULT))<0) - - /* Reopen the second dataset and make sure the type is shared */ ds_type->close(); dset.close(); + + // Reopen the second dataset and make sure the type is shared dset = file.openDataSet("dset2"); ds_type = new DataType(dset.getDataType()); iscommitted = ds_type->committed(); if (!iscommitted) - throw InvalidActionException("IntType::committed()", "Dataset type should be named type!"); - -/* - if (H5Tclose (t2)<0) printf("goto error in C\n"); - if (H5Dclose (dset)<0) printf("goto error in C\n"); - if ((dset = H5Dopen (file, "dset2"))<0) printf("goto error in C\n"); - if ((t2 = H5Dget_type (dset))<0) printf("goto error in C\n"); - if ((status=H5Tcommitted (t2))<0) printf("goto error in C\n"); - if (!status) { - H5_FAILED(); - puts (" Dataset type should be a named type!"); - printf("goto error in C\n"); - } -*/ + throw InvalidActionException("DataType::iscommitted()", "Dataset type should be named type!"); ds_type->close(); - //if (H5Tclose (t2)<0) printf("goto error in C\n"); - /* - * Get the dataset data type by applying H5Tcopy() to the dataset. The - * result should be modifiable. - */ - //DataType copied_type = dset.copyType(); + // Get the dataset datatype by applying DataType::copy() to the + // dataset. The resulted datatype should be modifiable. IntType copied_type; copied_type.copy(dset); - //if ((t2=H5Tcopy (dset))<0) printf("goto error in C\n"); - -// find another function that can be in DataType copied_type.setPrecision(256); -// if (H5Tset_precision (t2, 256)<0) printf("goto error in C\n"); - //copied_type.close(); copied_type.close(); - //if (H5Tclose (t2)<0) printf("goto error in C\n"); - /* Clean up */ + // Clean up dset.close(); itype.close(); space.close(); file.close(); -/* - if (H5Dclose (dset)<0) printf("goto error in C\n"); - if (H5Tclose (type)<0) printf("goto error in C\n"); - if (H5Sclose (space)<0) printf("goto error in C\n"); - if (H5Fclose (file)<0) printf("goto error in C\n"); -*/ - PASSED(); + PASSED(); } // end of try block catch (Exception E) { -cerr << "all the way here?" << endl; - issue_fail_msg(E.getCFuncName(), __LINE__, __FILE__, E.getCDetailMsg()); + issue_fail_msg("test_named", __LINE__, __FILE__, E.getCDetailMsg()); } } // test_named /**************************************************************** ** -** test_types(): Main data types testing routine. +** test_types(): Main datatypes testing routine. ** ****************************************************************/ #ifdef __cplusplus extern "C" #endif -void test_types(void) +void test_types() { // Output message about test being performed MESSAGE(5, ("Testing Generic Data Types\n")); @@ -806,8 +555,10 @@ void test_types(void) * *------------------------------------------------------------------------- */ -void -cleanup_types(void) +#ifdef __cplusplus +extern "C" +#endif +void cleanup_types() { for (int i = 0; i < 3; i++) HDremove(FILENAME[i]); |