sl@0: // Copyright (c) 1996-2009 Nokia Corporation and/or its subsidiary(-ies). sl@0: // All rights reserved. sl@0: // This component and the accompanying materials are made available sl@0: // under the terms of "Eclipse Public License v1.0" sl@0: // which accompanies this distribution, and is available sl@0: // at the URL "http://www.eclipse.org/legal/epl-v10.html". sl@0: // sl@0: // Initial Contributors: sl@0: // Nokia Corporation - initial contribution. sl@0: // sl@0: // Contributors: sl@0: // sl@0: // Description: sl@0: // Testing key event, capturing keys and hot keys sl@0: // sl@0: // sl@0: sl@0: /** sl@0: @file sl@0: @test sl@0: @internalComponent - Internal Symbian test code sl@0: */ sl@0: sl@0: sl@0: #include "TKEY.H" sl@0: sl@0: #define LOGGING 1 //Uncomment this when there is a fail so that you get more logging sl@0: sl@0: GLDEF_D ClientToKill *SecondClient=NULL; sl@0: sl@0: GLDEF_C CTClient *CreateClientToKillL() sl@0: { sl@0: return(SecondClient=new(ELeave) ClientToKill()); sl@0: } sl@0: sl@0: GLDEF_C TInt ProcToKill(TAny *aScreenNumber) sl@0: { sl@0: TInt ret=KErrNone; sl@0: ret=TestLibStartUp(CreateClientToKillL,(TInt)aScreenNumber); sl@0: return(ret); sl@0: } sl@0: sl@0: CVisibleGroup::CVisibleGroup(TInt aScreenNo): iScreenNo(aScreenNo) sl@0: {} sl@0: sl@0: void CVisibleGroup::ConstructL() sl@0: { sl@0: User::LeaveIfError(iWs.Connect()); sl@0: iScr=new(ELeave) CWsScreenDevice(iWs); sl@0: User::LeaveIfError(iScr->Construct(iScreenNo)); sl@0: iScr->SetAppScreenMode(iMode); sl@0: iGroup=RWindowGroup(iWs); sl@0: User::LeaveIfError(iGroup.Construct(NULL,ETrue)); sl@0: TInt id=TheClient->iGroup->GroupWin()->Identifier(); sl@0: iGroup.SetOwningWindowGroup(id); sl@0: #if defined(LOGGING) sl@0: TLogMessageText buf; sl@0: _LIT(KIds,"Window Group Id: Main=%d, 2nd Client=%d"); sl@0: buf.Format(KIds,id,iGroup.Identifier()); sl@0: iWs.LogMessage(buf); sl@0: #endif sl@0: iWs.Flush(); sl@0: } sl@0: sl@0: CVisibleGroup::~CVisibleGroup() sl@0: { sl@0: iGroup.Close(); sl@0: delete iScr; sl@0: iWs.Close(); sl@0: } sl@0: sl@0: void CVisibleGroup::SetMode(TInt aMode) sl@0: { sl@0: iMode=aMode; sl@0: iScr->SetAppScreenMode(iMode); sl@0: iWs.Flush(); sl@0: } sl@0: sl@0: ClientToKill::ClientToKill() sl@0: {} sl@0: sl@0: void ClientToKill::ConstructL() sl@0: { sl@0: CTClient::ConstructL(); sl@0: RSemaphore sem; sl@0: sem.OpenGlobal(KSemaphoreName); sl@0: sl@0: iGroup=new(ELeave) TestWindowGroup(this); sl@0: iGroup->ConstructL(); sl@0: sl@0: iScreen->SetScreenMode(0); sl@0: TSize screenSize=iScreen->SizeInPixels(); sl@0: sl@0: TInt winWidth=3*screenSize.iWidth/4; sl@0: TInt winHeight=3*screenSize.iHeight/4; sl@0: iTestWin=new(ELeave) TestWindow(); sl@0: iTestWin->SetUpL(TPoint((screenSize.iWidth+4)/8,(screenSize.iHeight+4)/8),TSize(winWidth,winHeight),iGroup,*iGc); sl@0: sl@0: #if defined(LOGGING) sl@0: TLogMessageText buf; sl@0: _LIT(KId,"Window Group Id in 2nd Process=%d"); sl@0: buf.Format(KId,iGroup->GroupWin()->Identifier()); sl@0: LogMessage(buf); sl@0: #endif sl@0: sem.Signal(); // Signal thread fully initialised sl@0: sem.Close(); sl@0: } sl@0: sl@0: ClientToKill::~ClientToKill() sl@0: { sl@0: delete iTestWin; sl@0: } sl@0: sl@0: sl@0: // CTKey sl@0: sl@0: CTKey::CTKey(CTestStep* aStep) : CTWsGraphicsBase(aStep) sl@0: { sl@0: } sl@0: sl@0: sl@0: sl@0: void CTKey::ConstructL() sl@0: { sl@0: iSem.CreateGlobal(KSemaphoreName,0,KOwnerType); sl@0: iVisibleGroup=new(ELeave) CVisibleGroup(iTest->iScreenNumber); sl@0: iVisibleGroup->ConstructL(); sl@0: } sl@0: sl@0: CTKey::~CTKey() sl@0: { sl@0: delete iVisibleGroup; sl@0: iSem.Close(); sl@0: // Set focus back to this screen as it went to primary screen when iVisibleGroup was destroyed sl@0: // Wserv focus handling made focus screen switch to another screen if there is no sl@0: // focusable window group on that particular screen. sl@0: TheClient->iWs.SetFocusScreen(iTest->iScreenNumber); sl@0: } sl@0: sl@0: void CTKey::SendKey(TInt aScanCode) sl@0: { sl@0: TKeyEvent keyEvent; sl@0: keyEvent.iCode=aScanCode; sl@0: keyEvent.iScanCode=aScanCode; sl@0: keyEvent.iModifiers=0; sl@0: keyEvent.iRepeats=0; sl@0: TheClient->iWs.SimulateKeyEvent(keyEvent); sl@0: TheClient->iWs.Flush(); sl@0: } sl@0: sl@0: void CTKey::SendUpDown(TInt aScanCode) sl@0: { sl@0: TRawEvent rawEvent; sl@0: rawEvent.Set(TRawEvent::EKeyDown,aScanCode); sl@0: TheClient->iWs.SimulateRawEvent(rawEvent); sl@0: rawEvent.Set(TRawEvent::EKeyUp,aScanCode); sl@0: TheClient->iWs.SimulateRawEvent(rawEvent); sl@0: } sl@0: sl@0: void CTKey::SendCtrlAltShift(TRawEvent::TType aType) sl@0: { sl@0: TRawEvent rawEvent; sl@0: rawEvent.Set(aType,EStdKeyLeftFunc); sl@0: TheClient->iWs.SimulateRawEvent(rawEvent); sl@0: rawEvent.Set(aType,EStdKeyLeftCtrl); sl@0: TheClient->iWs.SimulateRawEvent(rawEvent); sl@0: rawEvent.Set(aType,EStdKeyLeftShift); sl@0: TheClient->iWs.SimulateRawEvent(rawEvent); sl@0: } sl@0: sl@0: void CTKey::SendCtrlAltShift(TInt aScanCode) sl@0: { sl@0: SendCtrlAltShift(TRawEvent::EKeyDown); sl@0: SendUpDown(aScanCode); sl@0: SendCtrlAltShift(TRawEvent::EKeyUp); sl@0: TheClient->iWs.Flush(); sl@0: } sl@0: sl@0: void CTKey::LogWindowGroupIds() sl@0: { sl@0: CArrayFixFlat* idList=new(ELeave) CArrayFixFlat(5); sl@0: if (!idList) sl@0: return; sl@0: TheClient->iWs.WindowGroupList(0,idList); sl@0: TLogMessageText buf; sl@0: _LIT(KWinGp,"Window Group Id's: %d"); sl@0: _LIT(KId,", %d"); sl@0: TInt ii=0; sl@0: buf.Format(KWinGp,(*idList)[ii]); sl@0: while (++iiCount()) sl@0: buf.AppendFormat(KId,(*idList)[ii]); sl@0: LOG_MESSAGE(buf); sl@0: delete idList; sl@0: } sl@0: sl@0: void CTKey::SetHotKey(THotKey aType, TUint aKeyCode) sl@0: { sl@0: TheClient->iWs.SetHotKey(aType,aKeyCode-'A'+1,EFuncCtrlShift,EFuncCtrlShift); sl@0: } sl@0: sl@0: void CTKey::KeyOfOrientation() sl@0: { sl@0: TInt numScreenModes = TheClient->iScreen->NumScreenModes(); sl@0: TInt originalScreenMode = TheClient->iScreen->CurrentScreenMode(); sl@0: if(numScreenModes >= 2) sl@0: { sl@0: //1 possible rotation of 180deg found in wsini.ini screenmode 8 sl@0: iVisibleGroup->SetMode(numScreenModes-1); sl@0: TheClient->iScreen->SetScreenMode(numScreenModes-1); sl@0: SendCtrlAltShift('O'); sl@0: TheClient->iWs.Flush(); sl@0: //1 possible rotation of 90deg found in wsini.ini screenmode 7 sl@0: iVisibleGroup->SetMode(numScreenModes-2); sl@0: TheClient->iScreen->SetScreenMode(numScreenModes-2); sl@0: SendCtrlAltShift('O'); sl@0: TheClient->iWs.Flush(); sl@0: //reset to original screenmode sl@0: iVisibleGroup->SetMode(originalScreenMode); sl@0: TheClient->iScreen->SetScreenMode(originalScreenMode); sl@0: } sl@0: else sl@0: { sl@0: TEST(numScreenModes>2); sl@0: INFO_PRINTF2(_L("numScreenModes - Expected: >2, Actual: %d"), numScreenModes); sl@0: } sl@0: TPixelsAndRotation originalSizeAndRotation; sl@0: TheClient->iScreen->GetScreenModeSizeAndRotation(TheClient->iScreen->CurrentScreenMode(),originalSizeAndRotation); sl@0: SendCtrlAltShift('O'); sl@0: TheClient->iWs.Flush(); sl@0: TPixelsAndRotation sizeAndRotation; sl@0: TheClient->iScreen->GetScreenModeSizeAndRotation(TheClient->iScreen->CurrentScreenMode(),sizeAndRotation); sl@0: TEST(sizeAndRotation.iRotation!=originalSizeAndRotation.iRotation); sl@0: if (sizeAndRotation.iRotation==originalSizeAndRotation.iRotation) sl@0: INFO_PRINTF3(_L("iRotation - Not Expected: %d, Actual: %d"), originalSizeAndRotation.iRotation, sizeAndRotation.iRotation); sl@0: SendCtrlAltShift('O'); sl@0: TheClient->iWs.Flush(); sl@0: } sl@0: sl@0: void CTKey::CycleDisplaySize() sl@0: { sl@0: // The test does nothing if there is only one possible screen mode -> return sl@0: TInt numScreenModes = TheClient->iScreen->NumScreenModes(); sl@0: if (numScreenModes<2) sl@0: { sl@0: TEST(numScreenModes>2); sl@0: INFO_PRINTF2(_L("numScreenModes - Expected: >2, Actual: %d"), numScreenModes); sl@0: return; sl@0: } sl@0: //Get original screen mode and size values sl@0: TInt originalScreenMode = TheClient->iScreen->CurrentScreenMode(); sl@0: TPixelsAndRotation sizeAndRotation; sl@0: TheClient->iScreen->GetScreenModeSizeAndRotation(TheClient->iScreen->CurrentScreenMode(),sizeAndRotation); sl@0: TSize originalScreenSize = sizeAndRotation.iPixelSize; sl@0: sl@0: SendCtrlAltShift('U'); sl@0: TheClient->iWs.Flush(); sl@0: TheClient->iScreen->GetScreenModeSizeAndRotation(TheClient->iScreen->CurrentScreenMode(),sizeAndRotation); sl@0: TEST(sizeAndRotation.iPixelSize.iHeight!=originalScreenSize.iHeight && sizeAndRotation.iPixelSize.iWidth!=originalScreenSize.iWidth); sl@0: if (sizeAndRotation.iPixelSize.iHeight==originalScreenSize.iHeight || sizeAndRotation.iPixelSize.iWidth==originalScreenSize.iWidth) sl@0: INFO_PRINTF5(_L("iPixelSize - Expected: !%d !%d, Actual: %d %d"), originalScreenSize.iHeight, originalScreenSize.iWidth, sizeAndRotation.iPixelSize.iHeight, sizeAndRotation.iPixelSize.iWidth); sl@0: TheClient->iScreen->SetScreenMode(originalScreenMode); sl@0: TheClient->iWs.Flush(); sl@0: } sl@0: sl@0: void CTKey::KeyOfDeathL() sl@0: { sl@0: //Key of Death sl@0: #if defined(LOGGING) sl@0: TLogMessageText buf; sl@0: _LIT(KNum1,"Priority Zero Window Groups=%d Total=%d (Before Process Creation)"); sl@0: buf.Format(KNum1,TheClient->iWs.NumWindowGroups(0),TheClient->iWs.NumWindowGroups()); sl@0: LOG_MESSAGE(buf); sl@0: LogWindowGroupIds(); sl@0: #endif sl@0: CProcess* process = CProcess::NewL(CProcess::eProcessKeyTest,iTest->iScreenNumber); sl@0: RWindowGroup group(TheClient->iWs); sl@0: group.Construct(1234); sl@0: TheClient->Flush(); //Make sure the window group above is created before the one in the other process sl@0: TInt id=TheClient->iGroup->GroupWin()->Identifier(); sl@0: group.SetOwningWindowGroup(id); sl@0: group.DefaultOwningWindow(); sl@0: sl@0: iSem.Wait(); sl@0: User::After(TTimeIntervalMicroSeconds32(100000)); //0.1 secs sl@0: TInt numGroups=TheClient->iWs.NumWindowGroups(); sl@0: TInt numGroups0=TheClient->iWs.NumWindowGroups(0); sl@0: sl@0: #if defined(LOGGING) sl@0: _LIT(KNum2,"NewWinGpId=%d Priority Zero Window Groups=%d Total=%d (After Process Creation)"); sl@0: buf.Format(KNum2,id,numGroups0,numGroups); sl@0: LOG_MESSAGE(buf); sl@0: _LIT(KLog1,"Sending Key Of Death"); sl@0: buf.Copy(KLog1); sl@0: LOG_MESSAGE(buf); sl@0: LogWindowGroupIds(); sl@0: #endif sl@0: group.SetOrdinalPosition(1); //Make sure that the window group we have just created is behind the one created by the other process (belt and braces) sl@0: SendCtrlAltShift('K'); sl@0: TheClient->iWs.Flush(); sl@0: #if defined(LOGGING) sl@0: _LIT(KLog2,"Sent Key Of Death"); sl@0: buf.Copy(KLog2); sl@0: LOG_MESSAGE(buf); sl@0: #endif sl@0: TInt numGroups2; sl@0: TInt numGroups0b; sl@0: TInt tries=3; sl@0: FOREVER //On multi-core platforms need to wait for the Key of Death procedure to complete sl@0: { sl@0: numGroups2=TheClient->iWs.NumWindowGroups(); sl@0: numGroups0b=TheClient->iWs.NumWindowGroups(0); sl@0: if (--tries==0) sl@0: break; sl@0: if (numGroups!=numGroups2 || numGroups0!=numGroups0b) sl@0: { sl@0: tries=1; sl@0: continue; sl@0: } sl@0: User::After(100000); //0.1secs sl@0: } sl@0: TEST(numGroups==numGroups2+1); sl@0: _LIT(KLog,"KeyOfDeath Num WinGps Before=%d After=%d (should be one less)"); sl@0: if (numGroups!=numGroups2+1) sl@0: LOG_MESSAGE3(KLog,numGroups,numGroups2); sl@0: TEST(numGroups0==numGroups0b+1); sl@0: if (numGroups0!=numGroups0b+1) sl@0: LOG_MESSAGE3(KLog,numGroups0,numGroups0b); sl@0: group.Close(); sl@0: sl@0: TBool processDead=!process->StillAlive(); sl@0: TEST(processDead); sl@0: if (!processDead) sl@0: { sl@0: _LIT(KLog,"Other Thread Still Alive"); sl@0: LOG_MESSAGE(KLog); sl@0: } sl@0: delete process; sl@0: sl@0: #if defined(LOGGING) sl@0: _LIT(KLog3,"Finished KeyOfDeath Test"); sl@0: buf.Copy(KLog3); sl@0: LOG_MESSAGE(buf); sl@0: LogWindowGroupIds(); sl@0: #endif sl@0: } sl@0: sl@0: #define CONTRAST_UP 'A' //'a'-'a'+1 sl@0: #define CONTRAST_DOWN 'B' //'b'-'a'+1 sl@0: sl@0: void CTKey::TestContrastL(TBool aChange) sl@0: { sl@0: TInt contrast=0; sl@0: TInt newContrast=0; sl@0: TInt maxContrast=0; sl@0: User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EDisplayContrastMax,maxContrast)); sl@0: TInt diff=aChange ? 1:0; sl@0: User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EDisplayContrast,contrast)); sl@0: sl@0: SendCtrlAltShift(CONTRAST_UP); sl@0: User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EDisplayContrast,newContrast)); sl@0: if ((contrast==maxContrast) && aChange) sl@0: { sl@0: TEST(newContrast==0); sl@0: if (newContrast!=0) sl@0: INFO_PRINTF3(_L("newContrast==0 - Expected: %d, Actual: %d"), 0, newContrast); sl@0: } sl@0: else sl@0: { sl@0: TEST(contrast+diff==newContrast); sl@0: if (contrast+diff!=newContrast) sl@0: INFO_PRINTF3(_L("contrast+diff==newContrast - Expected: %d, Actual: %d"), contrast+diff, newContrast); sl@0: } sl@0: sl@0: SendCtrlAltShift(CONTRAST_DOWN); sl@0: User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EDisplayContrast,newContrast)); sl@0: TEST(contrast==newContrast); sl@0: if (contrast!=newContrast) sl@0: INFO_PRINTF3(_L("contrast==newContrast - Expected: %d, Actual: %d"), contrast, newContrast); sl@0: sl@0: SendCtrlAltShift(CONTRAST_DOWN); sl@0: User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EDisplayContrast,newContrast)); sl@0: if (contrast==0) sl@0: { sl@0: TEST(maxContrast==newContrast); sl@0: if (maxContrast!=newContrast) sl@0: INFO_PRINTF3(_L("maxContrast==newContrast - Expected: %d, Actual: %d"), maxContrast, newContrast); sl@0: sl@0: } sl@0: else sl@0: { sl@0: TEST(contrast-diff==newContrast); sl@0: if (contrast-diff!=newContrast) sl@0: INFO_PRINTF3(_L("contrast-diff==newContrast - Expected: %d, Actual: %d"), contrast-diff, newContrast); sl@0: sl@0: } sl@0: sl@0: SendCtrlAltShift(CONTRAST_UP); sl@0: User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EDisplayContrast,newContrast)); sl@0: TEST(contrast==newContrast); sl@0: if (contrast!=newContrast) sl@0: INFO_PRINTF3(_L("contrast==newContrast - Expected: %d, Actual: %d"), contrast, newContrast); sl@0: sl@0: } sl@0: sl@0: void CTKey::TestDefaultContrastL(TBool aChange) sl@0: { sl@0: TInt contrast=0; sl@0: TInt newContrast=0; sl@0: TInt maxContrast=0; sl@0: User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EDisplayContrastMax,maxContrast)); sl@0: TInt diff=aChange ? 1:0; sl@0: User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EDisplayContrast,contrast)); sl@0: sl@0: SendKey(EKeyIncContrast); sl@0: User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EDisplayContrast,newContrast)); sl@0: if ((contrast==maxContrast) && aChange) sl@0: { sl@0: TEST(newContrast==0); sl@0: if (0!=newContrast) sl@0: INFO_PRINTF3(_L("newContrast==0 - Expected: %d, Actual: %d"), 0, newContrast); sl@0: } sl@0: else sl@0: { sl@0: TEST(contrast+diff==newContrast); sl@0: if (contrast+diff!=newContrast) sl@0: INFO_PRINTF3(_L("newContrast==contrast+diff - Expected: %d, Actual: %d"), contrast+diff, newContrast); sl@0: } sl@0: sl@0: SendKey(EKeyDecContrast); sl@0: User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EDisplayContrast,newContrast)); sl@0: TEST(contrast==newContrast); sl@0: if (contrast!=newContrast) sl@0: INFO_PRINTF3(_L("contrast==newContrast - Expected: %d, Actual: %d"), contrast, newContrast); sl@0: sl@0: SendKey(EKeyDecContrast); sl@0: User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EDisplayContrast,newContrast)); sl@0: if (contrast==0) sl@0: { sl@0: TEST(maxContrast==newContrast); sl@0: if (maxContrast!=newContrast) sl@0: INFO_PRINTF3(_L("maxContrast==newContrast - Expected: %d, Actual: %d"), maxContrast, newContrast); sl@0: } sl@0: else sl@0: { sl@0: TEST(contrast-diff==newContrast); sl@0: if (contrast-diff!=newContrast) sl@0: INFO_PRINTF3(_L("contrast-diff==newContrast - Expected: %d, Actual: %d"), contrast-diff, newContrast); sl@0: } sl@0: sl@0: SendKey(EKeyIncContrast); sl@0: User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EDisplayContrast,newContrast)); sl@0: TEST(contrast==newContrast); sl@0: if (contrast!=newContrast) sl@0: INFO_PRINTF3(_L("contrast==newContrast - Expected: %d, Actual: %d"), contrast, newContrast); sl@0: sl@0: } sl@0: sl@0: void CTKey::ContrastKeysL() sl@0: { sl@0: TInt maxContrast=0; sl@0: TInt contrast=0; sl@0: TInt err=HAL::Get(iTest->iScreenNumber,HALData::EDisplayContrastMax,maxContrast); sl@0: if (err==KErrNotSupported) sl@0: return; sl@0: else if (err==KErrNone) sl@0: err=HAL::Get(iTest->iScreenNumber,HALData::EDisplayContrast,contrast); sl@0: if (err==KErrNotSupported) sl@0: return; sl@0: TEST(err==KErrNone); sl@0: if (err!=KErrNone) sl@0: INFO_PRINTF3(_L("HAL::Get(iTest->iScreenNumber,HALData::EDisplayContrast,contrast)=KErrNone - Expected: %d, Actual: %d"), KErrNone, err); sl@0: sl@0: if (contrast==0) sl@0: err=HAL::Set(iTest->iScreenNumber,HALData::EDisplayContrast,++contrast); sl@0: else if (contrast==maxContrast) sl@0: err=HAL::Set(iTest->iScreenNumber,HALData::EDisplayContrast,--contrast); sl@0: if (err==KErrNotSupported) sl@0: return; sl@0: TEST(err==KErrNone); sl@0: if (err!=KErrNone) sl@0: INFO_PRINTF3(_L("HAL::Get(iTest->iScreenNumber,HALData::EDisplayContrast,contrast)=KErrNone - Expected: %d, Actual: %d"), KErrNone, err); sl@0: TestDefaultContrastL(ETrue); sl@0: sl@0: SetHotKey(EHotKeyIncContrast,CONTRAST_UP); sl@0: SetHotKey(EHotKeyDecContrast,CONTRAST_DOWN); sl@0: TestContrastL(ETrue); sl@0: TestDefaultContrastL(ETrue); sl@0: sl@0: TheClient->iWs.ClearHotKeys(EHotKeyIncContrast); sl@0: TheClient->iWs.ClearHotKeys(EHotKeyDecContrast); sl@0: TestContrastL(EFalse); sl@0: TestDefaultContrastL(EFalse); sl@0: sl@0: TheClient->iWs.RestoreDefaultHotKey(EHotKeyIncContrast); sl@0: TheClient->iWs.RestoreDefaultHotKey(EHotKeyDecContrast); sl@0: TestContrastL(EFalse); sl@0: TestDefaultContrastL(ETrue); sl@0: sl@0: SetHotKey(EHotKeyIncContrast,CONTRAST_UP); sl@0: SetHotKey(EHotKeyDecContrast,CONTRAST_DOWN); sl@0: TestContrastL(ETrue); sl@0: TestDefaultContrastL(ETrue); sl@0: sl@0: TheClient->iWs.RestoreDefaultHotKey(EHotKeyIncContrast); sl@0: TheClient->iWs.RestoreDefaultHotKey(EHotKeyDecContrast); sl@0: TestContrastL(EFalse); sl@0: TestDefaultContrastL(ETrue); sl@0: } sl@0: sl@0: #define BACKLIGHT_ON 'A' //'o'-'a'+1 sl@0: #define BACKLIGHT_OFF 'B' //'p'-'a'+1 sl@0: #define BACKLIGHT_TOGGLE 'C' //'q'-'a'+1 sl@0: /** Test for reaction against backlight ON/OFF/TOGGLE buttons defined above. sl@0: If aChange is false button presses must not affect the state of backlight. sl@0: */ sl@0: void CTKey::TestBackLightL(TBool aChange) sl@0: { sl@0: TBool state; sl@0: SendCtrlAltShift(BACKLIGHT_ON); sl@0: User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EBacklightState,state)); sl@0: TEST(state==aChange); sl@0: if (state!=aChange) sl@0: INFO_PRINTF3(_L("state==aChange - Expected: %d, Actual: %d"), aChange, state); sl@0: sl@0: SendCtrlAltShift(BACKLIGHT_TOGGLE); sl@0: User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EBacklightState,state)); sl@0: TEST(state==EFalse); sl@0: if (state!=EFalse) sl@0: INFO_PRINTF3(_L("state==EFalse - Expected: %d, Actual: %d"), EFalse, state); sl@0: sl@0: SendCtrlAltShift(BACKLIGHT_TOGGLE); sl@0: User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EBacklightState,state)); sl@0: TEST(state==aChange); sl@0: if (state!=aChange) sl@0: INFO_PRINTF3(_L("state==aChange - Expected: %d, Actual: %d"), aChange, state); sl@0: sl@0: SendCtrlAltShift(BACKLIGHT_OFF); sl@0: User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EBacklightState,state)); sl@0: TEST(state==EFalse); sl@0: if (state!=EFalse) sl@0: INFO_PRINTF3(_L("state==EFalse - Expected: %d, Actual: %d"), EFalse, state); sl@0: sl@0: SendCtrlAltShift(BACKLIGHT_TOGGLE); sl@0: User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EBacklightState,state)); sl@0: TEST(state==aChange); sl@0: if (state!=aChange) sl@0: INFO_PRINTF3(_L("state==aChange - Expected: %d, Actual: %d"), aChange, state); sl@0: sl@0: SendCtrlAltShift(BACKLIGHT_TOGGLE); sl@0: User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EBacklightState,state)); sl@0: TEST(state==EFalse); sl@0: if (state!=EFalse) sl@0: INFO_PRINTF3(_L("state==EFalse - Expected: %d, Actual: %d"), EFalse, state); sl@0: sl@0: } sl@0: sl@0: /** Test for reaction against default backlight ON/OFF/TOGGLE buttons. sl@0: If aChange is false button presses must not affect the state of backlight. sl@0: */ sl@0: void CTKey::TestDefaultBackLightL(TBool aChange) sl@0: { sl@0: TBool state; sl@0: SendKey(EKeyBacklightOn); sl@0: User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EBacklightState,state)); sl@0: TEST(state==aChange); sl@0: if (state!=aChange) sl@0: INFO_PRINTF3(_L("state==aChange - Expected: %d, Actual: %d"), aChange, state); sl@0: sl@0: SendKey(EKeyBacklightToggle); sl@0: User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EBacklightState,state)); sl@0: TEST(state==EFalse); sl@0: if (state!=EFalse) sl@0: INFO_PRINTF3(_L("state==EFalse - Expected: %d, Actual: %d"), EFalse, state); sl@0: sl@0: SendKey(EKeyBacklightToggle); sl@0: User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EBacklightState,state)); sl@0: TEST(state==aChange); sl@0: if (state!=aChange) sl@0: INFO_PRINTF3(_L("state==aChange - Expected: %d, Actual: %d"), aChange, state); sl@0: sl@0: SendKey(EKeyBacklightOff); sl@0: User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EBacklightState,state)); sl@0: TEST(state==EFalse); sl@0: if (state!=EFalse) sl@0: INFO_PRINTF3(_L("state==EFalse - Expected: %d, Actual: %d"), EFalse, state); sl@0: sl@0: SendKey(EKeyBacklightToggle); sl@0: User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EBacklightState,state)); sl@0: TEST(state==aChange); sl@0: if (state!=aChange) sl@0: INFO_PRINTF3(_L("state==aChange - Expected: %d, Actual: %d"), aChange, state); sl@0: sl@0: SendKey(EKeyBacklightToggle); sl@0: User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EBacklightState,state)); sl@0: TEST(state==EFalse); sl@0: if (state!=EFalse) sl@0: INFO_PRINTF3(_L("state==EFalse - Expected: %d, Actual: %d"), EFalse, state); sl@0: sl@0: } sl@0: sl@0: void CTKey::BackLightKeysL() sl@0: { sl@0: // Turns backlight off sl@0: TBool prevState; sl@0: TInt err=HAL::Get(iTest->iScreenNumber,HALData::EBacklightState,prevState); sl@0: if (err==KErrNotSupported) sl@0: { sl@0: _LIT(KLog,"Cannot test BackLight Key presses as cannot read its state on screen %d"); sl@0: LOG_MESSAGE2(KLog,iTest->iScreenNumber); sl@0: return; sl@0: } sl@0: else if (err==KErrNone) sl@0: err=HAL::Set(iTest->iScreenNumber,HALData::EBacklightState,EFalse); sl@0: if (err==KErrNotSupported) sl@0: { sl@0: _LIT(KLog,"Cannot test BackLight Key presses as cannot set its state on screen %d"); sl@0: LOG_MESSAGE2(KLog,iTest->iScreenNumber); sl@0: return; sl@0: } sl@0: TEST(err==KErrNone); sl@0: if (err!=KErrNone) sl@0: { sl@0: _LIT(KLog,"Reading or Setting BackLight state gave error %d on screen %d"); sl@0: LOG_MESSAGE3(KLog,err,iTest->iScreenNumber); sl@0: } sl@0: sl@0: // Tests that default backlight ON/OFF/TOGGLE buttons work sl@0: TestDefaultBackLightL(ETrue); sl@0: sl@0: // Sets user defined backlight buttons and tests that both default and user defined buttons work sl@0: SetHotKey(EHotKeyBacklightOn,BACKLIGHT_ON); sl@0: SetHotKey(EHotKeyBacklightOff,BACKLIGHT_OFF); sl@0: SetHotKey(EHotKeyBacklightToggle,BACKLIGHT_TOGGLE); sl@0: TestBackLightL(ETrue); sl@0: TestDefaultBackLightL(ETrue); sl@0: sl@0: // Calls RWsSession::ClearHotKeys and tests that both default and user defined buttons don't work sl@0: TheClient->iWs.ClearHotKeys(EHotKeyBacklightOn); sl@0: TheClient->iWs.ClearHotKeys(EHotKeyBacklightOff); sl@0: TheClient->iWs.ClearHotKeys(EHotKeyBacklightToggle); sl@0: TestBackLightL(EFalse); sl@0: TestDefaultBackLightL(EFalse); sl@0: sl@0: // Calls RWsSession::RestoreDefaultHotKey and tests that only default buttons work sl@0: TheClient->iWs.RestoreDefaultHotKey(EHotKeyBacklightOn); sl@0: TheClient->iWs.RestoreDefaultHotKey(EHotKeyBacklightOff); sl@0: TheClient->iWs.RestoreDefaultHotKey(EHotKeyBacklightToggle); sl@0: TestBackLightL(EFalse); sl@0: TestDefaultBackLightL(ETrue); sl@0: sl@0: // Sets user defined backlight buttons and tests that both default and user defined buttons work sl@0: SetHotKey(EHotKeyBacklightOn,BACKLIGHT_ON); sl@0: SetHotKey(EHotKeyBacklightOff,BACKLIGHT_OFF); sl@0: SetHotKey(EHotKeyBacklightToggle,BACKLIGHT_TOGGLE); sl@0: TestBackLightL(ETrue); sl@0: TestDefaultBackLightL(ETrue); sl@0: sl@0: // Calls RWsSession::RestoreDefaultHotKey and tests that only default buttons work sl@0: TheClient->iWs.RestoreDefaultHotKey(EHotKeyBacklightOn); sl@0: TheClient->iWs.RestoreDefaultHotKey(EHotKeyBacklightOff); sl@0: TheClient->iWs.RestoreDefaultHotKey(EHotKeyBacklightToggle); sl@0: TestBackLightL(EFalse); sl@0: TestDefaultBackLightL(ETrue); sl@0: sl@0: //Restores previous backlight state sl@0: //err=UserHal::SetBacklightOn(prevState); sl@0: err=HAL::Set(iTest->iScreenNumber,HALData::EBacklightState,prevState); sl@0: TEST(err==KErrNone); sl@0: if (err!=KErrNone) sl@0: { sl@0: _LIT(KLog,"Failed to set BackLight state back to previous state: %d on screen %d, error code: %d"); sl@0: LOG_MESSAGE4(KLog,prevState,iTest->iScreenNumber,err); sl@0: } sl@0: } sl@0: sl@0: #define BRIGHTNESS_UP 'N' sl@0: #define BRIGHTNESS_DOWN 'J' sl@0: /** If aChange is true, checks that programmicaly defined brightness buttons increase and decrease brightness properly. sl@0: If aChange is false, checks that programmicaly defined brightness buttons don't affect brightness. sl@0: */ sl@0: void CTKey::TestBrightnessL(TBool aChange) sl@0: { sl@0: TInt brightness; sl@0: TInt newBrightness; sl@0: TInt diff=aChange ? 1:0; sl@0: User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EDisplayBrightness,brightness)); sl@0: sl@0: SendCtrlAltShift(BRIGHTNESS_UP); sl@0: User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EDisplayBrightness,newBrightness)); sl@0: TEST(brightness+diff==newBrightness); sl@0: if (brightness+diff!=newBrightness) sl@0: INFO_PRINTF3(_L("brightness+diff==newBrightness - Expected: %d, Actual: %d"), newBrightness, brightness+diff); sl@0: sl@0: SendCtrlAltShift(BRIGHTNESS_DOWN); sl@0: User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EDisplayBrightness,newBrightness)); sl@0: TEST(brightness==newBrightness); sl@0: if (brightness!=newBrightness) sl@0: INFO_PRINTF3(_L("brightness==newBrightness - Expected: %d, Actual: %d"), newBrightness, brightness); sl@0: sl@0: SendCtrlAltShift(BRIGHTNESS_DOWN); sl@0: User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EDisplayBrightness,newBrightness)); sl@0: TEST(brightness-diff==newBrightness); sl@0: if (brightness-diff!=newBrightness) sl@0: INFO_PRINTF3(_L("brightness-diff==newBrightness - Expected: %d, Actual: %d"), newBrightness, brightness-diff); sl@0: sl@0: SendCtrlAltShift(BRIGHTNESS_UP); sl@0: User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EDisplayBrightness,newBrightness)); sl@0: TEST(brightness==newBrightness); sl@0: if (brightness!=newBrightness) sl@0: INFO_PRINTF3(_L("brightness==newBrightness - Expected: %d, Actual: %d"), newBrightness, brightness); sl@0: } sl@0: sl@0: /** If aChange is true, checks that default brightness buttons increase and decrease brightness properly (increase/decrease by 1). sl@0: If aChange is false, checks that default brightness buttons don't affect brightness. sl@0: */ sl@0: void CTKey::TestDefaultBrightnessL(TBool aChange) sl@0: { sl@0: TInt brightness; sl@0: TInt newBrightness; sl@0: TInt diff=aChange ? 1:0; sl@0: User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EDisplayBrightness,brightness)); sl@0: sl@0: SendKey(EKeyIncBrightness); sl@0: User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EDisplayBrightness,newBrightness)); sl@0: TEST(brightness+diff==newBrightness); sl@0: if (brightness+diff!=newBrightness) sl@0: INFO_PRINTF3(_L("brightness+diff==newBrightness - Expected: %d, Actual: %d"), newBrightness, brightness+diff); sl@0: sl@0: SendKey(EKeyDecBrightness); sl@0: User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EDisplayBrightness,newBrightness)); sl@0: TEST(brightness==newBrightness); sl@0: if (brightness!=newBrightness) sl@0: INFO_PRINTF3(_L("brightness==newBrightness - Expected: %d, Actual: %d"), newBrightness, brightness); sl@0: sl@0: SendKey(EKeyDecBrightness); sl@0: User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EDisplayBrightness,newBrightness)); sl@0: TEST(brightness-diff==newBrightness); sl@0: if (brightness-diff!=newBrightness) sl@0: INFO_PRINTF3(_L("brightness-diff==newBrightness - Expected: %d, Actual: %d"), newBrightness, brightness-diff); sl@0: sl@0: SendKey(EKeyIncBrightness); sl@0: User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EDisplayBrightness,newBrightness)); sl@0: TEST(brightness==newBrightness); sl@0: if (brightness!=newBrightness) sl@0: INFO_PRINTF3(_L("brightness==newBrightness - Expected: %d, Actual: %d"), newBrightness, brightness); sl@0: } sl@0: sl@0: void CTKey::BrightnessKeysL() sl@0: { sl@0: INFO_PRINTF1(_L("AUTO Brightness Key Test ")); sl@0: TInt maxBrightness; sl@0: TInt brightness=0; //To stop warning sl@0: // get maximum brightness and current sl@0: TInt err=HAL::Get(iTest->iScreenNumber,HALData::EDisplayBrightnessMax,maxBrightness); sl@0: if (err==KErrNotSupported) sl@0: return; sl@0: else if (err==KErrNone) sl@0: err=HAL::Get(iTest->iScreenNumber,HALData::EDisplayBrightness,brightness); sl@0: if (err==KErrNotSupported) sl@0: return; sl@0: INFO_PRINTF1(_L(" Supported")); sl@0: TEST(err==KErrNone); sl@0: if (err!=KErrNone) sl@0: INFO_PRINTF3(_L("HAL::Get(iTest->iScreenNumber,HALData::EDisplayBrightness,brightness) return value - Expected: %d, Actual: %d"), KErrNone, err); sl@0: sl@0: // sets brightness to be neither maximal nor minimal sl@0: if (brightness==0) sl@0: err=HAL::Set(iTest->iScreenNumber,HALData::EDisplayBrightness,++brightness); sl@0: else if (brightness==maxBrightness) sl@0: err=HAL::Set(iTest->iScreenNumber,HALData::EDisplayBrightness,--brightness); sl@0: if (err==KErrNotSupported) sl@0: return; sl@0: INFO_PRINTF1(_L(" Changeable")); sl@0: TEST(err==KErrNone); sl@0: if (err!=KErrNone) sl@0: INFO_PRINTF3(_L("HAL::Get(iTest->iScreenNumber,HALData::EDisplayBrightness,brightness) return value - Expected: %d, Actual: %d"), KErrNone, err); sl@0: sl@0: // Test default brightness buttons increase/decrease brightness by 1 sl@0: TestDefaultBrightnessL(ETrue); sl@0: sl@0: // Add new inc/dec buttons, test that default and program defined brightness buttons increase/decrease brightness by 1 sl@0: INFO_PRINTF1(_L(" First Test")); sl@0: SetHotKey(EHotKeyIncBrightness,BRIGHTNESS_UP); sl@0: SetHotKey(EHotKeyDecBrightness,BRIGHTNESS_DOWN); sl@0: TestBrightnessL(ETrue); sl@0: TestDefaultBrightnessL(ETrue); sl@0: sl@0: // Clear brightness buttons, test that default and program defined brightness buttons doesn't affect brightness sl@0: INFO_PRINTF1(_L(" Second Test")); sl@0: TheClient->iWs.ClearHotKeys(EHotKeyIncBrightness); sl@0: TheClient->iWs.ClearHotKeys(EHotKeyDecBrightness); sl@0: TestBrightnessL(EFalse); sl@0: TestDefaultBrightnessL(EFalse); sl@0: sl@0: // Restore default brightness buttons, test that only default brightness buttons increase/decrease brightness by 1 sl@0: INFO_PRINTF1(_L(" Third Test")); sl@0: TheClient->iWs.RestoreDefaultHotKey(EHotKeyIncBrightness); sl@0: TheClient->iWs.RestoreDefaultHotKey(EHotKeyDecBrightness); sl@0: TestBrightnessL(EFalse); sl@0: TestDefaultBrightnessL(ETrue); sl@0: sl@0: // Add new inc/dec buttons, test that default and program defined brightness buttons increase/decrease brightness by 1 sl@0: INFO_PRINTF1(_L(" Fourth Test")); sl@0: SetHotKey(EHotKeyIncBrightness,BRIGHTNESS_UP); sl@0: SetHotKey(EHotKeyDecBrightness,BRIGHTNESS_DOWN); sl@0: TestBrightnessL(ETrue); sl@0: TestDefaultBrightnessL(ETrue); sl@0: sl@0: // Restore default brightness buttons, test that only default brightness buttons increase/decrease brightness by 1 sl@0: INFO_PRINTF1(_L(" Fifth Test")); sl@0: TheClient->iWs.RestoreDefaultHotKey(EHotKeyIncBrightness); sl@0: TheClient->iWs.RestoreDefaultHotKey(EHotKeyDecBrightness); sl@0: TestBrightnessL(EFalse); sl@0: TestDefaultBrightnessL(ETrue); sl@0: } sl@0: sl@0: void CTKey::TestDefaultScreenSizeModeL(TInt aKeys,TBool aChange) sl@0: { sl@0: TInt screenMode=TheClient->iScreen->CurrentScreenMode(); sl@0: TInt key; sl@0: TInt retVal; sl@0: for (key=0;keySetMode(key); sl@0: SendKey(EKeyScreenDimension0+key); sl@0: if (aChange) sl@0: { sl@0: retVal = TheClient->iScreen->CurrentScreenMode(); sl@0: TEST(retVal==key); sl@0: if (retVal!=key) sl@0: INFO_PRINTF3(_L("TheClient->iScreen->CurrentScreenMode() return value - Expected: %d, Actual: %d"), key, retVal); sl@0: } sl@0: else sl@0: { sl@0: retVal = TheClient->iScreen->CurrentScreenMode(); sl@0: TEST(retVal==screenMode); sl@0: if (retVal!=screenMode) sl@0: INFO_PRINTF3(_L("TheClient->iScreen->CurrentScreenMode() return value - Expected: %d, Actual: %d"), screenMode, retVal); sl@0: } sl@0: } sl@0: } sl@0: sl@0: #define DIMENSION0 'P' sl@0: #define DIMENSION1 'Q' sl@0: #define DIMENSION2 'R' sl@0: #define DIMENSION3 'N' sl@0: void CTKey::TestScreenSizeModeL(TInt aKeys,TBool aChange) sl@0: { sl@0: TInt screenMode=TheClient->iScreen->CurrentScreenMode(); sl@0: TInt key; sl@0: TInt retVal; sl@0: for (key=0;keySetMode(key); sl@0: switch (key) sl@0: { sl@0: case 0: sl@0: SendCtrlAltShift(DIMENSION0); sl@0: break; sl@0: case 1: sl@0: SendCtrlAltShift(DIMENSION1); sl@0: break; sl@0: case 2: sl@0: SendCtrlAltShift(DIMENSION2); sl@0: break; sl@0: case 3: sl@0: SendCtrlAltShift(DIMENSION3); sl@0: break; sl@0: default: sl@0: INFO_PRINTF2(_L("Error Invalid Key: %d"),key); sl@0: TEST(EFalse); sl@0: break; sl@0: } sl@0: sl@0: sl@0: if (aChange) sl@0: { sl@0: retVal = TheClient->iScreen->CurrentScreenMode(); sl@0: TEST(retVal==key); sl@0: if (retVal!=key) sl@0: INFO_PRINTF3(_L("TheClient->iScreen->CurrentScreenMode() return value - Expected: %d, Actual: %d"), key, retVal); sl@0: sl@0: } sl@0: else sl@0: { sl@0: retVal = TheClient->iScreen->CurrentScreenMode(); sl@0: TEST(retVal==screenMode); sl@0: if (retVal!=screenMode) sl@0: INFO_PRINTF3(_L("TheClient->iScreen->CurrentScreenMode() return value - Expected: %d, Actual: %d"), screenMode, retVal); sl@0: sl@0: } sl@0: } sl@0: } sl@0: sl@0: void CTKey::ScreenSizeModeKeysL() sl@0: { sl@0: // The test does nothing if there is only one possible screen mode -> return sl@0: TInt numScreenModes=TheClient->iScreen->NumScreenModes(); sl@0: if (numScreenModes<2) sl@0: return; sl@0: sl@0: // Use at most 4 different modes for the test sl@0: if (numScreenModes>4) {numScreenModes=4;} sl@0: sl@0: // Set screen mode 3 sl@0: TInt screenMode=TheClient->iScreen->CurrentScreenMode(); sl@0: iVisibleGroup->SetMode(numScreenModes-1); sl@0: TheClient->iScreen->SetScreenMode(numScreenModes-1); sl@0: sl@0: // Test default screen mode switch buttons sl@0: TestDefaultScreenSizeModeL(numScreenModes,ETrue); sl@0: sl@0: // Add new screen mode switch buttons. Test that default and program defined screen mode switch buttons switch modes. sl@0: SetHotKey(EHotKeyScreenDimension0,DIMENSION0); sl@0: SetHotKey(EHotKeyScreenDimension1,DIMENSION1); sl@0: SetHotKey(EHotKeyScreenDimension2,DIMENSION2); sl@0: SetHotKey(EHotKeyScreenDimension3,DIMENSION3); sl@0: TestDefaultScreenSizeModeL(numScreenModes,ETrue); sl@0: TestScreenSizeModeL(numScreenModes,ETrue); sl@0: sl@0: // Clear all screen mode switch buttons. Test that default and program defined screen mode switch buttons don't affect screen modes sl@0: TheClient->iWs.ClearHotKeys(EHotKeyScreenDimension0); sl@0: TheClient->iWs.ClearHotKeys(EHotKeyScreenDimension1); sl@0: TheClient->iWs.ClearHotKeys(EHotKeyScreenDimension2); sl@0: TheClient->iWs.ClearHotKeys(EHotKeyScreenDimension3); sl@0: TestDefaultScreenSizeModeL(numScreenModes,EFalse); sl@0: TestScreenSizeModeL(numScreenModes,EFalse); sl@0: sl@0: // Restore default screen mode switch buttons. Test that only default screen mode switch buttons switch screen modes sl@0: TheClient->iWs.RestoreDefaultHotKey(EHotKeyScreenDimension0); sl@0: TheClient->iWs.RestoreDefaultHotKey(EHotKeyScreenDimension1); sl@0: TheClient->iWs.RestoreDefaultHotKey(EHotKeyScreenDimension2); sl@0: TheClient->iWs.RestoreDefaultHotKey(EHotKeyScreenDimension3); sl@0: TestDefaultScreenSizeModeL(numScreenModes,ETrue); sl@0: TestScreenSizeModeL(numScreenModes,EFalse); sl@0: sl@0: // Add new screen mode switch buttons. Test that default and program defined screen mode switch buttons switch modes. sl@0: SetHotKey(EHotKeyScreenDimension0,DIMENSION0); sl@0: SetHotKey(EHotKeyScreenDimension1,DIMENSION1); sl@0: SetHotKey(EHotKeyScreenDimension2,DIMENSION2); sl@0: SetHotKey(EHotKeyScreenDimension3,DIMENSION3); sl@0: TestDefaultScreenSizeModeL(numScreenModes,ETrue); sl@0: TestScreenSizeModeL(numScreenModes,ETrue); sl@0: sl@0: // Restore default screen mode switch buttons. Test that only default screen mode switch buttons switch screen modes sl@0: TheClient->iWs.RestoreDefaultHotKey(EHotKeyScreenDimension0); sl@0: TheClient->iWs.RestoreDefaultHotKey(EHotKeyScreenDimension1); sl@0: TheClient->iWs.RestoreDefaultHotKey(EHotKeyScreenDimension2); sl@0: TheClient->iWs.RestoreDefaultHotKey(EHotKeyScreenDimension3); sl@0: TestDefaultScreenSizeModeL(numScreenModes,ETrue); sl@0: TestScreenSizeModeL(numScreenModes,EFalse); sl@0: sl@0: // Restore initial screen mode sl@0: iVisibleGroup->SetMode(screenMode); sl@0: TheClient->iScreen->SetScreenMode(screenMode); sl@0: } sl@0: sl@0: void CTKey::RunTestCaseL(TInt /*aCurTestCase*/) sl@0: { sl@0: _LIT(KTest0,"KeyOfDeath"); sl@0: _LIT(KTest1,"Contrast"); sl@0: _LIT(KTest2,"BackLight"); sl@0: _LIT(KTest3,"Brightness"); sl@0: _LIT(KTest4,"Screen Size Mode"); sl@0: ((CTKeyStep*)iStep)->SetTestStepID(KUnknownSYMTestCaseIDName); sl@0: #ifdef _DEBUG sl@0: _LIT(KTest5,"Orientation"); sl@0: _LIT(KTest6,"CycleDisplaySize"); sl@0: #endif sl@0: switch(++iTest->iState) sl@0: { sl@0: /** sl@0: @SYMTestCaseID GRAPHICS-WSERV-0106 sl@0: sl@0: @SYMDEF DEF081259 sl@0: sl@0: @SYMTestCaseDesc Key of Death test sl@0: sl@0: @SYMTestPriority High sl@0: sl@0: @SYMTestStatus Implemented sl@0: sl@0: @SYMTestActions Creates a new client process and runs it. sl@0: Waits until the process is started and simulates Ctrl-Alt-Shift-K press. sl@0: When starts the process assumes that TAutoServer.exe exists in z:\sys\bin directory. sl@0: Otherwise the test will not exit a wait-state and will be aborted. sl@0: sl@0: @SYMTestExpectedResults Checks that the process is dead after the Ctrl-Alt-Shift-K press. sl@0: Check also that the difference between amounts of window groups efore sl@0: death-key press and after death-key press is 1. sl@0: */ sl@0: case 1: sl@0: ((CTKeyStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0106")); sl@0: iTest->LogSubTest(KTest0); sl@0: KeyOfDeathL(); sl@0: break; sl@0: case 2: sl@0: /** sl@0: @SYMTestCaseID GRAPHICS-WSERV-0539 sl@0: */ sl@0: ((CTKeyStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0539")); sl@0: iTest->LogSubTest(KTest1); sl@0: ContrastKeysL(); sl@0: break; sl@0: /** sl@0: @SYMTestCaseID GRAPHICS-WSERV-0107 sl@0: sl@0: @SYMDEF DEF081259 sl@0: sl@0: @SYMTestCaseDesc Test backlight sl@0: sl@0: @SYMTestPriority High sl@0: sl@0: @SYMTestStatus Implemented sl@0: sl@0: @SYMTestActions Does nothing if hardware attributes are not supported. sl@0: 1. Turns backlight off. sl@0: 2. Tests that default backlight ON/OFF/TOGGLE buttons work. sl@0: 3. Sets user defined backlight buttons and tests that both default and user defined buttons work. sl@0: 4. Calls RWsSession::ClearHotKeys and tests that both default and user defined buttons don't work. sl@0: 5. Calls RWsSession::RestoreDefaultHotKey and tests that only default buttons work. sl@0: 6. Sets user defined backlight buttons and tests that both default and user defined buttons work. sl@0: 7. Calls RWsSession::RestoreDefaultHotKey and tests that only default buttons work. sl@0: 8. Restores previous backlight state. sl@0: sl@0: @SYMTestExpectedResults Expects that actions described above give positive result. sl@0: The test also checks that programmatic turn off/on doesn't fail. sl@0: */ sl@0: case 3: sl@0: ((CTKeyStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0107")); sl@0: iTest->LogSubTest(KTest2); sl@0: BackLightKeysL(); sl@0: break; sl@0: /** sl@0: @SYMTestCaseID GRAPHICS-WSERV-0108 sl@0: sl@0: @SYMDEF DEF081259 sl@0: sl@0: @SYMTestCaseDesc Test brightness sl@0: sl@0: @SYMTestPriority High sl@0: sl@0: @SYMTestStatus Implemented sl@0: sl@0: @SYMTestActions Does nothing if hardware attributes are not supported. sl@0: 1. Get maximum brightness and current, test that those operations don't fail sl@0: 2. Sets brightness to be neither maximal nor minimal, test that those operations don't fail sl@0: 3. Test default brightness buttons increase/decrease brightness by 1 sl@0: 4. Add new inc/dec buttons, test that default and program defined brightness buttons increase/decrease brightness by 1 sl@0: 5. Clear brightness buttons, test that default and program defined brightness buttons doesn't affect brightness sl@0: 6. Restore default brightness buttons, test that only default brightness buttons increase/decrease brightness by 1 sl@0: 7. Add new inc/dec buttons, test that default and program defined brightness buttons increase/decrease brightness by 1 sl@0: 8. Restore default brightness buttons, test that only default brightness buttons increase/decrease brightness by 1 sl@0: sl@0: @SYMTestExpectedResults Expects that actions described above give positive result. sl@0: The test also checks that programmatic brightness increase and decrease doesn't fail. sl@0: */ sl@0: case 4: sl@0: ((CTKeyStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0108")); sl@0: iTest->LogSubTest(KTest3); sl@0: BrightnessKeysL(); sl@0: break; sl@0: /** sl@0: @SYMTestCaseID GRAPHICS-WSERV-0109 sl@0: sl@0: @SYMDEF DEF081259 sl@0: sl@0: @SYMTestCaseDesc Test screen mode switching sl@0: sl@0: @SYMTestPriority High sl@0: sl@0: @SYMTestStatus Implemented sl@0: sl@0: @SYMTestActions The test does nothing if there is only one possible screen mode. It uses at most 4 different modes for the test. sl@0: 1. Test default screen mode switch buttons sl@0: 2. Add new screen mode switch buttons. Test that default and program defined screen mode switch buttons switch modes. sl@0: 3. Clear all screen mode switch buttons. Test that default and program defined screen mode switch buttons don't affect screen modes sl@0: 4. Restore default screen mode switch buttons. Test that only default screen mode switch buttons switch screen modes sl@0: 5. Add new screen mode switch buttons. Test that default and program defined screen mode switch buttons switch modes. sl@0: 6. Restore default screen mode switch buttons. Test that only default screen mode switch buttons switch screen modes sl@0: 7. Restore initial screen mode sl@0: sl@0: sl@0: sl@0: @SYMTestExpectedResults Expects that actions described above give positive result. sl@0: */ sl@0: case 5: sl@0: ((CTKeyStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0109")); sl@0: iTest->LogSubTest(KTest4); sl@0: ScreenSizeModeKeysL(); sl@0: break; sl@0: #ifdef _DEBUG sl@0: case 6: sl@0: /** sl@0: @SYMTestCaseID GRAPHICS-WSERV-0540 sl@0: */ sl@0: ((CTKeyStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0540")); sl@0: iTest->LogSubTest(KTest5); sl@0: KeyOfOrientation(); sl@0: break; sl@0: case 7: sl@0: /** sl@0: @SYMTestCaseID GRAPHICS-WSERV-0541 sl@0: */ sl@0: ((CTKeyStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0541")); sl@0: iTest->LogSubTest(KTest6); sl@0: CycleDisplaySize(); sl@0: break; sl@0: #endif sl@0: default: sl@0: ((CTKeyStep*)iStep)->SetTestStepID(KNotATestSYMTestCaseIDName); sl@0: ((CTKeyStep*)iStep)->CloseTMSGraphicsStep(); sl@0: TestComplete(); sl@0: } sl@0: ((CTKeyStep*)iStep)->RecordTestResultL(); sl@0: } sl@0: sl@0: sl@0: __WS_CONSTRUCT_STEP__(Key)