diff -r 000000000000 -r 2f259fa3e83a lafagnosticuifoundation/cone/tef/tconeresourceloader.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lafagnosticuifoundation/cone/tef/tconeresourceloader.cpp Tue Feb 02 01:00:49 2010 +0200 @@ -0,0 +1,214 @@ +// Copyright (c) 2007-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 + @test + @internalComponent - Internal Symbian test code +*/ + +#include "tconeresourceloader.h" +#include + +_LIT(KConeResourceLoaderPath,"z:\\resource\\apps\\tconeresourceloader.rsc"); + +CTConeResourceLoaderAppUi::CTConeResourceLoaderAppUi(CTConeResourceLoaderStep& aStep) +: CTestAppUi(&aStep, KConeResourceLoaderPath) + { + } + +void CTConeResourceLoaderAppUi::ConstructL() + { + CTestAppUi::ConstructL(); + AutoTestManager().StartAutoTest(); + } + +CTConeResourceLoaderAppUi::~CTConeResourceLoaderAppUi() + { + } + +void CTConeResourceLoaderAppUi::RunTestStepL(TInt aStep) + { + switch (aStep) + { + case 1: + SetTestStepID(_L("UIF-CONE-0026")); + INFO_PRINTF1(_L("Test Cone resource loader")); + TestConeResourceLoader(); + INFO_PRINTF1(_L("Test Cone resource loader Completed")); + RecordTestResultL(); + break; + case 2: + SetTestStepID(_L("UIF-CONE-0027")); + INFO_PRINTF1(_L("Start OOM test for Cone Resource Loader")); + TestOOMConeResourceLoader(); + INFO_PRINTF1(_L("OOM test for Cone Resource Loader Completed")); + RecordTestResultL(); + CloseTMSGraphicsStep(); + break; + case 3: + AutoTestManager().FinishAllTestCases(CAutoTestManager::EPass); + break; + default: + break; + } + } + +/** + @SYMTestCaseID UIF-CONE-0026 + + @SYMREQ 7736 + + @SYMTestCaseDesc Tests the RCoeResourceLoader::OpenL(), RCoeResourceLoader::Open() and RCoeResourceLoader::Close() methods. + + @SYMTestPriority High + + @SYMTestStatus Implemented + + @SYMTestActions The OpenL() and Open() methods opens the given resource file. + Close() method closes the resource file if it is open. + + @SYMTestExpectedResults 1. OpenL() and Open() methods open the given resource file and leaves and returns + with KErrNone respectively. + 2. The OpenL() leaves with KErrNotSupported if the given resource file is already open. + 3. Close() method closes the given resource file. + 4. The OpenL() leaves with KErrNotFound if the given resource file is not found. + 5. Close() method returns correctly if it called on resource file which not opened using resource loader. + + */ +void CTConeResourceLoaderAppUi::TestConeResourceLoader() + { + TInt ret(KErrNone); + TFileName fileName(KConeResourceLoaderPath); + + RCoeResourceLoader resourceLoader(*iCoeEnv); + + TRAP(ret, resourceLoader.OpenL(fileName)); + TEST(ret == KErrNone); + + // Try to open an already open file. + INFO_PRINTF1(_L("Try to open a file which is already open, using Cone resource loader")); + TRAP(ret, resourceLoader.OpenL(fileName)); + TEST(ret == KErrNotSupported); + resourceLoader.Close(); + + ret = resourceLoader.Open(fileName); + TEST(ret == KErrNone); + resourceLoader.Close(); + + // Try to open an non-existing file. + INFO_PRINTF1(_L("Try to open a file which is not present, using Cone resource loader")); + fileName = _L("c:\\system\\data\\trial.rsc"); + TRAP(ret, resourceLoader.OpenL(fileName)); + TEST(ret==KErrNotFound || ret==KErrPathNotFound); + if (ret!=KErrNotFound) + { + if (ret==KErrPathNotFound) + { + _LIT(KLog,"WARNING!! Opening non existent resouce file %S gave error KErrPathNotFound (%d) expecting KErrNotFound"); + INFO_PRINTF3(KLog,&fileName,ret); + } + else + { + _LIT(KLog,"Opening non existent resouce file %S gave unexpected error %d (should have been KErrNotFound: %d)"); + INFO_PRINTF4(KLog,&fileName,ret,KErrNotFound); + } + } + INFO_PRINTF1(_L("Try to close a file which is not open using Cone resource loader")); + resourceLoader.Close(); + } + +/** + @SYMTestCaseID UIF-CONE-0027 + + @SYMREQ 7736 + + @SYMTestCaseDesc Tests RCoeResourceLoader::OpenL() method when device goes Out of Memory. + + @SYMTestPriority High + + @SYMTestStatus Implemented + + @SYMTestActions Calls OpenL() under OOM condition + + @SYMTestExpectedResults Tests should complete without any memory leaks. + */ +void CTConeResourceLoaderAppUi::TestOOMConeResourceLoader() + { + TFileName fileName(KConeResourceLoaderPath); + + RCoeResourceLoader resourceLoader(*iCoeEnv); + //OOM test for RCoeResourceLoader::OpenL() method. + for (TInt fail = 1;; fail++) + { + __UHEAP_SETFAIL(RHeap::EDeterministic, fail); + __UHEAP_MARK; + TRAPD(ret, resourceLoader.OpenL(fileName)); + TEST((ret == KErrNone) || (ret == KErrNoMemory)); + if (ret == KErrNone) + { + resourceLoader.Close(); + __UHEAP_MARKEND; + break; + } + __UHEAP_MARKEND; + } + __UHEAP_RESET; + } + +/** + Destructor + */ +CTConeResourceLoaderStep::~CTConeResourceLoaderStep() + { + } + +/** + Constructor + */ +CTConeResourceLoaderStep::CTConeResourceLoaderStep() + { + // Call base class method to set up the human readable name for logging + SetTestStepName(KTConeResourceLoader); + } + +void CTConeResourceLoaderStep::ConstructAppL(CEikonEnv* aEikEnv) + { + aEikEnv->ConstructL(); + CTConeResourceLoaderAppUi* appUi=new(ELeave) CTConeResourceLoaderAppUi(*this); + appUi->ConstructL(); + aEikEnv->SetAppUi(appUi); + } + +TVerdict CTConeResourceLoaderStep::doTestStepL() + { + INFO_PRINTF1(_L("Cone Resource Loader Test")); + __UHEAP_MARK; + + CEikonEnv* coe = new(ELeave) CEikonEnv; + TRAPD(err, ConstructAppL(coe)); + if (!err) + coe->ExecuteD(); + else + { + SetTestStepResult(EFail); + delete coe; + } + + INFO_PRINTF1(_L("Test Finished")); + + __UHEAP_MARKEND; + return TestStepResult(); + }