summaryrefslogtreecommitdiff
path: root/unittest/examples
diff options
context:
space:
mode:
authormats@mysql.com <>2006-04-04 18:16:15 +0200
committermats@mysql.com <>2006-04-04 18:16:15 +0200
commit02ffd18af6c393982262ce936bf44a814efb3605 (patch)
treedd8e8d7fdd3a93b877138eb5257cdc5f44ec3b13 /unittest/examples
parent53317ff998f1808605c1b3c1333536a1778b76a5 (diff)
downloadmariadb-git-02ffd18af6c393982262ce936bf44a814efb3605.tar.gz
WL#3206 (Add unit tests):
An implementation of the TAP framework for writing unit tests.
Diffstat (limited to 'unittest/examples')
-rw-r--r--unittest/examples/Makefile.am20
-rw-r--r--unittest/examples/no_plan.t.c19
-rw-r--r--unittest/examples/simple.t.c38
-rw-r--r--unittest/examples/skip.t.c14
-rw-r--r--unittest/examples/skip_all.t.c23
-rw-r--r--unittest/examples/todo.t.c19
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();
+}