X-Git-Url: https://git.draconx.ca/gitweb/gob-dx.git/blobdiff_plain/6d89cbf4838083291d303ca0bccf5b024777bfae..910b7231905b6c38b525bcdf3440bed23c574bdd:/testsuite.at diff --git a/testsuite.at b/testsuite.at index fccacb4..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,11 +16,48 @@ 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 @@ -30,3 +67,4 @@ m4_divert_push([PREPARE_TESTS])dnl m4_divert_pop([PREPARE_TESTS]) m4_include([tests/general.at]) +m4_include([tests/interface.at])