1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-29 05:21:33 +03:00

WL#3206 (Add unit tests):

An implementation of the TAP framework for writing unit tests.


Makefile.am:
  Adding directories mytap and unittest
configure.in:
  Building Makefiles for mytap and unittest directories.
mytap/Doxyfile:
  New BitKeeper file ``mytap/Doxyfile''
mytap/Makefile.am:
  New BitKeeper file ``mytap/Makefile.am''
mytap/t/basic.t.c:
  New BitKeeper file ``mytap/t/basic.t.c''
mytap/tap.c:
  New BitKeeper file ``mytap/tap.c''
mytap/tap.h:
  New BitKeeper file ``mytap/tap.h''
unittest/Makefile.am:
  New BitKeeper file ``unittest/Makefile.am''
unittest/examples/Makefile.am:
  New BitKeeper file ``unittest/examples/Makefile.am''
unittest/examples/no_plan.t.c:
  New BitKeeper file ``unittest/examples/no_plan.t.c''
unittest/examples/simple.t.c:
  New BitKeeper file ``unittest/examples/simple.t.c''
unittest/examples/skip.t.c:
  New BitKeeper file ``unittest/examples/skip.t.c''
unittest/examples/skip_all.t.c:
  New BitKeeper file ``unittest/examples/skip_all.t.c''
unittest/examples/todo.t.c:
  New BitKeeper file ``unittest/examples/todo.t.c''
unittest/mysys/Makefile.am:
  New BitKeeper file ``unittest/mysys/Makefile.am''
unittest/mysys/bitmap.t.c:
  New BitKeeper file ``unittest/mysys/bitmap.t.c''
unittest/unit.pl:
  New BitKeeper file ``unittest/unit.pl''
This commit is contained in:
unknown
2006-04-04 18:16:15 +02:00
parent dfa9a76411
commit 6d9323ade0
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();
}