diff -r 000000000000 -r 2f259fa3e83a commonuisupport/uikon/test/tlibs/tautolib/TAUTOLIB.CPP --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/commonuisupport/uikon/test/tlibs/tautolib/TAUTOLIB.CPP Tue Feb 02 01:00:49 2010 +0200 @@ -0,0 +1,345 @@ +// Copyright (c) 2005-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 + @internalComponent - Internal Symbian test code +*/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "TLOADDLL.H" +#include +#include +#include +#include + + +#include "Tautolib.h" + + +_LIT(KTAutoLibResourceFilePath, ""); + + +//#define FORCE_AUTO + + +//! A CTestAutoContainer test control class. +/** + The class represents the test Container control. +*/ +class CTestAutoContainer : public CCoeControl + { +public: + CTestAutoContainer(CTestAppUi* aApp); + ~CTestAutoContainer(); + void ConstructL(const TRect& aRect); + virtual TInt CountComponentControls() const; + virtual CCoeControl* ComponentControl(TInt aIndex) const; +private: + void Draw(const TRect& aRect) const; +private: + CTestEikDllLoadedLabel* iLabel2; + CTestAppUi* iApp; + }; + +CTestAutoContainer::CTestAutoContainer(CTestAppUi* aApp) : + iApp(aApp) +/** + Constructor + */ + { + + } + +/** + Auxiliary function for Container + + This method is the second phase constructor for CTestAutoContainer. + It is used to create the applications control. This method calls the control + factory function to create the control. The method then uses Cone to + construct the control by reading information from the resource file that was + added. + + */ +void CTestAutoContainer::ConstructL(const TRect& aRect) + { + CreateWindowL(); + Window().SetShadowDisabled(ETrue); + Window().SetBackgroundColor(KRgbWhite); + iApp->INFO_PRINTF1(_L("ASKING THE EIKON CONTROL FACTORY TO CREATE THIS APPLICATION'S CONTROL")); + + + // For ECom Plugin DLL + iApp->INFO_PRINTF1(_L("Creating control from ECom plugin DLL")); + SEikControlInfo control2Info = EikControlFactory::CreateByTypeL(CTestEikDllLoadedLabel::ECtTestEikEComDllLoadedLabel); + iLabel2 = STATIC_CAST(CTestEikDllLoadedLabel*, control2Info.iControl); + iApp->TEST(iLabel2 != NULL); + if (iLabel2) + { + iLabel2->SetContainerWindowL(*this); + iLabel2->SetControlContext(iLabel2); + + iApp->INFO_PRINTF1(_L("ASKING CONE TO CONSTRUCT THIS APPLICATION'S CONTROL FROM THE LOCAL RESOURCE FILE")); + TResourceReader reader2; + iCoeEnv->CreateResourceReaderLC(reader2,R_TESTAUTOLIB_LABEL); + iLabel2->ConstructFromResourceL(reader2); + CleanupStack::PopAndDestroy();// resource readers + iLabel2->SetRect(TRect(TPoint(260,130),iLabel2->MinimumSize())); + iLabel2->ActivateL(); + } + else + { + iApp->INFO_PRINTF1(_L("Error may be related to binaries in TLOADDLLV2.MMP")); + } + + if (iLabel2) + { + SetRect(aRect); + ActivateL(); + } + } + +CTestAutoContainer::~CTestAutoContainer() +/** + Destructor + */ + { + delete iLabel2; + } + +/** + Auxiliary function for Container + + This method is an override from CCoeControl. It returns the number of + controls contained in a compound control. + + */ +TInt CTestAutoContainer::CountComponentControls() const + { + return(1); + } + +/** + Auxiliary function for Container + + This method is an override from CCoeControl. It returns the label component + from the container control. + + */ +CCoeControl* CTestAutoContainer::ComponentControl(TInt aIndex) const + { + switch (aIndex) + { + case 0: + default: + { + return iLabel2; + } + } + } + + +/** + Auxiliary function for refreshing Container + + This method is an override from CCoeControl. It draws the container control. + + */ +void CTestAutoContainer::Draw(const TRect& aRect) const + { + CWindowGc& gc=SystemGc(); + gc.SetBrushStyle(CGraphicsContext::ESolidBrush); + gc.SetBrushColor(KRgbWhite); + gc.SetPenStyle(CGraphicsContext::ESolidPen); + gc.SetPenColor(KRgbWhite); + gc.DrawRect(aRect); + } + + +//! A CTestAutoAddLibraryAppUi test class. +/** + The class handles work with resources. +*/ +class CTestAutoAddLibraryAppUi : public CTestAppUi + { +public: + CTestAutoAddLibraryAppUi(CTmsTestStep* aStep) : + CTestAppUi(aStep, KTAutoLibResourceFilePath) {} //, TESTAUTOLIB_HOT_KEYS, TESTAUTOLIB_MENU_BAR){} + ~CTestAutoAddLibraryAppUi(); + void ConstructL(); + virtual void HandleCommandL(TInt aCommand); + + //from CCoeAppUi + void PrepareToExit(); + +private: + void RunTestStepL(TInt aNumStep); + + CTestAutoContainer* iContainer; + }; + + +CTestAutoAddLibraryAppUi::~CTestAutoAddLibraryAppUi() +/** + Destructor + */ + { + } + +void CTestAutoAddLibraryAppUi::PrepareToExit() + { + // Need to delete iContainer here rather than in the destructor because iContainer + // owns a control (CTestEikDllLoadedLabel) which is defined in an ECom DLL. + // Because this app is the only user of that Ecom DLL, it will be expunged from RAM + // (when run from an On-Demand-Paging ROM) before the AppUi is deleted. + // See DEF112572 + RemoveFromStack(iContainer); + delete iContainer; + } + + +/** + Auxiliary function for all Test Cases + + The method creates a container and sets active object with lowest + priority for running test in auto mode. + + */ +void CTestAutoAddLibraryAppUi::ConstructL() + { + //BaseConstructL(); + CTestAppUi::ConstructL(); + + TRect boundingRect=ClientRect(); // make toolband stretch to the screen width by default + //menu + iContainer=new(ELeave) CTestAutoContainer(this); + ReduceRect(boundingRect); + iContainer->ConstructL(boundingRect); + AddToStackL(iContainer); + + AutoTestManager().StartAutoTest(); + + } + + +/** + Auxiliary function for all Test Cases + + The method is an override from CTestAppUi. The method initiates all tests + to be performed. + + */ +void CTestAutoAddLibraryAppUi::RunTestStepL(TInt aNumStep) + { + + User::After(TTimeIntervalMicroSeconds32(1000000)); + switch(aNumStep) + { + case 1: + AutoTestManager().FinishAllTestCases(CAutoTestManager::EPass); + break; + } + } + + +/** + Auxiliary function for all Test Cases + + This method is called by CTestAutoAddLibraryAppUi::RunTestStepL() to initiate + the tests. + + */ +void CTestAutoAddLibraryAppUi::HandleCommandL(TInt aCommand) + { + switch (aCommand) + { + case EEikCmdExit: + iCoeEnv->Flush(); + Exit(); + break; + } + } + + + +//---------- + +CTestAutoLibStep::CTestAutoLibStep() +/** + Constructor + */ + { + SetTestStepName(KTestAutoLibStep); + } + +CTestAutoLibStep::~CTestAutoLibStep() +/** + Destructor + */ + { + } + +/** + Auxiliary function for all Test Cases + + The method creates & sets the application's user interface object. + + */ +void CTestAutoLibStep::ConstructAppL(CEikonEnv* aCoe) + { // runs inside a TRAP harness + aCoe->ConstructL(); + + CTestAppUi* appUi= new (ELeave) CTestAutoAddLibraryAppUi(this); + aCoe->SetAppUi(appUi); + appUi->ConstructL(); + } + +/** + Auxiliary function for all Test Cases + + The method creates & sets the application's user interface object to + launch the application which will initiate the tests. + + */ +TVerdict CTestAutoLibStep::doTestStepL() // main function called by E32 + { + PreallocateHALBuffer(); + __UHEAP_MARK; + + CEikonEnv* coe=new CEikonEnv; + TRAPD(err,ConstructAppL(coe)); + + if (!err) + coe->ExecuteD(); + + REComSession::FinalClose(); + + __UHEAP_MARKEND; + + return TestStepResult(); + } + + + +