telepathy-glib: TpCapabilities: Add more unit tests for the case of extra unknown fixed props

Xavier Claessens xclaesse at kemper.freedesktop.org
Tue Apr 17 03:57:57 PDT 2012


Module: telepathy-glib
Branch: master
Commit: b2cde22bbf29015c644a6552cfad26d0ca9aabc9
URL:    http://cgit.freedesktop.org/telepathy/telepathy-glib/commit/?id=b2cde22bbf29015c644a6552cfad26d0ca9aabc9

Author: Xavier Claessens <xavier.claessens at collabora.co.uk>
Date:   Tue Apr 17 12:44:35 2012 +0200

TpCapabilities: Add more unit tests for the case of extra unknown fixed props

---

 tests/capabilities.c |   65 ++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 53 insertions(+), 12 deletions(-)

diff --git a/tests/capabilities.c b/tests/capabilities.c
index 7b82195..61c1ce6 100644
--- a/tests/capabilities.c
+++ b/tests/capabilities.c
@@ -269,7 +269,8 @@ add_stream_tube_class (GPtrArray *classes,
 static void
 add_dbus_tube_class (GPtrArray *classes,
     TpHandleType handle_type,
-    const gchar *service_name)
+    const gchar *service_name,
+    gboolean add_extra_fixed)
 {
   GHashTable *fixed;
   const gchar * const allowed[] = { NULL };
@@ -288,6 +289,9 @@ add_dbus_tube_class (GPtrArray *classes,
           service_name);
     }
 
