D-Bus: Port tests to GDBus
[vala-lang.git] / tests / dbus / structs.test
blob8f721eb41e1179d2f6c82b5a8f861964acbea28b
1 Packages: gio-2.0
2 D-Bus
4 Program: client
6 struct FooStruct {
7         int i;
8         string s;
10         public FooStruct (int i, string s) {
11                 this.i = i;
12                 this.s = s;
13         }
16 [DBus (name = "org.example.Test")]
17 interface Test : Object {
18         public abstract FooStruct test_property { owned get; set; }
20         public abstract FooStruct test_struct (FooStruct f, out FooStruct g) throws IOError;
23 void main () {
24         // client
25         Test test = Bus.get_proxy_sync (BusType.SESSION, "org.example.Test", "/org/example/test");
27         FooStruct f, g, h;
28         f = FooStruct (42, "hello");
29         h = test.test_struct (f, out g);
30         assert (g.i == 23);
31         assert (g.s == "world");
32         assert (h.i == 11);
33         assert (h.s == "vala");
35         test.test_property = f;
36         g = test.test_property;
37         assert (g.i == 42);
38         assert (g.s == "hello");
41 Program: server
43 struct FooStruct {
44         int i;
45         string s;
47         public FooStruct (int i, string s) {
48                 this.i = i;
49                 this.s = s;
50         }
53 [DBus (name = "org.example.Test")]
54 class Test : Object {
55         public FooStruct test_property { owned get; set; }
57         public FooStruct test_struct (FooStruct f, out FooStruct g) {
58                 assert (f.i == 42);
59                 assert (f.s == "hello");
60                 g = FooStruct (23, "world");
61                 return FooStruct (11, "vala");
62         }
65 Application app;
67 void client_exit (Pid pid, int status) {
68         // client finished, terminate server
69         assert (status == 0);
70         app.quit ();
73 void main () {
74         var conn = Bus.get_sync (BusType.SESSION);
75         conn.register_object ("/org/example/test", new Test ());
77         // try to register service in session bus
78         app = new Application ("org.example.Test");
80         // server ready, spawn client
81         Pid client_pid;
82         Process.spawn_async (null, { "test", "/dbus/structs/client" }, null, SpawnFlags.DO_NOT_REAP_CHILD, null, out client_pid);
83         ChildWatch.add (client_pid, client_exit);
85         app.run ();