diff -r 000000000000 -r 3553901f7fa8 telephonyserverplugins/ctsydispatchlayer/test/dispatchertests/dispatchsrc/cctsyphonebookenfu.cpp --- /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 +#include +#include +#include +#include +#include +#include +#include +#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 pckgInfoV1(enStoreInfoV1); + + TInt usedEntries = 10; + + TMockLtsyData1 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 pckgReadEntry(readEntry); + + _LIT(KTelNumber, "123456"); + TBuf telNumber; + telNumber.Copy(KTelNumber); + + TMockLtsyData1 readLTsyData(index); + expectData.Close(); + readLTsyData.SerialiseL(expectData); + + TMockLtsyData2< TInt, TBuf > 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 > 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 telNumber[3]; + + TBool moreToCome = ETrue; + index[0] = 1; + _LIT(KNumber1, "000001"); + telNumber[0].Copy(KNumber1); + + TMockLtsyData3< TInt, TBuf, 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, 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, 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, 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 telNumber; + telNumber.Copy(KNumber); + + TBool moreToCome = EFalse; + + TMockLtsyData3< TInt, TBuf, 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 + + }