X-Git-Url: https://git.draconx.ca/gitweb/gob-dx.git/blobdiff_plain/6bec6738ec9d978036dcc64a7008c86b95bed5c0..998925c8d088559a780a9f4fa63f66bad3e3321e:/tests/interface.at diff --git a/tests/interface.at b/tests/interface.at index 9c368b6..4cc41d9 100644 --- a/tests/interface.at +++ b/tests/interface.at @@ -1,33 +1,8 @@ -dnl Copyright © 2020 Nick Bowler +dnl Copyright © 2020, 2022-2023 Nick Bowler 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], @@ -50,7 +25,10 @@ m4_define([TEST_FOOABLE_IMPL_DYN], TEST_TYPE_MODULE([$1])]) m4_define([TEST_FOOABLE_IMPL_], -[AT_DATA([$2.gob], [[%{ +[AT_DATA([$2.gob], [[%ctop{ +#include +%} +%{ #include #include #include "test-fooable.h" @@ -83,7 +61,8 @@ TEST_FOOABLE_IFACE() TEST_FOOABLE_IMPL([Test:A], [G:Object], [return 42;]) AT_DATA([main.c], -[[#include +[[#include +#include #include #include "test-fooable.h" #include "test-a.h" @@ -92,6 +71,7 @@ int main(void) { int rc; + g_type_init(); rc = test_foo(g_object_new(TEST_TYPE_A, NULL)); printf("%d\n", rc); if (rc < 0) @@ -100,9 +80,7 @@ int main(void) } ]]) TEST_COMPILE_GOBJECT([main.c], [0], [], [ignore]) - -AT_CHECK([$CC $CFLAGS $LDFLAGS $LIBGOBJECT_LIBS -o main \ - test-a.o test-fooable.o main.o]) +TEST_LINK_GOBJECT([main], [test-a.o test-fooable.o main.o]) AT_CHECK([./main], [0], [42 ]) @@ -116,7 +94,8 @@ TEST_FOOABLE_IFACE() TEST_FOOABLE_IMPL_DYN([Test:A], [G:Object], [return 54;]) AT_DATA([main.c], -[[#include +[[#include +#include #include #include "test-fooable.h" #include "test-a.h" @@ -126,6 +105,7 @@ int main(void) { int rc; + g_type_init(); g_type_module_use(g_object_new(TEST_TYPE_A_MOD, NULL)); rc = test_foo(g_object_new(TEST_TYPE_A, NULL)); @@ -136,9 +116,7 @@ int main(void) } ]]) TEST_COMPILE_GOBJECT([main.c], [0], [], [ignore]) - -AT_CHECK([$CC $CFLAGS $LDFLAGS $LIBGOBJECT_LIBS -o main \ - test-a.o test-a-mod.o test-fooable.o main.o]) +TEST_LINK_GOBJECT([main], [test-a.o test-a-mod.o test-fooable.o main.o]) AT_CHECK([./main], [0], [54 ]) @@ -156,7 +134,8 @@ TEST_FOOABLE_IMPL([Test:B], [Test:A], [puts("Test:B foo called"); return 54;]) AT_DATA([main.c], -[[#include +[[#include +#include #include #include "test-fooable.h" #include "test-a.h" @@ -166,6 +145,7 @@ int main(void) { int rc; + g_type_init(); rc = test_foo(g_object_new(TEST_TYPE_A, NULL)); printf("%d\n", rc); if (rc < 0) @@ -180,9 +160,7 @@ int main(void) } ]]) TEST_COMPILE_GOBJECT([main.c], [0], [], [ignore]) - -AT_CHECK([$CC $CFLAGS $LDFLAGS $LIBGOBJECT_LIBS -o main \ - test-a.o test-b.o test-fooable.o main.o]) +TEST_LINK_GOBJECT([main], [test-a.o test-b.o test-fooable.o main.o]) AT_CHECK([./main], [0], [Test:A foo called 42 Test:B foo called @@ -203,7 +181,8 @@ TEST_FOOABLE_IMPL_DYN([Test:B], [Test:A], [puts("Test:B foo called"); return 54;]) AT_DATA([main.c], -[[#include +[[#include +#include #include #include "test-fooable.h" #include "test-a.h" @@ -214,6 +193,7 @@ int main(void) { int rc; + g_type_init(); g_type_module_use(g_object_new(TEST_TYPE_B_MOD, NULL)); rc = test_foo(g_object_new(TEST_TYPE_A, NULL)); @@ -230,10 +210,8 @@ int main(void) } ]]) TEST_COMPILE_GOBJECT([main.c], [0], [], [ignore]) - -AT_CHECK([$CC $CFLAGS $LDFLAGS $LIBGOBJECT_LIBS -o main \ - test-a.o test-b.o test-b-mod.o test-fooable.o main.o]) - +TEST_LINK_GOBJECT([main], + [test-a.o test-b.o test-b-mod.o test-fooable.o main.o]) AT_CHECK([./main], [0], [Test:A foo called 42 Test:B foo called @@ -254,7 +232,8 @@ TEST_FOOABLE_IMPL_DYN([Test:B], [Test:A], [puts("Test:B foo called"); return 54;]) AT_DATA([main.c], -[[#include +[[#include +#include #include #include "test-fooable.h" #include "test-a.h" @@ -266,6 +245,7 @@ int main(void) { int rc; + g_type_init(); g_type_module_use(g_object_new(TEST_TYPE_A_MOD, NULL)); g_type_module_use(g_object_new(TEST_TYPE_B_MOD, NULL)); @@ -283,10 +263,8 @@ int main(void) } ]]) TEST_COMPILE_GOBJECT([main.c], [0], [], [ignore]) - -AT_CHECK([$CC $CFLAGS $LDFLAGS $LIBGOBJECT_LIBS -o main \ - test-a.o test-a-mod.o test-b.o test-b-mod.o test-fooable.o main.o]) - +TEST_LINK_GOBJECT([main], + [test-a.o test-a-mod.o test-b.o test-b-mod.o test-fooable.o main.o]) AT_CHECK([./main], [0], [Test:A foo called 42 Test:B foo called @@ -307,7 +285,8 @@ TEST_FOOABLE_IMPL([Test:C], [Test:B], [puts("Test:C foo called"); return PARENT_HANDLER(go);]) AT_DATA([main.c], -[[#include +[[#include +#include #include #include "test-fooable.h" #include "test-a.h" @@ -318,6 +297,7 @@ int main(void) { int rc; + g_type_init(); rc = test_foo(g_object_new(TEST_TYPE_C, NULL)); printf("%d\n", rc); if (rc < 0) @@ -328,9 +308,7 @@ int main(void) ]]) TEST_COMPILE_GOBJECT([main.c], [0], [], [ignore]) - -AT_CHECK([$CC $CFLAGS $LDFLAGS $LIBGOBJECT_LIBS -o main \ - test-a.o test-b.o test-c.o test-fooable.o main.o]) +TEST_LINK_GOBJECT([main], [test-a.o test-b.o test-c.o test-fooable.o main.o]) AT_CHECK([./main], [0], [Test:C foo called Test:B foo called Test:A foo called @@ -351,7 +329,8 @@ TEST_FOOABLE_IMPL_DYN([Test:C], [Test:B], [puts("Test:C foo called"); return PARENT_HANDLER(go);]) AT_DATA([main.c], -[[#include +[[#include +#include #include #include "test-fooable.h" #include "test-a.h" @@ -365,6 +344,7 @@ int main(void) { int rc; + g_type_init(); g_type_module_use(g_object_new(TEST_TYPE_A_MOD, NULL)); g_type_module_use(g_object_new(TEST_TYPE_B_MOD, NULL)); g_type_module_use(g_object_new(TEST_TYPE_C_MOD, NULL)); @@ -379,10 +359,9 @@ int main(void) ]]) TEST_COMPILE_GOBJECT([main.c], [0], [], [ignore]) - -AT_CHECK([$CC $CFLAGS $LDFLAGS $LIBGOBJECT_LIBS -o main \ - test-a.o test-a-mod.o test-b.o test-b-mod.o test-c.o test-c-mod.o \ - test-fooable.o main.o]) +TEST_LINK_GOBJECT([main], m4_join([ ], + [test-a.o test-a-mod.o test-b.o test-b-mod.o test-c.o test-c-mod.o], + [test-fooable.o main.o])) AT_CHECK([./main], [0], [Test:C foo called Test:B foo called Test:A foo called