diff -r 000000000000 -r 2f259fa3e83a lafagnosticuifoundation/cone/tef/tconecoedatastoragestep.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lafagnosticuifoundation/cone/tef/tconecoedatastoragestep.cpp Tue Feb 02 01:00:49 2010 +0200 @@ -0,0 +1,133 @@ +// Copyright (c) 2006-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: +// The test step corrupts the system colorlist and colorlist is populated +// again using PopulateColorArrayL API and OOM tests are performed. +// +// + +/** + @file + @internalComponent - Internal Symbian test code. +*/ + + +#include "tconecoedatastoragestep.h" +#include "coedatastorage.h" +#include +#include + + +/** +Constant Value KUidSystemColorRepository obtained from CoeDataStorage.cpp +*/ +const TUint KUidSystemColorRepository = 0x10272619; +const TUint KSystemColorRepositoryKey = 0; + +CTConeCoeDataStorageStep::CTConeCoeDataStorageStep() +/** +Constructor +*/ + { + SetTestStepName(KTConeCoeDataStorageStep); + } + +CTConeCoeDataStorageStep::~CTConeCoeDataStorageStep() +/** +Destructor +*/ + { + } + +/** + @SYMTestCaseID UIF-TConeCoeDataStorageStep-TestPopulateColorArrayOOML + + @SYMPREQ + + @SYMTestCaseDesc Tests PopulateColorArrayL API with forced memory allocation failure.\n + + @SYMTestPriority High + + @SYMTestStatus Implemented + + @SYMTestActions : Creating the colorlist using PopulateColorArrayL API .\n + The system colorlist is corrupted and PopulateColorArrayL API is invoked to populate the colorlist.\n + + @SYMTestExpectedResults : PopulateColorArrayL method should report KErrNoMemory if it cannot allocate sufficient \n + memory and recover gracefully from low memory situations and subsequently succeed in creating the colorlist when \n + sufficient memory is available.\n + + @SYMTestType : CIT +*/ +void CTConeCoeDataStorageStep::TestPopulateColorArrayOOML() + { + TInt err = KErrNoMemory; + TInt ii; + //The ideal loop condition is err==KErrNoMemory, it is changed + //because PopulateColorArrayL API invokes GetSystemColorListL() which has TRAP function, + //which captures the KErrNoMemory condition and the PopulateColorArrayL API doesn't leave + //with any memory allocation failure. In order to make sure that PopulateColorArrayL API + //leaves with memory allocation failure and also to create successfully the colorlist + //the loop has to run for 70 times. + INFO_PRINTF1(_L("Tests After Corrupting the System Colorlist")); + for (ii=1; ii<70; ii++) + { + INFO_PRINTF2(_L("The value of the iteration number is %d"), ii); + __UHEAP_FAILNEXT(ii); + __UHEAP_MARK; + TRAP(err, DoOomTestsAfterCorruptingColorListL()); + INFO_PRINTF2(_L("The value of the err is %d"), err); + __UHEAP_MARKEND; + } + __UHEAP_SETFAIL(RHeap::ENone,0); + User::LeaveIfError(err); + } + +/** +This functions performs the OOM Tests. +*/ +void CTConeCoeDataStorageStep::DoOomTestsAfterCorruptingColorListL() + { + SetSystemColorSchemeL(_L8("Some rubbish binary data\xab\xcd\xef")); + CColorList* colorlist = NULL; + CCoeDataStorage* dataStorage = CCoeDataStorage::NewL(); + CleanupStack::PushL(dataStorage); + colorlist = dataStorage->PopulateColorArrayL(); + TEST(colorlist != NULL); + delete colorlist; + CleanupStack::PopAndDestroy(dataStorage); + } + +/** +This function corrupts the System Colorlist by corrupting the color scheme file. +*/ +void CTConeCoeDataStorageStep::SetSystemColorSchemeL(const TDesC8& aBuffer) + { + CRepository* const repository = CRepository::NewL(TUid::Uid(KUidSystemColorRepository)); + CleanupStack::PushL(repository); + User::LeaveIfError(repository->Set(KSystemColorRepositoryKey, aBuffer)); + CleanupStack::PopAndDestroy(repository); + } +/** + Entry function for CTConeCoeDataStorageStep Test Step.\n + Invokes the TestPopulateColorArrayOOML function. \n +*/ +TVerdict CTConeCoeDataStorageStep::doTestStepL() // main function called by E32 + { + SetTestStepID(_L("UIF-TConeCoeDataStorageStep-TestPopulateColorArrayOOML")); + INFO_PRINTF1(_L("Test Started")); + TestPopulateColorArrayOOML(); + INFO_PRINTF1(_L("Test Finished")); + RecordTestResultL(); + return TestStepResult(); + }