diff options
Diffstat (limited to 'src/tests')
-rw-r--r-- | src/tests/sbus_codegen_tests.c | 33 | ||||
-rwxr-xr-x | src/tests/sbus_codegen_tests.xml | 5 | ||||
-rw-r--r-- | src/tests/sbus_codegen_tests_generated.c | 8 | ||||
-rw-r--r-- | src/tests/sbus_codegen_tests_generated.h | 19 |
4 files changed, 65 insertions, 0 deletions
diff --git a/src/tests/sbus_codegen_tests.c b/src/tests/sbus_codegen_tests.c index 6b2abf8bc..39856fac7 100644 --- a/src/tests/sbus_codegen_tests.c +++ b/src/tests/sbus_codegen_tests.c @@ -112,6 +112,38 @@ START_TEST(test_signals) } END_TEST +static int +mock_move_universe(DBusMessage *msg, struct sbus_connection *conn) +{ + /* not called */ + return 0; +} + +static int +mock_crash_now(DBusMessage *msg, struct sbus_connection *conn) +{ + /* not called */ + return 0; +} + +START_TEST(test_vtable) +{ + struct com_planetexpress_Ship vtable = { + { &com_planetexpress_Ship_meta, 0 }, + mock_move_universe, + mock_crash_now, + }; + + /* + * These are not silly tests: + * - Will fail compilation if c-symbol name was not respected + * - Will fail if method order was not respected + */ + ck_assert(vtable.crash_now == mock_crash_now); + ck_assert(vtable.MoveUniverse == mock_move_universe); +} +END_TEST + Suite *create_suite(void) { Suite *s = suite_create("sbus_codegen"); @@ -123,6 +155,7 @@ Suite *create_suite(void) tcase_add_test(tc, test_methods); tcase_add_test(tc, test_properties); tcase_add_test(tc, test_signals); + tcase_add_test(tc, test_vtable); /* Add all test cases to the test suite */ suite_add_tcase(s, tc); diff --git a/src/tests/sbus_codegen_tests.xml b/src/tests/sbus_codegen_tests.xml index 0def3585a..e571dbc17 100755 --- a/src/tests/sbus_codegen_tests.xml +++ b/src/tests/sbus_codegen_tests.xml @@ -29,6 +29,11 @@ <signal name="BecameSentient"> <arg name="gender" type="s"/> </signal> + + <!-- A method with a specific c name --> + <method name="Crash"> + <annotation value="crash_now" name="org.freedesktop.DBus.GLib.CSymbol"/> + </method> </interface> <!-- diff --git a/src/tests/sbus_codegen_tests_generated.c b/src/tests/sbus_codegen_tests_generated.c index 556eea12c..ccf612996 100644 --- a/src/tests/sbus_codegen_tests_generated.c +++ b/src/tests/sbus_codegen_tests_generated.c @@ -3,6 +3,7 @@ #include "util/util.h" #include "sbus/sssd_dbus.h" #include "sbus/sssd_dbus_meta.h" +#include "sbus_codegen_tests_generated.h" /* arguments for com.planetexpress.Ship.MoveUniverse */ const struct sbus_arg_meta com_planetexpress_Ship_MoveUniverse__in[] = { @@ -23,6 +24,13 @@ const struct sbus_method_meta com_planetexpress_Ship__methods[] = { "MoveUniverse", /* name */ com_planetexpress_Ship_MoveUniverse__in, com_planetexpress_Ship_MoveUniverse__out, + offsetof(struct com_planetexpress_Ship, MoveUniverse), + }, + { + "Crash", /* name */ + NULL, /* no in_args */ + NULL, /* no out_args */ + offsetof(struct com_planetexpress_Ship, crash_now), }, { NULL, } }; diff --git a/src/tests/sbus_codegen_tests_generated.h b/src/tests/sbus_codegen_tests_generated.h index c3a23c870..3f7621588 100644 --- a/src/tests/sbus_codegen_tests_generated.h +++ b/src/tests/sbus_codegen_tests_generated.h @@ -6,6 +6,25 @@ #include "sbus/sssd_dbus.h" /* ------------------------------------------------------------------------ + * DBus Vtable handler structures + * + * These structures are filled in by implementors of the different + * dbus interfaces to handle method calls. + * + * Handler functions of type sbus_msg_handler_fn accept raw messages, + * other handlers will be typed appropriately. If a handler that is + * set to NULL is invoked it will result in a + * org.freedesktop.DBus.Error.NotSupported error for the caller. + */ + +/* vtable for com.planetexpress.Ship */ +struct com_planetexpress_Ship { + struct sbus_vtable vtable; /* derive from sbus_vtable */ + sbus_msg_handler_fn MoveUniverse; + sbus_msg_handler_fn crash_now; +}; + +/* ------------------------------------------------------------------------ * DBus Interface Metadata * * These structure definitions are filled in with the information about |