summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeorge Kiagiadakis <george.kiagiadakis@collabora.com>2012-04-09 17:52:05 +0300
committerGeorge Kiagiadakis <george.kiagiadakis@collabora.com>2012-04-09 17:59:25 +0300
commita1e4147a4677293164eed80e056f812309c6a33a (patch)
tree225b81eebcda8472ba56b524c184781137d1f01a
parent9f7c332174554ebf821f9490e2463a666a7842ab (diff)
test-base-cm: Add test for the protocol-related methods of BaseCM
-rw-r--r--tests/dbus/base-cm.cpp64
1 files changed, 64 insertions, 0 deletions
diff --git a/tests/dbus/base-cm.cpp b/tests/dbus/base-cm.cpp
index 75064088..3cc35e0f 100644
--- a/tests/dbus/base-cm.cpp
+++ b/tests/dbus/base-cm.cpp
@@ -3,6 +3,7 @@
#define TP_QT_ENABLE_LOWLEVEL_API
#include <TelepathyQt/BaseConnectionManager>
+#include <TelepathyQt/BaseProtocol>
#include <TelepathyQt/ConnectionManager>
#include <TelepathyQt/ConnectionManagerLowlevel>
#include <TelepathyQt/DBusError>
@@ -24,6 +25,7 @@ private Q_SLOTS:
void init();
void testNoProtocols();
+ void testProtocols();
void cleanup();
void cleanupTestCase();
@@ -59,6 +61,8 @@ void TestBaseCM::testNoProtocols()
QVERIFY(cm->registerObject(&err));
QVERIFY(!err.isValid());
+ QCOMPARE(cm->protocols().size(), 0);
+
qDebug() << "Introspecting new CM";
cliCM = ConnectionManager::create(QLatin1String("testcm"));
@@ -76,6 +80,66 @@ void TestBaseCM::testNoProtocols()
connect(pc, SIGNAL(finished(Tp::PendingOperation*)),
SLOT(expectFailure(Tp::PendingOperation*)));
QCOMPARE(mLoop->exec(), 0);
+ QCOMPARE(mLastError, TP_QT_ERROR_NOT_IMPLEMENTED);
+}
+
+void TestBaseCM::testProtocols()
+{
+ qDebug() << "Creating CM";
+
+ BaseConnectionManagerPtr cm = BaseConnectionManager::create(QLatin1String("testcm"));
+
+ BaseProtocolPtr protocol = BaseProtocol::create(QLatin1String("myprotocol"));
+ QVERIFY(!protocol.isNull());
+ QVERIFY(cm->addProtocol(protocol));
+
+ QVERIFY(cm->hasProtocol(QLatin1String("myprotocol")));
+ QCOMPARE(cm->protocol(QLatin1String("myprotocol")), protocol);
+ QCOMPARE(cm->protocols().size(), 1);
+
+ QVERIFY(!cm->hasProtocol(QLatin1String("otherprotocol")));
+ QVERIFY(cm->protocol(QLatin1String("otherprotocol")).isNull());
+
+ //can't add the same protocol twice
+ QVERIFY(!cm->addProtocol(protocol));
+
+ Tp::DBusError err;
+ QVERIFY(cm->registerObject(&err));
+ QVERIFY(!err.isValid());
+
+ //can't add another protocol after registerObject()
+ protocol = BaseProtocol::create(QLatin1String("otherprotocol"));
+ QVERIFY(!protocol.isNull());
+ QVERIFY(!cm->addProtocol(protocol));
+ QCOMPARE(cm->protocols().size(), 1);
+ protocol.reset();
+
+ QVariantMap props = cm->immutableProperties();
+ QVERIFY(props.contains(TP_QT_IFACE_CONNECTION_MANAGER + QLatin1String(".Protocols")));
+
+ ProtocolPropertiesMap protocols = qvariant_cast<Tp::ProtocolPropertiesMap>(
+ props[TP_QT_IFACE_CONNECTION_MANAGER + QLatin1String(".Protocols")]);
+ QVERIFY(protocols.contains(QLatin1String("myprotocol")));
+ QVERIFY(!protocols.contains(QLatin1String("otherprotocol")));
+
+ qDebug() << "Introspecting CM";
+
+ ConnectionManagerPtr cliCM = ConnectionManager::create(
+ QLatin1String("testcm"));
+ PendingReady *pr = cliCM->becomeReady(ConnectionManager::FeatureCore);
+ connect(pr, SIGNAL(finished(Tp::PendingOperation*)),
+ SLOT(expectSuccessfulCall(Tp::PendingOperation*)));
+ QCOMPARE(mLoop->exec(), 0);
+
+ QCOMPARE(cliCM->supportedProtocols().size(), 1);
+ QVERIFY(cliCM->hasProtocol(QLatin1String("myprotocol")));
+
+ PendingConnection *pc = cliCM->lowlevel()->requestConnection(
+ QLatin1String("myprotocol"), QVariantMap());
+ connect(pc, SIGNAL(finished(Tp::PendingOperation*)),
+ SLOT(expectFailure(Tp::PendingOperation*)));
+ QCOMPARE(mLoop->exec(), 0);
+ QCOMPARE(mLastError, TP_QT_ERROR_NOT_IMPLEMENTED);
}
void TestBaseCM::cleanup()