summaryrefslogtreecommitdiff
path: root/tests/capabilities.c
diff options
context:
space:
mode:
authorGuillaume Desmottes <guillaume.desmottes@collabora.co.uk>2012-04-10 16:52:49 +0200
committerGuillaume Desmottes <guillaume.desmottes@collabora.co.uk>2012-04-16 14:52:38 +0200
commit9fee4385e567e0f4265ffdddb6898aa0d364214e (patch)
treea673e64446e32a2dd7cfa59b4850b09d39db04dc /tests/capabilities.c
parentc1e3f295a9879185b08ecef2146f4a5fb2b4981d (diff)
downloadtelepathy-glib-9fee4385e567e0f4265ffdddb6898aa0d364214e.tar.gz
Add tp_capabilities_supports_sms()
https://bugs.freedesktop.org/show_bug.cgi?id=48506
Diffstat (limited to 'tests/capabilities.c')
-rw-r--r--tests/capabilities.c105
1 files changed, 105 insertions, 0 deletions
diff --git a/tests/capabilities.c b/tests/capabilities.c
index 01eac787e..f05964c25 100644
--- a/tests/capabilities.c
+++ b/tests/capabilities.c
@@ -177,6 +177,7 @@ test_supports (Test *test,
g_assert (tp_capabilities_is_specific_to_contact (caps));
g_assert (tp_capabilities_supports_text_chats (caps));
g_assert (!tp_capabilities_supports_text_chatrooms (caps));
+ g_assert (!tp_capabilities_supports_sms (caps));
g_object_unref (caps);
@@ -195,6 +196,7 @@ test_supports (Test *test,
g_assert (tp_capabilities_is_specific_to_contact (caps));
g_assert (!tp_capabilities_supports_text_chats (caps));
g_assert (tp_capabilities_supports_text_chatrooms (caps));
+ g_assert (!tp_capabilities_supports_sms (caps));
g_object_unref (caps);
@@ -214,6 +216,7 @@ test_supports (Test *test,
g_assert (tp_capabilities_is_specific_to_contact (caps));
g_assert (tp_capabilities_supports_text_chats (caps));
g_assert (tp_capabilities_supports_text_chatrooms (caps));
+ g_assert (!tp_capabilities_supports_sms (caps));
g_object_unref (caps);
@@ -223,6 +226,7 @@ test_supports (Test *test,
g_assert (tp_capabilities_is_specific_to_contact (caps));
g_assert (!tp_capabilities_supports_text_chats (caps));
g_assert (!tp_capabilities_supports_text_chatrooms (caps));
+ g_assert (!tp_capabilities_supports_sms (caps));
classes = tp_capabilities_get_channel_classes (caps);
g_assert_cmpuint (classes->len, ==, 0);
@@ -651,6 +655,105 @@ test_supports_room_list (Test *test,
g_object_unref (caps);
}
+static void
+add_sms_class (GPtrArray *classes,
+ gboolean add_extra_fixed,
+ gboolean use_allowed)
+{
+ GHashTable *fixed;
+ GPtrArray *allowed;
+ GValueArray *arr;
+
+ fixed = tp_asv_new (
+ TP_PROP_CHANNEL_CHANNEL_TYPE, G_TYPE_STRING,
+ TP_IFACE_CHANNEL_TYPE_TEXT,
+ TP_PROP_CHANNEL_TARGET_HANDLE_TYPE, G_TYPE_UINT,
+ TP_HANDLE_TYPE_CONTACT,
+ NULL);
+
+ allowed = g_ptr_array_new ();
+
+ if (use_allowed)
+ {
+ g_ptr_array_add (allowed, TP_PROP_CHANNEL_INTERFACE_SMS_SMS_CHANNEL);
+ }
+ else
+ {
+ tp_asv_set_boolean (fixed, TP_PROP_CHANNEL_INTERFACE_SMS_SMS_CHANNEL,
+ TRUE);
+ }
+
+ g_ptr_array_add (allowed, 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, allowed->pdata,
+ G_TYPE_INVALID);
+
+ g_hash_table_unref (fixed);
+ g_ptr_array_unref (allowed);
+
+ g_ptr_array_add (classes, arr);
+}
+
+static void
+test_supports_sms (Test *test,
+ gconstpointer data G_GNUC_UNUSED)
+{
+ TpCapabilities *caps;
+ GPtrArray *classes;
+
+ classes = g_ptr_array_sized_new (1);
+ add_sms_class (classes, FALSE, FALSE);
+
+ 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_sms (caps));
+
+ g_object_unref (caps);
+
+ /* Reject if more fixed properties are required */
+ classes = g_ptr_array_sized_new (1);
+ add_sms_class (classes, TRUE, FALSE);
+
+ 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_sms (caps));
+
+ g_object_unref (caps);
+
+ /* Test with SMS as an allowed property */
+ classes = g_ptr_array_sized_new (1);
+ add_sms_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_sms (caps));
+
+ g_object_unref (caps);
+}
+
int
main (int argc,
char **argv)
@@ -668,6 +771,8 @@ main (int argc,
test_supports_tube, NULL);
g_test_add (TEST_PREFIX "supports/room-list", Test, NULL, setup,
test_supports_room_list, NULL);
+ g_test_add (TEST_PREFIX "supports/sms", Test, NULL, setup,
+ test_supports_sms, NULL);
return g_test_run ();
}