Index: ossp-pkg/sa/sa_test.c
RCS File: /v/ossp/cvs/ossp-pkg/sa/sa_test.c,v
rcsdiff -q -kk '-r1.9' '-r1.10' -u '/v/ossp/cvs/ossp-pkg/sa/sa_test.c,v' 2>/dev/null
--- sa_test.c 2001/10/10 15:50:31 1.9
+++ sa_test.c 2001/10/31 19:28:49 1.10
@@ -38,7 +38,7 @@
#include "ts.h"
#include "sa.h"
-TST_FUNC(test_saa_impexp)
+TS_TEST(test_saa_impexp)
{
sa_addr_t *saa;
sa_rc_t rv;
@@ -62,30 +62,30 @@
{ "unix:", SA_ERR_ARG, NULL }
};
- tst_check(TST, "sa_addr_create");
+ ts_test_check(TS_CTX, "sa_addr_create");
if ((rv = sa_addr_create(&saa)) != SA_OK)
- tst_fail(TST, "sa_addr_create -> %d[%s] (expected %d[%s])",
+ ts_test_fail(TS_CTX, "sa_addr_create -> %d[%s] (expected %d[%s])",
rv, sa_error(rv), SA_OK, sa_error(SA_OK));
for (i = 0; i < sizeof(table)/sizeof(table[0]); i++) {
- tst_check(TST, "sa_addr_u2a(\"%s\")", table[i].in);
+ ts_test_check(TS_CTX, "sa_addr_u2a(\"%s\")", table[i].in);
if ((rv = sa_addr_u2a(saa, table[i].in)) != table[i].rv)
- tst_fail(TST, "sa_addr_a2u -> %d[%s] (expected %d[%s])",
+ ts_test_fail(TS_CTX, "sa_addr_a2u -> %d[%s] (expected %d[%s])",
rv, sa_error(rv), table[i].rv, sa_error(table[i].rv));
- tst_check(TST, "sa_addr_a2u");
+ ts_test_check(TS_CTX, "sa_addr_a2u");
if ((rv = sa_addr_a2u(saa, &cp)) != SA_OK)
- tst_fail(TST, "sa_addr_u2a -> %d[%s] (expected %d[%s])",
+ ts_test_fail(TS_CTX, "sa_addr_u2a -> %d[%s] (expected %d[%s])",
rv, sa_error(rv), SA_OK, sa_error(SA_OK));
if (table[i].rv == SA_OK)
if (strcmp(cp, table[i].out) != 0)
- tst_fail(TST, "sa_addr_a2u -> \"%s\" (expected \"%s\")", cp, table[i].out);
+ ts_test_fail(TS_CTX, "sa_addr_a2u -> \"%s\" (expected \"%s\")", cp, table[i].out);
}
- tst_check(tst, "sa_addr_destroy");
+ ts_test_check(TS_CTX, "sa_addr_destroy");
if ((rv = sa_addr_destroy(saa)) != SA_OK)
- tst_fail(TST, "sa_addr_destroy -> %d[%s] (expected %d[%s])",
+ ts_test_fail(TS_CTX, "sa_addr_destroy -> %d[%s] (expected %d[%s])",
rv, sa_error(rv), SA_OK, sa_error(SA_OK));
}
-TST_FUNC(test_saa_match)
+TS_TEST(test_saa_match)
{
sa_addr_t *saa1;
sa_addr_t *saa2;
@@ -120,10 +120,10 @@
continue;
if ((rv = sa_addr_u2a(saa2, table[i].acl)) != SA_OK)
continue;
- tst_check(TST, "sa_addr_match(\"%s\", \"%s\", %d)",
+ ts_test_check(TS_CTX, "sa_addr_match(\"%s\", \"%s\", %d)",
table[i].in, table[i].acl, table[i].prefixlen);
if ((rv = sa_addr_match(saa1, saa2, table[i].prefixlen)) != table[i].rv)
- tst_fail(TST, "sa_addr_match -> %d[%s] (expected %d[%s])",
+ ts_test_fail(TS_CTX, "sa_addr_match -> %d[%s] (expected %d[%s])",
rv, sa_error(rv), table[i].rv, sa_error(table[i].rv));
}
sa_addr_destroy(saa1);
@@ -132,14 +132,14 @@
int main(int argc, char *argv[])
{
- ts_t *ts;
+ ts_suite_t *ts;
int n;
- ts = ts_new("OSSP SA (Socket Abstraction Library)");
- ts_test(ts, test_saa_impexp, "socket address abstraction (import/export)");
- ts_test(ts, test_saa_match, "socket address abstraction (matching)");
- n = ts_run(ts);
- ts_free(ts);
+ ts = ts_suite_new("OSSP SA (Socket Abstraction Library)");
+ ts_suite_test(ts, test_saa_impexp, "socket address abstraction (import/export)");
+ ts_suite_test(ts, test_saa_match, "socket address abstraction (matching)");
+ n = ts_suite_run(ts);
+ ts_suite_free(ts);
return n;
}
Index: ossp-pkg/sa/ts.c
RCS File: /v/ossp/cvs/ossp-pkg/sa/ts.c,v
rcsdiff -q -kk '-r1.2' '-r1.3' -u '/v/ossp/cvs/ossp-pkg/sa/ts.c,v' 2>/dev/null
--- ts.c 2001/10/10 15:11:42 1.2
+++ ts.c 2001/10/31 19:28:49 1.3
@@ -4,7 +4,7 @@
** Copyright (c) 2001 The OSSP Project
** Copyright (c) 2001 Cable & Wireless Deutschland
**
-** This file is part of OSSP TS, a test suite library which
+** This file is part of OSSP TS, a small test suite library which
** can be found at http://www.ossp.org/pkg/ts/.
**
** Permission to use, copy, modify, and distribute this software for
@@ -95,23 +95,23 @@
};
/* test suite test */
-struct tst_st {
- RING_ENTRY(tst_t) next;
+struct ts_test_st {
+ RING_ENTRY(ts_test_t) next;
char *title;
- tst_func_t func;
+ ts_test_cb_t func;
const char *file;
int line;
RING_HEAD(tstc_t) checks;
};
/* test suite */
-struct ts_st {
+struct ts_suite_st {
char *title;
- RING_HEAD(tst_t) tests;
+ RING_HEAD(ts_test_t) tests;
};
/* minimal output-independent vprintf(3) variant which supports %{c,s,d,%} only */
-static int ts_mvxprintf(char *buffer, size_t bufsize, const char *format, va_list ap)
+static int ts_suite_mvxprintf(char *buffer, size_t bufsize, const char *format, va_list ap)
{
/* sufficient integer buffer: x log_10(2) + safety */
char ibuf[((sizeof(int)*8)/3)+10];
@@ -189,7 +189,7 @@
}
/* minimal vasprintf(3) variant which supports %{c,s,d} only */
-static char *ts_mvasprintf(const char *format, va_list ap)
+static char *ts_suite_mvasprintf(const char *format, va_list ap)
{
char *buffer;
int n;
@@ -198,70 +198,70 @@
if (format == NULL || ap == NULL)
return NULL;
ap2 = ap;
- if ((n = ts_mvxprintf(NULL, 0, format, ap)) == -1)
+ if ((n = ts_suite_mvxprintf(NULL, 0, format, ap)) == -1)
return NULL;
if ((buffer = (char *)malloc(n+1)) == NULL)
return NULL;
- ts_mvxprintf(buffer, n+1, format, ap2);
+ ts_suite_mvxprintf(buffer, n+1, format, ap2);
return buffer;
}
/* minimal asprintf(3) variant which supports %{c,s,d} only */
-static char *ts_masprintf(const char *format, ...)
+static char *ts_suite_masprintf(const char *format, ...)
{
va_list ap;
char *cp;
va_start(ap, format);
- cp = ts_mvasprintf(format, ap);
+ cp = ts_suite_mvasprintf(format, ap);
va_end(ap);
return cp;
}
/* create test suite */
-ts_t *ts_new(const char *fmt, ...)
+ts_suite_t *ts_suite_new(const char *fmt, ...)
{
- ts_t *ts;
+ ts_suite_t *ts;
va_list ap;
- if ((ts = (ts_t *)malloc(sizeof(ts_t))) == NULL)
+ if ((ts = (ts_suite_t *)malloc(sizeof(ts_suite_t))) == NULL)
return NULL;
va_start(ap, fmt);
- ts->title = ts_mvasprintf(fmt, ap);
- RING_INIT(&ts->tests, tst_t, next);
+ ts->title = ts_suite_mvasprintf(fmt, ap);
+ RING_INIT(&ts->tests, ts_test_t, next);
va_end(ap);
return ts;
}
/* add test case to test suite */
-void ts_test(ts_t *ts, tst_func_t func, const char *fmt, ...)
+void ts_suite_test(ts_suite_t *ts, ts_test_cb_t func, const char *fmt, ...)
{
- tst_t *tst;
+ ts_test_t *tst;
va_list ap;
if (ts == NULL || func == NULL || fmt == NULL)
return;
- if ((tst = (tst_t *)malloc(sizeof(tst_t))) == NULL)
+ if ((tst = (ts_test_t *)malloc(sizeof(ts_test_t))) == NULL)
return;
RING_ELEM_INIT(tst, next);
va_start(ap, fmt);
- tst->title = ts_mvasprintf(fmt, ap);
+ tst->title = ts_suite_mvasprintf(fmt, ap);
va_end(ap);
tst->func = func;
tst->file = NULL;
tst->line = 0;
RING_INIT(&tst->checks, tstc_t, next);
- RING_INSERT_TAIL(&ts->tests, tst, tst_t, next);
+ RING_INSERT_TAIL(&ts->tests, tst, ts_test_t, next);
return;
}
/* run test suite */
-int ts_run(ts_t *ts)
+int ts_suite_run(ts_suite_t *ts)
{
- tst_t *tst;
+ ts_test_t *tst;
tstc_t *tstc;
tstl_t *tstl;
- int total_tests, total_tests_failed;
+ int total_tests, total_tests_suite_failed;
int total_checks, total_checks_failed;
int test_checks, test_checks_failed;
const char *file;
@@ -273,7 +273,7 @@
/* init total counters */
total_tests = 0;
- total_tests_failed = 0;
+ total_tests_suite_failed = 0;
total_checks = 0;
total_checks_failed = 0;
@@ -284,8 +284,8 @@
fflush(stdout);
/* iterate through all test cases */
- RING_FOREACH(tst, &ts->tests, tst_t, next) {
- cp = ts_masprintf(" Test: %s ........................................"
+ RING_FOREACH(tst, &ts->tests, ts_test_t, next) {
+ cp = ts_suite_masprintf(" Test: %s ........................................"
"........................................", tst->title);
cp[60] = '\0';
fprintf(stdout, "%s", cp);
@@ -339,7 +339,7 @@
total_tests++;
if (test_checks_failed > 0) {
total_checks_failed += test_checks_failed;
- total_tests_failed++;
+ total_tests_suite_failed++;
}
}
@@ -347,9 +347,9 @@
fprintf(stdout, " __________________________________________________________________\n");
fprintf(stdout, "\n");
fprintf(stdout, " Test Summary: %d tests (%d ok, %d failed), %d checks (%d ok, %d failed)\n",
- total_tests, (total_tests - total_tests_failed), total_tests_failed,
+ total_tests, (total_tests - total_tests_suite_failed), total_tests_suite_failed,
total_checks, (total_checks - total_checks_failed), total_checks_failed);
- if (total_tests_failed > 0)
+ if (total_tests_suite_failed > 0)
fprintf(stdout, " Test Suite: FAILED\n");
else
fprintf(stdout, " Test Suite: OK\n");
@@ -360,15 +360,15 @@
}
/* destroy test suite */
-void ts_free(ts_t *ts)
+void ts_suite_free(ts_suite_t *ts)
{
- tst_t *tst;
+ ts_test_t *tst;
tstc_t *tstc;
tstl_t *tstl;
if (ts == NULL)
return;
- RING_FOREACH(tst, &ts->tests, tst_t, next) {
+ RING_FOREACH(tst, &ts->tests, ts_test_t, next) {
RING_FOREACH(tstc, &tst->checks, tstc_t, next) {
RING_FOREACH(tstl, &tstc->logs, tstl_t, next) {
free(tstl->text);
@@ -385,7 +385,7 @@
}
/* annotate test case with file name and line number */
-tst_t *tst_ctx(tst_t *tst, const char *file, int line)
+ts_test_t *ts_test_ctx(ts_test_t *tst, const char *file, int line)
{
if (tst != NULL && file != NULL) {
tst->file = file;
@@ -395,7 +395,7 @@
}
/* annotate test case with check */
-void tst_check(tst_t *tst, const char *fmt, ...)
+void ts_test_check(ts_test_t *tst, const char *fmt, ...)
{
tstc_t *tstc;
va_list ap;
@@ -406,7 +406,7 @@
return;
va_start(ap, fmt);
RING_ELEM_INIT(tstc, next);
- tstc->title = ts_mvasprintf(fmt, ap);
+ tstc->title = ts_suite_mvasprintf(fmt, ap);
tstc->failed = 0;
tstc->file = tst->file;
tstc->line = tst->line;
@@ -417,7 +417,7 @@
}
/* annotate test case with log message and failure */
-void tst_fail(tst_t *tst, const char *fmt, ...)
+void ts_test_fail(ts_test_t *tst, const char *fmt, ...)
{
tstc_t *tstc;
tstl_t *tstl;
@@ -428,7 +428,7 @@
if ((tstl = (tstl_t *)malloc(sizeof(tstl_t))) == NULL)
return;
va_start(ap, fmt);
- tstl->text = ts_mvasprintf(fmt, ap);
+ tstl->text = ts_suite_mvasprintf(fmt, ap);
tstl->file = tst->file;
tstl->line = tst->line;
RING_ELEM_INIT(tstl, next);
@@ -440,7 +440,7 @@
}
/* annotate test case with log message only */
-void tst_log(tst_t *tst, const char *fmt, ...)
+void ts_test_log(ts_test_t *tst, const char *fmt, ...)
{
tstc_t *tstc;
tstl_t *tstl;
@@ -451,7 +451,7 @@
if ((tstl = (tstl_t *)malloc(sizeof(tstl_t))) == NULL)
return;
va_start(ap, fmt);
- tstl->text = ts_mvasprintf(fmt, ap);
+ tstl->text = ts_suite_mvasprintf(fmt, ap);
tstl->file = tst->file;
tstl->line = tst->line;
RING_ELEM_INIT(tstl, next);
Index: ossp-pkg/sa/ts.h
RCS File: /v/ossp/cvs/ossp-pkg/sa/ts.h,v
rcsdiff -q -kk '-r1.1' '-r1.2' -u '/v/ossp/cvs/ossp-pkg/sa/ts.h,v' 2>/dev/null
--- ts.h 2001/10/10 15:01:56 1.1
+++ ts.h 2001/10/31 19:28:49 1.2
@@ -4,7 +4,7 @@
** Copyright (c) 2001 The OSSP Project
** Copyright (c) 2001 Cable & Wireless Deutschland
**
-** This file is part of OSSP TS, a test suite library which
+** This file is part of OSSP TS, a small test suite library which
** can be found at http://www.ossp.org/pkg/ts/.
**
** Permission to use, copy, modify, and distribute this software for
@@ -31,32 +31,34 @@
#ifndef _TS_H_
#define _TS_H_
-struct ts_st;
-typedef struct ts_st ts_t;
-
-struct tst_st;
-typedef struct tst_st tst_t;
-
-typedef void (*tst_func_t)(tst_t *);
-
-#define TST_FUNC(name) \
- static void name(tst_t *tst)
-
-#define TST_CTX(tst) \
- tst_ctx(tst, __FILE__, __LINE__)
-
-#define TST \
- TST_CTX(tst)
-
-ts_t *ts_new (const char *fmt, ...);
-void ts_test (ts_t *ts, tst_func_t func, const char *fmt, ...);
-int ts_run (ts_t *ts);
-void ts_free (ts_t *ts);
-
-tst_t *tst_ctx (tst_t *tst, const char *file, int line);
-void tst_check (tst_t *tst, const char *fmt, ...);
-void tst_fail (tst_t *tst, const char *fmt, ...);
-void tst_log (tst_t *tst, const char *fmt, ...);
+/* test suite object type */
+struct ts_suite_st;
+typedef struct ts_suite_st ts_suite_t;
+
+/* test object type */
+struct ts_test_st;
+typedef struct ts_test_st ts_test_t;
+
+/* test callback function type */
+typedef void (*ts_test_cb_t)(ts_test_t *);
+
+/* test suite operations */
+ts_suite_t *ts_suite_new (const char *fmt, ...);
+void ts_suite_test (ts_suite_t *s, ts_test_cb_t func, const char *fmt, ...);
+int ts_suite_run (ts_suite_t *s);
+void ts_suite_free (ts_suite_t *s);
+
+/* test operations */
+ts_test_t *ts_test_ctx (ts_test_t *t, const char *file, int line);
+void ts_test_check (ts_test_t *t, const char *fmt, ...);
+void ts_test_fail (ts_test_t *t, const char *fmt, ...);
+void ts_test_log (ts_test_t *t, const char *fmt, ...);
+
+/* test suite short-cut macros */
+#define TS_TEST(name) \
+ static void name(ts_test_t *_t)
+#define TS_CTX \
+ ts_test_ctx(_t, __FILE__, __LINE__)
#endif /* _TS_H_ */