--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/telephonyserverplugins/ctsydispatchlayer/test/dispatchertests/dispatchsrc/cctsyphonebookenfu.cpp Tue Feb 02 01:41:59 2010 +0200
@@ -0,0 +1,486 @@
+// Copyright (c) 2008-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:
+//
+
+
+
+/**
+ @file The TEFUnit test suite for PhonebookEnControl in the Common TSY.
+*/
+
+#include "cctsyphonebookenfu.h"
+#include <etel.h>
+#include <etelmm.h>
+#include <et_clsvr.h>
+#include <ctsy/mmtsy_names.h>
+#include <ctsy/serviceapi/mmtsy_ipcdefs.h>
+#include <test/tmockltsydata.h>
+#include <ctsy/serviceapi/gsmerror.h>
+#include <ctsy/ltsy/mltsydispatchphonebookeninterface.h>
+#include "listretrieverao.h"
+
+
+CTestSuite* CCTsyPhonebookEnFU::CreateSuiteL(const TDesC& aName)
+ {
+ SUB_SUITE;
+
+ //add other unit tests
+ ADD_TEST_STEP_ISO_CPP(CCTsyPhonebookEnFU, TestUnit0001L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyPhonebookEnFU, TestUnit0002L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyPhonebookEnFU, TestUnit0003L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyPhonebookEnFU, TestUnit0003BL);
+
+ END_SUITE;
+ }
+
+
+//
+// Other unit tests
+//
+
+/**
+@SYMTestCaseID BA-CTSYD-DIS-PHONEBOOKEN-UN0001
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for RMobileENStore::GetInfo()
+@SYMTestPriority High
+@SYMTestActions Invokes RMobileENStore::GetInfo()
+@SYMTestExpectedResults Pass
+@SYMTestType UT
+*/
+void CCTsyPhonebookEnFU::TestUnit0001L()
+ {
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RMobileENStore enStore;
+ TInt ret = enStore.Open(iPhone);
+ ASSERT_EQUALS(ret, KErrNone);
+ CleanupClosePushL(enStore);
+
+ RBuf8 data;
+ CleanupClosePushL(data);
+
+ TRequestStatus reqStatus;
+
+ RMobilePhoneStore::TMobilePhoneStoreInfoV1 enStoreInfoV1;
+ TPckg<RMobilePhoneStore::TMobilePhoneStoreInfoV1> pckgInfoV1(enStoreInfoV1);
+
+ TInt usedEntries = 10;
+
+ TMockLtsyData1<TInt> enStoreInfoReturn(usedEntries);
+ data.Close();
+ enStoreInfoReturn.SerialiseL(data);
+
+ //-------------------------------------------------------------------------
+ // TEST A: failure to dispatch request to LTSY
+ //-------------------------------------------------------------------------
+ iMockLTSY.ExpectL(MLtsyDispatchPhonebookEnStoreGetInfo::KLtsyDispatchPhonebookEnStoreGetInfoApiId, KErrNotSupported);
+
+ enStore.GetInfo(reqStatus, pckgInfoV1);
+
+ User::WaitForRequest(reqStatus);
+ ASSERT_EQUALS(KErrNotSupported, reqStatus.Int());
+
+ AssertMockLtsyStatusL();
+
+ //-------------------------------------------------------------------------
+ // TEST B: failure on completion of pending request from LTSY->CTSY
+ //-------------------------------------------------------------------------
+
+ iMockLTSY.ExpectL(MLtsyDispatchPhonebookEnStoreGetInfo::KLtsyDispatchPhonebookEnStoreGetInfoApiId);
+ iMockLTSY.CompleteL(MLtsyDispatchPhonebookEnStoreGetInfo::KLtsyDispatchPhonebookEnStoreGetInfoApiId, KErrGeneral, data);
+
+ enStore.GetInfo(reqStatus, pckgInfoV1);
+
+ User::WaitForRequest(reqStatus);
+ ASSERT_EQUALS(KErrGeneral, reqStatus.Int());
+
+ AssertMockLtsyStatusL();
+
+ //-------------------------------------------------------------------------
+ // TEST C: Successful completion request of
+ // RMobileENStore::GetInfo() when result is not cached.
+ //-------------------------------------------------------------------------
+
+ iMockLTSY.ExpectL(MLtsyDispatchPhonebookEnStoreGetInfo::KLtsyDispatchPhonebookEnStoreGetInfoApiId);
+ iMockLTSY.CompleteL(MLtsyDispatchPhonebookEnStoreGetInfo::KLtsyDispatchPhonebookEnStoreGetInfoApiId, KErrNone, data);
+
+ enStore.GetInfo(reqStatus, pckgInfoV1);
+ User::WaitForRequest(reqStatus);
+ ASSERT_EQUALS(reqStatus.Int(), KErrNone);
+ ASSERT_EQUALS(enStoreInfoV1.iUsedEntries, usedEntries);
+
+ AssertMockLtsyStatusL();
+
+ //-------------------------------------------------------------------------
+ // TEST D: Unsolicited completion of RMobileENStore::GetInfo()
+ // from LTSY.
+ //-------------------------------------------------------------------------
+
+ TRequestStatus mockLtsyStatus;
+ iMockLTSY.NotifyTerminated(mockLtsyStatus);
+
+ iMockLTSY.CompleteL(MLtsyDispatchPhonebookEnStoreGetInfo::KLtsyDispatchPhonebookEnStoreGetInfoApiId, KErrNone, data);
+
+ User::WaitForRequest(mockLtsyStatus);
+ ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
+
+ AssertMockLtsyStatusL();
+
+ CleanupStack::PopAndDestroy(3, this); // data, enStore, this
+
+ }
+
+/**
+@SYMTestCaseID BA-CTSYD-DIS-PHONEBOOKEN-UN0002
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for RMobileONStore::Read()
+@SYMTestPriority High
+@SYMTestActions Invokes RMobileONStore::Read()
+@SYMTestExpectedResults Pass
+@SYMTestType UT
+*/
+void CCTsyPhonebookEnFU::TestUnit0002L()
+ {
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RMobileENStore enStore;
+ TInt ret = enStore.Open(iPhone);
+ ASSERT_EQUALS(ret, KErrNone);
+ CleanupClosePushL(enStore);
+
+ RBuf8 expectData;
+ CleanupClosePushL(expectData);
+
+ RBuf8 completeData;
+ CleanupClosePushL(completeData);
+
+ TRequestStatus reqStatus;
+
+ TInt index = 10;
+
+ RMobileENStore::TMobileENEntryV1 readEntry;
+ readEntry.iIndex = index;
+ TPckg<RMobileENStore::TMobileENEntryV1> pckgReadEntry(readEntry);
+
+ _LIT(KTelNumber, "123456");
+ TBuf<RMobileENStore::KEmergencyNumberSize> telNumber;
+ telNumber.Copy(KTelNumber);
+
+ TMockLtsyData1<TInt> readLTsyData(index);
+ expectData.Close();
+ readLTsyData.SerialiseL(expectData);
+
+ TMockLtsyData2< TInt, TBuf<RMobileENStore::KEmergencyNumberSize> > readLTsyDataComplete(index, telNumber);
+ completeData.Close();
+ readLTsyDataComplete.SerialiseL(completeData);
+
+ //-------------------------------------------------------------------------
+ // TEST A: failure to dispatch request to LTSY
+ //-------------------------------------------------------------------------
+ iMockLTSY.ExpectL(MLtsyDispatchPhonebookEnStoreReadEntry::KLtsyDispatchPhonebookEnStoreReadEntryApiId, expectData, KErrNotSupported);
+
+ enStore.Read(reqStatus, pckgReadEntry);
+ User::WaitForRequest(reqStatus);
+ ASSERT_EQUALS(KErrNotSupported, reqStatus.Int());
+
+ AssertMockLtsyStatusL();
+
+ //-------------------------------------------------------------------------
+ // TEST B: failure on completion of pending request from LTSY->CTSY
+ //-------------------------------------------------------------------------
+ iMockLTSY.ExpectL(MLtsyDispatchPhonebookEnStoreReadEntry::KLtsyDispatchPhonebookEnStoreReadEntryApiId, expectData);
+ iMockLTSY.CompleteL(MLtsyDispatchPhonebookEnStoreReadEntry::KLtsyDispatchPhonebookEnStoreReadEntryApiId, KErrGeneral, completeData);
+
+ enStore.Read(reqStatus, pckgReadEntry);
+
+ User::WaitForRequest(reqStatus);
+ ASSERT_EQUALS(KErrGeneral, reqStatus.Int());
+
+ AssertMockLtsyStatusL();
+
+ //-------------------------------------------------------------------------
+ // TEST C: Successful completion request of
+ // RMobileENStore::Read() when result is not cached.
+ //-------------------------------------------------------------------------
+
+ iMockLTSY.ExpectL(MLtsyDispatchPhonebookEnStoreReadEntry::KLtsyDispatchPhonebookEnStoreReadEntryApiId, expectData);
+ iMockLTSY.CompleteL(MLtsyDispatchPhonebookEnStoreReadEntry::KLtsyDispatchPhonebookEnStoreReadEntryApiId, KErrNone, completeData);
+
+ enStore.Read(reqStatus, pckgReadEntry);
+ User::WaitForRequest(reqStatus);
+ ASSERT_EQUALS(reqStatus.Int(), KErrNone);
+ ASSERT_EQUALS(index, readEntry.iIndex);
+ ASSERT_EQUALS(telNumber, readEntry.iNumber);
+
+ AssertMockLtsyStatusL();
+
+ //-------------------------------------------------------------------------
+ // TEST D: Unsolicited completion of RMobileENStore::Read()
+ // from LTSY.
+ //-------------------------------------------------------------------------
+
+ TRequestStatus mockLtsyStatus;
+ iMockLTSY.NotifyTerminated(mockLtsyStatus);
+
+ iMockLTSY.CompleteL(MLtsyDispatchPhonebookEnStoreReadEntry::KLtsyDispatchPhonebookEnStoreReadEntryApiId, KErrNone, completeData);
+
+ User::WaitForRequest(mockLtsyStatus);
+ ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
+
+ AssertMockLtsyStatusL();
+
+ //-------------------------------------------------------------------------
+ // TEST E: Parameters out of bound test
+ //-------------------------------------------------------------------------
+ index = 300;
+ TMockLtsyData2< TInt, TBuf<RMobileENStore::KEmergencyNumberSize> > readLTsyDataComplete2(index, telNumber);
+ completeData.Close();
+ readLTsyDataComplete2.SerialiseL(completeData);
+
+
+ iMockLTSY.ExpectL(MLtsyDispatchPhonebookEnStoreReadEntry::KLtsyDispatchPhonebookEnStoreReadEntryApiId, expectData);
+ iMockLTSY.CompleteL(MLtsyDispatchPhonebookEnStoreReadEntry::KLtsyDispatchPhonebookEnStoreReadEntryApiId, KErrNone, completeData);
+
+ enStore.Read(reqStatus, pckgReadEntry);
+
+ User::WaitForRequest(reqStatus);
+ ASSERT_EQUALS(KErrCorrupt, reqStatus.Int());
+
+
+ AssertMockLtsyStatusL();
+
+ CleanupStack::PopAndDestroy(4, this); // completeData, expectData, onStore, this
+
+ }
+
+/**
+@SYMTestCaseID BA-CTSYD-DIS-PHONEBOOKEN-UN0003
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for CRetrieveMobilePhoneENList::Start()
+@SYMTestPriority High
+@SYMTestActions Invokes CRetrieveMobilePhoneENList::Start()
+@SYMTestExpectedResults Pass
+@SYMTestType UT
+*/
+void CCTsyPhonebookEnFU::TestUnit0003L()
+ {
+
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RMobileENStore enStore;
+ TInt err = enStore.Open(iPhone);
+ ASSERT_EQUALS(KErrNone, err);
+ CleanupClosePushL(enStore);
+
+ CGetENListAO* getEnListAO = CGetENListAO::NewLC(enStore);
+
+ RBuf8 completeEntryData1;
+ CleanupClosePushL(completeEntryData1);
+
+ RBuf8 completeEntryData2;
+ CleanupClosePushL(completeEntryData2);
+
+ RBuf8 completeEntryData3;
+ CleanupClosePushL(completeEntryData3);
+
+ TInt index[3];
+ TBuf<RMobileENStore::KEmergencyNumberSize> telNumber[3];
+
+ TBool moreToCome = ETrue;
+ index[0] = 1;
+ _LIT(KNumber1, "000001");
+ telNumber[0].Copy(KNumber1);
+
+ TMockLtsyData3< TInt, TBuf<RMobileENStore::KEmergencyNumberSize>, TBool > readLTsyDataComplete1(index[0], telNumber[0], moreToCome);
+ completeEntryData1.Close();
+ readLTsyDataComplete1.SerialiseL(completeEntryData1);
+
+
+ index[1] = 2;
+ _LIT(KNumber2, "111112");
+ telNumber[1].Copy(KNumber2);
+
+ TMockLtsyData3< TInt, TBuf<RMobileENStore::KEmergencyNumberSize>, TBool > readLTsyDataComplete2(index[1], telNumber[1], moreToCome);
+ completeEntryData2.Close();
+ readLTsyDataComplete2.SerialiseL(completeEntryData2);
+
+ moreToCome = EFalse;
+ index[2] = 3;
+ _LIT(KNumber3, "111113");
+ telNumber[2].Copy(KNumber3);
+
+ TMockLtsyData3< TInt, TBuf<RMobileENStore::KEmergencyNumberSize>, TBool > readLTsyDataComplete3(index[2], telNumber[2], moreToCome);
+ completeEntryData3.Close();
+ readLTsyDataComplete3.SerialiseL(completeEntryData3);
+
+ //-------------------------------------------------------------------------
+ // TEST A: failure to dispatch request to LTSY
+ //-------------------------------------------------------------------------
+
+ iMockLTSY.ExpectL(MLtsyDispatchPhonebookEnStoreReadAll::KLtsyDispatchPhonebookEnStoreReadAllApiId, KErrNotSupported);
+
+ getEnListAO->TestRetrieveL();
+ ASSERT_EQUALS(KErrNotSupported, getEnListAO->RetrieveLastError());
+
+ //-------------------------------------------------------------------------
+ // TEST B: failure on completion of pending request from LTSY->CTSY
+ //-------------------------------------------------------------------------
+
+ // failure on the 1st entry
+ iMockLTSY.ExpectL(MLtsyDispatchPhonebookEnStoreReadAll::KLtsyDispatchPhonebookEnStoreReadAllApiId);
+ iMockLTSY.CompleteL(MLtsyDispatchPhonebookEnStoreReadAll::KLtsyDispatchPhonebookEnStoreReadAllApiId, KErrGeneral, completeEntryData1);
+
+ getEnListAO->TestRetrieveL();
+ ASSERT_EQUALS(KErrGeneral, getEnListAO->RetrieveLastError());
+
+ // failure on the middle entry
+ iMockLTSY.ExpectL(MLtsyDispatchPhonebookEnStoreReadAll::KLtsyDispatchPhonebookEnStoreReadAllApiId);
+ iMockLTSY.CompleteL(MLtsyDispatchPhonebookEnStoreReadAll::KLtsyDispatchPhonebookEnStoreReadAllApiId, KErrNone, completeEntryData1);
+ iMockLTSY.CompleteL(MLtsyDispatchPhonebookEnStoreReadAll::KLtsyDispatchPhonebookEnStoreReadAllApiId, KErrGeneral, completeEntryData2);
+
+ getEnListAO->TestRetrieveL();
+ ASSERT_EQUALS(KErrGeneral, getEnListAO->RetrieveLastError());
+
+ // failure on the last entry
+ iMockLTSY.ExpectL(MLtsyDispatchPhonebookEnStoreReadAll::KLtsyDispatchPhonebookEnStoreReadAllApiId);
+ iMockLTSY.CompleteL(MLtsyDispatchPhonebookEnStoreReadAll::KLtsyDispatchPhonebookEnStoreReadAllApiId, KErrNone, completeEntryData1);
+ iMockLTSY.CompleteL(MLtsyDispatchPhonebookEnStoreReadAll::KLtsyDispatchPhonebookEnStoreReadAllApiId, KErrNone, completeEntryData2);
+ iMockLTSY.CompleteL(MLtsyDispatchPhonebookEnStoreReadAll::KLtsyDispatchPhonebookEnStoreReadAllApiId, KErrGeneral, completeEntryData3);
+
+ getEnListAO->TestRetrieveL();
+ ASSERT_EQUALS(KErrGeneral, getEnListAO->RetrieveLastError());
+
+ // parameter out of bound test
+ RBuf8 completeEntryData4;
+ CleanupClosePushL(completeEntryData4);
+ TInt indexOutOfBound = 300;
+ TMockLtsyData3< TInt, TBuf<RMobileENStore::KEmergencyNumberSize>, TBool > readLTsyDataComplete4(indexOutOfBound, telNumber[2], moreToCome);
+ completeEntryData4.Close();
+ readLTsyDataComplete4.SerialiseL(completeEntryData4);
+
+ iMockLTSY.ExpectL(MLtsyDispatchPhonebookEnStoreReadAll::KLtsyDispatchPhonebookEnStoreReadAllApiId);
+ iMockLTSY.CompleteL(MLtsyDispatchPhonebookEnStoreReadAll::KLtsyDispatchPhonebookEnStoreReadAllApiId, KErrNone, completeEntryData1);
+ iMockLTSY.CompleteL(MLtsyDispatchPhonebookEnStoreReadAll::KLtsyDispatchPhonebookEnStoreReadAllApiId, KErrNone, completeEntryData4);
+ iMockLTSY.CompleteL(MLtsyDispatchPhonebookEnStoreReadAll::KLtsyDispatchPhonebookEnStoreReadAllApiId, KErrNone, completeEntryData3);
+
+ getEnListAO->TestRetrieveL();
+ ASSERT_EQUALS(KErrCorrupt, getEnListAO->RetrieveLastError());
+
+ AssertMockLtsyStatusL();
+
+ //-------------------------------------------------------------------------
+ // TEST C: Successful completion request of
+ // CRetrieveMobilePhoneENList::Start() when result is not cached.
+ //-------------------------------------------------------------------------
+
+ iMockLTSY.ExpectL(MLtsyDispatchPhonebookEnStoreReadAll::KLtsyDispatchPhonebookEnStoreReadAllApiId);
+ iMockLTSY.CompleteL(MLtsyDispatchPhonebookEnStoreReadAll::KLtsyDispatchPhonebookEnStoreReadAllApiId, KErrNone, completeEntryData1);
+ iMockLTSY.CompleteL(MLtsyDispatchPhonebookEnStoreReadAll::KLtsyDispatchPhonebookEnStoreReadAllApiId, KErrNone, completeEntryData2);
+ iMockLTSY.CompleteL(MLtsyDispatchPhonebookEnStoreReadAll::KLtsyDispatchPhonebookEnStoreReadAllApiId, KErrNone, completeEntryData3);
+
+ getEnListAO->TestRetrieveL();
+ ASSERT_EQUALS(KErrNone, getEnListAO->RetrieveLastError());
+
+ CMobilePhoneENList* list = getEnListAO->RetrieveListL();
+ RMobileENStore::TMobileENEntryV1 readEntry;
+
+ for (TInt i=0; i< list->Enumerate(); i++)
+ {
+ readEntry=list->GetEntryL(i);
+ ASSERT_EQUALS(index[i], readEntry.iIndex);
+ ASSERT_EQUALS(telNumber[i], readEntry.iNumber);
+ }
+
+ AssertMockLtsyStatusL();
+
+
+ //-------------------------------------------------------------------------
+ // TEST E: Unsolicited completion of CAsyncRetrieveStoreList::Start()
+ // from LTSY.
+ //-------------------------------------------------------------------------
+
+ TRequestStatus requestStatus;
+
+ iMockLTSY.NotifyTerminated(requestStatus);
+ iMockLTSY.CompleteL(MLtsyDispatchPhonebookEnStoreReadAll::KLtsyDispatchPhonebookEnStoreReadAllApiId, KErrNone, completeEntryData1);
+ iMockLTSY.CompleteL(MLtsyDispatchPhonebookEnStoreReadAll::KLtsyDispatchPhonebookEnStoreReadAllApiId, KErrNone, completeEntryData2);
+ iMockLTSY.CompleteL(MLtsyDispatchPhonebookEnStoreReadAll::KLtsyDispatchPhonebookEnStoreReadAllApiId, KErrNone, completeEntryData3);
+ User::WaitForRequest(requestStatus);
+ ASSERT_EQUALS(KErrNone, requestStatus.Int());
+
+ AssertMockLtsyStatusL();
+
+ CActiveScheduler::Install(NULL);
+
+
+ CleanupStack::PopAndDestroy(7, this); // completeEntryData4, completeEntryData3, completeEntryData2, completeEntryData1, getEnListAO,
+ // enStore, this
+
+ }
+
+/**
+@SYMTestCaseID BA-CTSYD-DIS-PHONEBOOKEN-UN0003B
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for CRetrieveMobilePhoneENList::Start() when the storage is empty
+@SYMTestPriority High
+@SYMTestActions Invokes CRetrieveMobilePhoneENList::Start() when the storage is empty
+@SYMTestExpectedResults Pass
+@SYMTestType UT
+*/
+void CCTsyPhonebookEnFU::TestUnit0003BL()
+ {
+
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RMobileENStore enStore;
+ TInt err = enStore.Open(iPhone);
+ ASSERT_EQUALS(KErrNone, err);
+ CleanupClosePushL(enStore);
+
+ CGetENListAO* getEnListAO = CGetENListAO::NewLC(enStore);
+
+ RBuf8 completeEntryData;
+ CleanupClosePushL(completeEntryData);
+
+ _LIT(KNumber, "");
+ TInt index = 0;
+ TBuf<RMobileENStore::KEmergencyNumberSize> telNumber;
+ telNumber.Copy(KNumber);
+
+ TBool moreToCome = EFalse;
+
+ TMockLtsyData3< TInt, TBuf<RMobileENStore::KEmergencyNumberSize>, TBool > readLTsyDataComplete(index, telNumber, moreToCome);
+ completeEntryData.Close();
+ readLTsyDataComplete.SerialiseL(completeEntryData);
+
+ iMockLTSY.ExpectL(MLtsyDispatchPhonebookEnStoreReadAll::KLtsyDispatchPhonebookEnStoreReadAllApiId);
+ iMockLTSY.CompleteL(MLtsyDispatchPhonebookEnStoreReadAll::KLtsyDispatchPhonebookEnStoreReadAllApiId, KErrNotFound, completeEntryData);
+
+ getEnListAO->TestRetrieveL();
+ ASSERT_EQUALS(KErrNotFound, getEnListAO->RetrieveLastError());
+
+ AssertMockLtsyStatusL();
+
+ CleanupStack::PopAndDestroy(4, this); // completeEntryData, getEnListAO,
+ // enStore, this
+
+ }