phoneapp/phoneuiqtviewadapter/tsrc/ut_phonecallheadermanager/unit_tests.cpp
changeset 77 2be0b271d017
child 76 cfea66083b62
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneapp/phoneuiqtviewadapter/tsrc/ut_phonecallheadermanager/unit_tests.cpp	Mon Oct 04 00:16:48 2010 +0300
@@ -0,0 +1,342 @@
+/*!
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Unit tests for PhoneResourceAdapter.
+*
+*/
+
+#include <QtTest/QtTest>
+#include <QtGui>
+#include <hbapplication.h>
+#include <QSignalSpy>
+#include <QVariant>
+#include <mockservice.h>
+#include <cpeengineinfo.h>
+#include <pevirtualengine.h>
+#include "qtestmains60.h"
+#include "phonecallheadermanager.h"
+#include "phoneuiqtviewif_stub.h"
+#include "bubblemanagerif_stub.h"
+#include "phonebubblewrapper.h"
+#include "phonecallheaderutil.h"
+
+class TestPhoneCallHeaderManager : public QObject, MockService
+{
+    Q_OBJECT
+public:
+    TestPhoneCallHeaderManager();
+    virtual ~TestPhoneCallHeaderManager();
+
+public slots:
+    void initTestCase();
+    void cleanupTestCase();
+    void init();
+    void cleanup(); 
+    
+private slots:
+    void testCreateCallHeader();
+    void testCreateEmergencyCallHeader();
+    void testRemoveCallHeader();
+    void testUpdateCallHeaderState();
+    void testUpdateCallHeaderRemoteInfo();
+    void testUpdateCallHeaderRemoteInfoAndLabel();
+    void testHandleCipheringInfoChange();
+    void testConferenceBubble();
+    void testExpandedConferenceCallHeader();
+    void testRemoveAllCallHeaders();
+    void testIsVideoCall();
+
+private:
+    
+private:
+    BubbleManagerIFStub *mBubbleManagerIFStub;
+    PhoneUIQtViewIFStub *mPhoneUIQtViewIFStub;
+    PhoneBubbleWrapper *mPhoneBubbleWrapper;
+    CPEEngineInfo *iEngineInfo;
+    PhoneCallHeaderManager *mCallHeaderManager; // class under test
+};
+
+TestPhoneCallHeaderManager::TestPhoneCallHeaderManager ()
+{
+}
+
+TestPhoneCallHeaderManager::~TestPhoneCallHeaderManager ()
+{
+}
+
+void TestPhoneCallHeaderManager::initTestCase ()
+{
+    mBubbleManagerIFStub =  new BubbleManagerIFStub();
+    mPhoneUIQtViewIFStub = new PhoneUIQtViewIFStub(*mBubbleManagerIFStub);
+    TRAP_IGNORE( iEngineInfo = CPEEngineInfo::NewL());
+    mPhoneBubbleWrapper = new PhoneBubbleWrapper(*mBubbleManagerIFStub);
+    mCallHeaderManager = new PhoneCallHeaderManager(
+            *mPhoneBubbleWrapper, *mPhoneUIQtViewIFStub);
+    
+    mCallHeaderManager->setEngineInfo(iEngineInfo);
+}
+
+void TestPhoneCallHeaderManager::cleanupTestCase ()
+{
+    delete mCallHeaderManager;
+    delete mPhoneUIQtViewIFStub;
+    delete mBubbleManagerIFStub;
+    delete mPhoneBubbleWrapper;
+    delete iEngineInfo;
+}
+
+void TestPhoneCallHeaderManager::init ()
+{
+    initialize();
+}
+
+void TestPhoneCallHeaderManager::cleanup ()
+{
+    reset();
+}
+
+void TestPhoneCallHeaderManager::testCreateCallHeader ()
+{
+    int callId = 1;
+    iEngineInfo->SetCallState(EPEStateRinging, callId );
+    
+    EXPECT( PhoneCallHeaderUtil, SetIncomingCallHeaderParams);
+    EXPECT( PhoneBubbleWrapper, createCallHeader);
+    mCallHeaderManager->createCallHeader(callId);
+    QVERIFY(verify());
+    
+    iEngineInfo->SetCallState(EPEStateConnecting, callId );
+    mIsConferenceExpanded = true;
+    mSetExpandedConferenceCalled = false;
+    
+    EXPECT( PhoneCallHeaderUtil, SetOutgoingCallHeaderParams);
+    mCallHeaderManager->createCallHeader(callId);
+    QVERIFY(verify());
+    QVERIFY(mSetExpandedConferenceCalled);
+    
+    mSetExpandedConferenceCalled = false;
+    mIsConferenceExpanded = false;
+}
+
+void TestPhoneCallHeaderManager::testCreateEmergencyCallHeader()
+{
+    int callId = 1;
+
+    EXPECT( PhoneBubbleWrapper, createCallHeader);
+    EXPECT( PhoneBubbleWrapper, setLabel);
+    EXPECT( PhoneBubbleWrapper, setCli);
+    EXPECT( PhoneBubbleWrapper, setCiphering);
+    mCallHeaderManager->createEmergencyCallHeader(callId);
+    QVERIFY(verify());
+}
+
+void TestPhoneCallHeaderManager::testRemoveCallHeader()
+{
+    int callId = 1;
+    int bubbleId = 1;
+    QMap<int,int> bubbleMap;
+    EXPECT( PhoneBubbleWrapper, bubbles).returns(bubbleMap);
+    EXPECT( PhoneBubbleWrapper, removeCallHeader).times(0);
+    mCallHeaderManager->removeCallHeader(callId);
+    QVERIFY(verify());
+    reset();
+    
+    bubbleMap.insert(callId, bubbleId);
+
+    EXPECT( PhoneBubbleWrapper, bubbles).returns(bubbleMap);
+    EXPECT( PhoneBubbleWrapper, removeCallHeader).with(callId);
+    mCallHeaderManager->removeCallHeader(callId);
+    QVERIFY(verify());
+    reset();
+}
+
+void TestPhoneCallHeaderManager::testUpdateCallHeaderState()
+{
+    int callId = 1;
+    int bubbleId = -1;
+    EXPECT( PhoneBubbleWrapper, bubbleId).returns(bubbleId);
+    EXPECT( PhoneBubbleWrapper, setState).times(0);
+    mCallHeaderManager->updateCallHeaderState(callId);
+    QVERIFY(verify());
+    reset();
+    
+    bubbleId = 1;
+
+    EXPECT( PhoneBubbleWrapper, bubbleId).returns(bubbleId);
+    EXPECT( PhoneBubbleWrapper, setState).times(1);
+    mCallHeaderManager->updateCallHeaderState(callId);
+    QVERIFY(verify());
+    reset();
+}
+
+void TestPhoneCallHeaderManager::testUpdateCallHeaderRemoteInfo()
+{
+    int callId = 1;
+    int bubbleId = -1;
+    EXPECT( PhoneBubbleWrapper, bubbleId).returns(bubbleId);
+    EXPECT( PhoneBubbleWrapper, setCli).times(0);
+    mCallHeaderManager->updateCallHeaderRemoteInfo(callId);
+    QVERIFY(verify());
+    reset();
+    
+    bubbleId = 1;
+
+    EXPECT( PhoneBubbleWrapper, bubbleId).returns(bubbleId);
+    EXPECT( PhoneBubbleWrapper, setCli).times(1);
+    mCallHeaderManager->updateCallHeaderRemoteInfo(callId);
+    QVERIFY(verify());
+    reset();
+}
+
+void TestPhoneCallHeaderManager::testUpdateCallHeaderRemoteInfoAndLabel()
+{
+    int callId = 1;
+    int bubbleId = -1;
+    EXPECT( PhoneBubbleWrapper, bubbleId).returns(bubbleId);
+    EXPECT( PhoneBubbleWrapper, setLabel).times(0);
+    mCallHeaderManager->updateCallHeaderRemoteInfoAndLabel(callId);
+    QVERIFY(verify());
+    reset();
+    
+    bubbleId = 1;
+
+    EXPECT( PhoneBubbleWrapper, bubbleId).returns(bubbleId);
+    EXPECT( PhoneBubbleWrapper, setLabel).times(1);
+    mCallHeaderManager->updateCallHeaderRemoteInfoAndLabel(callId);
+    QVERIFY(verify());
+    reset();
+}
+
+void TestPhoneCallHeaderManager::testHandleCipheringInfoChange()
+{
+    iEngineInfo->SetCallSecureStatus( ETrue, 0 );
+    iEngineInfo->SetCallSecureStatus( EFalse, 1 );
+    int callId = KPEConferenceCallID;
+    int bubbleId = -1;
+    QList<int> conferenceList;
+    conferenceList.append(0);
+    conferenceList.append(1);
+    EXPECT( PhoneBubbleWrapper, conferenceCallList).returns(conferenceList);
+    EXPECT( PhoneBubbleWrapper, conferenceCallList).returns(conferenceList);
+    EXPECT( PhoneBubbleWrapper, conferenceCallList).returns(conferenceList);
+    EXPECT( PhoneBubbleWrapper, conferenceCallList).returns(conferenceList);
+    EXPECT( PhoneBubbleWrapper, setCiphering);
+    mCallHeaderManager->handleCipheringInfoChange(callId);
+    QVERIFY(verify());
+    reset();
+    
+    callId = 1;
+
+    EXPECT( PhoneBubbleWrapper, bubbleId).returns(bubbleId);
+    EXPECT( PhoneBubbleWrapper, setCiphering).times(0);
+    mCallHeaderManager->handleCipheringInfoChange(callId);
+    QVERIFY(verify());
+    reset();
+    
+    bubbleId = 1;
+    
+    EXPECT( PhoneBubbleWrapper, bubbleId).returns(bubbleId);
+    EXPECT( PhoneBubbleWrapper, setCiphering);
+    mCallHeaderManager->handleCipheringInfoChange(callId);
+    QVERIFY(verify());
+    reset();
+}
+
+void TestPhoneCallHeaderManager::testConferenceBubble()
+{
+    int callId = 7;
+    EXPECT( PhoneBubbleWrapper, createConferenceBubble);
+    mCallHeaderManager->createConferenceBubble(callId);
+    QVERIFY(verify());
+    reset();
+    
+    EXPECT( PhoneBubbleWrapper, removeConferenceBubble);
+    mCallHeaderManager->removeConferenceBubble();
+    QVERIFY(verify());
+    reset();
+    
+    QMap<int,int> bubbleMap;
+    EXPECT( PhoneBubbleWrapper, bubbles).returns(bubbleMap);
+    EXPECT( PhoneBubbleWrapper, removeCallHeader).with(callId);
+    mCallHeaderManager->removeCallFromConference(callId);
+    QVERIFY(verify());
+    reset();
+    
+    EXPECT( PhoneBubbleWrapper, removeCallFromConference).with(callId);
+    EXPECT( PhoneBubbleWrapper, bubbles).returns(bubbleMap);
+    mCallHeaderManager->setPrivateFromConference(callId);
+    QVERIFY(verify());
+    reset();
+}
+
+void TestPhoneCallHeaderManager::testExpandedConferenceCallHeader()
+{
+
+    QMap<int,int> bubbleMap;
+    EXPECT( PhoneBubbleWrapper, bubbles).returns(bubbleMap).times(2);    
+    mCallHeaderManager->setExpandedConferenceCallHeader();
+    QVERIFY(verify());
+    QVERIFY(false == mIsExpandedConference);
+    reset();
+    
+    bubbleMap.insert(1, 2);
+    EXPECT( PhoneBubbleWrapper, bubbles).returns(bubbleMap);
+    EXPECT( PhoneBubbleWrapper, callIdByBubbleId).returns(KConferenceCallId);
+    mCallHeaderManager->setExpandedConferenceCallHeader();
+    QVERIFY(verify());
+    QVERIFY(true == mIsExpandedConference);
+    reset();
+}
+
+void TestPhoneCallHeaderManager::testRemoveAllCallHeaders()
+{
+
+    QList<int> conferenceListMap;
+    QMap<int,int> bubbleMap;
+    EXPECT( PhoneBubbleWrapper, conferenceCallList).returns(conferenceListMap);
+    EXPECT( PhoneBubbleWrapper, bubbles).returns(bubbleMap);    
+    mCallHeaderManager->removeAllCallHeaders();
+    QVERIFY(verify());
+    reset();
+    
+    conferenceListMap.append(1);
+    bubbleMap.insert(1,1);
+    bubbleMap.insert(KEmergencyCallId, KEmergencyCallId);
+    
+    EXPECT( PhoneBubbleWrapper, conferenceCallList).returns(conferenceListMap);
+    EXPECT( PhoneBubbleWrapper, removeConferenceBubble);
+    EXPECT( PhoneBubbleWrapper, bubbles).returns(bubbleMap).times(2);
+    EXPECT( PhoneBubbleWrapper, removeCallHeader).with(1);
+    mCallHeaderManager->removeAllCallHeaders();
+    QVERIFY(verify());
+    reset();
+}
+
+void TestPhoneCallHeaderManager::testIsVideoCall()
+{
+    iEngineInfo->SetCallTypeCommand(EPECallTypeVideo);
+    QVERIFY(mCallHeaderManager->isVideoCall( -1 ));
+    
+    iEngineInfo->SetCallTypeCommand(EPECallTypeVoIP);
+    QVERIFY(false == mCallHeaderManager->isVideoCall( -1 ));
+
+    int callId = 1;
+    iEngineInfo->SetCallType(EPECallTypeVoIP, callId);
+    QVERIFY(false == mCallHeaderManager->isVideoCall( callId ));
+    
+    iEngineInfo->SetCallType(EPECallTypeVideo, callId);
+    QVERIFY(mCallHeaderManager->isVideoCall( callId ));
+}
+
+QTEST_MAIN_S60(TestPhoneCallHeaderManager)
+#include "unit_tests.moc"