diff -r 2717213c588a -r 171fae344dd4 windowing/windowserver/tauto/TPntKey.CPP --- a/windowing/windowserver/tauto/TPntKey.CPP Tue Jun 22 15:21:29 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,385 +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: -// Converted from TMan test code (TMPNTKEY.CPP) May 2001 -// Test Pointer move/drag buffer -// -// - -/** - @file - @test - @internalComponent - Internal Symbian test code -*/ - -#include "TPNTKEY.H" - -#define LOGGING on //Uncomment this line to get more logging - -TInt CTPntKeyWindow::iTestScanCodes[ENumPntKeyTests]={'A','B',0,'C',EStdKeyEnter,'Y'}; -TUint CTPntKeyWindow::iTestCodes[ENumPntKeyTests]={'a','B',0,'c',EKeyEnter,'y'}; -TUint CTPntKeyWindow::iTestModifiers[ENumPntKeyTests]={0,EModifierShift,0,0,0,0}; - -CTPntKeyWindow::CTPntKeyWindow(CTPntKey *aTest) : iTest(aTest) - {} - -CTPntKeyWindow::~CTPntKeyWindow() - { - } - -void CTPntKeyWindow::SetUpLD(TPoint pos,TSize size,CTWinBase *parent) - { - ConstructExtLD(*parent,pos,size); - iWin.SetPointerGrab(ETrue); - iKey1=TRect(size.iWidth*1/16,size.iHeight/2,size.iWidth*5/16,size.iHeight); - iKey2=TRect(size.iWidth*6/16,size.iHeight/2,size.iWidth*10/16,size.iHeight); - iKey3=TRect(size.iWidth*11/16,size.iHeight/2,size.iWidth*15/16,size.iHeight); - iWin.AddKeyRect(iKey1,'A',EFalse); - iWin.AddKeyRect(iKey2,'B',EFalse); - AssignGC(*Client()->iGc); - BaseWin()->EnableOnEvents(); - Activate(); - } - -void CTPntKeyWindow::Error(TInt aWhere) - { - iTest->Failed(aWhere); - } - -void CTPntKeyWindow::NextKey() - { - if (++iKeyCount!=ENumPntKeyTests) - { - #if defined(LOGGING) - _LIT(KLog,"Next Key KeyCount=%d"); - iTest->LOG_MESSAGE2(KLog,iKeyCount); - #endif - if (iKeyCount==2) - iWin.RemoveAllKeyRects(); - else if (iKeyCount==3) - iWin.AddKeyRect(iKey3,'C',EFalse); - else if (iKeyCount==4) - { - #if !defined(__WINS__) - if (iTest->NoDigitiser()) - { - return; - } - #endif - iWin.RemoveAllKeyRects(); - iWin.AddKeyRect(TRect(Client()->iScreen->SizeInPixels()),'Z',EFalse); - } - else if (iKeyCount==5) - { - iWin.RemoveAllKeyRects(); - Client()->iWs.Flush(); - User::After(500000); // Wait half a second - iWin.AddKeyRect(TRect(Client()->iScreen->SizeInPixels()),'Y',ETrue); - } - Invalidate(); - } - SendEvent(); - } - -void CTPntKeyWindow::SendEvent() - { - TheClient->WaitForRedrawsToFinish(); -#if defined(LOGGING) - _LIT(KLog,"SendEvent KeyCount=%d"); - iTest->LOG_MESSAGE2(KLog,iKeyCount); -#endif - switch(iKeyCount) - { - case 0: - SimulatePointerDownUp(iKey1); - break; - case 1: - iTest->TestBase()->SimulateKey(TRawEvent::EKeyDown,EStdKeyLeftShift); - SimulatePointerDownUp(iKey2); - iTest->TestBase()->SimulateKey(TRawEvent::EKeyUp,EStdKeyLeftShift); - break; - case 2: - case 5: - { - TPoint pos=Position(); - TSize size=Size(); - iTest->TestBase()->SimulatePointerDownUp(pos.iX+size.iWidth/2,pos.iY+size.iHeight/4); - } - break; - case 3: - SimulatePointerDownUp(iKey3); - break; - case 4: - iTest->TestBase()->SimulateKeyDownUp(EStdKeyEnter); - break; - } - } - -void CTPntKeyWindow::SimulatePointerDownUp(const TRect& aRect) - { - iTest->TestBase()->SimulatePointerDownUp((aRect.iTl.iX+aRect.iBr.iX)/2,(aRect.iTl.iY+aRect.iBr.iY)/2); - } - -void CTPntKeyWindow::Test(TInt aCheck) - { - if (!aCheck) - Error(3); - } - -void CTPntKeyWindow::KeyUpL(const TKeyEvent &aKey,const TTime&) - { - if (aKey.iScanCode==iTestScanCodes[iKeyCount]) - NextKey(); - } - -void CTPntKeyWindow::KeyDownL(const TKeyEvent &aKey,const TTime &) - { -#if defined(LOGGING) - _LIT(KLog,"KeyDownL ScanCode=%d '%c' (%d) KeyCount=%d"); - iTest->LOG_MESSAGE5(KLog,aKey.iScanCode,aKey.iScanCode,iTestScanCodes[iKeyCount],iKeyCount); -#endif - if (aKey.iScanCode!=EStdKeyLeftFunc && aKey.iScanCode!=EStdKeyRightFunc && - aKey.iScanCode!=EStdKeyLeftAlt && aKey.iScanCode!=EStdKeyRightAlt && - aKey.iScanCode!=EStdKeyLeftCtrl && aKey.iScanCode!=EStdKeyRightCtrl && - aKey.iScanCode!=EStdKeyLeftShift && aKey.iScanCode!=EStdKeyRightShift && - aKey.iScanCode!=EStdKeyOff && - aKey.iScanCode!=EStdKeyEscape) - Test(aKey.iScanCode==iTestScanCodes[iKeyCount]); - } - -void CTPntKeyWindow::WinKeyL(const TKeyEvent &aKey,const TTime &) - { - if (aKey.iCode!=EKeyEscape) - { -#if defined(LOGGING) - _LIT(KLog1,"WinKeyL1 ScanCode=%d (%d) Code=%d '%c' (%d)"); - _LIT(KLog2,"WinKeyL2 ScanCode=%d Modifiers=0x%x (0x%x) KeyCount=%d"); - iTest->LOG_MESSAGE6(KLog1,aKey.iScanCode,iTestScanCodes[iKeyCount],aKey.iCode,aKey.iCode,iTestCodes[iKeyCount]); - iTest->LOG_MESSAGE5(KLog2,aKey.iScanCode,aKey.iModifiers&EModifierMask,iTestModifiers[iKeyCount]&EModifierMask,iKeyCount); -#endif - Test(aKey.iScanCode==iTestScanCodes[iKeyCount]); - Test(aKey.iCode==iTestCodes[iKeyCount]); - Test((aKey.iModifiers&EModifierMask)==(iTestModifiers[iKeyCount]&EModifierMask)); - } - } - -void CTPntKeyWindow::SwitchOn(const TTime &) - { -#if defined(LOGGING) - _LIT(KLog,"SwitchOn KeyCount=%d"); - iTest->LOG_MESSAGE2(KLog,iKeyCount); -#endif - if (iKeyCount==4) - NextKey(); - else if (iKeyCount!=5) - Error(2); - } - -void CTPntKeyWindow::PointerL(const TPointerEvent &aPointer,const TTime &) - { -#if defined(LOGGING) - _LIT(KLog,"Pointer Event Type=%d Pos=(%d,%d) PPos=(%d,%d) KeyCount=%d"); - iTest->LOG_MESSAGE7(KLog,aPointer.iType,aPointer.iPosition.iX,aPointer.iPosition.iY - ,aPointer.iParentPosition.iX,aPointer.iParentPosition.iY,iKeyCount); -#endif - if (aPointer.iType==TPointerEvent::EButton1Down) - { - if (iKeyCount!=2) - Error(1); - else - NextKey(); - } - } - -void CTPntKeyWindow::DrawButton(const TRect &aRect, const TDesC &aText) - { - iGc->DrawRect(aRect); - iGc->DrawText(aText, TPoint((aRect.iBr.iX+aRect.iTl.iX)/2,(aRect.iBr.iY+aRect.iTl.iY)/2)); - } - -void CTPntKeyWindow::Draw() - { - iGc->SetBrushColor(TRgb::Gray4(0)); - iGc->SetPenColor(TRgb::Gray4(3)); - iGc->Clear(); - DrawButton(iKey1,_L("A")); - DrawButton(iKey2,_L("B")); - DrawButton(iKey3,_L("C")); - switch(iKeyCount) - { - case 0: - iGc->DrawText(_L("Click on 'A'"), TPoint(10,20)); - break; - case 1: - iGc->DrawText(_L("Shift-Click on 'B'"), TPoint(10,20)); - break; - case 2: - iGc->DrawText(_L("Click anywhere in this window"), TPoint(10,20)); - break; - case 3: - iGc->DrawText(_L("Click on 'C'"), TPoint(10,20)); - break; - case 4: -#if defined(__WINS__) // Can't emulate touching dig when switched off under WINS - iGc->DrawText(_L("Switch off and on (or press Enter)"), TPoint(10,20)); -#else - iGc->DrawText(_L("Switch off, then touch the screen to switch on"), TPoint(10,20)); -#endif - break; - case 5: -#if defined(__WINS__) // Can't emulate touching dig when switched off under WINS - iGc->DrawText(_L("Touch anywhere in the window"), TPoint(10,20)); -#else - iGc->DrawText(_L("Switch off and touch the screen to switch on again"), TPoint(10,20)); -#endif - break; - } - } - -CTPntKey::CTPntKey(CTestStep* aStep): - CTWsGraphicsBase(aStep) - { - } - -CTPntKey::~CTPntKey() - { - HAL::Set(HALData::EPenDisplayOn,iOldPointerState); - CTWin::Delete(iWin); - Client()->ResetFocus(); - delete iTimeOut; - } - -TInt CTPntKey::TimeOut(TAny* aTest) //static - { - static_cast(aTest)->TimeOut(); - return(KErrNone); - } - -void CTPntKey::TimeOut() - { - TLogMessageText buf; - _LIT(KPntKeyTimeOut,"TIMEOUT: Pointer Key, %d, %S"); - buf.AppendFormat(KPntKeyTimeOut,iState,&TestBase()->iSubTitle); - TheClient->LogMessage(buf); - Failed(4); - } - -void CTPntKey::Failed(TInt aWhere) - { - _LIT(KLog,"Failed at %d"); - LOG_MESSAGE2(KLog,aWhere); - if (!iFailed) - { - iFailed=ETrue; - Client()->iGroup->ClearCurrentWindow(); - } - } - -void CTPntKey::ConstructL() - { - TInt mods=TheClient->iWs.GetModifierState(); - if (mods&EModifierCapsLock) - iTest->SimulateKeyDownUp(EStdKeyCapsLock); - //Make sure all the keys we test are in the up state - iTest->SimulateKeyDownUp(EStdKeyLeftShift); - iTest->SimulateKeyDownUp(EStdKeyRightShift); - iTest->SimulateKeyDownUp(EStdKeyLeftFunc); - iTest->SimulateKeyDownUp(EStdKeyLeftCtrl); - iTest->SimulateKeyDownUp(EStdKeyRightCtrl); - mods=TheClient->iWs.GetModifierState(); - _LIT(KLog,"Initial Modifiers state 0x%x (ideally should be zero)"); - LOG_MESSAGE2(KLog,mods); - TheClient->iScreen->SetScreenMode(0); //May sure we are in the right screen size mode - TheClient->iScreen->SetAppScreenMode(0); - TheClient->iWs.SetPointerCursorArea(TestBase()->iNormalPointerCursorArea); - CTPntKeyWindow *win=new(ELeave) CTPntKeyWindow(this); - win->SetUpLD(TPoint(20,20),Client()->iScreen->SizeInPixels()-TSize(40,40),Client()->iGroup); - iWin=win; - Client()->iGroup->SetCurrentWindow(iWin); - iNoDigitiser=EFalse; - TInt err=HAL::Get(HALData::EPenDisplayOn,iOldPointerState); - if (err==KErrNotSupported) - { - iNoDigitiser=ETrue; - } - else if (err==KErrNone) - { - err=HAL::Set(HALData::EPenDisplayOn,ETrue); - if (err==KErrNotSupported) - iNoDigitiser=(!iOldPointerState); - } - else - { - TEST(EFalse); - } - TheClient->WaitForRedrawsToFinish(); //Make sure all pending events have been delt with (redraw events are lowest priority) - iTimeOut=new(ELeave) CTimeOut(); - iTimeOut->ConstructL(); - iTimeOut->Start(KTimeOutAfter,TCallBack(CTPntKey::TimeOut,this)); - } - -void CTPntKey::RunTestCaseL(TInt /*aCurTestCase*/) - { - _LIT(KTestName,"Key set 1"); - TEST(!iFailed); - if (iFailed) - { - _LIT(KLog,"Test Failed Substate=%d KeyCount=%d"); - LOG_MESSAGE3(KLog,iTest->iState,iWin->KeyCount()); - } - ((CTPntKeyStep*)iStep)->SetTestStepID(KUnknownSYMTestCaseIDName); - switch(++iTest->iState) - { -/** -@SYMTestCaseID GRAPHICS-WSERV-0200 - -@SYMDEF DEF081259 - -@SYMTestCaseDesc Test Pointer move/drag buffer - -@SYMTestPriority High - -@SYMTestStatus Implemented - -@SYMTestActions Exercise the pointer move/drag buffer and check - that it functions correctly - -@SYMTestExpectedResults The buffer functions correctly -*/ - case 1: - ((CTPntKeyStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0200")); - iTest->LogSubTest(KTestName); - if (TestBase()->ConfigurationSupportsPointerEventTesting()) - { - iWin->SendEvent(); - TheClient->Flush(); - } - else - { - INFO_PRINTF1(_L("Test skipped because config does not support pointer event testing")); - } - break; - case 2: - ((CTPntKeyStep*)iStep)->SetTestStepID(KNotATestSYMTestCaseIDName); - ((CTPntKeyStep*)iStep)->CloseTMSGraphicsStep(); - if (TestBase()->ConfigurationSupportsPointerEventTesting()) - { - iTimeOut->Cancel(); - } - TestComplete(); - break; - } - ((CTPntKeyStep*)iStep)->RecordTestResultL(); - } - -__WS_CONSTRUCT_STEP__(PntKey)