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:
20
unittest/examples/Makefile.am
Normal file
20
unittest/examples/Makefile.am
Normal 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
|
19
unittest/examples/no_plan.t.c
Normal file
19
unittest/examples/no_plan.t.c
Normal 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();
|
||||
}
|
38
unittest/examples/simple.t.c
Normal file
38
unittest/examples/simple.t.c
Normal 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();
|
||||
}
|
||||
|
14
unittest/examples/skip.t.c
Normal file
14
unittest/examples/skip.t.c
Normal 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();
|
||||
}
|
23
unittest/examples/skip_all.t.c
Normal file
23
unittest/examples/skip_all.t.c
Normal 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();
|
||||
}
|
19
unittest/examples/todo.t.c
Normal file
19
unittest/examples/todo.t.c
Normal 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();
|
||||
}
|
Reference in New Issue
Block a user