1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-30 16:24:05 +03:00

WL#3206 (Add unit tests):

An implementation of the TAP framework for writing unit tests.
This commit is contained in:
mats@mysql.com
2006-04-04 18:16:15 +02:00
parent 53317ff998
commit 02ffd18af6
17 changed files with 2141 additions and 1 deletions

View File

@ -0,0 +1,20 @@
AM_CPPFLAGS = -I$(srcdir) -I$(top_builddir)/include
AM_CPPFLAGS += -I$(top_builddir)/mytap
AM_LDFLAGS = -L$(top_builddir)/mytap
AM_CFLAGS = -Wall -ansi -pedantic
LDADD = -lmytap
noinst_PROGRAMS = simple.t skip.t todo.t skip_all.t no_plan.t
simple_t_SOURCES = simple.t.c
skip_t_SOURCES = skip.t.c
todo_t_SOURCES = todo.t.c
skip_all_t_SOURCES = skip_all.t.c
no_plan_t_SOURCES = no_plan.t.c

View File

@ -0,0 +1,19 @@
#include <stdlib.h>
#include <tap.h>
/*
Sometimes, the number of tests is not known beforehand. In those
cases, the plan can be omitted and will instead be written at the
end of the test (inside exit_status()).
Use this sparingly, it is a last resort: planning how many tests you
are going to run will help you catch that offending case when some
tests are skipped for an unknown reason.
*/
int main() {
ok(1, NULL);
ok(1, NULL);
ok(1, NULL);
return exit_status();
}

View File

@ -0,0 +1,38 @@
#include <tap.h>
unsigned int gcs(unsigned int a, unsigned int b)
{
if (b > a) {
unsigned int t = a;
a = b;
b = t;
}
while (b != 0) {
unsigned int m = a % b;
a = b;
b = m;
}
return a;
}
int main() {
unsigned int a,b;
unsigned int failed;
plan(1);
diag("Testing basic functions");
failed = 0;
for (a = 1 ; a < 2000 ; ++a)
for (b = 1 ; b < 2000 ; ++b)
{
unsigned int d = gcs(a, b);
if (a % d != 0 || b % d != 0) {
++failed;
diag("Failed for gcs(%4u,%4u)", a, b);
}
}
ok(failed == 0, "Testing gcs()");
return exit_status();
}

View File

@ -0,0 +1,14 @@
#include <tap.h>
#include <stdlib.h>
int main() {
plan(4);
ok(1, NULL);
ok(1, NULL);
SKIP_BLOCK_IF(1, 2, "No point") {
ok(1, NULL);
ok(1, NULL);
}
return exit_status();
}

View File

@ -0,0 +1,23 @@
#include <stdlib.h>
#include <tap.h>
int has_feature() {
return 0;
}
/*
In some cases, an entire test file does not make sense because there
some feature is missing. In that case, the entire test case can be
skipped in the following manner.
*/
int main() {
if (!has_feature())
skip_all("Missing feature");
plan(4);
ok(1, NULL);
ok(1, NULL);
ok(1, NULL);
ok(1, NULL);
return exit_status();
}

View File

@ -0,0 +1,19 @@
#include <stdlib.h>
#include <tap.h>
int main()
{
plan(4);
ok(1, NULL);
ok(1, NULL);
/*
Tests in the todo region is expected to fail. If they don't,
something is strange.
*/
todo_start("Need to fix these");
ok(0, NULL);
ok(0, NULL);
todo_end();
return exit_status();
}