[Telepathy-commits] [telepathy-qt4/master] Add test for ContactManager::contactsForIdentifiers()
Olli Salli
olli.salli at collabora.co.uk
Thu Jan 29 13:30:12 PST 2009
---
tests/dbus/contacts.cpp | 68 +++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 68 insertions(+), 0 deletions(-)
diff --git a/tests/dbus/contacts.cpp b/tests/dbus/contacts.cpp
index 0573fe7..72a0f42 100644
--- a/tests/dbus/contacts.cpp
+++ b/tests/dbus/contacts.cpp
@@ -42,6 +42,7 @@ private Q_SLOTS:
void init();
void testForHandles();
+ void testForIdentifiers();
void cleanup();
void cleanupTestCase();
@@ -249,6 +250,73 @@ void TestContacts::testForHandles()
QVERIFY(!tp_handle_is_valid(serviceRepo, handles[0], NULL));
}
+void TestContacts::testForIdentifiers()
+{
+ QStringList validIDs = QStringList() << "Alice" << "Bob" << "Chris";
+ QStringList invalidIDs = QStringList() << "Not valid" << "Not valid either";
+ TpHandleRepoIface *serviceRepo =
+ tp_base_connection_get_handles(TP_BASE_CONNECTION(mConnService), TP_HANDLE_TYPE_CONTACT);
+
+ // Check that a request with just the invalid IDs fails
+ PendingOperation *fails = mConn->contactManager()->contactsForIdentifiers(invalidIDs);
+ QVERIFY(connect(fails,
+ SIGNAL(finished(Telepathy::Client::PendingOperation*)),
+ SLOT(expectSuccessfulCall(Telepathy::Client::PendingOperation*))));
+ QCOMPARE(mLoop->exec(), 1);
+
+ // A request with both valid and invalid IDs should also fail
+ fails = mConn->contactManager()->contactsForIdentifiers(invalidIDs + validIDs + invalidIDs);
+ QVERIFY(connect(fails,
+ SIGNAL(finished(Telepathy::Client::PendingOperation*)),
+ SLOT(expectSuccessfulCall(Telepathy::Client::PendingOperation*))));
+ QCOMPARE(mLoop->exec(), 1);
+
+ // Go on to the meat: valid IDs
+ PendingContacts *pending = mConn->contactManager()->contactsForIdentifiers(validIDs);
+
+ // Test the closure accessors
+ QCOMPARE(pending->contactManager(), mConn->contactManager());
+ QCOMPARE(pending->features(), QSet<Contact::Feature>());
+
+ QVERIFY(!pending->isForHandles());
+ QVERIFY(pending->isForIdentifiers());
+
+ QCOMPARE(pending->identifiers(), validIDs);
+
+ // Finish it
+ QVERIFY(connect(pending,
+ SIGNAL(finished(Telepathy::Client::PendingOperation*)),
+ SLOT(expectPendingContactsFinished(Telepathy::Client::PendingOperation*))));
+ QCOMPARE(mLoop->exec(), 0);
+
+ // Check that there are 3 contacts consistent with the request
+ QCOMPARE(mContacts.size(), 3);
+
+ for (int i = 0; i < mContacts.size(); i++) {
+ QVERIFY(mContacts[i] != NULL);
+ QCOMPARE(mContacts[i]->connection(), mConn);
+ QVERIFY(tp_handle_is_valid(serviceRepo, mContacts[i]->handle()[0], NULL));
+ }
+
+ QCOMPARE(mContacts[0]->id(), QString("alice"));
+ QCOMPARE(mContacts[1]->id(), QString("bob"));
+ QCOMPARE(mContacts[2]->id(), QString("chris"));
+
+ // Make the contacts go out of scope, starting releasing their handles, and finish that (but
+ // save their handles first)
+ Telepathy::UIntList saveHandles = Telepathy::UIntList() << mContacts[0]->handle()[0]
+ << mContacts[1]->handle()[0]
+ << mContacts[2]->handle()[0];
+ mContacts.clear();
+ mLoop->processEvents();
+ processDBusQueue(mConn);
+
+ // Check that their handles are in fact released
+ foreach (uint handle, saveHandles) {
+ QVERIFY(!tp_handle_is_valid(serviceRepo, handle, NULL));
+ }
+}
+
void TestContacts::cleanup()
{
cleanupImpl();
--
1.5.6.5
More information about the telepathy-commits
mailing list