diff options
author | George Kiagiadakis <george.kiagiadakis@collabora.com> | 2012-04-09 17:52:05 +0300 |
---|---|---|
committer | George Kiagiadakis <george.kiagiadakis@collabora.com> | 2012-04-09 17:59:25 +0300 |
commit | a1e4147a4677293164eed80e056f812309c6a33a (patch) | |
tree | 225b81eebcda8472ba56b524c184781137d1f01a | |
parent | 9f7c332174554ebf821f9490e2463a666a7842ab (diff) |
test-base-cm: Add test for the protocol-related methods of BaseCM
-rw-r--r-- | tests/dbus/base-cm.cpp | 64 |
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() |