+  if (add_extra_fixed)
+    tp_asv_set_boolean (fixed, "ExtraBadgersRequired", TRUE);
+
   arr = tp_value_array_build (2,
       TP_HASH_TYPE_STRING_VARIANT_MAP, fixed,
       G_TYPE_STRV, allowed,
@@ -433,7 +437,7 @@ test_supports_tube (Test *test,
   /* Connection capabilities */
   classes = g_ptr_array_sized_new (2);
   add_stream_tube_class (classes, TP_HANDLE_TYPE_CONTACT, NULL);
-  add_dbus_tube_class (classes, TP_HANDLE_TYPE_CONTACT, NULL);
+  add_dbus_tube_class (classes, TP_HANDLE_TYPE_CONTACT, NULL, FALSE);
 
   caps = tp_tests_object_new_static_class (TP_TYPE_CAPABILITIES,
       "channel-classes", classes,
@@ -463,7 +467,7 @@ test_supports_tube (Test *test,
 
   /* TpCapabilities containing the private dbus tube caps without service */
   classes = g_ptr_array_sized_new (1);
-  add_dbus_tube_class (classes, TP_HANDLE_TYPE_CONTACT, NULL);
+  add_dbus_tube_class (classes, TP_HANDLE_TYPE_CONTACT, NULL, FALSE);
 
   caps = tp_tests_object_new_static_class (TP_TYPE_CAPABILITIES,
       "channel-classes", classes,
@@ -495,8 +499,8 @@ test_supports_tube (Test *test,
   /* TpCapabilities containing the private and muc dbus tube caps without
    * service */
   classes = g_ptr_array_sized_new (2);
-  add_dbus_tube_class (classes, TP_HANDLE_TYPE_CONTACT, NULL);
-  add_dbus_tube_class (classes, TP_HANDLE_TYPE_ROOM, NULL);
+  add_dbus_tube_class (classes, TP_HANDLE_TYPE_CONTACT, NULL, FALSE);
+  add_dbus_tube_class (classes, TP_HANDLE_TYPE_ROOM, NULL, FALSE);
 
   caps = tp_tests_object_new_static_class (TP_TYPE_CAPABILITIES,
       "channel-classes", classes,
@@ -528,10 +532,10 @@ test_supports_tube (Test *test,
   /* TpCapabilities containing the private and muc dbus tube caps and
    * one with a service */
   classes = g_ptr_array_sized_new (4);
-  add_dbus_tube_class (classes, TP_HANDLE_TYPE_CONTACT, NULL);
-  add_dbus_tube_class (classes, TP_HANDLE_TYPE_ROOM, NULL);
-  add_dbus_tube_class (classes, TP_HANDLE_TYPE_CONTACT, "com.Test");
-  add_dbus_tube_class (classes, TP_HANDLE_TYPE_ROOM, "com.Test");
+  add_dbus_tube_class (classes, TP_HANDLE_TYPE_CONTACT, NULL, FALSE);
+  add_dbus_tube_class (classes, TP_HANDLE_TYPE_ROOM, NULL, FALSE);
+  add_dbus_tube_class (classes, TP_HANDLE_TYPE_CONTACT, "com.Test", FALSE);
+  add_dbus_tube_class (classes, TP_HANDLE_TYPE_ROOM, "com.Test", FALSE);
 
   caps = tp_tests_object_new_static_class (TP_TYPE_CAPABILITIES,
       "channel-classes", classes,
@@ -563,11 +567,29 @@ test_supports_tube (Test *test,
         "com.Badger"));
 
   g_object_unref (caps);
+
+  /* Any extra fixed prop make it unsupported */
+  classes = g_ptr_array_sized_new (1);
+  add_dbus_tube_class (classes, TP_HANDLE_TYPE_CONTACT, NULL, TRUE);
+
+  caps = tp_tests_object_new_static_class (TP_TYPE_CAPABILITIES,
+      "channel-classes", classes,
+      "contact-specific", TRUE,
+      NULL);
+
+  g_boxed_free (TP_ARRAY_TYPE_REQUESTABLE_CHANNEL_CLASS_LIST,
+     classes);
+
+  g_assert (!tp_capabilities_supports_dbus_tubes (caps,
+      TP_HANDLE_TYPE_CONTACT, NULL));
+
+  g_object_unref (caps);
 }
 
 static void
 add_room_list_class (GPtrArray *classes,
-    gboolean server)
+    gboolean server,
+    gboolean add_extra_fixed)
 {
   GHashTable *fixed;
   const gchar * const allowed[] = {
@@ -583,6 +605,9 @@ add_room_list_class (GPtrArray *classes,
           TP_HANDLE_TYPE_NONE,
       NULL);
 
+  if (add_extra_fixed)
+    tp_asv_set_boolean (fixed, "ExtraBadgersRequired", TRUE);
+
   arr = tp_value_array_build (2,
       TP_HASH_TYPE_STRING_VARIANT_MAP, fixed,
       G_TYPE_STRV, server ? allowed : no_allowed,
@@ -621,7 +646,7 @@ test_supports_room_list (Test *test,
   /* Support room list but no server */
   classes = g_ptr_array_sized_new (4);
   add_ft_class (classes);
-  add_room_list_class (classes, FALSE);
+  add_room_list_class (classes, FALSE, FALSE);
 
   caps = tp_tests_object_new_static_class (TP_TYPE_CAPABILITIES,
       "channel-classes", classes,
@@ -639,7 +664,7 @@ test_supports_room_list (Test *test,
   /* Support room list with server */
   classes = g_ptr_array_sized_new (4);
   add_ft_class (classes);
-  add_room_list_class (classes, TRUE);
+  add_room_list_class (classes, TRUE, FALSE);
 
   caps = tp_tests_object_new_static_class (TP_TYPE_CAPABILITIES,
       "channel-classes", classes,
@@ -653,6 +678,22 @@ test_supports_room_list (Test *test,
   g_assert (with_server);
 
   g_object_unref (caps);
+
+  /* Any extra fixed prop make it unsupported */
+  classes = g_ptr_array_sized_new (1);
+  add_room_list_class (classes, FALSE, TRUE);
+
+  caps = tp_tests_object_new_static_class (TP_TYPE_CAPABILITIES,
+      "channel-classes", classes,
+      "contact-specific", FALSE,
+      NULL);
+
+  g_boxed_free (TP_ARRAY_TYPE_REQUESTABLE_CHANNEL_CLASS_LIST,
+     classes);
+
+  g_assert (!tp_capabilities_supports_room_list (caps, NULL));
+
+  g_object_unref (caps);
 }
 
 static void



More information about the telepathy-commits mailing list