]> git.draconx.ca Git - gob-dx.git/commitdiff
Minor testsuite cleanup.
authorNick Bowler <nbowler@draconx.ca>
Sat, 8 Feb 2020 15:51:25 +0000 (10:51 -0500)
committerNick Bowler <nbowler@draconx.ca>
Sat, 8 Feb 2020 15:51:25 +0000 (10:51 -0500)
In the interface tests we have a macro to generate the GTypeModule for
a dynamic type, let's make that usable for the dynamic type registration
test as well.

tests/general.at
tests/interface.at
testsuite.at

index 97b59da387cfc43b50b2add4ce9e4377fcbbe574..6643d4d7b5642160b6385b49706eab440a157a7c 100644 (file)
@@ -115,31 +115,20 @@ class :Test from G:Object (dynamic)
   }
 }
 ]])
+AT_CHECK([gob2 test.gob])
+TEST_COMPILE_GOBJECT([test.c], [0], [], [ignore])
 
-AT_DATA([mod.gob],
-[[%{
-#include "test.h"
-%}
-class :Mod from G:Type:Module
-{
-  override (G:Type:Module) gboolean load(G:Type:Module *m)
-  {
-    test_register_type(m);
-    return TRUE;
-  }
-}
-]])
+TEST_TYPE_MODULE([:Test])
 
 AT_DATA([main.c],
 [[#include <stdlib.h>
-#include "mod.h"
 #include "test.h"
+#include "test-mod.h"
 
 void devnull(const char *a, GLogLevelFlags b, const char *c, gpointer d) { }
 
 int main(void)
 {
-  GTypeModule *m = g_object_new(mod_get_type(), NULL);
   guint handler;
   Test *t;
 
@@ -150,7 +139,9 @@ int main(void)
     return EXIT_FAILURE;
   g_log_remove_handler("GLib-GObject", handler);
 
-  g_type_module_use(m);
+  /* Register dynamic type */
+  g_type_module_use(g_object_new(test_mod_get_type(), NULL));
+
   /* should work now */
   t = g_object_new(test_get_type(), "s", "Hello, World", (char *)NULL);
   if (!t)
@@ -160,13 +151,10 @@ int main(void)
   return EXIT_SUCCESS;
 }
 ]])
-
-AT_CHECK([gob2 mod.gob])
-AT_CHECK([gob2 test.gob])
-TEST_COMPILE_GOBJECT([mod.c], [0], [], [ignore])
-TEST_COMPILE_GOBJECT([test.c], [0], [], [ignore])
 TEST_COMPILE_GOBJECT([main.c], [0], [], [ignore])
-AT_CHECK([$CC $CFLAGS $LDFLAGS $LIBGOBJECT_LIBS -o main mod.o test.o main.o])
+
+AT_CHECK([$CC $CFLAGS $LDFLAGS $LIBGOBJECT_LIBS -o main \
+  test.o test-mod.o main.o])
 AT_CHECK([./main], [0], [Hello, World
 ])
 
index 9c368b689d777300a620b849a46d97526fc561a6..e750bc4b5c317d388cf4d40e180812934bd50818 100644 (file)
@@ -3,31 +3,6 @@ dnl License GPLv2+: GNU General Public License version 2 or any later version.
 dnl This is free software: you are free to change and redistribute it.
 dnl There is NO WARRANTY, to the extent permitted by law.
 
-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], m4_translit([[$1]], [:A-Z], [_a-z]),
-  m4_translit([[$1]], [:A-Z], [-a-z]))])
-
-m4_define([TEST_TYPE_MODULE_],
-[AT_KEYWORDS([dynamic])dnl
-
-AT_DATA([$3-mod.gob], [[%{
-#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])])
-
 dnl Create the Test:Fooable interface with the following interface method:
 dnl
 dnl   int foo(G:Object *obj);
@@ -41,8 +16,8 @@ TEST_COMPILE_GOBJECT([test-fooable.c], [0], [], [ignore])])
 dnl TEST_FOOABLE_IMPL(Class:Name, Parent:Class, foo_body)
 dnl TEST_FOOABLE_IMPL_DYN(Class:Name, Parent:Class, foo_body)
 m4_define([TEST_FOOABLE_IMPL],
-  [TEST_FOOABLE_IMPL_([$1], m4_translit([[$1]], [:A-Z], [-a-z]),
-                      [$2], m4_translit([[$2]], [:A-Z], [-a-z]),
+  [TEST_FOOABLE_IMPL_([$1], TEST_CLASSNAME_REPLACE_SEP([$1], [-]),
+                      [$2], TEST_CLASSNAME_REPLACE_SEP([$2], [-]),
                       [$3], [$4])])
 
 m4_define([TEST_FOOABLE_IMPL_DYN],
index 52dbd98cb649a04414ea8261a3f263b08375b4ec..b28fd93535c6d8aad3d974c323516df7a02b6312 100644 (file)
@@ -16,6 +16,39 @@ 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], [[%{
+#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