X-Git-Url: http://git.draconx.ca/gitweb/gob-dx.git/blobdiff_plain/185449d25b2f9c93d2928e4745e8aa64d7d9ab9c..36d8d6594f34f1ff76b80a6ddf8a005c5ca4b24d:/testsuite.at diff --git a/testsuite.at b/testsuite.at index 97c0253..c87123b 100644 --- a/testsuite.at +++ b/testsuite.at @@ -1,4 +1,4 @@ -AT_COPYRIGHT([Copyright © 2019 Nick Bowler +AT_COPYRIGHT([Copyright © 2019-2020 Nick Bowler License GPLv2+: GNU General Public License version 2 or any later version. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law.]) @@ -16,9 +16,55 @@ dnl Same as TEST_COMPILE_GOBJECT, except that the C++ compiler is used. m4_define([TEST_COMPILEXX_GOBJECT], [AT_CHECK([$HAVE_GOBJECT || exit 77 $CXX $CPPFLAGS $CXXFLAGS $LIBGOBJECT_CFLAGS -c $1], m4_shift($@))]) +dnl TEST_CLASSNAME_REPLACE_SEP(Class:Name, separator) +dnl +dnl Convert the components of Class:Name to lower case, and join them +dnl together with the given separator. The result is a quoted string. +m4_define([TEST_CLASSNAME_REPLACE_SEP], + [m4_join([$2], m4_unquote(m4_split(m4_tolower([$1]), [:])))]) + +dnl TEST_TYPE_MODULE(Class:Name) +dnl Create a GTypeModule (Class:Name:Mod) which registers the dynamic +dnl type indiciated by Class:Name. +m4_define([TEST_TYPE_MODULE], +[TEST_TYPE_MODULE_([$1], + TEST_CLASSNAME_REPLACE_SEP([$1], [_]), + TEST_CLASSNAME_REPLACE_SEP([$1], [-]))]) + +m4_define([TEST_TYPE_MODULE_], +[AT_KEYWORDS([dynamic])dnl + +AT_DATA([$3-mod.gob], [[%ctop{ +#include +%} +%{ +#include "$3.h" +%} +class $1:Mod from G:Type:Module +{ + override (G:Type:Module) gboolean load(G:Type:Module *m) + { + $2_register_type(m); + return TRUE; + } +} +]]) +AT_CHECK([gob2 $3-mod.gob]) +TEST_COMPILE_GOBJECT([$3-mod.c], [0], [], [ignore])]) + AT_INIT AT_COLOR_TESTS AT_TESTED([gob2]) +m4_divert_push([PREPARE_TESTS])dnl +CPPFLAGS="-I$builddir $CPPFLAGS" +:; { + AS_ECHO(["AUTOCONF = ${AUTOCONF=autoconf}"]) + command -v $AUTOCONF + (set -x; $AUTOCONF --version) 2>&1 + echo +} >&AS_MESSAGE_LOG_FD +m4_divert_pop([PREPARE_TESTS]) m4_include([tests/general.at]) +m4_include([tests/interface.at])