diff -r 000000000000 -r 3553901f7fa8 telephonyserver/etelmultimode/TETEL/te_EtelMM/TE_mmmemsms.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/telephonyserver/etelmultimode/TETEL/te_EtelMM/TE_mmmemsms.cpp Tue Feb 02 01:41:59 2010 +0200 @@ -0,0 +1,144 @@ +// Copyright (c) 2000-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: +// Contains tests for RMobileSmsMessaging API +// +// + +#include + +#include "TE_EtelMMTestStepBase.h" +#include "TE_mmmemsms.h" +#include "TE_mmsms.h" +#include "testdef.h" + + +CTestMemSmsMessaging::CTestMemSmsMessaging() +/** Each test step initialises it's own name +*/ + { + // store the name of this test case + // this is the name that is used by the script file + SetTestStepName(_L("TestMemSmsMessaging")); + } + +enum TVerdict CTestMemSmsMessaging::doTestStepL() + { + iTestCount=1; + INFO_PRINTF1(_L("")); + INFO_PRINTF1(_L("Test RMobileSmsMessaging coping with OOM")); + + RMobilePhone mmPhone; + TInt ret=mmPhone.Open(iTelServer,DMMTSY_PHONE_NAME); + TEST(ret==KErrNone); + + RMobileSmsMessaging smsMessaging; + ret=smsMessaging.Open(mmPhone); + TEST(ret==KErrNone); + + CMemTestGetSmspList* getSmspList=CMemTestGetSmspList::NewLC(smsMessaging, this); + getSmspList->Start(); + CActiveScheduler::Start(); + CleanupStack::PopAndDestroy(); +// INFO_PRINTF2(_L("SmspList list retrieval OOM tests ok")); + + // Test StoreBroadcastIdListL + + CMobilePhoneSmspList* list = CMobilePhoneSmspList::NewL(); + CleanupStack::PushL(list); + + RMobileSmsMessaging::TMobileSmspEntryV1 entry; +// CTestSmsMessaging::InitSmspEntry(entry); + iTestSmsMessaging->InitSmspEntry(entry); + entry.iIndex = DMMTSY_SMSP_STORE_INDEX1; + list->AddEntryL(entry); + entry.iIndex = DMMTSY_SMSP_STORE_INDEX2; + list->AddEntryL(entry); + + TRequestStatus reqStatus; + TInt err = KErrNone; + TInt failNext = 0; + do + { + __UHEAP_FAILNEXT(++failNext); + TRAP(err,smsMessaging.StoreSmspListL(reqStatus,list)); + if (err == KErrNone) + { + User::WaitForRequest(reqStatus); + err = reqStatus.Int(); + } + TEST(err == KErrNone || err == KErrNoMemory); + } while (err != KErrNone); + __UHEAP_RESET; + INFO_PRINTF3(_L("Test %d - OOM test on RMobileSmsMessaging::StoreSmspListL required %d allocations to succeed"),iTestCount++,failNext); +// test.Next(_L("OOM test on RMobileSmsMessaging::StoreSmspListL OK")); + CleanupStack::PopAndDestroy(); + + smsMessaging.Close(); + mmPhone.Close(); + INFO_PRINTF1(_L("")); + + return TestStepResult(); + } + +/**************************************************************/ +// +// Testing how CRetrieveMobilePhoneSmspList handles OOM +// +/**************************************************************/ + +CTestMemSmsMessaging::CMemTestGetSmspList* CTestMemSmsMessaging::CMemTestGetSmspList::NewLC(RMobileSmsMessaging& aMessaging, CTestMemSmsMessaging* aTestMemSmsMessaging) + { + CMemTestGetSmspList* r = new (ELeave) CMemTestGetSmspList(aMessaging, aTestMemSmsMessaging); + CleanupStack::PushL(r); + r->ConstructL(); + return r; + } + +void CTestMemSmsMessaging::CMemTestGetSmspList::Start() + { + iFailEvery = 1; + StartMemTest(); + } + +void CTestMemSmsMessaging::CMemTestGetSmspList::StartMemTest() + { + __UHEAP_FAILNEXT(iFailEvery); + CTestGetSmspList::Start(); + } + +CTestMemSmsMessaging::CMemTestGetSmspList::CMemTestGetSmspList(RMobileSmsMessaging& aMessaging, CTestMemSmsMessaging* aTestMemSmsMessaging) : + CTestGetSmspList(aMessaging, aTestMemSmsMessaging), iTestMemSmsMessaging(aTestMemSmsMessaging) + { + + } + +void CTestMemSmsMessaging::CMemTestGetSmspList::RunL() + { + CTestGetSmspList::RunL(); + __UHEAP_RESET; + iTestMemSmsMessaging->INFO_PRINTF3(_L("Test %d - CRetrieveMobilePhoneSmspList OOM Test required %d allocations to succeed"),iTestMemSmsMessaging->iTestCount++,iFailEvery); + } + +TInt CTestMemSmsMessaging::CMemTestGetSmspList::RunError(TInt aError) + { + if (aError == KErrNoMemory) + { + iFailEvery++; + StartMemTest(); + return KErrNone; + } + else + return aError; + } +