[telepathy-qt4/master] streamed-media-chan test: Added test for inability to unhold (unable to reacquire a resource for example).
Andre Moreira Magalhaes (andrunko)
andre.magalhaes at collabora.co.uk
Thu Aug 13 16:26:24 PDT 2009
---
tests/dbus/streamed-media-chan.cpp | 87 +++++++++++++++++++++++++++++++++++-
1 files changed, 85 insertions(+), 2 deletions(-)
diff --git a/tests/dbus/streamed-media-chan.cpp b/tests/dbus/streamed-media-chan.cpp
index 2229cee..21e722f 100644
--- a/tests/dbus/streamed-media-chan.cpp
+++ b/tests/dbus/streamed-media-chan.cpp
@@ -58,6 +58,7 @@ private Q_SLOTS:
void testIncomingCall();
void testHold();
void testHoldNoUnhold();
+ void testHoldInabilityUnhold();
void cleanup();
void cleanupTestCase();
@@ -82,8 +83,8 @@ private:
Tp::MediaStreamPendingSend mSDCPendingReturn;
MediaStreamPtr mSSCStreamReturn;
Tp::MediaStreamState mSSCStateReturn;
- UIntList mLocalHoldStates;
- UIntList mLocalHoldStateReasons;
+ QQueue<uint> mLocalHoldStates;
+ QQueue<uint> mLocalHoldStateReasons;
};
void TestStreamedMediaChan::expectRequestContactsFinished(PendingOperation *op)
@@ -944,6 +945,88 @@ void TestStreamedMediaChan::testHoldNoUnhold()
QCOMPARE(static_cast<uint>(mChan->localHoldStateReason()), static_cast<uint>(LocalHoldStateReasonRequested));
}
+void TestStreamedMediaChan::testHoldInabilityUnhold()
+{
+ QVERIFY(connect(mConn->contactManager()->contactsForIdentifiers(QStringList() << "bob (inability to unhold)"),
+ SIGNAL(finished(Tp::PendingOperation*)),
+ SLOT(expectRequestContactsFinished(Tp::PendingOperation*))));
+ QCOMPARE(mLoop->exec(), 0);
+ QVERIFY(mRequestContactsReturn.size() == 1);
+ ContactPtr otherContact = mRequestContactsReturn.first();
+ QVERIFY(otherContact);
+
+ QVariantMap request;
+ request.insert(QLatin1String(TELEPATHY_INTERFACE_CHANNEL ".ChannelType"),
+ TELEPATHY_INTERFACE_CHANNEL_TYPE_STREAMED_MEDIA);
+ request.insert(QLatin1String(TELEPATHY_INTERFACE_CHANNEL ".TargetHandleType"),
+ Tp::HandleTypeContact);
+ request.insert(QLatin1String(TELEPATHY_INTERFACE_CHANNEL ".TargetHandle"),
+ otherContact->handle()[0]);
+ QVERIFY(connect(mConn->createChannel(request),
+ SIGNAL(finished(Tp::PendingOperation*)),
+ SLOT(expectCreateChannelFinished(Tp::PendingOperation*))));
+ QCOMPARE(mLoop->exec(), 0);
+ QVERIFY(mChan);
+
+ QVERIFY(connect(mChan->becomeReady(StreamedMediaChannel::FeatureLocalHoldState),
+ SIGNAL(finished(Tp::PendingOperation*)),
+ SLOT(expectSuccessfulCall(Tp::PendingOperation*))));
+ QCOMPARE(mLoop->exec(), 0);
+ QVERIFY(mChan->isReady(StreamedMediaChannel::FeatureLocalHoldState));
+
+ QCOMPARE(static_cast<uint>(mChan->localHoldState()), static_cast<uint>(LocalHoldStateUnheld));
+ QCOMPARE(static_cast<uint>(mChan->localHoldStateReason()), static_cast<uint>(LocalHoldStateReasonNone));
+
+ QVERIFY(connect(mChan.data(),
+ SIGNAL(localHoldStateChanged(Tp::LocalHoldState, Tp::LocalHoldStateReason)),
+ SLOT(onLocalHoldStateChanged(Tp::LocalHoldState, Tp::LocalHoldStateReason))));
+ // Request hold
+ QVERIFY(connect(mChan->requestLocalHold(true),
+ SIGNAL(finished(Tp::PendingOperation*)),
+ SLOT(expectSuccessfulCall(Tp::PendingOperation*))));
+ QCOMPARE(mLoop->exec(), 0);
+ while (mLocalHoldStates.size() != 2) {
+ QCOMPARE(mLoop->exec(), 0);
+ }
+ QCOMPARE(mLocalHoldStates.first(), static_cast<uint>(LocalHoldStatePendingHold));
+ QCOMPARE(mLocalHoldStateReasons.first(), static_cast<uint>(LocalHoldStateReasonRequested));
+ QCOMPARE(mLocalHoldStates.last(), static_cast<uint>(LocalHoldStateHeld));
+ QCOMPARE(mLocalHoldStateReasons.last(), static_cast<uint>(LocalHoldStateReasonRequested));
+ QCOMPARE(static_cast<uint>(mChan->localHoldState()), static_cast<uint>(LocalHoldStateHeld));
+ QCOMPARE(static_cast<uint>(mChan->localHoldStateReason()), static_cast<uint>(LocalHoldStateReasonRequested));
+
+ mLocalHoldStates.clear();
+ mLocalHoldStateReasons.clear();
+
+ // Request unhold (fail - back to hold)
+ QVERIFY(connect(mChan->requestLocalHold(false),
+ SIGNAL(finished(Tp::PendingOperation*)),
+ SLOT(expectSuccessfulCall(Tp::PendingOperation*))));
+ QCOMPARE(mLoop->exec(), 0);
+
+ while (mLocalHoldStates.size() != 3) {
+ QCOMPARE(mLoop->exec(), 0);
+ }
+
+ LocalHoldState state = static_cast<LocalHoldState>(mLocalHoldStates.dequeue());
+ LocalHoldStateReason stateReason = static_cast<LocalHoldStateReason>(mLocalHoldStateReasons.dequeue());
+ QCOMPARE(state, LocalHoldStatePendingUnhold);
+ QCOMPARE(stateReason, LocalHoldStateReasonRequested);
+
+ state = static_cast<LocalHoldState>(mLocalHoldStates.dequeue());
+ stateReason = static_cast<LocalHoldStateReason>(mLocalHoldStateReasons.dequeue());
+ QCOMPARE(state, LocalHoldStatePendingHold);
+ QCOMPARE(stateReason, LocalHoldStateReasonRequested);
+
+ state = static_cast<LocalHoldState>(mLocalHoldStates.dequeue());
+ stateReason = static_cast<LocalHoldStateReason>(mLocalHoldStateReasons.dequeue());
+ QCOMPARE(state, LocalHoldStateHeld);
+ QCOMPARE(stateReason, LocalHoldStateReasonRequested);
+
+ QCOMPARE(mChan->localHoldState(), LocalHoldStateHeld);
+ QCOMPARE(mChan->localHoldStateReason(), LocalHoldStateReasonRequested);
+}
+
void TestStreamedMediaChan::cleanup()
{
mChan.reset();
--
1.5.6.5
More information about the telepathy-commits
mailing list