From 952b7dbb724ab53d4b3d7aa3afb497f7cbb7da47 Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C3=BCrg=20Billeter?= Date: Fri, 16 Jan 2009 15:39:35 +0000 Subject: [PATCH] Test marshalling of basic types over D-Bus MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit 2009-01-16 Jürg Billeter * tests/Makefile.am: * tests/dbus/basic-types.test: Test marshalling of basic types over D-Bus svn path=/trunk/; revision=2351 --- ChangeLog | 7 ++++ tests/Makefile.am | 1 + tests/dbus/basic-types.test | 78 +++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 86 insertions(+) create mode 100644 tests/dbus/basic-types.test diff --git a/ChangeLog b/ChangeLog index 19f5f133..86bdb39b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,12 @@ 2009-01-16 Jürg Billeter + * tests/Makefile.am: + * tests/dbus/basic-types.test: + + Test marshalling of basic types over D-Bus + +2009-01-16 Jürg Billeter + * vala/valafield.vala: * vala/valaparser.vala: diff --git a/tests/Makefile.am b/tests/Makefile.am index 5fd31e79..a7bf6aa5 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -40,6 +40,7 @@ TESTS = \ objects/test-029.test \ objects/test-034.test \ errors/errors.test \ + dbus/basic-types.test \ $(NULL) EXTRA_DIST = \ diff --git a/tests/dbus/basic-types.test b/tests/dbus/basic-types.test new file mode 100644 index 00000000..9f142e96 --- /dev/null +++ b/tests/dbus/basic-types.test @@ -0,0 +1,78 @@ +Packages: dbus-glib-1 + +Program: client + +[DBus (name = "org.example.Test")] +interface Test : Object { + public abstract int test_int (int i, out int j); + public abstract string test_string (string s, out string t); +} + +void main () { + var conn = DBus.Bus.get (DBus.BusType.SESSION); + + // client + var test = (Test) conn.get_object ("org.example.Test", "/org/example/test"); + + int j, k; + k = test.test_int (42, out j); + assert (j == 23); + assert (k == 11); + + string t, u; + u = test.test_string ("hello", out t); + assert (t == "world"); + assert (u == "vala"); +} + +Program: server + +[DBus (name = "org.example.Test")] +class Test : Object { + public int test_int (int i, out int j) { + assert (i == 42); + j = 23; + return 11; + } + + public string test_string (string s, out string t) { + assert (s == "hello"); + t = "world"; + return "vala"; + } +} + +MainLoop main_loop; +int exit_status; + +void client_exit (Pid pid, int status) { + // client finished, terminate server + if (status != 0) { + exit_status = 1; + } + main_loop.quit (); +} + +int main () { + var conn = DBus.Bus.get (DBus.BusType.SESSION); + dynamic DBus.Object bus = conn.get_object ("org.freedesktop.DBus", "/org/freedesktop/DBus", "org.freedesktop.DBus"); + + // try to register service in session bus + uint request_name_result = bus.request_name ("org.example.Test", (uint) 0); + if (request_name_result == DBus.RequestNameReply.PRIMARY_OWNER) { + // start server + var server = new Test (); + conn.register_object ("/org/example/test", server); + + // server ready, spawn client + Pid client_pid; + Process.spawn_async (null, { "client" }, null, SpawnFlags.DO_NOT_REAP_CHILD, null, out client_pid); + ChildWatch.add (client_pid, client_exit); + + main_loop = new MainLoop (null, false); + main_loop.run (); + } else { + exit_status = 1; + } + return exit_status; +} -- 2.11.4.GIT