]> git.draconx.ca Git - gob-dx.git/blobdiff - testsuite.at
Add simple test cases using private data members.
[gob-dx.git] / testsuite.at
index fccacb4a823c32e2816d3ec28fc620da55039163..c87123b9fd61150ccc0cb25f8d78e452e5ccb28e 100644 (file)
@@ -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 <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
@@ -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])