From: Nick Bowler Date: Fri, 7 Feb 2020 20:22:09 +0000 (-0500) Subject: Add simple test cases using private data members. X-Git-Url: https://git.draconx.ca/gitweb/gob-dx.git/commitdiff_plain/910b7231905b6c38b525bcdf3440bed23c574bdd Add simple test cases using private data members. --- diff --git a/tests/general.at b/tests/general.at index 7b03f4e..a36e4df 100644 --- a/tests/general.at +++ b/tests/general.at @@ -83,6 +83,7 @@ class :Test from G:Object (dynamic) } ]]) AT_CHECK([gob2 test.gob]) +TEST_COMPILE_GOBJECT([test.c], [0], [], [ignore]) AT_DATA([main.c], [[#include @@ -92,9 +93,8 @@ int main(void) test_register_type(NULL); } ]]) - -TEST_COMPILE_GOBJECT([test.c], [0], [], [ignore]) TEST_COMPILE_GOBJECT([main.c], [0], [], [ignore]) + AT_CHECK([$CC $CFLAGS $LDFLAGS $LIBGOBJECT_LIBS -o main test.o main.o]) AT_CLEANUP @@ -208,3 +208,89 @@ AT_CHECK([$AUTOCONF --force]) AT_CHECK([./configure], [1], [ignore], [ignore]) AT_CLEANUP + +AT_SETUP([private data members]) + +AT_DATA([test.gob], [[%ctop{ +#include +%} +class :Test from G:Object +{ + private int x = 42; + + public int get_x(G:Object *go) { return TEST(go)->_priv->x; } + public void set_x(G:Object *go, int val) { TEST(go)->_priv->x = val; } +} +]]) +AT_CHECK([gob2 test.gob]) +TEST_COMPILE_GOBJECT([test.c], [0], [], [ignore]) + +AT_DATA([main.c], [[#include +#include +#include "test.h" + +int main(void) +{ + GObject *go = g_object_new(test_get_type(), NULL); + + printf("%d\n", test_get_x(go)); + printf("%d\n", (test_set_x(go, 123), test_get_x(go))); + + return 0; +} +]]) +TEST_COMPILE_GOBJECT([main.c], [0], [], [ignore]) + +AT_CHECK([$CC $CFLAGS $LDFLAGS $LIBGOBJECT_LIBS -o main \ + test.o main.o]) +AT_CHECK([./main], [0], [42 +123 +]) + +AT_CLEANUP + +AT_SETUP([private data members (dynamic)]) + +AT_DATA([test.gob], [[%ctop{ +#include +%} +class :Test from G:Object (dynamic) +{ + private int x = 54; + + public int get_x(G:Object *go) { return TEST(go)->_priv->x; } + public void set_x(G:Object *go, int val) { TEST(go)->_priv->x = val; } +} +]]) +AT_CHECK([gob2 test.gob]) +TEST_COMPILE_GOBJECT([test.c], [0], [], [ignore]) + +TEST_TYPE_MODULE([:Test]) + +AT_DATA([main.c], [[#include +#include +#include "test.h" +#include "test-mod.h" + +int main(void) +{ + GObject *go; + + g_type_module_use(g_object_new(test_mod_get_type(), NULL)); + go = g_object_new(test_get_type(), NULL); + + printf("%d\n", test_get_x(go)); + printf("%d\n", (test_set_x(go, 123), test_get_x(go))); + + return 0; +} +]]) +TEST_COMPILE_GOBJECT([main.c], [0], [], [ignore]) + +AT_CHECK([$CC $CFLAGS $LDFLAGS $LIBGOBJECT_LIBS -o main \ + test.o test-mod.o main.o]) +AT_CHECK([./main], [0], [54 +123 +]) + +AT_CLEANUP