Ooops! Imported SVN records...

This commit is contained in:
skarg
2004-09-22 19:31:25 +00:00
parent 5ac39c36bb
commit cde1d1e021
21 changed files with 0 additions and 436 deletions
-2
View File
@@ -1,2 +0,0 @@
This is a Subversion working copy administrative directory.
Visit http://subversion.tigris.org/ for more information.
View File
-28
View File
@@ -1,28 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<wc-entries
xmlns="svn:">
<entry
committed-rev="504"
name=""
committed-date="2004-09-16T12:58:13.686683Z"
url="svn://potter/mstp/current/test"
kind="dir"
uuid="f7de03cf-50d5-0310-9ee6-baecd260521e"
revision="512"/>
<entry
committed-rev="496"
name="ctest.c"
text-time="2004-09-15T13:53:12.000000Z"
committed-date="2004-09-14T20:53:26.281408Z"
checksum="9686a78c29a7335ad710a24c45d9a884"
kind="file"
prop-time="2004-09-15T13:53:12.000000Z"/>
<entry
committed-rev="496"
name="ctest.h"
text-time="2004-09-15T13:53:12.000000Z"
committed-date="2004-09-14T20:53:26.281408Z"
checksum="a722ba8d0b234c43b83a8a8a20f934d5"
kind="file"
prop-time="2004-09-15T13:53:12.000000Z"/>
</wc-entries>
-1
View File
@@ -1 +0,0 @@
4
@@ -1 +0,0 @@
END
@@ -1 +0,0 @@
END
@@ -1 +0,0 @@
END
@@ -1 +0,0 @@
END
@@ -1,182 +0,0 @@
/* ctest.c: Implements the CTest Framework */
#include "ctest.h"
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <assert.h>
/* Number of tests to hold incrementally */
enum {CHUNK = 10};
Test* ct_create(const char* name, void (*init)(Test*))
{
int backOutLevel = 0;
Test* pTest = malloc(sizeof(Test));
if (pTest)
{
pTest->nPass = pTest->nFail = pTest->nTests = 0;
pTest->pStream = stdout;
/* Allocate array of fptrs: */
assert(CHUNK);
pTest->pTestFuns = calloc(CHUNK, sizeof(TestFunc));
if (pTest->pTestFuns)
{
pTest->maxTests = CHUNK;
/* Allocate test name: */
assert(name);
pTest->name = malloc(strlen(name) + 1);
if (pTest->name)
strcpy(pTest->name, name);
else
++backOutLevel;
}
else
++backOutLevel;
}
/* Back-out allocations if memory failed: */
if (backOutLevel)
{
switch(backOutLevel)
{
case 2:
free(pTest->pTestFuns);
pTest->pTestFuns = NULL;
case 1:
free(pTest);
pTest = NULL;
}
}
else if (init)
{
assert(pTest);
init(pTest);
}
return pTest;
}
void ct_destroy(Test* pTest)
{
assert(pTest);
assert(pTest->pTestFuns);
free(pTest->pTestFuns);
pTest->pTestFuns = NULL;
assert(pTest->name);
free(pTest->name);
pTest->name = NULL;
free(pTest);
}
bool ct_addTestFunction(Test* pTest, TestFunc tfun)
{
assert(pTest);
assert(pTest->pTestFuns);
if (pTest->nTests == pTest->maxTests)
{
size_t newSize = pTest->nTests + CHUNK;
TestFunc* new_pTestFuns =
realloc(pTest->pTestFuns,
newSize * sizeof(TestFunc));
if (!new_pTestFuns)
return FALSE;
pTest->pTestFuns = new_pTestFuns;
pTest->maxTests += CHUNK;
}
assert(pTest->nTests < pTest->maxTests);
pTest->pTestFuns[pTest->nTests++] = tfun;
return TRUE;
}
void ct_setStream(Test* pTest, FILE* pStream)
{
pTest->pStream = pStream;
}
FILE* ct_getStream(Test* pTest)
{
return pTest->pStream;
}
long ct_report(Test* pTest)
{
assert(pTest);
if (pTest->pStream)
{
fprintf(pTest->pStream,
"Test \"%s\":\n\tPassed: %ld\n\tFailed: %ld\n",
pTest->name, pTest->nPass, pTest->nFail);
}
return pTest->nFail;
}
void ct_succeed(Test* pTest)
{
assert(pTest);
++pTest->nPass;
}
void ct_do_test(Test* pTest, const char* str,
bool cond, const char* file, long line)
{
assert(pTest);
if (!cond)
ct_do_fail(pTest, str, file, line);
else
ct_succeed(pTest);
}
void ct_do_fail(Test* pTest, const char* str,
const char* file, long line)
{
assert(pTest);
++pTest->nFail;
if (pTest->pStream)
{
fprintf(pTest->pStream,
"%s failure: (%s), %s (line %ld)\n",
pTest->name, str, file, line);
}
}
long ct_getNumPassed(Test* pTest)
{
assert(pTest);
return pTest->nPass;
}
long ct_getNumFailed(Test* pTest)
{
assert(pTest);
return pTest->nFail;
}
long ct_run(Test* pTest)
{
size_t testNum;
assert(pTest);
for (testNum = 0; testNum < pTest->nTests; ++testNum)
pTest->pTestFuns[testNum](pTest);
return pTest->nFail;
}
void ct_reset(Test* pTest)
{
assert(pTest);
pTest->nFail = pTest->nPass = 0;
}
const char* ct_getName(Test* pTest)
{
assert(pTest);
return (pTest->name);
}
long ct_getNumTests(Test* pTest)
{
assert(pTest);
return pTest->nTests;
}
@@ -1,61 +0,0 @@
/* ctest.h
*
* Defines a test framework for C projects.
*/
#ifndef CTEST_H
#define CTEST_H
#include <stdio.h>
#include <stdbool.h>
#define ct_test(test, cond) \
ct_do_test(test, #cond, cond, __FILE__, __LINE__)
#define ct_fail(test, str) \
ct_do_fail(test, str, __FILE__, __LINE__)
typedef struct _Test Test;
typedef void (*TestFunc)(Test*);
struct _Test
{
char* name;
FILE* pStream;
size_t nTests;
size_t maxTests;
TestFunc* pTestFuns;
long nPass;
long nFail;
};
#ifdef __cplusplus
extern "C" {
#endif
Test* ct_create(const char* name, void (*init)(Test*));
void ct_destroy(Test* pTest);
const char* ct_getName(Test* pTest);
long ct_getNumPassed(Test* pTest);
long ct_getNumFailed(Test* pTest);
long ct_getNumTests(Test* pTest);
FILE* ct_getStream(Test* pTest);
void ct_setStream(Test* pTest, FILE* stream);
bool ct_addTestFunction(Test* pTest, TestFunc tfun);
void ct_succeed(Test* pTest);
long ct_run(Test* pTest);
long ct_report(Test* pTest);
void ct_reset(Test* pTest);
/* Not intended for end-users: */
void ct_do_test(Test* pTest, const char* str,
bool cond, const char* file, long line);
void ct_do_fail(Test* pTest, const char* str,
const char* file, long line);
#ifdef __cplusplus
}
#endif
#endif