summaryrefslogtreecommitdiffstats
path: root/test/testframe.c
diff options
context:
space:
mode:
Diffstat (limited to 'test/testframe.c')
-rw-r--r--test/testframe.c333
1 files changed, 169 insertions, 164 deletions
diff --git a/test/testframe.c b/test/testframe.c
index 3c2a335..ff7cdc5 100644
--- a/test/testframe.c
+++ b/test/testframe.c
@@ -6,7 +6,7 @@
* This file is part of HDF5. The full HDF5 copyright notice, including *
* terms governing use, modification, and redistribution, is contained in *
* the COPYING file, which can be found at the root of the source code *
- * distribution tree, or in https://support.hdfgroup.org/ftp/HDF5/releases. *
+ * distribution tree, or in https://www.hdfgroup.org/licenses. *
* If you do not have access to either file, you may request a copy from *
* help@hdfgroup.org. *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
@@ -24,38 +24,36 @@
/*
* Definitions for the testing structure.
*/
-#define MAXTESTNAME 16
-#define MAXTESTDESC 64
+#define MAXTESTNAME 16
+#define MAXTESTDESC 64
typedef struct TestStruct {
- int NumErrors;
- char Description[MAXTESTDESC];
- int SkipFlag;
- char Name[MAXTESTNAME];
+ int NumErrors;
+ char Description[MAXTESTDESC];
+ int SkipFlag;
+ char Name[MAXTESTNAME];
void (*Call)(void);
void (*Cleanup)(void);
const void *Parameters;
} TestStruct;
-
/*
* Variables used by testing framework.
*/
-static int enable_error_stack = 0; /* enable error stack; disable=0 enable=1 */
-static int num_errs = 0; /* Total number of errors during testing */
-int TestVerbosity = VERBO_DEF; /* Default Verbosity is Low */
-static int Summary = 0; /* Show test summary. Default is no. */
-static int CleanUp = 1; /* Do cleanup or not. Default is yes. */
-static int TestExpress = -1; /* Do TestExpress or not. -1 means not set yet. */
-static TestStruct *Test = NULL; /* Array of tests */
-static unsigned TestAlloc = 0; /* Size of the Test array */
-static unsigned Index = 0;
-static const void *Test_parameters = NULL;
-static const char *TestProgName = NULL;
-static void (*TestPrivateUsage)(void) = NULL;
+static int enable_error_stack = 0; /* enable error stack; disable=0 enable=1 */
+static int num_errs = 0; /* Total number of errors during testing */
+int TestVerbosity = VERBO_DEF; /* Default Verbosity is Low */
+static int Summary = 0; /* Show test summary. Default is no. */
+static int CleanUp = 1; /* Do cleanup or not. Default is yes. */
+static int TestExpress = -1; /* Do TestExpress or not. -1 means not set yet. */
+static TestStruct *Test = NULL; /* Array of tests */
+static unsigned TestAlloc = 0; /* Size of the Test array */
+static unsigned Index = 0;
+static const void *Test_parameters = NULL;
+static const char *TestProgName = NULL;
+static void (*TestPrivateUsage)(void) = NULL;
static int (*TestPrivateParser)(int ac, char *av[]) = NULL;
-
/*
* Setup a test function and add it to the list of tests.
* It must have no parameters and returns void.
@@ -70,7 +68,8 @@ static int (*TestPrivateParser)(int ac, char *av[]) = NULL;
* exit EXIT_FAILURE if error is encountered.
*/
void
-AddTest(const char *TheName, void (*TheCall) (void), void (*Cleanup) (void), const char *TheDescr, const void *Parameters)
+AddTest(const char *TheName, void (*TheCall)(void), void (*Cleanup)(void), const char *TheDescr,
+ const void *Parameters)
{
/* Sanity checking */
if (HDstrlen(TheDescr) >= MAXTESTDESC) {
@@ -83,41 +82,41 @@ AddTest(const char *TheName, void (*TheCall) (void), void (*Cleanup) (void), con
} /* end if */
/* Check for increasing the Test array size */
- if(Index >= TestAlloc) {
- TestStruct *newTest = Test; /* New array of tests */
- unsigned newAlloc = MAX(1, TestAlloc * 2); /* New array size */
+ if (Index >= TestAlloc) {
+ TestStruct *newTest = Test; /* New array of tests */
+ unsigned newAlloc = MAX(1, TestAlloc * 2); /* New array size */
/* Reallocate array */
- if(NULL == (newTest = (TestStruct *)HDrealloc(Test, newAlloc * sizeof(TestStruct)))) {
- HDprintf("Out of memory for tests, Index = %u, TestAlloc = %u, newAlloc = %u\n", Index, TestAlloc, newAlloc);
+ if (NULL == (newTest = (TestStruct *)HDrealloc(Test, newAlloc * sizeof(TestStruct)))) {
+ HDprintf("Out of memory for tests, Index = %u, TestAlloc = %u, newAlloc = %u\n", Index, TestAlloc,
+ newAlloc);
HDexit(EXIT_FAILURE);
} /* end if */
/* Update info */
- Test = newTest;
+ Test = newTest;
TestAlloc = newAlloc;
} /* end if */
/* Set up test function */
HDstrcpy(Test[Index].Description, TheDescr);
- if(*TheName != '-') {
+ if (*TheName != '-') {
HDstrcpy(Test[Index].Name, TheName);
Test[Index].SkipFlag = 0;
}
- else { /* skip test by default */
- HDstrcpy(Test[Index].Name, TheName+1);
+ else { /* skip test by default */
+ HDstrcpy(Test[Index].Name, TheName + 1);
Test[Index].SkipFlag = 1;
}
- Test[Index].Call = TheCall;
- Test[Index].Cleanup = Cleanup;
- Test[Index].NumErrors = -1;
+ Test[Index].Call = TheCall;
+ Test[Index].Cleanup = Cleanup;
+ Test[Index].NumErrors = -1;
Test[Index].Parameters = Parameters;
/* Increment test count */
Index++;
}
-
/*
* Initialize testing framework
*
@@ -132,7 +131,8 @@ AddTest(const char *TheName, void (*TheCall) (void), void (*Cleanup) (void), con
* Albert Cheng 2004/08/17
* Added the ProgName, private_usage and private_parser arguments.
*/
-void TestInit(const char *ProgName, void (*private_usage)(void), int (*private_parser)(int ac, char *av[]))
+void
+TestInit(const char *ProgName, void (*private_usage)(void), int (*private_parser)(int ac, char *av[]))
{
/*
* Turn off automatic error reporting since we do it ourselves. Besides,
@@ -146,13 +146,12 @@ void TestInit(const char *ProgName, void (*private_usage)(void), int (*private_p
* Record the program name and private routines if provided.
*/
TestProgName = ProgName;
- if(NULL != private_usage)
+ if (NULL != private_usage)
TestPrivateUsage = private_usage;
- if(NULL != private_parser)
+ if (NULL != private_parser)
TestPrivateParser = private_parser;
}
-
/*
* Print test usage.
* First print the common test options, then the extra options if provided.
@@ -160,12 +159,13 @@ void TestInit(const char *ProgName, void (*private_usage)(void), int (*private_p
* Modification:
* 2004/08/18 Albert Cheng. Add TestPrivateUsage feature.
*/
-void TestUsage(void)
+void
+TestUsage(void)
{
unsigned i;
- print_func("Usage: %s [-v[erbose] (l[ow]|m[edium]|h[igh]|0-9)] %s\n",
- TestProgName, (TestPrivateUsage ? "<extra options>" : ""));
+ print_func("Usage: %s [-v[erbose] (l[ow]|m[edium]|h[igh]|0-9)] %s\n", TestProgName,
+ (TestPrivateUsage ? "<extra options>" : ""));
print_func(" [-[e]x[clude] name]+ \n");
print_func(" [-o[nly] name]+ \n");
print_func(" [-b[egin] name] \n");
@@ -180,7 +180,7 @@ void TestUsage(void)
print_func("summary prints a summary of test results at the end\n");
print_func("cleanoff does not delete *.hdf files after execution of tests\n");
print_func("help print out this information\n");
- if (TestPrivateUsage){
+ if (TestPrivateUsage) {
print_func("\nExtra options\n");
TestPrivateUsage();
}
@@ -195,21 +195,20 @@ void TestUsage(void)
print_func("\n\n");
}
-
/*
* Print test info.
*/
-void TestInfo(const char *ProgName)
+void
+TestInfo(const char *ProgName)
{
unsigned major, minor, release;
H5get_libversion(&major, &minor, &release);
- print_func("\nFor help use: %s -help\n",ProgName);
+ print_func("\nFor help use: %s -help\n", ProgName);
print_func("Linked with hdf5 version %u.%u release %u\n", major, minor, release);
}
-
/*
* Parse command line information.
* argc, argv: the usual command line argument count and strings
@@ -220,60 +219,62 @@ void TestInfo(const char *ProgName)
* Modification:
* 2004/08/18 Albert Cheng. Add extra_parse feature.
*/
-void TestParseCmdLine(int argc, char *argv[])
+void
+TestParseCmdLine(int argc, char *argv[])
{
hbool_t skipped_all = FALSE;
- int ret_code;
+ int ret_code;
- while (argv++, --argc > 0){
+ while (argv++, --argc > 0) {
if ((HDstrcmp(*argv, "-verbose") == 0) || (HDstrcmp(*argv, "-v") == 0)) {
- if (argc > 0){
- --argc; ++argv;
+ if (argc > 0) {
+ --argc;
+ ++argv;
ParseTestVerbosity(*argv);
}
- else{
+ else {
TestUsage();
HDexit(EXIT_FAILURE);
}
}
- else if (((HDstrcmp(*argv, "-exclude") == 0) ||
- (HDstrcmp(*argv, "-x") == 0))) {
- if (argc > 0){
- --argc; ++argv;
+ else if (((HDstrcmp(*argv, "-exclude") == 0) || (HDstrcmp(*argv, "-x") == 0))) {
+ if (argc > 0) {
+ --argc;
+ ++argv;
SetTest(*argv, SKIPTEST);
}
- else{
+ else {
TestUsage();
HDexit(EXIT_FAILURE);
}
}
- else if (((HDstrcmp(*argv, "-begin") == 0) ||
- (HDstrcmp(*argv, "-b") == 0))) {
- if (argc > 0){
- --argc; ++argv;
+ else if (((HDstrcmp(*argv, "-begin") == 0) || (HDstrcmp(*argv, "-b") == 0))) {
+ if (argc > 0) {
+ --argc;
+ ++argv;
SetTest(*argv, BEGINTEST);
}
- else{
+ else {
TestUsage();
HDexit(EXIT_FAILURE);
}
}
- else if (((HDstrcmp(*argv, "-only") == 0) ||
- (HDstrcmp(*argv, "-o") == 0))) {
- if(argc > 0) {
+ else if (((HDstrcmp(*argv, "-only") == 0) || (HDstrcmp(*argv, "-o") == 0))) {
+ if (argc > 0) {
unsigned Loop;
- --argc; ++argv;
+ --argc;
+ ++argv;
/* Skip all tests, then activate only one. */
- if(!skipped_all) {
- for(Loop = 0; Loop < Index; Loop++)
+ if (!skipped_all) {
+ for (Loop = 0; Loop < Index; Loop++)
Test[Loop].SkipFlag = 1;
skipped_all = TRUE;
} /* end if */
SetTest(*argv, ONLYTEST);
}
- else{
+ else {
TestUsage();
HDexit(EXIT_FAILURE);
}
@@ -292,33 +293,33 @@ void TestParseCmdLine(int argc, char *argv[])
/* non-standard option. Break out. */
break;
}
-
}
/* Call extra parsing function if provided. */
- if (NULL != TestPrivateParser){
- ret_code=TestPrivateParser(argc+1, argv-1);
+ if (NULL != TestPrivateParser) {
+ ret_code = TestPrivateParser(argc + 1, argv - 1);
if (ret_code != 0)
HDexit(EXIT_FAILURE);
}
}
-
/*
* Perform Tests.
*/
-void PerformTests(void)
+void
+PerformTests(void)
{
- unsigned Loop;
+ unsigned Loop;
for (Loop = 0; Loop < Index; Loop++)
if (Test[Loop].SkipFlag) {
MESSAGE(2, ("Skipping -- %s (%s) \n", Test[Loop].Description, Test[Loop].Name));
- } else {
+ }
+ else {
MESSAGE(2, ("Testing -- %s (%s) \n", Test[Loop].Description, Test[Loop].Name));
MESSAGE(5, ("===============================================\n"));
Test[Loop].NumErrors = num_errs;
- Test_parameters = Test[Loop].Parameters;
+ Test_parameters = Test[Loop].Parameters;
ALARM_ON;
Test[Loop].Call();
ALARM_OFF;
@@ -327,22 +328,22 @@ void PerformTests(void)
MESSAGE(5, ("There were %d errors detected.\n\n", (int)Test[Loop].NumErrors));
}
- Test_parameters = NULL; /* clear it. */
+ Test_parameters = NULL; /* clear it. */
MESSAGE(2, ("\n\n"))
if (num_errs)
- print_func("!!! %d Error(s) were detected !!!\n\n", (int) num_errs);
+ print_func("!!! %d Error(s) were detected !!!\n\n", (int)num_errs);
else
print_func("All tests were successful. \n\n");
}
-
/*
* Display test summary.
*/
-void TestSummary(void)
+void
+TestSummary(void)
{
- unsigned Loop;
+ unsigned Loop;
print_func("Summary of Test Results:\n");
print_func("Name of Test Errors Description of Test\n");
@@ -358,52 +359,53 @@ void TestSummary(void)
print_func("\n\n");
}
-
/*
* Cleanup files from testing
*/
-void TestCleanup(void)
+void
+TestCleanup(void)
{
- unsigned Loop;
+ unsigned Loop;
MESSAGE(2, ("\nCleaning Up temp files...\n\n"));
/* call individual cleanup routines in each source module */
for (Loop = 0; Loop < Index; Loop++)
- if (!Test[Loop].SkipFlag && Test[Loop].Cleanup!=NULL)
+ if (!Test[Loop].SkipFlag && Test[Loop].Cleanup != NULL)
Test[Loop].Cleanup();
}
-
/*
* Shutdown the test infrastructure
*/
-void TestShutdown(void)
+void
+TestShutdown(void)
{
- if(Test)
+ if (Test)
HDfree(Test);
}
-
/*
* Retrieve the verbosity level for the testing framework
*/
-H5_ATTR_PURE int GetTestVerbosity(void)
+H5_ATTR_PURE int
+GetTestVerbosity(void)
{
- return(TestVerbosity);
+ return (TestVerbosity);
}
/*
* Set the verbosity level for the testing framework.
* Return previous verbosity level.
*/
-int SetTestVerbosity(int newval)
+int
+SetTestVerbosity(int newval)
{
int oldval;
- oldval = TestVerbosity;
+ oldval = TestVerbosity;
TestVerbosity = newval;
- return(oldval);
+ return (oldval);
}
/*
@@ -433,28 +435,28 @@ int SetTestVerbosity(int newval)
I think this can be easily implemented in the test library (libh5test.a)
so that all tests can just call it to check the status of $HDF5TestExpress.
*/
-int GetTestExpress(void)
+int
+GetTestExpress(void)
{
- char * env_val;
+ char *env_val;
/* set it here for now. Should be done in something like h5test_init(). */
- if(TestExpress==-1)
- {
+ if (TestExpress == -1) {
env_val = getenv("HDF5TestExpress");
- if(env_val == NULL)
+ if (env_val == NULL)
SetTestExpress(1);
- else if(strcmp(env_val, "0") == 0)
+ else if (strcmp(env_val, "0") == 0)
SetTestExpress(0);
- else if(strcmp(env_val, "1") == 0)
+ else if (strcmp(env_val, "1") == 0)
SetTestExpress(1);
- else if(strcmp(env_val, "2") == 0)
+ else if (strcmp(env_val, "2") == 0)
SetTestExpress(2);
else
SetTestExpress(3);
}
- return(TestExpress);
+ return (TestExpress);
}
/*
@@ -462,50 +464,55 @@ int GetTestExpress(void)
* Return previous TestExpress mode.
* Values: non-zero means TestExpress mode is on, 0 means off.
*/
-int SetTestExpress(int newval)
+int
+SetTestExpress(int newval)
{
int oldval;
- oldval = TestExpress;
+ oldval = TestExpress;
TestExpress = newval;
- return(oldval);
+ return (oldval);
}
/*
* Retrieve Summary request value.
* 0 means no summary, 1 means yes.
*/
-H5_ATTR_PURE int GetTestSummary(void)
+H5_ATTR_PURE int
+GetTestSummary(void)
{
- return(Summary);
+ return (Summary);
}
/*
* Retrieve Cleanup request value.
* 0 means no Cleanup, 1 means yes.
*/
-H5_ATTR_PURE int GetTestCleanup(void)
+H5_ATTR_PURE int
+GetTestCleanup(void)
{
- return(CleanUp);
+ return (CleanUp);
}
/*
* Set cleanup to no.
* Return previous cleanup value.
*/
-int SetTestNoCleanup(void)
+int
+SetTestNoCleanup(void)
{
int oldval;
- oldval = CleanUp;
+ oldval = CleanUp;
CleanUp = 0;
- return(oldval);
+ return (oldval);
}
/*
* Parse an argument string for verbosity level and set it.
*/
-void ParseTestVerbosity(char *argv)
+void
+ParseTestVerbosity(char *argv)
{
if (*argv == 'l')
SetTestVerbosity(VERBO_LO);
@@ -517,34 +524,33 @@ void ParseTestVerbosity(char *argv)
SetTestVerbosity(atoi(argv));
}
-
/*
* Retrieve the number of testing errors for the testing framework
*/
-H5_ATTR_PURE int GetTestNumErrs(void)
+H5_ATTR_PURE int
+GetTestNumErrs(void)
{
- return(num_errs);
+ return (num_errs);
}
-
/*
* Increment the number of testing errors
*/
-void IncTestNumErrs(void)
+void
+IncTestNumErrs(void)
{
num_errs++;
}
-
/*
* Retrieve the current Test Parameters pointer.
*/
-H5_ATTR_PURE const void *GetTestParameters(void)
+H5_ATTR_PURE const void *
+GetTestParameters(void)
{
- return(Test_parameters);
+ return (Test_parameters);
}
-
/*
* This routine is designed to provide equivalent functionality to 'printf'
* and also increment the error count for the testing framework.
@@ -553,7 +559,7 @@ int
TestErrPrintf(const char *format, ...)
{
va_list arglist;
- int ret_value;
+ int ret_value;
/* Increment the error count */
num_errs++;
@@ -567,7 +573,6 @@ TestErrPrintf(const char *format, ...)
return ret_value;
}
-
/*
* Set (control) which test will be tested.
* SKIPTEST: skip this test
@@ -575,59 +580,59 @@ TestErrPrintf(const char *format, ...)
* BEGINETEST: skip all tests before this test
*
*/
-void SetTest(const char *testname, int action)
+void
+SetTest(const char *testname, int action)
{
unsigned Loop;
- switch (action){
- case SKIPTEST:
- for (Loop = 0; Loop < Index; Loop++)
- if (HDstrcmp(testname, Test[Loop].Name) == 0){
- Test[Loop].SkipFlag = 1;
- break;
- }
- break;
- case BEGINTEST:
- for (Loop = 0; Loop < Index; Loop++) {
- if (HDstrcmp(testname, Test[Loop].Name) != 0)
- Test[Loop].SkipFlag = 1;
- else{
- /* Found it. Set it to run. Done. */
- Test[Loop].SkipFlag = 0;
- break;
+ switch (action) {
+ case SKIPTEST:
+ for (Loop = 0; Loop < Index; Loop++)
+ if (HDstrcmp(testname, Test[Loop].Name) == 0) {
+ Test[Loop].SkipFlag = 1;
+ break;
+ }
+ break;
+ case BEGINTEST:
+ for (Loop = 0; Loop < Index; Loop++) {
+ if (HDstrcmp(testname, Test[Loop].Name) != 0)
+ Test[Loop].SkipFlag = 1;
+ else {
+ /* Found it. Set it to run. Done. */
+ Test[Loop].SkipFlag = 0;
+ break;
+ }
}
- }
- break;
- case ONLYTEST:
- for (Loop = 0; Loop < Index; Loop++) {
- if (HDstrcmp(testname, Test[Loop].Name) == 0) {
- /* Found it. Set it to run. Break to skip the rest. */
- Test[Loop].SkipFlag = 0;
- break;
+ break;
+ case ONLYTEST:
+ for (Loop = 0; Loop < Index; Loop++) {
+ if (HDstrcmp(testname, Test[Loop].Name) == 0) {
+ /* Found it. Set it to run. Break to skip the rest. */
+ Test[Loop].SkipFlag = 0;
+ break;
+ }
}
- }
- break;
- default:
- /* error */
- HDprintf("*** ERROR: Unknown action (%d) for SetTest\n", action);
- break;
+ break;
+ default:
+ /* error */
+ HDprintf("*** ERROR: Unknown action (%d) for SetTest\n", action);
+ break;
}
}
-
/*
* Enable alarm on test execution, configurable by environment variable
*/
-void TestAlarmOn(void)
+void
+TestAlarmOn(void)
{
- char * env_val = HDgetenv("HDF5_ALARM_SECONDS"); /* Alarm environment */
- unsigned long alarm_sec = H5_ALARM_SEC; /* Number of seconds before alarm goes off */
+ char * env_val = HDgetenv("HDF5_ALARM_SECONDS"); /* Alarm environment */
+ unsigned long alarm_sec = H5_ALARM_SEC; /* Number of seconds before alarm goes off */
/* Get the alarm value from the environment variable, if set */
- if(env_val != NULL)
+ if (env_val != NULL)
alarm_sec = (unsigned)HDstrtoul(env_val, (char **)NULL, 10);
/* Set the number of seconds before alarm goes off */
HDalarm((unsigned)alarm_sec);
}
-