From b136a28f377ea667faed44e939ad0434d419bb8a Mon Sep 17 00:00:00 2001 From: Robin Haberkorn Date: Mon, 14 May 2012 15:58:47 +0200 Subject: added test suite for libexperiment-reader using GTester * automatically generate test reports * does not abort when gtester tools are missing (as test suite programs can be built nevertheless) --- .gitignore | 4 + configure.ac | 17 +- doc/Doxyfile.in | 3 +- lib/experiment-reader/Makefile.am | 2 + lib/experiment-reader/tests/Makefile.am | 21 + .../tests/test-experiment-valid.xml | 914 +++++++++++++++++++++ lib/experiment-reader/tests/unit-tests.c | 77 ++ 7 files changed, 1035 insertions(+), 3 deletions(-) create mode 100644 lib/experiment-reader/tests/Makefile.am create mode 100644 lib/experiment-reader/tests/test-experiment-valid.xml create mode 100644 lib/experiment-reader/tests/unit-tests.c diff --git a/.gitignore b/.gitignore index 2a97f8f..0fb871f 100644 --- a/.gitignore +++ b/.gitignore @@ -19,6 +19,10 @@ Makefile.in stamp-* # Generated +unit-tests +gtester-log.xml +gtester-log.html + cclosure-marshallers.[ch] /doc/Doxyfile /doc/doxygen diff --git a/configure.ac b/configure.ac index 867076c..260dc8c 100644 --- a/configure.ac +++ b/configure.ac @@ -27,12 +27,20 @@ if [[ $ac_cv_prog_cc_c99 = no ]]; then fi AM_PROG_CC_C_O -# might not be used if built from source distro AC_CHECK_PROG(GLIB_GENMARSHAL, glib-genmarshal, glib-genmarshal) if [[ x$GLIB_GENMARSHAL = x ]]; then AC_MSG_ERROR([glib-genmarshal not found!]) fi +# not necessarily required +AC_CHECK_PROG(GTESTER, gtester, gtester) +AC_CHECK_PROG(GTESTER_REPORT, gtester-report, gtester-report) +if [[ x$GTESTER = x -o x$GTESTER_REPORT = x ]]; then + AC_MSG_WARN([gtester not found! Cannot automatically run test suites.]) +fi +AM_CONDITIONAL(USE_GTESTER, test x$GTESTER != x -a x$GTESTER_REPORT != x) + +# not necessarily required (depends on options) AC_CHECK_PROG(DOXYGEN, doxygen, doxygen) AC_CHECK_PROG(XSLTPROC, xsltproc, xsltproc) XSLT_FLAGS="--xinclude" @@ -189,5 +197,10 @@ AC_DEFINE(DEFAULT_QUICKOPEN_DIR, ["."], [Default directory for listing experimen AC_DEFINE(EXPERIMENT_MOVIE_FILTER, ["*.mp4;*.avi"], [Filters for (quick) opening movies]) AC_DEFINE(EXPERIMENT_TRANSCRIPT_EXT, ["xml"], [File extension of experiment transcripts]) -AC_CONFIG_FILES([Makefile lib/Makefile lib/gtk-vlc-player/Makefile lib/experiment-reader/Makefile lib/gtk-experiment-widgets/Makefile src/Makefile doc/Makefile doc/Doxyfile]) +AC_CONFIG_FILES([Makefile lib/Makefile src/Makefile]) +AC_CONFIG_FILES([lib/gtk-vlc-player/Makefile]) +AC_CONFIG_FILES([lib/experiment-reader/Makefile lib/experiment-reader/tests/Makefile]) +AC_CONFIG_FILES([lib/gtk-experiment-widgets/Makefile]) +AC_CONFIG_FILES([doc/Makefile doc/Doxyfile]) + AC_OUTPUT diff --git a/doc/Doxyfile.in b/doc/Doxyfile.in index 88e0f24..792fcd0 100644 --- a/doc/Doxyfile.in +++ b/doc/Doxyfile.in @@ -618,7 +618,8 @@ EXCLUDE_SYMLINKS = NO # against the file with absolute path, so to exclude all test directories # for example use the pattern */test/* -EXCLUDE_PATTERNS = */cclosure-marshallers.[ch] +EXCLUDE_PATTERNS = */cclosure-marshallers.[ch] \ + */tests/* # The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names # (namespaces, classes, functions, etc.) that should be excluded from the diff --git a/lib/experiment-reader/Makefile.am b/lib/experiment-reader/Makefile.am index 7f1a040..fc06aac 100644 --- a/lib/experiment-reader/Makefile.am +++ b/lib/experiment-reader/Makefile.am @@ -1,5 +1,7 @@ AM_CFLAGS = -Wall +SUBDIRS = . tests + reader_datadir = @datarootdir@/libexperiment-reader lib_LTLIBRARIES = libexperiment-reader.la diff --git a/lib/experiment-reader/tests/Makefile.am b/lib/experiment-reader/tests/Makefile.am new file mode 100644 index 0000000..388496f --- /dev/null +++ b/lib/experiment-reader/tests/Makefile.am @@ -0,0 +1,21 @@ +AM_CFLAGS = -Wall +AM_CPPFLAGS = -I.. +LDADD = ../libexperiment-reader.la + +AM_CFLAGS += @LIBGLIB_CFLAGS@ +LDADD += @LIBGLIB_LIBS@ + +check_PROGRAMS = unit-tests +dist_noinst_DATA = test-experiment-valid.xml + +if USE_GTESTER +check-local : gtester-log.html +endif + +gtester-log.html : gtester-log.xml + @GTESTER_REPORT@ $< >$@ + +gtester-log.xml : $(check_PROGRAMS) + @GTESTER@ -m=quick -o=$@ $^ + +CLEANFILES = gtester-log.xml gtester-log.html diff --git a/lib/experiment-reader/tests/test-experiment-valid.xml b/lib/experiment-reader/tests/test-experiment-valid.xml new file mode 100644 index 0000000..a7b8bec --- /dev/null +++ b/lib/experiment-reader/tests/test-experiment-valid.xml @@ -0,0 +1,914 @@ + + + + + + + + + Wizard + + + Proband + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + guten tag und herzlich willkommen + + + + + + + + + + + + + bitte nennen und buchstabieren sie zunächst ihren vor und zunamen + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + mit abschluss dieser aufgabe + + + + + + tschüss + + + + diff --git a/lib/experiment-reader/tests/unit-tests.c b/lib/experiment-reader/tests/unit-tests.c new file mode 100644 index 0000000..6ccb84e --- /dev/null +++ b/lib/experiment-reader/tests/unit-tests.c @@ -0,0 +1,77 @@ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include + +#include +#include + +#include + +#define TEST_EXPERIMENT_VALID "test-experiment-valid.xml" +/* #define TEST_EXPERIMENT_INVALID "test-experiment-invalid.xml" */ + +static void +test_new_valid(void) +{ + ExperimentReader *reader; + + reader = experiment_reader_new(TEST_EXPERIMENT_VALID); + g_assert(reader != NULL); + + g_object_unref(reader); +} + +static void +test_foreach_greeting_topic_values_cb(ExperimentReader *reader, + const gchar *topic_id, + gint64 start_time, + gpointer data) +{ + gint *i = (gint *)data; + + g_assert(reader != NULL); + g_assert(data != NULL); + + switch (*i) { + case 0: + g_assert_cmpstr(topic_id, ==, "bz_2"); + g_assert_cmpint(start_time, ==, 13648); + break; + default: + g_assert_not_reached(); + } + + ++*i; +} + +static void +test_foreach_greeting_topic_values(void) +{ + ExperimentReader *reader; + gint cb_iter = 0; + + reader = experiment_reader_new(TEST_EXPERIMENT_VALID); + g_assert(reader != NULL); + + experiment_reader_foreach_greeting_topic(reader, + test_foreach_greeting_topic_values_cb, + &cb_iter); + + g_object_unref(reader); +} + +int +main(int argc, char **argv) +{ + g_type_init(); + g_test_init(&argc, &argv, NULL); + + g_test_add_func("/api/new/test_valid", test_new_valid); + + g_test_add_func("/api/foreach_greeting_topic/test_values", + test_foreach_greeting_topic_values); + + g_test_run_suite(g_test_get_root()); +} -- cgit v1.2.3