21#define ABTS_STAT_SIZE 6
79 if (
last->skipped > 0) {
83 if (
last->failed == 0) {
138 suite =
malloc(
sizeof(*suite));
165 for (dptr = suite->
head; dptr; dptr = next) {
209 fprintf(
stdout,
"===================================================\n");
222 for (dptr = suite->
head; dptr; dptr = dptr->
next) {
226 for (dptr = suite->
head; dptr; dptr = dptr->
next) {
238 while (dptr !=
NULL) {
249 printf(
"All tests passed.\n");
259 while (dptr !=
NULL) {
284#define IMPL_abts_T_equal(T, NAME, FMT, CAST) \
285void abts_##NAME##_equal(abts_case *tc, const T expected, const T actual, int lineno) \
288 if (tc->failed) return; \
290 if (expected == actual) return; \
294 fprintf(stderr, "Line %d: expected <%" FMT ">, but saw <%" FMT ">\n", \
295 lineno, CAST expected, CAST actual); \
307#define IMPL_abts_T_nequal(T, NAME, FMT, CAST) \
308void abts_##NAME##_nequal(abts_case *tc, const T expected, const T actual, int lineno) \
311 if (tc->failed) return; \
313 if (expected != actual) return; \
317 fprintf(stderr, "Line %d: expected something other than <%" FMT ">, " \
318 "but saw <%" FMT ">\n", \
319 lineno, CAST expected, CAST actual); \
334 if (tc->failed)
return;
336 if (!expected && !
actual)
return;
348 size_t n,
int lineno)
357 fprintf(
stderr,
"Line %d: expected something other than <%s>, but saw <%s>\n",
358 lineno, expected,
actual);
368 if (ptr !=
NULL)
return;
372 fprintf(
stderr,
"Line %d: expected non-NULL, but saw NULL\n", lineno);
382 if (expected ==
actual)
return;
420 if (condition)
return;
434 if (condition)
return;
438 fprintf(
stderr,
"Line %d: Condition is false, but expected true\n", lineno);
481 if (
argv[
i][0] ==
'-') {
static int find_test_name(const char *testname)
void abts_run_test(abts_suite *ts, test_func f, void *value)
static void update_status(void)
void abts_ptr_notnull(abts_case *tc, const void *ptr, int lineno)
void abts_not_impl(abts_case *tc, const char *message, int lineno)
void abts_true(abts_case *tc, int condition, int lineno)
static void end_suite(abts_suite *suite)
static void reset_status(void)
abts_suite * abts_add_suite(abts_suite *suite, const char *suite_name_full)
void abts_str_equal(abts_case *tc, const char *expected, const char *actual, int lineno)
void abts_str_nequal(abts_case *tc, const char *expected, const char *actual, size_t n, int lineno)
void abts_ptr_equal(abts_case *tc, const void *expected, const void *actual, int lineno)
void abts_fail(abts_case *tc, const char *message, int lineno)
void abts_log_message(const char *fmt,...)
static int should_test_run(const char *testname)
static int report(abts_suite *suite)
void abts_assert(abts_case *tc, const char *message, int condition, int lineno)
void abts_skip(abts_case *tc, const char *message, int lineno)
static void report_summary(const char *kind_header, const char *name_header, const char *percent_header)
static void abts_free_suite(abts_suite *suite)
#define IMPL_abts_T_nequal(T, NAME, FMT, CAST)
#define IMPL_abts_T_equal(T, NAME, FMT, CAST)
void(* test_func)(abts_case *tc, void *data)
const struct testlist alltests[]
char * strdup(const char *str)
apr_vformatter_buff_t const char * fmt
const char const char *const * args
abts_suite *(* func)(abts_suite *suite)