diff options
author | unknown <mats@mysql.com> | 2006-04-04 18:16:15 +0200 |
---|---|---|
committer | unknown <mats@mysql.com> | 2006-04-04 18:16:15 +0200 |
commit | 6d9323ade0b057fb6e80b6473531f54993d7ecf3 (patch) | |
tree | dd8e8d7fdd3a93b877138eb5257cdc5f44ec3b13 /unittest/examples | |
parent | dfa9a7641104686b588af016aa58cf46a9db093f (diff) | |
download | mariadb-git-6d9323ade0b057fb6e80b6473531f54993d7ecf3.tar.gz |
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''
Diffstat (limited to 'unittest/examples')
-rw-r--r-- | unittest/examples/Makefile.am | 20 | ||||
-rw-r--r-- | unittest/examples/no_plan.t.c | 19 | ||||
-rw-r--r-- | unittest/examples/simple.t.c | 38 | ||||
-rw-r--r-- | unittest/examples/skip.t.c | 14 | ||||
-rw-r--r-- | unittest/examples/skip_all.t.c | 23 | ||||
-rw-r--r-- | unittest/examples/todo.t.c | 19 |
6 files changed, 133 insertions, 0 deletions
diff --git a/unittest/examples/Makefile.am b/unittest/examples/Makefile.am new file mode 100644 index 00000000000..1d0416f88c8 --- /dev/null +++ b/unittest/examples/Makefile.am @@ -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 diff --git a/unittest/examples/no_plan.t.c b/unittest/examples/no_plan.t.c new file mode 100644 index 00000000000..67029c7962f --- /dev/null +++ b/unittest/examples/no_plan.t.c @@ -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(); +} diff --git a/unittest/examples/simple.t.c b/unittest/examples/simple.t.c new file mode 100644 index 00000000000..866af865327 --- /dev/null +++ b/unittest/examples/simple.t.c @@ -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(); +} + diff --git a/unittest/examples/skip.t.c b/unittest/examples/skip.t.c new file mode 100644 index 00000000000..dd8f96c9541 --- /dev/null +++ b/unittest/examples/skip.t.c @@ -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(); +} diff --git a/unittest/examples/skip_all.t.c b/unittest/examples/skip_all.t.c new file mode 100644 index 00000000000..7590bdaeb0b --- /dev/null +++ b/unittest/examples/skip_all.t.c @@ -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(); +} diff --git a/unittest/examples/todo.t.c b/unittest/examples/todo.t.c new file mode 100644 index 00000000000..13a0c950b54 --- /dev/null +++ b/unittest/examples/todo.t.c @@ -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(); +} |