[Telepathy-commits] [telepathy-glib/master] test-group-mixin: listen for MembersChangedDetailed
Will Thompson
will.thompson at collabora.co.uk
Mon Jan 12 04:18:08 PST 2009
---
tests/dbus/group-mixin.c | 52 +++++++++++++++++++++++++++++++++++--------
tests/lib/textchan-group.c | 4 ++-
2 files changed, 45 insertions(+), 11 deletions(-)
diff --git a/tests/dbus/group-mixin.c b/tests/dbus/group-mixin.c
index 0f1acaa..d9f4026 100644
--- a/tests/dbus/group-mixin.c
+++ b/tests/dbus/group-mixin.c
@@ -26,6 +26,7 @@
static int fail = 0;
static GMainLoop *mainloop;
static guint expecting_members_changed = 0;
+static guint expecting_members_changed_detailed = 0;
static void
myassert_failed (void)
@@ -33,10 +34,17 @@ myassert_failed (void)
fail = 1;
}
+static void
+expect_signals (guint changed)
+{
+ expecting_members_changed = changed;
+ expecting_members_changed_detailed = changed;
+}
+
static gboolean
outstanding_signals (void)
{
- return expecting_members_changed > 0;
+ return (expecting_members_changed + expecting_members_changed_detailed > 0);
}
static void
@@ -58,7 +66,7 @@ on_members_changed (TpChannel *proxy,
gpointer user_data,
GObject *weak_object)
{
- MYASSERT (expecting_members_changed > 0, "got unexpected MembersChanged");
+ MYASSERT (expecting_members_changed > 0, ": got unexpected MembersChanged");
expecting_members_changed--;
@@ -67,6 +75,26 @@ on_members_changed (TpChannel *proxy,
}
static void
+on_members_changed_detailed (TpChannel *proxy,
+ const GArray *arg_Added,
+ const GArray *arg_Removed,
+ const GArray *arg_Local_Pending,
+ const GArray *arg_Remote_Pending,
+ GHashTable *arg_Details,
+ gpointer user_data,
+ GObject *weak_object)
+{
+ MYASSERT (expecting_members_changed_detailed > 0,
+ ": got unexpected MembersChangedDetailed");
+
+ expecting_members_changed_detailed--;
+
+ if (!outstanding_signals ())
+ g_main_loop_quit (mainloop);
+
+}
+
+static void
check_initial_properties (TpChannel *chan)
{
GHashTable *props = NULL;
@@ -99,7 +127,9 @@ check_initial_properties (TpChannel *chan)
flags = tp_asv_get_uint32 (props, "GroupFlags", &valid);
MYASSERT (flags, ": GroupFlags property should be defined");
- MYASSERT_SAME_UINT (flags, TP_CHANNEL_GROUP_FLAG_PROPERTIES);
+ MYASSERT_SAME_UINT (flags,
+ TP_CHANNEL_GROUP_FLAG_PROPERTIES |
+ TP_CHANNEL_GROUP_FLAG_MEMBERS_CHANGED_DETAILED);
g_hash_table_unref (props);
}
@@ -115,13 +145,13 @@ check_incoming_invitation (TestTextChannelGroup *service_chan,
TpIntSet *add_local_pending = tp_intset_new ();
tp_intset_add (add_local_pending, service_chan->conn->self_handle);
- expecting_members_changed = 1;
+ expect_signals (1);
tp_group_mixin_change_members ((GObject *) service_chan, "HELLO THAR", NULL,
NULL, add_local_pending, NULL, 0,
TP_CHANNEL_GROUP_CHANGE_REASON_INVITED);
wait_for_outstanding_signals ();
- MYASSERT (expecting_members_changed == 0,
- ": MembersChanged should have fired once");
+ MYASSERT (!outstanding_signals (),
+ ": MembersChanged and MembersChangedDetailed should have fired once");
tp_intset_destroy (add_local_pending);
}
@@ -133,13 +163,13 @@ check_incoming_invitation (TestTextChannelGroup *service_chan,
GArray *contacts = g_array_sized_new (FALSE, FALSE, sizeof (TpHandle), 1);
g_array_append_val (contacts, service_chan->conn->self_handle);
- expecting_members_changed = 1;
+ expect_signals (1);
MYASSERT (tp_cli_channel_interface_group_run_add_members (chan, -1,
contacts, "", &error, NULL), "");
MYASSERT_NO_ERROR (error);
- wait_for_outstanding_signals ();
- MYASSERT (expecting_members_changed == 0,
- ": MembersChanged should have fired once");
+ wait_for_outstanding_signals ();
+ MYASSERT (!outstanding_signals (),
+ ": MembersChanged and MembersChangedDetailed should have fired once");
g_array_free (contacts, TRUE);
}
@@ -159,6 +189,8 @@ test_group_mixin (TestTextChannelGroup *service_chan,
tp_cli_channel_interface_group_connect_to_members_changed (chan,
on_members_changed, NULL, NULL, NULL, NULL);
+ tp_cli_channel_interface_group_connect_to_members_changed_detailed (chan,
+ on_members_changed_detailed, NULL, NULL, NULL, NULL);
check_initial_properties (chan);
diff --git a/tests/lib/textchan-group.c b/tests/lib/textchan-group.c
index 4cf952f..d956b22 100644
--- a/tests/lib/textchan-group.c
+++ b/tests/lib/textchan-group.c
@@ -115,7 +115,9 @@ constructor (GType type,
tp_group_mixin_init (object, G_STRUCT_OFFSET (TestTextChannelGroup, group),
contact_repo, self->conn->self_handle);
- tp_group_mixin_change_flags (object, TP_CHANNEL_GROUP_FLAG_PROPERTIES, 0);
+ tp_group_mixin_change_flags (object,
+ TP_CHANNEL_GROUP_FLAG_PROPERTIES |
+ TP_CHANNEL_GROUP_FLAG_MEMBERS_CHANGED_DETAILED, 0);
return object;
}
--
1.5.6.5
More information about the Telepathy-commits
mailing list