[Telepathy-commits] [telepathy-glib/master] test-group-mixin: check some of Changed signals' contents

Will Thompson will.thompson at collabora.co.uk
Mon Jan 12 04:18:08 PST 2009


---
 tests/dbus/group-mixin.c |   76 +++++++++++++++++++++++++++++++++++++--------
 1 files changed, 62 insertions(+), 14 deletions(-)

diff --git a/tests/dbus/group-mixin.c b/tests/dbus/group-mixin.c
index d9f4026..f00134f 100644
--- a/tests/dbus/group-mixin.c
+++ b/tests/dbus/group-mixin.c
@@ -25,8 +25,11 @@
 
 static int fail = 0;
 static GMainLoop *mainloop;
-static guint expecting_members_changed = 0;
-static guint expecting_members_changed_detailed = 0;
+static gboolean expecting_members_changed = FALSE;
+static gboolean expecting_members_changed_detailed = FALSE;
+static const gchar *expected_message;
+static TpHandle expected_actor;
+static TpChannelGroupChangeReason expected_reason;
 
 static void
 myassert_failed (void)
@@ -35,16 +38,22 @@ myassert_failed (void)
 }
 
 static void
-expect_signals (guint changed)
+expect_signals (const gchar *message,
+                TpHandle actor,
+                TpChannelGroupChangeReason reason)
 {
-  expecting_members_changed = changed;
-  expecting_members_changed_detailed = changed;
+  expecting_members_changed = TRUE;
+  expecting_members_changed_detailed = TRUE;
+
+  expected_message = message;
+  expected_actor = actor;
+  expected_reason = reason;
 }
 
 static gboolean
 outstanding_signals (void)
 {
-  return (expecting_members_changed + expecting_members_changed_detailed > 0);
+  return (expecting_members_changed || expecting_members_changed_detailed);
 }
 
 static void
@@ -66,9 +75,12 @@ on_members_changed (TpChannel *proxy,
                     gpointer user_data,
                     GObject *weak_object)
 {
-  MYASSERT (expecting_members_changed > 0, ": got unexpected MembersChanged");
+  MYASSERT (expecting_members_changed, ": got unexpected MembersChanged");
+  expecting_members_changed = FALSE;
 
-  expecting_members_changed--;
+  MYASSERT_SAME_STRING (arg_Message, expected_message);
+  MYASSERT_SAME_UINT (arg_Actor, expected_actor);
+  MYASSERT_SAME_UINT (arg_Reason, expected_reason);
 
   if (!outstanding_signals ())
     g_main_loop_quit (mainloop);
@@ -84,14 +96,49 @@ on_members_changed_detailed (TpChannel *proxy,
                              gpointer user_data,
                              GObject *weak_object)
 {
-  MYASSERT (expecting_members_changed_detailed > 0,
-      ": got unexpected MembersChangedDetailed");
+  const gchar *message;
+  TpHandle actor;
+  TpChannelGroupChangeReason reason;
+  gboolean valid;
 
-  expecting_members_changed_detailed--;
+  MYASSERT (expecting_members_changed_detailed,
+      ": got unexpected MembersChangedDetailed");
+  expecting_members_changed_detailed = FALSE;
+
+  message = tp_asv_get_string (arg_Details, "message");
+
+  if (message == NULL)
+    message = "";
+
+  MYASSERT_SAME_STRING (message, expected_message);
+
+  actor = tp_asv_get_uint32 (arg_Details, "actor", &valid);
+  if (valid)
+    {
+      MYASSERT_SAME_UINT (actor, expected_actor);
+    }
+  else
+    {
+      MYASSERT_SAME_UINT (expected_actor, 0);
+      MYASSERT (tp_asv_lookup (arg_Details, "actor") == NULL,
+          ": wanted an actor, not an imposter");
+    }
+
+  reason = tp_asv_get_uint32 (arg_Details, "change-reason", &valid);
+  if (valid)
+    {
+      MYASSERT_SAME_UINT (reason, expected_reason);
+    }
+  else
+    {
+      MYASSERT_SAME_UINT (expected_reason,
+          TP_CHANNEL_GROUP_CHANGE_REASON_NONE);
+      MYASSERT (tp_asv_lookup (arg_Details, "reason") == NULL,
+          ": utterly unreasonable");
+    }
 
   if (!outstanding_signals ())
     g_main_loop_quit (mainloop);
-
 }
 
 static void
@@ -145,7 +192,7 @@ check_incoming_invitation (TestTextChannelGroup *service_chan,
     TpIntSet *add_local_pending = tp_intset_new ();
     tp_intset_add (add_local_pending, service_chan->conn->self_handle);
 
-    expect_signals (1);
+    expect_signals ("HELLO THAR", 0, TP_CHANNEL_GROUP_CHANGE_REASON_INVITED);
     tp_group_mixin_change_members ((GObject *) service_chan, "HELLO THAR", NULL,
         NULL, add_local_pending, NULL, 0,
         TP_CHANNEL_GROUP_CHANGE_REASON_INVITED);
@@ -163,7 +210,8 @@ 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);
 
-    expect_signals (1);
+    expect_signals ("", service_chan->conn->self_handle,
+        TP_CHANNEL_GROUP_CHANGE_REASON_NONE);
     MYASSERT (tp_cli_channel_interface_group_run_add_members (chan, -1,
         contacts, "", &error, NULL), "");
     MYASSERT_NO_ERROR (error);
-- 
1.5.6.5




More information about the Telepathy-commits mailing list