diff -r bf7481649c98 -r 7f25ef56562d windowing/windowserver/tauto/TORDINAL.CPP --- a/windowing/windowserver/tauto/TORDINAL.CPP Fri Jun 11 14:58:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,579 +0,0 @@ -// Copyright (c) 1996-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: -// ORDINAL.CPP -// Test ordinal position and priority changes on windows -// -// - -/** - @file - @test - @internalComponent - Internal Symbian test code -*/ - -#include "TORDINAL.H" - -_LIT(KLogNextSibling,"NextSibling of iChild%d is not iChild%d"); -_LIT(KLogNoNextSibling,"iChild%d has a NextSibling when it shouldn't"); -_LIT(KLogPrevSibling,"PrevSibling of iChild%d is not iChild%d"); -_LIT(KLogNoPrevSibling,"iChild%d has a PrevSibling when it shouldn't"); - -CTOrdinal::CTOrdinal(CTestStep* aStep): - CTWsGraphicsBase(aStep) - { - } - -COrdinalWindowBase::COrdinalWindowBase(CTClient *aClient, CTestBase* aTest, CTestStep* aTestStep) : iClient(aClient), iTest(aTest), iTestStep(aTestStep) - { - } - -COrdinalWindow::COrdinalWindow(CTClient *aClient, CTestBase* aTest, CTestStep* aTestStep) : COrdinalWindowBase(aClient, aTest, aTestStep), iClientWin(aClient->iWs) - { - __DECLARE_NAME(_S("COrdinalWindow")); - } - -COrdinalWindowGroup::COrdinalWindowGroup(CTClient *aClient, CTestBase* aTest, CTestStep* aTestStep) : COrdinalWindowBase(aClient, aTest, aTestStep), iGroupWin(aClient->iWs) - { - __DECLARE_NAME(_S("COrdinalWindowGroup")); - } - -COrdinalWindowBase::~COrdinalWindowBase() - { - if (iWin) - iWin->Close(); - } - -void COrdinalWindowBase::Draw() - {} - -inline RWindowTreeNode* COrdinalWindowBase::WinTreeNode() - { - return(iWin); - } - -inline TUint32 COrdinalWindowBase::Handle() - { - return reinterpret_cast(this); - } - -COrdinalWindowBase *COrdinalWindowGroup::NewL(CTClient *aClient, CTestBase* aTest, CTestStep* aTestStep) - { - COrdinalWindowGroup *oWin=new(ELeave) COrdinalWindowGroup(aClient, aTest, aTestStep); - TInt err=oWin->iGroupWin.Construct((TUint32)oWin); - if (err<0) - { - delete oWin; - User::Leave(err); - } - oWin->iWin= &oWin->iGroupWin; - return(oWin); - } - -COrdinalWindowBase *COrdinalWindow::NewL(CTClient* aClient, RWindowTreeNode* aParent, CTestBase* aTest, CTestStep* aTestStep) - { - COrdinalWindow *oWin=new(ELeave) COrdinalWindow(aClient, aTest, aTestStep); - TInt err=oWin->iClientWin.Construct(*aParent,(TUint32)oWin); - if (err!=KErrNone) - { - delete oWin; - User::Leave(err); - } - oWin->iClientWin.Activate(); - oWin->iWin= &oWin->iClientWin; - return(oWin); - } - -TInt COrdinalWindowBase::OrdinalPosition() - { - return(iWin->OrdinalPosition()); - } - -void COrdinalWindowBase::SetOrdinalPosition(TInt aPos) - { - iWin->SetOrdinalPosition(aPos); - } - -void COrdinalWindowBase::SetOrdinalPosition(TInt aPos,TInt aPri) - { - iWin->SetOrdinalPosition(aPos,aPri); - } - -CTOrdinal::~CTOrdinal() - { - delete iClient; - } - -void DZ(COrdinalWindowBase * &aX) - { - delete aX; - aX=NULL; - } - -void CTOrdinal::DestroyWindows() - { - DZ(iParent); - DZ(iParent2); - DZ(iParent3); - for(TInt child=0;childTEST(iWin->OrdinalPosition()==aTestPos); - } - -void COrdinalWindowBase::SetAndTestOP(TInt aPos,TInt aTestPos) - { - iWin->SetOrdinalPosition(aPos); - iTestStep->TEST(iWin->OrdinalPosition()==aTestPos); - } - -void COrdinalWindowBase::SetAndTestOP(TInt aPos) - { - SetAndTestOP(aPos, aPos); - } - -TInt COrdinalWindowBase::SetToLastAndGetOP() - { - iWin->SetOrdinalPosition(-1); - return(iWin->OrdinalPosition()); - } - -TInt COrdinalWindowBase::SetToLastAndGetOPPri(TInt aPri) - { - iWin->SetOrdinalPosition(-1, aPri); - return(iWin->OrdinalPosition()); - } - -void COrdinalWindowBase::SetAndTestOPPri(TInt aPos,TInt aPri,TInt aTestPos) - { - iWin->SetOrdinalPosition(aPos,aPri); - iTestStep->TEST(iWin->OrdinalPosition()==aTestPos); - iTestStep->TEST(iWin->OrdinalPriority()==aPri); - } - -void COrdinalWindowBase::SetAndTestOPPri(TInt aPos,TInt aPri) - { - SetAndTestOPPri(aPos,aPri,aPos); - } - -inline COrdinalWindowBase* COrdinalWindowBase::NextSibling() const - { - return reinterpret_cast(iWin->NextSibling()); - } - -inline COrdinalWindowBase* COrdinalWindowBase::PrevSibling() const - { - return reinterpret_cast(iWin->PrevSibling()); - } - -void CTOrdinal::TestWindowOrderNext(TInt aBefore,TInt aAfter) - { - TInt retVal=(iChild[aBefore]->NextSibling()==iChild[aAfter]); - TEST(retVal); - if (!retVal) - LOG_MESSAGE3(KLogNextSibling,aBefore,aAfter); - } - -void CTOrdinal::TestWindowOrderNext(TInt aLast) - { - TInt retVal=(iChild[aLast]->NextSibling()==0); - TEST(retVal); - if (!retVal) - LOG_MESSAGE2(KLogNoNextSibling,aLast); - } - -void CTOrdinal::TestWindowOrderPrev(TInt aAfter,TInt aBefore) - { - TInt retVal=(iChild[aAfter]->PrevSibling()==iChild[aBefore]); - TEST(retVal); - if (!retVal) - LOG_MESSAGE3(KLogPrevSibling,aAfter,aBefore); - } - -void CTOrdinal::TestWindowOrderPrev(TInt aFirst) - { - TInt retVal=(iChild[aFirst]->PrevSibling()==0); - TEST(retVal); - if (!retVal) - LOG_MESSAGE2(KLogNoPrevSibling,aFirst); - } - -void CTOrdinal::OrdinalPos() - { - TInt last=iChild[0]->SetToLastAndGetOP(); - iChild[0]->SetAndTestOP(0); - iChild[5]->TestOP(5); - iChild[1]->SetAndTestOP(3); - iChild[0]->SetAndTestOP(0); - iChild[0]->SetAndTestOP(-1,last); - iChild[0]->SetAndTestOP(-1000,last); - iChild[0]->SetAndTestOP(2); - iChild[0]->SetAndTestOP(-1000,last); - iChild[0]->SetAndTestOP(0); - for(TInt index=0;index<=5;index++) - iChild[4]->SetAndTestOP(index,index); - iChild[0]->SetAndTestOP(-1,last); - iChild[1]->SetAndTestOP(-1,last); - iChild[2]->SetAndTestOP(-1,last); - iChild[3]->SetAndTestOP(-1,last); - iChild[4]->SetAndTestOP(-1,last); - iChild[5]->SetAndTestOP(-1,last); - TInt child; - for (child=0;childSetToLastAndGetOPPri(12); - iChild[2]->TestOP(last12); - TInt lastKMax=iChild[2]->SetToLastAndGetOPPri(KMaxTInt32); - iChild[2]->TestOP(lastKMax); - TInt last=iChild[2]->SetToLastAndGetOPPri(0); - iChild[2]->TestOP(last); - iChild[2]->SetAndTestOPPri(-1,12,last12); // One and only pri 12 window - iChild[3]->SetAndTestOPPri(-1,KMaxTInt32,lastKMax); // One and only pri KMaxTInt32 window - iChild[1]->SetAndTestOPPri(0,KMaxTInt32); - iChild[5]->SetAndTestOP(-1,last-3); - iChild[1]->TestOP(0); - iChild[0]->SetAndTestOPPri(0,50); - iChild[1]->SetAndTestOPPri(0,50); - iChild[2]->SetAndTestOPPri(0,50); - iChild[3]->SetAndTestOPPri(0,50); - iChild[1]->TestOP(2); - if (iGroupTest) - { - retVal=(reinterpret_cast(iChild[0]->NextSibling())==iClient->iGroup); - TEST(retVal); - if (!retVal) - { - _LIT(KLog,"iChild0 NextSibling is not the main group window"); - LOG_MESSAGE(KLog); - } - retVal=(reinterpret_cast(iClient->iGroup->NextSibling())==iChild[4]); - TEST(retVal); - if (!retVal) - { - _LIT(KLog,"NextSibling of main group window is not iChild4"); - LOG_MESSAGE(KLog); - } - } - else - TestWindowOrderNext(0,4); - TestWindowOrderNext(4,5); - TestWindowOrderNext(5); - iChild[2]->SetAndTestOPPri(5,-1,0); - iChild[3]->SetAndTestOPPri(5,-1,1); - TestWindowOrderNext(5,2); - iChild[0]->SetAndTestOPPri(100000,KMinTInt32,0); - iChild[1]->SetAndTestOPPri(200000,KMinTInt32,1); - iChild[2]->SetAndTestOPPri(300000,KMinTInt32,2); - iChild[5]->SetAndTestOPPri(0,0,0); - iChild[3]->TestOP(0); - iChild[0]->SetAndTestOPPri(0,-1); - iChild[1]->SetAndTestOPPri(0,-1); - iChild[2]->SetAndTestOPPri(0,-1); - iChild[3]->SetAndTestOPPri(0,1); - iChild[4]->SetAndTestOPPri(0,1); - iChild[5]->SetAndTestOPPri(0,1); - TestWindowOrderPrev(0,1); - TestWindowOrderPrev(1,2); - if (iGroupTest) - { - retVal=(reinterpret_cast(iChild[2]->PrevSibling())==iClient->iGroup); - TEST(retVal); - if (!retVal) - { - _LIT(KLog,"iChild2 PrevSibling is not the main group window"); - LOG_MESSAGE(KLog); - } - retVal=(reinterpret_cast(iClient->iGroup->PrevSibling())==iChild[3]); - TEST(retVal); - if (!retVal) - { - _LIT(KLog,"PrevSibling of main group window is not iChild3"); - LOG_MESSAGE(KLog); - } - } - else - TestWindowOrderPrev(2,3); - TestWindowOrderPrev(3,4); - TestWindowOrderPrev(4,5); - TestWindowOrderPrev(5); - } - -void CTOrdinal::ConstructL() - { - iClient=new(ELeave) COrdinalClient(); - iClient->SetScreenNumber(iTest->iScreenNumber); - iClient->ConstructL(); - } - -/** -@SYMTestCaseID GRAPHICS-WSERV-0446 - -@SYMCR CR1164 - -@SYMTestCaseDesc Test ClientHandle function returns right value - -@SYMTestPriority High - -@SYMTestStatus Implemented - -@SYMTestActions Call this function on windows at various times - -@SYMTestExpectedResults The value set when window was created is returned -*/ -void CTOrdinal::CreateWindowsL(TInt aMode) - { - RWindowTreeNode* parent=NULL; - RWindowTreeNode* base=iClient->iGroup->WinTreeNode(); - TInt errors=0; - - if (base->Child()!=0) - { - _LIT(KErrText,"Main Group Window has children at start of test"); - LOG_MESSAGE(KErrText); - AutoPanic(EAutoPanicGroupWinHasChild); - } - if (base->ClientHandle()!=reinterpret_cast(iClient->iGroup)) - ++errors; - if (base->Parent()!=0) - ++errors; - TEST(errors==0); - if (errors>0) - { - _LIT(KErrText,"Handles of Main Group Window are not as expected"); - LOG_MESSAGE2(KErrText,errors); - } - iGroupTest=EFalse; - switch(aMode) - { - case 3: - iParent=COrdinalWindow::NewL(iClient,base,iTest,iStep); - parent=iParent->WinTreeNode(); - CheckHandlesOnNewWindow(iClient->iGroup,iParent); - break; - case 1: - parent=iClient->iGroup->WinTreeNode(); - break; - case 2: - iParent=COrdinalWindow::NewL(iClient,base,iTest,iStep); - CheckHandlesOnNewWindow(iClient->iGroup,iParent); - iParent2=COrdinalWindow::NewL(iClient,iParent->WinTreeNode(),iTest,iStep); - CheckHandlesOnNewWindow(iParent,iParent2); - iParent3=COrdinalWindow::NewL(iClient,iParent2->WinTreeNode(),iTest,iStep); - parent=iParent3->WinTreeNode(); - CheckHandlesOnNewWindow(iParent2,iParent3); - break; - case 0: - iGroupTest=ETrue; - for (TInt child=ENumChildren-1;child>=0;--child) - iChild[child]=COrdinalWindowGroup::NewL(iClient,iTest,iStep); - CheckHandles(0); - return; - } - for (TInt child=ENumChildren-1;child>=0;--child) - { - iChild[child]=COrdinalWindow::NewL(iClient,parent,iTest,iStep); - if (iChild[child]->Handle()!=parent->Child()) - ++errors; - } - TEST(errors==0); - if (errors>0) - { - _LIT(KErrText,"%d windows were not the first child"); - LOG_MESSAGE2(KErrText,errors); - } - CheckHandles(parent->ClientHandle()); - } - -void CTOrdinal::CheckHandlesOnNewWindow(CTWindowGroup* aParent,COrdinalWindowBase* aWin) - { - TInt errors=0; - if (aParent->WinTreeNode()->Child()!=aWin->Handle()) - ++errors; - if (aWin->WinTreeNode()->Parent()!=reinterpret_cast(aParent)) - ++errors; - CheckHandlesOnNewWindow(errors,aWin); - } - -void CTOrdinal::CheckHandlesOnNewWindow(COrdinalWindowBase* aParent,COrdinalWindowBase* aWin) - { - TInt errors=0; - if (aParent->WinTreeNode()->Child()!=aWin->Handle()) - ++errors; - if (aWin->WinTreeNode()->Parent()!=aParent->Handle()) - ++errors; - CheckHandlesOnNewWindow(errors,aWin); - } - -void CTOrdinal::CheckHandlesOnNewWindow(TInt aErrors,COrdinalWindowBase* aWin) - { - RWindowTreeNode* win=aWin->WinTreeNode(); - if (win->ClientHandle()!=aWin->Handle()) - ++aErrors; - if (win->PrevSibling()!=0) - ++aErrors; - if (win->NextSibling()!=0) - ++aErrors; - if (win->Child()!=0) - ++aErrors; - TEST(aErrors==0); - if (aErrors>0) - { - _LIT(KErrText,"%d errors in handles of newly created window"); - LOG_MESSAGE2(KErrText,aErrors); - } - } - -void CTOrdinal::CheckHandles(TUint aParent) - { - TInt errors=0; - TInt child; - for (child=0;childWinTreeNode()->ClientHandle()!=iChild[child]->Handle()) - ++errors; - } - TEST(errors==0); - if (errors>0) - { - _LIT(KErrText,"%d windows gave wrong client handle"); - LOG_MESSAGE2(KErrText,errors); - errors=0; - } - for (child=0;childWinTreeNode()->Parent()!=aParent) - ++errors; - } - TEST(errors==0); - if (errors>0) - { - _LIT(KErrText,"%d children gave wrong parent handle"); - LOG_MESSAGE2(KErrText,errors); - errors=0; - } - for (child=1;childWinTreeNode()->NextSibling()!=iChild[child]->Handle()) - ++errors; - } - if (iChild[5]->WinTreeNode()->NextSibling()!=0 && !iGroupTest) - ++errors; - TEST(errors==0); - if (errors>0) - { - _LIT(KErrText,"%d windows gave wrong next sibling handle"); - LOG_MESSAGE2(KErrText,errors); - errors=0; - } - if (iChild[0]->WinTreeNode()->PrevSibling()!=0 && !iGroupTest) - ++errors; - for (child=1;childWinTreeNode()->PrevSibling()!=iChild[child-1]->Handle()) - ++errors; - } - TEST(errors==0); - if (errors>0) - { - _LIT(KErrText,"%d windows gave wrong prev sibling handle"); - LOG_MESSAGE2(KErrText,errors); - } - } - -COrdinalClient::COrdinalClient() - { - } - -void COrdinalClient::ConstructL() - { - User::LeaveIfError(iWs.Connect()); - // change to correct screen - // - iScreen = new (ELeave) CWsScreenDevice(iWs); - User::LeaveIfError(iScreen->Construct(iScreenNumber)); - - TheClient->iGroup->WinTreeNode()->SetOrdinalPosition(0,-2000000000); - TheClient->iWs.Flush(); - iGroup=new(ELeave) CTWindowGroup(this); - iGroup->ConstructL(); - } - -COrdinalClient::~COrdinalClient() - { - TheClient->iGroup->WinTreeNode()->SetOrdinalPosition(0,0); - } - -void COrdinalClient::KeyL(const TKeyEvent &,const TTime &) - { - } - -void CTOrdinal::RunTestCaseL(TInt /*aCurTestCase*/) - { - _LIT(KTest1,"Ordinal 1"); - ((CTOrdinalStep*)iStep)->SetTestStepID(KUnknownSYMTestCaseIDName); - switch(++iTest->iState) - { -/** -@SYMTestCaseID GRAPHICS-WSERV-0217 - -@SYMDEF DEF081259 - -@SYMTestCaseDesc Test ordinal position and priority changes on windows - -@SYMTestPriority High - -@SYMTestStatus Implemented - -@SYMTestActions Set different ordinal positions and priorities on a - number of windows and check they have been set - correctly - -@SYMTestExpectedResults The positions and priorities are set correctly -*/ - case 1: - ((CTOrdinalStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0217")); - iTest->LogSubTest(KTest1); - { - for(TInt index=0;index<4;index++) - { - ((CTOrdinalStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0446")); - CreateWindowsL(index); - ((CTOrdinalStep*)iStep)->RecordTestResultL(); - OrdinalPos(); - OrdinalPriority(); - DestroyWindows(); - } - } - ((CTOrdinalStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0217")); - if (!iStep->TestStepResult() == EPass) - TEST(EFalse); - break; - default: - ((CTOrdinalStep*)iStep)->SetTestStepID(KNotATestSYMTestCaseIDName); - ((CTOrdinalStep*)iStep)->CloseTMSGraphicsStep(); - TestComplete(); - break; - }; - ((CTOrdinalStep*)iStep)->RecordTestResultL(); - } - -__WS_CONSTRUCT_STEP__(Ordinal)