diff -r 000000000000 -r 2f259fa3e83a commonuisupport/uikon/test/tparent/T_ParentStep.CPP --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/commonuisupport/uikon/test/tparent/T_ParentStep.CPP Tue Feb 02 01:00:49 2010 +0200 @@ -0,0 +1,353 @@ +// 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: +// Tests border drawing using border colour & style.\n +// +// + +/** + @file + @internalComponent - Internal Symbian test code +*/ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#include "T_ParentStep.h" +#include "appfwk_test_utils.h" + +//! Total Size of the Window in which controls are spaced.\n +#define KViewRect TRect(TPoint(0,0), TPoint(400,200)) + +/** + Destructor + */ +CSimpleParentControl::~CSimpleParentControl() + { + } + +/** + Static function used for CSimpleParentControl class instantiation.\n + The function instantiates an CSimpleParentControl object.\n + Invokes second phase constructor of CSimpleParentControl class passing pointers to + Layout manager, container object as arguments.\n +*/ +CSimpleParentControl* CSimpleParentControl::NewL(CCoeControl& aContainer, const TRect& /*aRect*/) + { + CSimpleParentControl* self = new(ELeave) CSimpleParentControl(); + CleanupStack::PushL(self); + self->ConstructL(aContainer); + CleanupStack::Pop(); + return self; + } + +/** + Auxiliary function for all Test Cases + + This method creates the user interface control on which tests are carried + out. + + */ +void CSimpleParentControl::ConstructL(CCoeControl& aContainer) + { + CreateWindowL(); + SetExtentToWholeScreen(); + SetContainerWindowL(aContainer); + ActivateL(); + } + + +/** + Auxilliary function for all Test Cases + + This method is an override from CCoeControl. It is used to handle key + events for the control. + + */ +TKeyResponse CSimpleParentControl::OfferKeyEventL(const TKeyEvent& /*aKeyEvent*/,TEventCode aType) + { + if (aType!=EEventKey) + return(EKeyWasNotConsumed); + + return(EKeyWasConsumed); + } + +/** + Auxiliary function for all Test Cases + + This method prepares the test step's user interface and prepares it + to start the tests. As part of user interface it creates a control + on which the tests are carried out. + + */ +void CSimpleParentAppUi::ConstructL() + { + CTestCoeAppUi::ConstructL(); + + iParentAppView = CParentTestAppView::NewL(KViewRect); + AutoTestManager().StartAutoTest(); + } + +CSimpleParentAppUi::~CSimpleParentAppUi() +/** + Destructor + */ + { + delete iParentAppView; + } + +/** + Auxiliary function for all Test Cases + + The method is an override from CTestAppUi. The method initiates border + drawing tests. + + */ +void CSimpleParentAppUi::RunTestStepL(TInt aNextStep) + { + switch(aNextStep) + { + case 1: + { + INFO_PRINTF1(_L("Test Parent - does the control have the view as its parent?")); + + // Get the control on the appview + CCoeControl *control = iParentAppView->GetControl(); + + if (control == NULL) + { + TEST(control != NULL); // generates a fail automatically + INFO_PRINTF1(_L("Could not get control from appview - test failed")); + break; + } + + // Get the parent of that control + CCoeControl *parent = control->Parent(); + + // Check that there is a parent to begin with + if (parent==NULL) + { + TEST(parent != NULL); // generates a fail automatically + INFO_PRINTF1(_L("Control does not have a parent - test failed")); + break; + } + + // Check that the parent is the same as the view + TEST(parent == iParentAppView); + + if (parent != iParentAppView) + { + INFO_PRINTF1(_L("View is not parent of Control - test failed")); + } + else + { + INFO_PRINTF1(_L("View is parent of Control - test PASSED")); + } + + } + break; + + case 2: + AutoTestManager().FinishAllTestCases(CAutoTestManager::EPass); + break; + default: + break; + } + } + +//---------- + +CTestParentStep::CTestParentStep() +/** + Constructor + */ + { + SetTestStepName(KTestParentStep); + } + + + +CTestParentStep::~CTestParentStep() +/** + Destructor + */ + { + } + +/** + Auxiliary function for all Test Cases + + The method creates & sets the application's user interface object. + + */ +void CTestParentStep::ConstructAppL(CEikonEnv* aCoe) + { // runs inside a TRAP harness + aCoe->ConstructL(); + + CSimpleParentAppUi* appUi= new (ELeave) CSimpleParentAppUi(this); + aCoe->SetAppUi(appUi); + appUi->ConstructL(); + } + +/** + Auxiliary function for all Test Cases + + The method creates & sets the test step's user interface object and + launches the test step. + + @SYMTestCaseID UIF-TPARENT-doTestStepL + + @SYMDEF + + @SYMTestCaseDesc This test aims to test that the parent of a control created + in a container has the view as its parent. + + @SYMTestPriority High + + @SYMTestStatus Implemented + + @SYMTestActions The view creates a control, and sets the container window + for the control to be itself + + @SYMTestExpectedResults The control is queried to confirm that its parent + is the view. + + + */ +TVerdict CTestParentStep::doTestStepL() // main function called by E32 + { + PreallocateHALBuffer(); + __UHEAP_MARK; + SetTestStepID(_L("UIF-TPARENT-doTestStepL")); + // Before creating the CEikonEnv we must create C:\parent.txt. + // The presence of this file will modify the behaviour of + // staticsettingsinit + RSmlTestUtils utils; + User::LeaveIfError(utils.Connect()); + CleanupClosePushL(utils); + _LIT(KFile, "c:\\parent.txt"); + utils.CreateFileL(KFile); + + CEikonEnv* coe=new CEikonEnv; + TRAPD(err,ConstructAppL(coe)); + + if (!err) + coe->ExecuteD(); + + utils.DeleteFileL(KFile); + CleanupStack::PopAndDestroy(&utils); + + REComSession::FinalClose(); + + RecordTestResultL(); + CloseTMSGraphicsStep(); + __UHEAP_MARKEND; + + + return TestStepResult(); + } + +// +// +// CParentTestAppView +// +// +/** + Constructor for CParentTestAppView Class.\n +*/ +CParentTestAppView::CParentTestAppView() + { + } +/** + Static entry function for CParentTestAppView class.\n + Instantiates the CParentTestAppView object.\n + Invokes the second phase constructor passing Layout manager as argument.\n +*/ +CParentTestAppView* CParentTestAppView::NewL( const TRect& aRect) + { + CParentTestAppView* self = new(ELeave) CParentTestAppView(); + CleanupStack::PushL(self); + self->ConstructL(aRect); + CleanupStack::Pop(); + return self; + } +/** + Destructor for CParentTestAppView class.\n + Destroys the Control array.\n +*/ +CParentTestAppView::~CParentTestAppView() + { + delete iSimpleParentControl; + } +/** + Second phase constructor for CParentTestAppView class.\n + Creates a control's window. The created window is the child of the application's window group.\n + Sets the view's extent i.e dimensions.\n + Instantiates a component control of CSimpleParentControl class.\n + The AppView object is added as the container control for the component control.\n +*/ +void CParentTestAppView::ConstructL(const TRect& aRect) + { + CreateWindowL(); + SetRect(aRect); + TRect ctrlRect(10, 10, 20, 20); + + iSimpleParentControl = CSimpleParentControl::NewL(*this, ctrlRect); + iSimpleParentControl->SetContainerWindowL(*this); + + } +/** + Gets the component control's at the index (aIndex) in the Control array.\n +*/ +CCoeControl* CParentTestAppView::ComponentControl(TInt /*aIndex*/) const + { + return iSimpleParentControl; + } +/** + Gets the number of component controls contained by the App View .\n +*/ +TInt CParentTestAppView::CountComponentControls() const + { + return 1; + } + +/** + Function to Draw the App View .\n + Gets a pointer to the Windows Graphic context. + Sets the pen colour,pen style and brush style settings.\n + Draws the control using DrawRect function of the Graphics context.\n +*/ +void CParentTestAppView::Draw(const TRect& /*aRect*/) const + { + CWindowGc& gc = SystemGc(); + gc.SetPenStyle(CGraphicsContext::ENullPen); + gc.SetBrushStyle(CGraphicsContext::ESolidBrush); + gc.DrawRect(Rect()); + } + + + + + +