-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.])
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 <config.h>
+%}
+%{
+#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
m4_divert_pop([PREPARE_TESTS])
m4_include([tests/general.at])
+m4_include([tests/interface.at])