@@ -13,6 +13,7 @@ fn test_gdbus_peer_connection() {
13
13
const EXAMPLE_XML : & str = r#"
14
14
<node>
15
15
<interface name='com.github.gtk_rs'>
16
+ <property type='i' name='Number' access='readwrite' />
16
17
<method name='Hello'>
17
18
<arg type='s' name='name' direction='in'/>
18
19
<arg type='s' name='greet' direction='out'/>
@@ -57,6 +58,7 @@ fn test_gdbus_peer_connection() {
57
58
parameters,
58
59
invocation| {
59
60
dbg ! (
61
+ "method_call" ,
60
62
_sender,
61
63
_object_path,
62
64
_interface_name,
@@ -69,6 +71,34 @@ fn test_gdbus_peer_connection() {
69
71
invocation. return_value ( Some ( & ( format ! ( "Hello {name}!" ) , ) . to_variant ( ) ) ) ;
70
72
} ,
71
73
)
74
+ . property ( {
75
+ |_connection, _sender, _object_path, _interface_name, _property_name| {
76
+ dbg ! (
77
+ "get_property" ,
78
+ _sender,
79
+ _object_path,
80
+ _interface_name,
81
+ _property_name
82
+ ) ;
83
+ assert_eq ! ( _property_name, "Number" ) ;
84
+ 123 . to_variant ( )
85
+ }
86
+ } )
87
+ . set_property ( {
88
+ |_connection, _sender, _object_path, _interface_name, _property_name, _value| {
89
+ dbg ! (
90
+ "set_property" ,
91
+ _sender,
92
+ _object_path,
93
+ _interface_name,
94
+ _property_name,
95
+ & _value
96
+ ) ;
97
+ assert_eq ! ( _property_name, "Number" ) ;
98
+ assert_eq ! ( _value, 456 . to_variant( ) ) ;
99
+ true
100
+ }
101
+ } )
72
102
. build ( )
73
103
. unwrap ( ) ;
74
104
@@ -137,6 +167,42 @@ fn test_gdbus_peer_connection() {
137
167
138
168
dbg ! ( & result) ;
139
169
170
+ dbg ! ( "getting property" ) ;
171
+
172
+ let getresult = client
173
+ . call_future (
174
+ None ,
175
+ "/com/github/gtk_rs" ,
176
+ "org.freedesktop.DBus.Properties" ,
177
+ "Get" ,
178
+ Some ( & ( "com.github.gtk_rs" , "Number" ) . to_variant ( ) ) ,
179
+ Some ( VariantTy :: new ( "(v)" ) . unwrap ( ) ) ,
180
+ gio:: DBusCallFlags :: NONE ,
181
+ 10000 ,
182
+ )
183
+ . await
184
+ . unwrap ( ) ;
185
+
186
+ assert_eq ! ( getresult, ( 123 . to_variant( ) , ) . to_variant( ) ) ;
187
+
188
+ dbg ! ( "setting property" ) ;
189
+
190
+ let setresult = client
191
+ . call_future (
192
+ None ,
193
+ "/com/github/gtk_rs" ,
194
+ "org.freedesktop.DBus.Properties" ,
195
+ "Set" ,
196
+ Some ( & ( "com.github.gtk_rs" , "Number" , 456 . to_variant ( ) ) . to_variant ( ) ) ,
197
+ None ,
198
+ gio:: DBusCallFlags :: NONE ,
199
+ 10000 ,
200
+ )
201
+ . await
202
+ . unwrap ( ) ;
203
+
204
+ assert_eq ! ( setresult, ( ) . to_variant( ) ) ;
205
+
140
206
dbg ! ( "closing client" ) ;
141
207
client. close_future ( ) . await . unwrap ( ) ;
142
208
dbg ! ( "closed client, closing server" ) ;
0 commit comments