diff -r bf7481649c98 -r 7f25ef56562d windowing/windowserver/tauto/TMULTCON.CPP --- a/windowing/windowserver/tauto/TMULTCON.CPP Fri Jun 11 14:58:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,478 +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: -// Test multiple connections to the window server -// -// - -/** - @file - @test - @internalComponent - Internal Symbian test code -*/ - -#include "TMULTCON.H" - -const TInt EMaxSubState=3; - -//#define LOGGING on //Uncomment this line to get extra logging - -_LIT(ClickOnMe,"Click on me"); -_LIT(KError,"ERROR"); - - -CTMultiCon::CTMultiCon(CTestStep* aStep) : CTWsGraphicsBase(aStep) - { - } - -CTMultiCon::~CTMultiCon() - { - delete iConn1; - delete iConn2; - delete iConn3; - delete iTimeOut; - } - -void CTMultiCon::EndAutoForegroundTest() - { -#if defined(LOGGING) - _LIT(KLog,"EndAutoForegroundTest SubState %d"); - LOG_MESSAGE2(KLog,iSubState); -#endif - iConn1->iGroup->GroupWin()->EnableReceiptOfFocus(EFalse); - iConn2->iGroup->GroupWin()->EnableReceiptOfFocus(EFalse); - iConn3->iGroup->GroupWin()->EnableReceiptOfFocus(EFalse); - CActiveScheduler::Stop(); - } - -void CTMultiCon::ConstructL() - { - iTimeOut=new(ELeave) CTimeOut(); - iTimeOut->ConstructL(); - TheClient->iWs.SetPointerCursorArea(iTest->iNormalPointerCursorArea); - iScreenSize=TSize(TheClient->iScreen->SizeInPixels()); - iConn3=new(ELeave) CMcConnectionDef(this); - iConn3->ConstructL(); - iConn2=new(ELeave) CMcConnection(this); - iConn2->ConstructL(); - iConn1=new(ELeave) CMcConnectionAf(this); - iConn1->ConstructL(); - iTest->SimulateKeyDownUp(EStdKeyLeftCtrl); - iTest->SimulateKeyDownUp(EStdKeyRightCtrl); - TInt mods=TheClient->iWs.GetModifierState(); - _LIT(KLog,"Initial Modifiers state 0x%x (ideally should be zero)"); - LOG_MESSAGE2(KLog,mods); - } - -TInt CTMultiCon::TimeOut(TAny* aTest) //static - { - static_cast(aTest)->TimeOut(); - return(KErrNone); - } - -void CTMultiCon::TimeOut() - { - TLogMessageText buf; - _LIT(KMultiConTimeOut,"TIMEOUT: Multiple Conection Test, %d, %S"); - buf.AppendFormat(KMultiConTimeOut,iTest->iState,&iTest->iSubTitle); - TheClient->LogMessage(buf); - ++iTimeOutCount; - EndAutoForegroundTest(); - } - - -// -// CMcConnection // -// - -CMcConnectionBase::CMcConnectionBase(CTMultiCon *aTest) : iTest(aTest) - { - } - -CMcConnectionBase::~CMcConnectionBase() - { - CTWin::Delete(iWin); - delete iGc; - } - -void CMcConnectionBase::SubStateChanged() - { - iWin->Invalidate(); - iWs.Flush(); - } - -void CMcConnectionBase::ConstructL() - { - CTClient::SetScreenNumber(iTest->ScreenNumber()); - CTClient::ConstructL(); - User::LeaveIfError(iScreen->CreateContext(iGc)); - } - -CMcConnection::CMcConnection(CTMultiCon *aTest) : CMcConnectionBase(aTest) - { - } - -void CMcConnection::ConstructL() - { - CMcConnectionBase::ConstructL(); - iGroup=new(ELeave) CTWindowGroup(this); - iGroup->ConstructL(); - TSize screenSize=iGroup->Size(); - TInt winWidth=screenSize.iWidth/3; - TInt winHeight=screenSize.iHeight/2-10; - iGroup->GroupWin()->AutoForeground(EFalse); - CMcWindow *win=new(ELeave) CMcWindow(iTest); - win->SetUpL(TPoint(5,5),TSize(winWidth,winHeight),iGroup,*iGc); - iWin=win; - iWs.Flush(); - } - -CMcConnectionAf::CMcConnectionAf(CTMultiCon *aTest) : CMcConnectionBase(aTest) - { - } - -void CMcConnectionAf::ConstructL() - { - CMcConnectionBase::ConstructL(); - iGroup=new(ELeave) CMcWindowGroupAf(this); - iGroup->ConstructL(); - TSize screenSize=iGroup->Size(); - TInt winWidth=screenSize.iWidth/3; - TInt winHeight=screenSize.iHeight/2-10; - iGroup->GroupWin()->AutoForeground(ETrue); - CMcWindowAf *win=new(ELeave) CMcWindowAf(iTest); - win->SetUpL(TPoint(winWidth,5),TSize(winWidth,winHeight),iGroup,*iGc); - iWin=win; - iWs.Flush(); - } - -void CMcConnectionAf::KeyL(const TKeyEvent &aKey) - { -#if defined(LOGGING) - _LIT(KLog1,"KeyL SS=%d (0) GpWinOrdPos=%d (0) Code=%d (32)"); - _LIT(KLog2," '%c'"); - TLogMessageText buf; - buf.Format(KLog1,iTest->SubState(),iGroup->GroupWin()->OrdinalPosition(),aKey.iCode); - if (aKey.iCode>0) - buf.AppendFormat(KLog2,aKey.iCode); - iTest->LOG_MESSAGE(buf); -#endif - switch(aKey.iCode) - { - case ' ': - if (iTest->SubState()==0) - { - iTest->TEST(iGroup->GroupWin()->OrdinalPosition()==0); - iTest->IncSubState(); - } - break; - case EKeyEscape: - iTest->EndAutoForegroundTest(); - break; - } - } - -CMcConnectionDef::CMcConnectionDef(CTMultiCon *aTest) : CMcConnectionBase(aTest) - { - } - -void CMcConnectionDef::ConstructL() - { - CMcConnectionBase::ConstructL(); - iGroup=new(ELeave) CTWindowGroup(this); - iGroup->ConstructL(); - iGroup->GroupWin()->EnableReceiptOfFocus(EFalse); - TSize screenSize=iGroup->Size(); - TInt winWidth=screenSize.iWidth/3-10; - TInt winHeight=(screenSize.iHeight/2)-10; - CMcWindowDef *win=new(ELeave) CMcWindowDef(iTest); - win->SetUpL(TPoint(5+winWidth/2,screenSize.iHeight/2),TSize(winWidth,winHeight),iGroup,*iGc); - iWin=win; - iWs.Flush(); - } - -// -// CMcWindow, base class // -// - -CMcWindowBase::CMcWindowBase(CTMultiCon *aTest) : CTWin(), iTest(aTest) - { - } - -void CMcWindowBase::SetUpL(TPoint pos,TSize size,CTWinBase *parent, CWindowGc &aGc) - { - ConstructExtLD(*parent,pos,size); - iWin.SetBackgroundColor(iBack); - Activate(); - AssignGC(aGc); - } - -// -// CMcWindow, window used to test multiple connections // -// - -CMcWindow::CMcWindow(CTMultiCon *aTest) : CMcWindowBase(aTest) - { - iBack=TRgb::Gray256(221); - } - -void CMcWindow::PointerL(const TPointerEvent &pointer,const TTime &) - { -#if defined(LOGGING) - _LIT(KLog,"Pointer SS=%d (1) Type=%d (%d) GpWinOrdPos=%d (1)"); - iTest->LOG_MESSAGE5(KLog,iTest->SubState(),pointer.iType,TPointerEvent::EButton1Down,Client()->iGroup->GroupWin()->OrdinalPosition()); -#endif - if (pointer.iType==TPointerEvent::EButton1Down) - { - switch(iTest->SubState()) - { - case 1: - iTest->TEST(Client()->iGroup->GroupWin()->OrdinalPosition()==1); - iTest->IncSubState(); - break; - } - } - } - -void CMcWindow::Draw() - { - iGc->Clear(); - TBuf<0x40> buf; - switch(iTest->SubState()) - { - case 1: - buf.Copy(ClickOnMe); - break; - case 0: - case 2: - case 3: - buf.Copy(KNullDesC); - break; - default: - buf.Copy(KError); - } - iGc->DrawText(buf, TPoint(10,20)); - } - -// -// CMcWindowAf, Auto foreground version of CMcWindow // -// - -CMcWindowAf::CMcWindowAf(CTMultiCon *aTest) : CMcWindowBase(aTest) - { - iBack=TRgb::Gray256(150); - } - -void CMcWindowAf::PointerL(const TPointerEvent &pointer,const TTime &) - { -#if defined(LOGGING) - _LIT(KLog,"PointerL SS=%d (2) Type=%d (%d) GpWinOrdPos=%d (0)"); - iTest->LOG_MESSAGE5(KLog,iTest->SubState(),pointer.iType,TPointerEvent::EButton1Down,Client()->iGroup->GroupWin()->OrdinalPosition()); -#endif - if (pointer.iType==TPointerEvent::EButton1Down) - { - switch(iTest->SubState()) - { - case 2: - iTest->TEST(Client()->iGroup->GroupWin()->OrdinalPosition()==0); - iTest->IncSubState(); - break; - } - } - } - -void CMcWindowAf::Draw() - { - _LIT(PressSpace,"Press "); - iGc->Clear(); - TBuf<0x40> buf; - switch(iTest->SubState()) - { - case 1: - case 3: - break; - case 0: - buf.Copy(PressSpace); - break; - case 2: - buf.Copy(ClickOnMe); - break; - default: - buf.Copy(KError); - } - iGc->DrawText(buf, TPoint(10,20)); - } - -// - -CMcWindowGroupAf::CMcWindowGroupAf(CTClient *aClient) : CTWindowGroup(aClient) - {} - -void CMcWindowGroupAf::KeyL(const TKeyEvent &aKey, const TTime &) - { - ((CMcConnectionAf *)iClient)->KeyL(aKey); - } - -// -// CMcWindowDef, Default auto foreground version of CMcWindow // -// - -CMcWindowDef::CMcWindowDef(CTMultiCon *aTest) : CMcWindowBase(aTest) - { - iBack=TRgb::Gray256(236); - } - -void CMcWindowDef::PointerL(const TPointerEvent &pointer,const TTime &) - { -#if defined(LOGGING) - _LIT(KLog,"PointerL SS=%d (3) Type=%d (%d) GpWinOrdPos=%d (0)"); - iTest->LOG_MESSAGE5(KLog,iTest->SubState(),pointer.iType,TPointerEvent::EButton1Down,Client()->iGroup->GroupWin()->OrdinalPosition()); -#endif - if (pointer.iType==TPointerEvent::EButton1Down) - { - switch(iTest->SubState()) - { - case 3: - iTest->TEST(Client()->iGroup->GroupWin()->OrdinalPosition()==0); - iTest->IncSubState(); - break; - } - } - } - -void CMcWindowDef::Draw() - { - iGc->Clear(); - TBuf<0x40> buf; - switch(iTest->SubState()) - { - case 0: - case 1: - case 2: - break; - case 3: - buf.Copy(ClickOnMe); - break; - default: - buf.Copy(KError); - } - iGc->DrawText(buf, TPoint(10,20)); - } - -// - -TInt CTMultiCon::SubState() const - { - return(iSubState); - } - -void CTMultiCon::IncSubState() - { - if (iSubState==EMaxSubState) - EndAutoForegroundTest(); - else - { - iSubState++; - #if defined(LOGGING) - _LIT(KLog,"New SubState %d"); - LOG_MESSAGE2(KLog,iSubState); - #endif - iConn1->SubStateChanged(); - iConn2->SubStateChanged(); - iConn3->SubStateChanged(); - TheClient->WaitForRedrawsToFinish(); - SendEvents(); - } - } - -void CTMultiCon::SendEvents() - { -#if defined(LOGGING) - _LIT(KLog,"Sending event for substate %d"); - LOG_MESSAGE2(KLog,iSubState); -#endif - - switch (iSubState) - { - case 0: - iTest->SimulateKeyDownUp(EStdKeySpace); - break; - case 1: - iTest->SimulatePointerDownUp(iScreenSize.iWidth/6+5,iScreenSize.iHeight/4); - break; - case 2: - iTest->SimulatePointerDownUp(iScreenSize.iWidth/2,iScreenSize.iHeight/4); - break; - case 3: - iTest->SimulatePointerDownUp(iScreenSize.iWidth/3,3*iScreenSize.iHeight/4-5); - break; - default: - TEST(EFalse); - } - TheClient->iWs.Flush(); - } - -void CTMultiCon::RunTestCaseL(TInt /*aCurTestCase*/) - { - _LIT(KTestMultiCon1,"MultiCon 1"); - _LIT(KTimeOut,"Test Timed Out after %dsecs. SubState=%d"); - ((CTMultiConStep*)iStep)->SetTestStepID(KUnknownSYMTestCaseIDName); - - if (!TestBase()->ConfigurationSupportsPointerEventTesting()) - { - INFO_PRINTF1(_L("Test skipped because config does not support pointer event testing")); - TestComplete(); - return; - } - - switch(++iTest->iState) - { -/** - - @SYMTestCaseID GRAPHICS-WSERV-0289 - - @SYMDEF DEF081259 - - @SYMTestCaseDesc Test multiple connections to the window server - - @SYMTestPriority High - - @SYMTestStatus Implemented - - @SYMTestActions Make mutiple connections to the window server and check - that the connections are made corectly - - @SYMTestExpectedResults The connections are made correctly - -*/ - case 1: - ((CTMultiConStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0289")); - iTest->LogSubTest(KTestMultiCon1); - iTimeOut->Start(KTimeOutAfter,TCallBack(CTMultiCon::TimeOut,this)); - SendEvents(); - CActiveScheduler::Start(); - iTimeOut->Cancel(); - TEST(iTimeOutCount==0); - if (iTimeOutCount!=0) - LOG_MESSAGE3(KTimeOut,KTimeOutAfter/1000000,iSubState); - break; - default: - ((CTMultiConStep*)iStep)->SetTestStepID(KNotATestSYMTestCaseIDName); - ((CTMultiConStep*)iStep)->CloseTMSGraphicsStep(); - TestComplete(); - break; - } - ((CTMultiConStep*)iStep)->RecordTestResultL(); - } - -__WS_CONSTRUCT_STEP__(MultiCon)