1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/os/graphics/windowing/windowserver/test/tauto/TKEY.CPP Fri Jun 15 03:10:57 2012 +0200
1.3 @@ -0,0 +1,1119 @@
1.4 +// Copyright (c) 1996-2009 Nokia Corporation and/or its subsidiary(-ies).
1.5 +// All rights reserved.
1.6 +// This component and the accompanying materials are made available
1.7 +// under the terms of "Eclipse Public License v1.0"
1.8 +// which accompanies this distribution, and is available
1.9 +// at the URL "http://www.eclipse.org/legal/epl-v10.html".
1.10 +//
1.11 +// Initial Contributors:
1.12 +// Nokia Corporation - initial contribution.
1.13 +//
1.14 +// Contributors:
1.15 +//
1.16 +// Description:
1.17 +// Testing key event, capturing keys and hot keys
1.18 +//
1.19 +//
1.20 +
1.21 +/**
1.22 + @file
1.23 + @test
1.24 + @internalComponent - Internal Symbian test code
1.25 +*/
1.26 +
1.27 +
1.28 +#include "TKEY.H"
1.29 +
1.30 +#define LOGGING 1 //Uncomment this when there is a fail so that you get more logging
1.31 +
1.32 +GLDEF_D ClientToKill *SecondClient=NULL;
1.33 +
1.34 +GLDEF_C CTClient *CreateClientToKillL()
1.35 + {
1.36 + return(SecondClient=new(ELeave) ClientToKill());
1.37 + }
1.38 +
1.39 +GLDEF_C TInt ProcToKill(TAny *aScreenNumber)
1.40 + {
1.41 + TInt ret=KErrNone;
1.42 + ret=TestLibStartUp(CreateClientToKillL,(TInt)aScreenNumber);
1.43 + return(ret);
1.44 + }
1.45 +
1.46 +CVisibleGroup::CVisibleGroup(TInt aScreenNo): iScreenNo(aScreenNo)
1.47 + {}
1.48 +
1.49 +void CVisibleGroup::ConstructL()
1.50 + {
1.51 + User::LeaveIfError(iWs.Connect());
1.52 + iScr=new(ELeave) CWsScreenDevice(iWs);
1.53 + User::LeaveIfError(iScr->Construct(iScreenNo));
1.54 + iScr->SetAppScreenMode(iMode);
1.55 + iGroup=RWindowGroup(iWs);
1.56 + User::LeaveIfError(iGroup.Construct(NULL,ETrue));
1.57 + TInt id=TheClient->iGroup->GroupWin()->Identifier();
1.58 + iGroup.SetOwningWindowGroup(id);
1.59 +#if defined(LOGGING)
1.60 + TLogMessageText buf;
1.61 + _LIT(KIds,"Window Group Id: Main=%d, 2nd Client=%d");
1.62 + buf.Format(KIds,id,iGroup.Identifier());
1.63 + iWs.LogMessage(buf);
1.64 +#endif
1.65 + iWs.Flush();
1.66 + }
1.67 +
1.68 +CVisibleGroup::~CVisibleGroup()
1.69 + {
1.70 + iGroup.Close();
1.71 + delete iScr;
1.72 + iWs.Close();
1.73 + }
1.74 +
1.75 +void CVisibleGroup::SetMode(TInt aMode)
1.76 + {
1.77 + iMode=aMode;
1.78 + iScr->SetAppScreenMode(iMode);
1.79 + iWs.Flush();
1.80 + }
1.81 +
1.82 +ClientToKill::ClientToKill()
1.83 + {}
1.84 +
1.85 +void ClientToKill::ConstructL()
1.86 + {
1.87 + CTClient::ConstructL();
1.88 + RSemaphore sem;
1.89 + sem.OpenGlobal(KSemaphoreName);
1.90 +
1.91 + iGroup=new(ELeave) TestWindowGroup(this);
1.92 + iGroup->ConstructL();
1.93 +
1.94 + iScreen->SetScreenMode(0);
1.95 + TSize screenSize=iScreen->SizeInPixels();
1.96 +
1.97 + TInt winWidth=3*screenSize.iWidth/4;
1.98 + TInt winHeight=3*screenSize.iHeight/4;
1.99 + iTestWin=new(ELeave) TestWindow();
1.100 + iTestWin->SetUpL(TPoint((screenSize.iWidth+4)/8,(screenSize.iHeight+4)/8),TSize(winWidth,winHeight),iGroup,*iGc);
1.101 +
1.102 +#if defined(LOGGING)
1.103 + TLogMessageText buf;
1.104 + _LIT(KId,"Window Group Id in 2nd Process=%d");
1.105 + buf.Format(KId,iGroup->GroupWin()->Identifier());
1.106 + LogMessage(buf);
1.107 +#endif
1.108 + sem.Signal(); // Signal thread fully initialised
1.109 + sem.Close();
1.110 + }
1.111 +
1.112 +ClientToKill::~ClientToKill()
1.113 + {
1.114 + delete iTestWin;
1.115 + }
1.116 +
1.117 +
1.118 +// CTKey
1.119 +
1.120 +CTKey::CTKey(CTestStep* aStep) : CTWsGraphicsBase(aStep)
1.121 + {
1.122 + }
1.123 +
1.124 +
1.125 +
1.126 +void CTKey::ConstructL()
1.127 + {
1.128 + iSem.CreateGlobal(KSemaphoreName,0,KOwnerType);
1.129 + iVisibleGroup=new(ELeave) CVisibleGroup(iTest->iScreenNumber);
1.130 + iVisibleGroup->ConstructL();
1.131 + }
1.132 +
1.133 +CTKey::~CTKey()
1.134 + {
1.135 + delete iVisibleGroup;
1.136 + iSem.Close();
1.137 + // Set focus back to this screen as it went to primary screen when iVisibleGroup was destroyed
1.138 + // Wserv focus handling made focus screen switch to another screen if there is no
1.139 + // focusable window group on that particular screen.
1.140 + TheClient->iWs.SetFocusScreen(iTest->iScreenNumber);
1.141 + }
1.142 +
1.143 +void CTKey::SendKey(TInt aScanCode)
1.144 + {
1.145 + TKeyEvent keyEvent;
1.146 + keyEvent.iCode=aScanCode;
1.147 + keyEvent.iScanCode=aScanCode;
1.148 + keyEvent.iModifiers=0;
1.149 + keyEvent.iRepeats=0;
1.150 + TheClient->iWs.SimulateKeyEvent(keyEvent);
1.151 + TheClient->iWs.Flush();
1.152 + }
1.153 +
1.154 +void CTKey::SendUpDown(TInt aScanCode)
1.155 + {
1.156 + TRawEvent rawEvent;
1.157 + rawEvent.Set(TRawEvent::EKeyDown,aScanCode);
1.158 + TheClient->iWs.SimulateRawEvent(rawEvent);
1.159 + rawEvent.Set(TRawEvent::EKeyUp,aScanCode);
1.160 + TheClient->iWs.SimulateRawEvent(rawEvent);
1.161 + }
1.162 +
1.163 +void CTKey::SendCtrlAltShift(TRawEvent::TType aType)
1.164 + {
1.165 + TRawEvent rawEvent;
1.166 + rawEvent.Set(aType,EStdKeyLeftFunc);
1.167 + TheClient->iWs.SimulateRawEvent(rawEvent);
1.168 + rawEvent.Set(aType,EStdKeyLeftCtrl);
1.169 + TheClient->iWs.SimulateRawEvent(rawEvent);
1.170 + rawEvent.Set(aType,EStdKeyLeftShift);
1.171 + TheClient->iWs.SimulateRawEvent(rawEvent);
1.172 + }
1.173 +
1.174 +void CTKey::SendCtrlAltShift(TInt aScanCode)
1.175 + {
1.176 + SendCtrlAltShift(TRawEvent::EKeyDown);
1.177 + SendUpDown(aScanCode);
1.178 + SendCtrlAltShift(TRawEvent::EKeyUp);
1.179 + TheClient->iWs.Flush();
1.180 + }
1.181 +
1.182 +void CTKey::LogWindowGroupIds()
1.183 + {
1.184 + CArrayFixFlat<TInt>* idList=new(ELeave) CArrayFixFlat<TInt>(5);
1.185 + if (!idList)
1.186 + return;
1.187 + TheClient->iWs.WindowGroupList(0,idList);
1.188 + TLogMessageText buf;
1.189 + _LIT(KWinGp,"Window Group Id's: %d");
1.190 + _LIT(KId,", %d");
1.191 + TInt ii=0;
1.192 + buf.Format(KWinGp,(*idList)[ii]);
1.193 + while (++ii<idList->Count())
1.194 + buf.AppendFormat(KId,(*idList)[ii]);
1.195 + LOG_MESSAGE(buf);
1.196 + delete idList;
1.197 + }
1.198 +
1.199 +void CTKey::SetHotKey(THotKey aType, TUint aKeyCode)
1.200 + {
1.201 + TheClient->iWs.SetHotKey(aType,aKeyCode-'A'+1,EFuncCtrlShift,EFuncCtrlShift);
1.202 + }
1.203 +
1.204 +void CTKey::KeyOfOrientation()
1.205 + {
1.206 + TInt numScreenModes = TheClient->iScreen->NumScreenModes();
1.207 + TInt originalScreenMode = TheClient->iScreen->CurrentScreenMode();
1.208 + if(numScreenModes >= 2)
1.209 + {
1.210 + //1 possible rotation of 180deg found in wsini.ini screenmode 8
1.211 + iVisibleGroup->SetMode(numScreenModes-1);
1.212 + TheClient->iScreen->SetScreenMode(numScreenModes-1);
1.213 + SendCtrlAltShift('O');
1.214 + TheClient->iWs.Flush();
1.215 + //1 possible rotation of 90deg found in wsini.ini screenmode 7
1.216 + iVisibleGroup->SetMode(numScreenModes-2);
1.217 + TheClient->iScreen->SetScreenMode(numScreenModes-2);
1.218 + SendCtrlAltShift('O');
1.219 + TheClient->iWs.Flush();
1.220 + //reset to original screenmode
1.221 + iVisibleGroup->SetMode(originalScreenMode);
1.222 + TheClient->iScreen->SetScreenMode(originalScreenMode);
1.223 + }
1.224 + else
1.225 + {
1.226 + TEST(numScreenModes>2);
1.227 + INFO_PRINTF2(_L("numScreenModes - Expected: >2, Actual: %d"), numScreenModes);
1.228 + }
1.229 + TPixelsAndRotation originalSizeAndRotation;
1.230 + TheClient->iScreen->GetScreenModeSizeAndRotation(TheClient->iScreen->CurrentScreenMode(),originalSizeAndRotation);
1.231 + SendCtrlAltShift('O');
1.232 + TheClient->iWs.Flush();
1.233 + TPixelsAndRotation sizeAndRotation;
1.234 + TheClient->iScreen->GetScreenModeSizeAndRotation(TheClient->iScreen->CurrentScreenMode(),sizeAndRotation);
1.235 + TEST(sizeAndRotation.iRotation!=originalSizeAndRotation.iRotation);
1.236 + if (sizeAndRotation.iRotation==originalSizeAndRotation.iRotation)
1.237 + INFO_PRINTF3(_L("iRotation - Not Expected: %d, Actual: %d"), originalSizeAndRotation.iRotation, sizeAndRotation.iRotation);
1.238 + SendCtrlAltShift('O');
1.239 + TheClient->iWs.Flush();
1.240 + }
1.241 +
1.242 +void CTKey::CycleDisplaySize()
1.243 + {
1.244 + // The test does nothing if there is only one possible screen mode -> return
1.245 + TInt numScreenModes = TheClient->iScreen->NumScreenModes();
1.246 + if (numScreenModes<2)
1.247 + {
1.248 + TEST(numScreenModes>2);
1.249 + INFO_PRINTF2(_L("numScreenModes - Expected: >2, Actual: %d"), numScreenModes);
1.250 + return;
1.251 + }
1.252 + //Get original screen mode and size values
1.253 + TInt originalScreenMode = TheClient->iScreen->CurrentScreenMode();
1.254 + TPixelsAndRotation sizeAndRotation;
1.255 + TheClient->iScreen->GetScreenModeSizeAndRotation(TheClient->iScreen->CurrentScreenMode(),sizeAndRotation);
1.256 + TSize originalScreenSize = sizeAndRotation.iPixelSize;
1.257 +
1.258 + SendCtrlAltShift('U');
1.259 + TheClient->iWs.Flush();
1.260 + TheClient->iScreen->GetScreenModeSizeAndRotation(TheClient->iScreen->CurrentScreenMode(),sizeAndRotation);
1.261 + TEST(sizeAndRotation.iPixelSize.iHeight!=originalScreenSize.iHeight && sizeAndRotation.iPixelSize.iWidth!=originalScreenSize.iWidth);
1.262 + if (sizeAndRotation.iPixelSize.iHeight==originalScreenSize.iHeight || sizeAndRotation.iPixelSize.iWidth==originalScreenSize.iWidth)
1.263 + INFO_PRINTF5(_L("iPixelSize - Expected: !%d !%d, Actual: %d %d"), originalScreenSize.iHeight, originalScreenSize.iWidth, sizeAndRotation.iPixelSize.iHeight, sizeAndRotation.iPixelSize.iWidth);
1.264 + TheClient->iScreen->SetScreenMode(originalScreenMode);
1.265 + TheClient->iWs.Flush();
1.266 + }
1.267 +
1.268 +void CTKey::KeyOfDeathL()
1.269 + {
1.270 + //Key of Death
1.271 +#if defined(LOGGING)
1.272 + TLogMessageText buf;
1.273 + _LIT(KNum1,"Priority Zero Window Groups=%d Total=%d (Before Process Creation)");
1.274 + buf.Format(KNum1,TheClient->iWs.NumWindowGroups(0),TheClient->iWs.NumWindowGroups());
1.275 + LOG_MESSAGE(buf);
1.276 + LogWindowGroupIds();
1.277 +#endif
1.278 + CProcess* process = CProcess::NewL(CProcess::eProcessKeyTest,iTest->iScreenNumber);
1.279 + RWindowGroup group(TheClient->iWs);
1.280 + group.Construct(1234);
1.281 + TheClient->Flush(); //Make sure the window group above is created before the one in the other process
1.282 + TInt id=TheClient->iGroup->GroupWin()->Identifier();
1.283 + group.SetOwningWindowGroup(id);
1.284 + group.DefaultOwningWindow();
1.285 +
1.286 + iSem.Wait();
1.287 + User::After(TTimeIntervalMicroSeconds32(100000)); //0.1 secs
1.288 + TInt numGroups=TheClient->iWs.NumWindowGroups();
1.289 + TInt numGroups0=TheClient->iWs.NumWindowGroups(0);
1.290 +
1.291 +#if defined(LOGGING)
1.292 + _LIT(KNum2,"NewWinGpId=%d Priority Zero Window Groups=%d Total=%d (After Process Creation)");
1.293 + buf.Format(KNum2,id,numGroups0,numGroups);
1.294 + LOG_MESSAGE(buf);
1.295 + _LIT(KLog1,"Sending Key Of Death");
1.296 + buf.Copy(KLog1);
1.297 + LOG_MESSAGE(buf);
1.298 + LogWindowGroupIds();
1.299 +#endif
1.300 + 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)
1.301 + SendCtrlAltShift('K');
1.302 + TheClient->iWs.Flush();
1.303 +#if defined(LOGGING)
1.304 + _LIT(KLog2,"Sent Key Of Death");
1.305 + buf.Copy(KLog2);
1.306 + LOG_MESSAGE(buf);
1.307 +#endif
1.308 + TInt numGroups2;
1.309 + TInt numGroups0b;
1.310 + TInt tries=3;
1.311 + FOREVER //On multi-core platforms need to wait for the Key of Death procedure to complete
1.312 + {
1.313 + numGroups2=TheClient->iWs.NumWindowGroups();
1.314 + numGroups0b=TheClient->iWs.NumWindowGroups(0);
1.315 + if (--tries==0)
1.316 + break;
1.317 + if (numGroups!=numGroups2 || numGroups0!=numGroups0b)
1.318 + {
1.319 + tries=1;
1.320 + continue;
1.321 + }
1.322 + User::After(100000); //0.1secs
1.323 + }
1.324 + TEST(numGroups==numGroups2+1);
1.325 + _LIT(KLog,"KeyOfDeath Num WinGps Before=%d After=%d (should be one less)");
1.326 + if (numGroups!=numGroups2+1)
1.327 + LOG_MESSAGE3(KLog,numGroups,numGroups2);
1.328 + TEST(numGroups0==numGroups0b+1);
1.329 + if (numGroups0!=numGroups0b+1)
1.330 + LOG_MESSAGE3(KLog,numGroups0,numGroups0b);
1.331 + group.Close();
1.332 +
1.333 + TBool processDead=!process->StillAlive();
1.334 + TEST(processDead);
1.335 + if (!processDead)
1.336 + {
1.337 + _LIT(KLog,"Other Thread Still Alive");
1.338 + LOG_MESSAGE(KLog);
1.339 + }
1.340 + delete process;
1.341 +
1.342 +#if defined(LOGGING)
1.343 + _LIT(KLog3,"Finished KeyOfDeath Test");
1.344 + buf.Copy(KLog3);
1.345 + LOG_MESSAGE(buf);
1.346 + LogWindowGroupIds();
1.347 +#endif
1.348 + }
1.349 +
1.350 +#define CONTRAST_UP 'A' //'a'-'a'+1
1.351 +#define CONTRAST_DOWN 'B' //'b'-'a'+1
1.352 +
1.353 +void CTKey::TestContrastL(TBool aChange)
1.354 + {
1.355 + TInt contrast=0;
1.356 + TInt newContrast=0;
1.357 + TInt maxContrast=0;
1.358 + User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EDisplayContrastMax,maxContrast));
1.359 + TInt diff=aChange ? 1:0;
1.360 + User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EDisplayContrast,contrast));
1.361 +
1.362 + SendCtrlAltShift(CONTRAST_UP);
1.363 + User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EDisplayContrast,newContrast));
1.364 + if ((contrast==maxContrast) && aChange)
1.365 + {
1.366 + TEST(newContrast==0);
1.367 + if (newContrast!=0)
1.368 + INFO_PRINTF3(_L("newContrast==0 - Expected: %d, Actual: %d"), 0, newContrast);
1.369 + }
1.370 + else
1.371 + {
1.372 + TEST(contrast+diff==newContrast);
1.373 + if (contrast+diff!=newContrast)
1.374 + INFO_PRINTF3(_L("contrast+diff==newContrast - Expected: %d, Actual: %d"), contrast+diff, newContrast);
1.375 + }
1.376 +
1.377 + SendCtrlAltShift(CONTRAST_DOWN);
1.378 + User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EDisplayContrast,newContrast));
1.379 + TEST(contrast==newContrast);
1.380 + if (contrast!=newContrast)
1.381 + INFO_PRINTF3(_L("contrast==newContrast - Expected: %d, Actual: %d"), contrast, newContrast);
1.382 +
1.383 + SendCtrlAltShift(CONTRAST_DOWN);
1.384 + User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EDisplayContrast,newContrast));
1.385 + if (contrast==0)
1.386 + {
1.387 + TEST(maxContrast==newContrast);
1.388 + if (maxContrast!=newContrast)
1.389 + INFO_PRINTF3(_L("maxContrast==newContrast - Expected: %d, Actual: %d"), maxContrast, newContrast);
1.390 +
1.391 + }
1.392 + else
1.393 + {
1.394 + TEST(contrast-diff==newContrast);
1.395 + if (contrast-diff!=newContrast)
1.396 + INFO_PRINTF3(_L("contrast-diff==newContrast - Expected: %d, Actual: %d"), contrast-diff, newContrast);
1.397 +
1.398 + }
1.399 +
1.400 + SendCtrlAltShift(CONTRAST_UP);
1.401 + User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EDisplayContrast,newContrast));
1.402 + TEST(contrast==newContrast);
1.403 + if (contrast!=newContrast)
1.404 + INFO_PRINTF3(_L("contrast==newContrast - Expected: %d, Actual: %d"), contrast, newContrast);
1.405 +
1.406 + }
1.407 +
1.408 +void CTKey::TestDefaultContrastL(TBool aChange)
1.409 + {
1.410 + TInt contrast=0;
1.411 + TInt newContrast=0;
1.412 + TInt maxContrast=0;
1.413 + User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EDisplayContrastMax,maxContrast));
1.414 + TInt diff=aChange ? 1:0;
1.415 + User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EDisplayContrast,contrast));
1.416 +
1.417 + SendKey(EKeyIncContrast);
1.418 + User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EDisplayContrast,newContrast));
1.419 + if ((contrast==maxContrast) && aChange)
1.420 + {
1.421 + TEST(newContrast==0);
1.422 + if (0!=newContrast)
1.423 + INFO_PRINTF3(_L("newContrast==0 - Expected: %d, Actual: %d"), 0, newContrast);
1.424 + }
1.425 + else
1.426 + {
1.427 + TEST(contrast+diff==newContrast);
1.428 + if (contrast+diff!=newContrast)
1.429 + INFO_PRINTF3(_L("newContrast==contrast+diff - Expected: %d, Actual: %d"), contrast+diff, newContrast);
1.430 + }
1.431 +
1.432 + SendKey(EKeyDecContrast);
1.433 + User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EDisplayContrast,newContrast));
1.434 + TEST(contrast==newContrast);
1.435 + if (contrast!=newContrast)
1.436 + INFO_PRINTF3(_L("contrast==newContrast - Expected: %d, Actual: %d"), contrast, newContrast);
1.437 +
1.438 + SendKey(EKeyDecContrast);
1.439 + User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EDisplayContrast,newContrast));
1.440 + if (contrast==0)
1.441 + {
1.442 + TEST(maxContrast==newContrast);
1.443 + if (maxContrast!=newContrast)
1.444 + INFO_PRINTF3(_L("maxContrast==newContrast - Expected: %d, Actual: %d"), maxContrast, newContrast);
1.445 + }
1.446 + else
1.447 + {
1.448 + TEST(contrast-diff==newContrast);
1.449 + if (contrast-diff!=newContrast)
1.450 + INFO_PRINTF3(_L("contrast-diff==newContrast - Expected: %d, Actual: %d"), contrast-diff, newContrast);
1.451 + }
1.452 +
1.453 + SendKey(EKeyIncContrast);
1.454 + User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EDisplayContrast,newContrast));
1.455 + TEST(contrast==newContrast);
1.456 + if (contrast!=newContrast)
1.457 + INFO_PRINTF3(_L("contrast==newContrast - Expected: %d, Actual: %d"), contrast, newContrast);
1.458 +
1.459 + }
1.460 +
1.461 +void CTKey::ContrastKeysL()
1.462 + {
1.463 + TInt maxContrast=0;
1.464 + TInt contrast=0;
1.465 + TInt err=HAL::Get(iTest->iScreenNumber,HALData::EDisplayContrastMax,maxContrast);
1.466 + if (err==KErrNotSupported)
1.467 + return;
1.468 + else if (err==KErrNone)
1.469 + err=HAL::Get(iTest->iScreenNumber,HALData::EDisplayContrast,contrast);
1.470 + if (err==KErrNotSupported)
1.471 + return;
1.472 + TEST(err==KErrNone);
1.473 + if (err!=KErrNone)
1.474 + INFO_PRINTF3(_L("HAL::Get(iTest->iScreenNumber,HALData::EDisplayContrast,contrast)=KErrNone - Expected: %d, Actual: %d"), KErrNone, err);
1.475 +
1.476 + if (contrast==0)
1.477 + err=HAL::Set(iTest->iScreenNumber,HALData::EDisplayContrast,++contrast);
1.478 + else if (contrast==maxContrast)
1.479 + err=HAL::Set(iTest->iScreenNumber,HALData::EDisplayContrast,--contrast);
1.480 + if (err==KErrNotSupported)
1.481 + return;
1.482 + TEST(err==KErrNone);
1.483 + if (err!=KErrNone)
1.484 + INFO_PRINTF3(_L("HAL::Get(iTest->iScreenNumber,HALData::EDisplayContrast,contrast)=KErrNone - Expected: %d, Actual: %d"), KErrNone, err);
1.485 + TestDefaultContrastL(ETrue);
1.486 +
1.487 + SetHotKey(EHotKeyIncContrast,CONTRAST_UP);
1.488 + SetHotKey(EHotKeyDecContrast,CONTRAST_DOWN);
1.489 + TestContrastL(ETrue);
1.490 + TestDefaultContrastL(ETrue);
1.491 +
1.492 + TheClient->iWs.ClearHotKeys(EHotKeyIncContrast);
1.493 + TheClient->iWs.ClearHotKeys(EHotKeyDecContrast);
1.494 + TestContrastL(EFalse);
1.495 + TestDefaultContrastL(EFalse);
1.496 +
1.497 + TheClient->iWs.RestoreDefaultHotKey(EHotKeyIncContrast);
1.498 + TheClient->iWs.RestoreDefaultHotKey(EHotKeyDecContrast);
1.499 + TestContrastL(EFalse);
1.500 + TestDefaultContrastL(ETrue);
1.501 +
1.502 + SetHotKey(EHotKeyIncContrast,CONTRAST_UP);
1.503 + SetHotKey(EHotKeyDecContrast,CONTRAST_DOWN);
1.504 + TestContrastL(ETrue);
1.505 + TestDefaultContrastL(ETrue);
1.506 +
1.507 + TheClient->iWs.RestoreDefaultHotKey(EHotKeyIncContrast);
1.508 + TheClient->iWs.RestoreDefaultHotKey(EHotKeyDecContrast);
1.509 + TestContrastL(EFalse);
1.510 + TestDefaultContrastL(ETrue);
1.511 + }
1.512 +
1.513 +#define BACKLIGHT_ON 'A' //'o'-'a'+1
1.514 +#define BACKLIGHT_OFF 'B' //'p'-'a'+1
1.515 +#define BACKLIGHT_TOGGLE 'C' //'q'-'a'+1
1.516 +/** Test for reaction against backlight ON/OFF/TOGGLE buttons defined above.
1.517 + If aChange is false button presses must not affect the state of backlight.
1.518 +*/
1.519 +void CTKey::TestBackLightL(TBool aChange)
1.520 + {
1.521 + TBool state;
1.522 + SendCtrlAltShift(BACKLIGHT_ON);
1.523 + User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EBacklightState,state));
1.524 + TEST(state==aChange);
1.525 + if (state!=aChange)
1.526 + INFO_PRINTF3(_L("state==aChange - Expected: %d, Actual: %d"), aChange, state);
1.527 +
1.528 + SendCtrlAltShift(BACKLIGHT_TOGGLE);
1.529 + User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EBacklightState,state));
1.530 + TEST(state==EFalse);
1.531 + if (state!=EFalse)
1.532 + INFO_PRINTF3(_L("state==EFalse - Expected: %d, Actual: %d"), EFalse, state);
1.533 +
1.534 + SendCtrlAltShift(BACKLIGHT_TOGGLE);
1.535 + User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EBacklightState,state));
1.536 + TEST(state==aChange);
1.537 + if (state!=aChange)
1.538 + INFO_PRINTF3(_L("state==aChange - Expected: %d, Actual: %d"), aChange, state);
1.539 +
1.540 + SendCtrlAltShift(BACKLIGHT_OFF);
1.541 + User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EBacklightState,state));
1.542 + TEST(state==EFalse);
1.543 + if (state!=EFalse)
1.544 + INFO_PRINTF3(_L("state==EFalse - Expected: %d, Actual: %d"), EFalse, state);
1.545 +
1.546 + SendCtrlAltShift(BACKLIGHT_TOGGLE);
1.547 + User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EBacklightState,state));
1.548 + TEST(state==aChange);
1.549 + if (state!=aChange)
1.550 + INFO_PRINTF3(_L("state==aChange - Expected: %d, Actual: %d"), aChange, state);
1.551 +
1.552 + SendCtrlAltShift(BACKLIGHT_TOGGLE);
1.553 + User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EBacklightState,state));
1.554 + TEST(state==EFalse);
1.555 + if (state!=EFalse)
1.556 + INFO_PRINTF3(_L("state==EFalse - Expected: %d, Actual: %d"), EFalse, state);
1.557 +
1.558 + }
1.559 +
1.560 +/** Test for reaction against default backlight ON/OFF/TOGGLE buttons.
1.561 + If aChange is false button presses must not affect the state of backlight.
1.562 +*/
1.563 +void CTKey::TestDefaultBackLightL(TBool aChange)
1.564 + {
1.565 + TBool state;
1.566 + SendKey(EKeyBacklightOn);
1.567 + User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EBacklightState,state));
1.568 + TEST(state==aChange);
1.569 + if (state!=aChange)
1.570 + INFO_PRINTF3(_L("state==aChange - Expected: %d, Actual: %d"), aChange, state);
1.571 +
1.572 + SendKey(EKeyBacklightToggle);
1.573 + User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EBacklightState,state));
1.574 + TEST(state==EFalse);
1.575 + if (state!=EFalse)
1.576 + INFO_PRINTF3(_L("state==EFalse - Expected: %d, Actual: %d"), EFalse, state);
1.577 +
1.578 + SendKey(EKeyBacklightToggle);
1.579 + User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EBacklightState,state));
1.580 + TEST(state==aChange);
1.581 + if (state!=aChange)
1.582 + INFO_PRINTF3(_L("state==aChange - Expected: %d, Actual: %d"), aChange, state);
1.583 +
1.584 + SendKey(EKeyBacklightOff);
1.585 + User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EBacklightState,state));
1.586 + TEST(state==EFalse);
1.587 + if (state!=EFalse)
1.588 + INFO_PRINTF3(_L("state==EFalse - Expected: %d, Actual: %d"), EFalse, state);
1.589 +
1.590 + SendKey(EKeyBacklightToggle);
1.591 + User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EBacklightState,state));
1.592 + TEST(state==aChange);
1.593 + if (state!=aChange)
1.594 + INFO_PRINTF3(_L("state==aChange - Expected: %d, Actual: %d"), aChange, state);
1.595 +
1.596 + SendKey(EKeyBacklightToggle);
1.597 + User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EBacklightState,state));
1.598 + TEST(state==EFalse);
1.599 + if (state!=EFalse)
1.600 + INFO_PRINTF3(_L("state==EFalse - Expected: %d, Actual: %d"), EFalse, state);
1.601 +
1.602 + }
1.603 +
1.604 +void CTKey::BackLightKeysL()
1.605 + {
1.606 + // Turns backlight off
1.607 + TBool prevState;
1.608 + TInt err=HAL::Get(iTest->iScreenNumber,HALData::EBacklightState,prevState);
1.609 + if (err==KErrNotSupported)
1.610 + {
1.611 + _LIT(KLog,"Cannot test BackLight Key presses as cannot read its state on screen %d");
1.612 + LOG_MESSAGE2(KLog,iTest->iScreenNumber);
1.613 + return;
1.614 + }
1.615 + else if (err==KErrNone)
1.616 + err=HAL::Set(iTest->iScreenNumber,HALData::EBacklightState,EFalse);
1.617 + if (err==KErrNotSupported)
1.618 + {
1.619 + _LIT(KLog,"Cannot test BackLight Key presses as cannot set its state on screen %d");
1.620 + LOG_MESSAGE2(KLog,iTest->iScreenNumber);
1.621 + return;
1.622 + }
1.623 + TEST(err==KErrNone);
1.624 + if (err!=KErrNone)
1.625 + {
1.626 + _LIT(KLog,"Reading or Setting BackLight state gave error %d on screen %d");
1.627 + LOG_MESSAGE3(KLog,err,iTest->iScreenNumber);
1.628 + }
1.629 +
1.630 + // Tests that default backlight ON/OFF/TOGGLE buttons work
1.631 + TestDefaultBackLightL(ETrue);
1.632 +
1.633 + // Sets user defined backlight buttons and tests that both default and user defined buttons work
1.634 + SetHotKey(EHotKeyBacklightOn,BACKLIGHT_ON);
1.635 + SetHotKey(EHotKeyBacklightOff,BACKLIGHT_OFF);
1.636 + SetHotKey(EHotKeyBacklightToggle,BACKLIGHT_TOGGLE);
1.637 + TestBackLightL(ETrue);
1.638 + TestDefaultBackLightL(ETrue);
1.639 +
1.640 + // Calls RWsSession::ClearHotKeys and tests that both default and user defined buttons don't work
1.641 + TheClient->iWs.ClearHotKeys(EHotKeyBacklightOn);
1.642 + TheClient->iWs.ClearHotKeys(EHotKeyBacklightOff);
1.643 + TheClient->iWs.ClearHotKeys(EHotKeyBacklightToggle);
1.644 + TestBackLightL(EFalse);
1.645 + TestDefaultBackLightL(EFalse);
1.646 +
1.647 + // Calls RWsSession::RestoreDefaultHotKey and tests that only default buttons work
1.648 + TheClient->iWs.RestoreDefaultHotKey(EHotKeyBacklightOn);
1.649 + TheClient->iWs.RestoreDefaultHotKey(EHotKeyBacklightOff);
1.650 + TheClient->iWs.RestoreDefaultHotKey(EHotKeyBacklightToggle);
1.651 + TestBackLightL(EFalse);
1.652 + TestDefaultBackLightL(ETrue);
1.653 +
1.654 + // Sets user defined backlight buttons and tests that both default and user defined buttons work
1.655 + SetHotKey(EHotKeyBacklightOn,BACKLIGHT_ON);
1.656 + SetHotKey(EHotKeyBacklightOff,BACKLIGHT_OFF);
1.657 + SetHotKey(EHotKeyBacklightToggle,BACKLIGHT_TOGGLE);
1.658 + TestBackLightL(ETrue);
1.659 + TestDefaultBackLightL(ETrue);
1.660 +
1.661 + // Calls RWsSession::RestoreDefaultHotKey and tests that only default buttons work
1.662 + TheClient->iWs.RestoreDefaultHotKey(EHotKeyBacklightOn);
1.663 + TheClient->iWs.RestoreDefaultHotKey(EHotKeyBacklightOff);
1.664 + TheClient->iWs.RestoreDefaultHotKey(EHotKeyBacklightToggle);
1.665 + TestBackLightL(EFalse);
1.666 + TestDefaultBackLightL(ETrue);
1.667 +
1.668 + //Restores previous backlight state
1.669 + //err=UserHal::SetBacklightOn(prevState);
1.670 + err=HAL::Set(iTest->iScreenNumber,HALData::EBacklightState,prevState);
1.671 + TEST(err==KErrNone);
1.672 + if (err!=KErrNone)
1.673 + {
1.674 + _LIT(KLog,"Failed to set BackLight state back to previous state: %d on screen %d, error code: %d");
1.675 + LOG_MESSAGE4(KLog,prevState,iTest->iScreenNumber,err);
1.676 + }
1.677 + }
1.678 +
1.679 +#define BRIGHTNESS_UP 'N'
1.680 +#define BRIGHTNESS_DOWN 'J'
1.681 +/** If aChange is true, checks that programmicaly defined brightness buttons increase and decrease brightness properly.
1.682 + If aChange is false, checks that programmicaly defined brightness buttons don't affect brightness.
1.683 +*/
1.684 +void CTKey::TestBrightnessL(TBool aChange)
1.685 + {
1.686 + TInt brightness;
1.687 + TInt newBrightness;
1.688 + TInt diff=aChange ? 1:0;
1.689 + User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EDisplayBrightness,brightness));
1.690 +
1.691 + SendCtrlAltShift(BRIGHTNESS_UP);
1.692 + User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EDisplayBrightness,newBrightness));
1.693 + TEST(brightness+diff==newBrightness);
1.694 + if (brightness+diff!=newBrightness)
1.695 + INFO_PRINTF3(_L("brightness+diff==newBrightness - Expected: %d, Actual: %d"), newBrightness, brightness+diff);
1.696 +
1.697 + SendCtrlAltShift(BRIGHTNESS_DOWN);
1.698 + User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EDisplayBrightness,newBrightness));
1.699 + TEST(brightness==newBrightness);
1.700 + if (brightness!=newBrightness)
1.701 + INFO_PRINTF3(_L("brightness==newBrightness - Expected: %d, Actual: %d"), newBrightness, brightness);
1.702 +
1.703 + SendCtrlAltShift(BRIGHTNESS_DOWN);
1.704 + User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EDisplayBrightness,newBrightness));
1.705 + TEST(brightness-diff==newBrightness);
1.706 + if (brightness-diff!=newBrightness)
1.707 + INFO_PRINTF3(_L("brightness-diff==newBrightness - Expected: %d, Actual: %d"), newBrightness, brightness-diff);
1.708 +
1.709 + SendCtrlAltShift(BRIGHTNESS_UP);
1.710 + User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EDisplayBrightness,newBrightness));
1.711 + TEST(brightness==newBrightness);
1.712 + if (brightness!=newBrightness)
1.713 + INFO_PRINTF3(_L("brightness==newBrightness - Expected: %d, Actual: %d"), newBrightness, brightness);
1.714 + }
1.715 +
1.716 +/** If aChange is true, checks that default brightness buttons increase and decrease brightness properly (increase/decrease by 1).
1.717 + If aChange is false, checks that default brightness buttons don't affect brightness.
1.718 +*/
1.719 +void CTKey::TestDefaultBrightnessL(TBool aChange)
1.720 + {
1.721 + TInt brightness;
1.722 + TInt newBrightness;
1.723 + TInt diff=aChange ? 1:0;
1.724 + User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EDisplayBrightness,brightness));
1.725 +
1.726 + SendKey(EKeyIncBrightness);
1.727 + User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EDisplayBrightness,newBrightness));
1.728 + TEST(brightness+diff==newBrightness);
1.729 + if (brightness+diff!=newBrightness)
1.730 + INFO_PRINTF3(_L("brightness+diff==newBrightness - Expected: %d, Actual: %d"), newBrightness, brightness+diff);
1.731 +
1.732 + SendKey(EKeyDecBrightness);
1.733 + User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EDisplayBrightness,newBrightness));
1.734 + TEST(brightness==newBrightness);
1.735 + if (brightness!=newBrightness)
1.736 + INFO_PRINTF3(_L("brightness==newBrightness - Expected: %d, Actual: %d"), newBrightness, brightness);
1.737 +
1.738 + SendKey(EKeyDecBrightness);
1.739 + User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EDisplayBrightness,newBrightness));
1.740 + TEST(brightness-diff==newBrightness);
1.741 + if (brightness-diff!=newBrightness)
1.742 + INFO_PRINTF3(_L("brightness-diff==newBrightness - Expected: %d, Actual: %d"), newBrightness, brightness-diff);
1.743 +
1.744 + SendKey(EKeyIncBrightness);
1.745 + User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EDisplayBrightness,newBrightness));
1.746 + TEST(brightness==newBrightness);
1.747 + if (brightness!=newBrightness)
1.748 + INFO_PRINTF3(_L("brightness==newBrightness - Expected: %d, Actual: %d"), newBrightness, brightness);
1.749 + }
1.750 +
1.751 +void CTKey::BrightnessKeysL()
1.752 + {
1.753 + INFO_PRINTF1(_L("AUTO Brightness Key Test "));
1.754 + TInt maxBrightness;
1.755 + TInt brightness=0; //To stop warning
1.756 + // get maximum brightness and current
1.757 + TInt err=HAL::Get(iTest->iScreenNumber,HALData::EDisplayBrightnessMax,maxBrightness);
1.758 + if (err==KErrNotSupported)
1.759 + return;
1.760 + else if (err==KErrNone)
1.761 + err=HAL::Get(iTest->iScreenNumber,HALData::EDisplayBrightness,brightness);
1.762 + if (err==KErrNotSupported)
1.763 + return;
1.764 + INFO_PRINTF1(_L(" Supported"));
1.765 + TEST(err==KErrNone);
1.766 + if (err!=KErrNone)
1.767 + INFO_PRINTF3(_L("HAL::Get(iTest->iScreenNumber,HALData::EDisplayBrightness,brightness) return value - Expected: %d, Actual: %d"), KErrNone, err);
1.768 +
1.769 + // sets brightness to be neither maximal nor minimal
1.770 + if (brightness==0)
1.771 + err=HAL::Set(iTest->iScreenNumber,HALData::EDisplayBrightness,++brightness);
1.772 + else if (brightness==maxBrightness)
1.773 + err=HAL::Set(iTest->iScreenNumber,HALData::EDisplayBrightness,--brightness);
1.774 + if (err==KErrNotSupported)
1.775 + return;
1.776 + INFO_PRINTF1(_L(" Changeable"));
1.777 + TEST(err==KErrNone);
1.778 + if (err!=KErrNone)
1.779 + INFO_PRINTF3(_L("HAL::Get(iTest->iScreenNumber,HALData::EDisplayBrightness,brightness) return value - Expected: %d, Actual: %d"), KErrNone, err);
1.780 +
1.781 + // Test default brightness buttons increase/decrease brightness by 1
1.782 + TestDefaultBrightnessL(ETrue);
1.783 +
1.784 + // Add new inc/dec buttons, test that default and program defined brightness buttons increase/decrease brightness by 1
1.785 + INFO_PRINTF1(_L(" First Test"));
1.786 + SetHotKey(EHotKeyIncBrightness,BRIGHTNESS_UP);
1.787 + SetHotKey(EHotKeyDecBrightness,BRIGHTNESS_DOWN);
1.788 + TestBrightnessL(ETrue);
1.789 + TestDefaultBrightnessL(ETrue);
1.790 +
1.791 + // Clear brightness buttons, test that default and program defined brightness buttons doesn't affect brightness
1.792 + INFO_PRINTF1(_L(" Second Test"));
1.793 + TheClient->iWs.ClearHotKeys(EHotKeyIncBrightness);
1.794 + TheClient->iWs.ClearHotKeys(EHotKeyDecBrightness);
1.795 + TestBrightnessL(EFalse);
1.796 + TestDefaultBrightnessL(EFalse);
1.797 +
1.798 + // Restore default brightness buttons, test that only default brightness buttons increase/decrease brightness by 1
1.799 + INFO_PRINTF1(_L(" Third Test"));
1.800 + TheClient->iWs.RestoreDefaultHotKey(EHotKeyIncBrightness);
1.801 + TheClient->iWs.RestoreDefaultHotKey(EHotKeyDecBrightness);
1.802 + TestBrightnessL(EFalse);
1.803 + TestDefaultBrightnessL(ETrue);
1.804 +
1.805 + // Add new inc/dec buttons, test that default and program defined brightness buttons increase/decrease brightness by 1
1.806 + INFO_PRINTF1(_L(" Fourth Test"));
1.807 + SetHotKey(EHotKeyIncBrightness,BRIGHTNESS_UP);
1.808 + SetHotKey(EHotKeyDecBrightness,BRIGHTNESS_DOWN);
1.809 + TestBrightnessL(ETrue);
1.810 + TestDefaultBrightnessL(ETrue);
1.811 +
1.812 + // Restore default brightness buttons, test that only default brightness buttons increase/decrease brightness by 1
1.813 + INFO_PRINTF1(_L(" Fifth Test"));
1.814 + TheClient->iWs.RestoreDefaultHotKey(EHotKeyIncBrightness);
1.815 + TheClient->iWs.RestoreDefaultHotKey(EHotKeyDecBrightness);
1.816 + TestBrightnessL(EFalse);
1.817 + TestDefaultBrightnessL(ETrue);
1.818 + }
1.819 +
1.820 +void CTKey::TestDefaultScreenSizeModeL(TInt aKeys,TBool aChange)
1.821 + {
1.822 + TInt screenMode=TheClient->iScreen->CurrentScreenMode();
1.823 + TInt key;
1.824 + TInt retVal;
1.825 + for (key=0;key<aKeys;++key)
1.826 + {
1.827 + iVisibleGroup->SetMode(key);
1.828 + SendKey(EKeyScreenDimension0+key);
1.829 + if (aChange)
1.830 + {
1.831 + retVal = TheClient->iScreen->CurrentScreenMode();
1.832 + TEST(retVal==key);
1.833 + if (retVal!=key)
1.834 + INFO_PRINTF3(_L("TheClient->iScreen->CurrentScreenMode() return value - Expected: %d, Actual: %d"), key, retVal);
1.835 + }
1.836 + else
1.837 + {
1.838 + retVal = TheClient->iScreen->CurrentScreenMode();
1.839 + TEST(retVal==screenMode);
1.840 + if (retVal!=screenMode)
1.841 + INFO_PRINTF3(_L("TheClient->iScreen->CurrentScreenMode() return value - Expected: %d, Actual: %d"), screenMode, retVal);
1.842 + }
1.843 + }
1.844 + }
1.845 +
1.846 +#define DIMENSION0 'P'
1.847 +#define DIMENSION1 'Q'
1.848 +#define DIMENSION2 'R'
1.849 +#define DIMENSION3 'N'
1.850 +void CTKey::TestScreenSizeModeL(TInt aKeys,TBool aChange)
1.851 + {
1.852 + TInt screenMode=TheClient->iScreen->CurrentScreenMode();
1.853 + TInt key;
1.854 + TInt retVal;
1.855 + for (key=0;key<aKeys;++key)
1.856 + {
1.857 + iVisibleGroup->SetMode(key);
1.858 + switch (key)
1.859 + {
1.860 + case 0:
1.861 + SendCtrlAltShift(DIMENSION0);
1.862 + break;
1.863 + case 1:
1.864 + SendCtrlAltShift(DIMENSION1);
1.865 + break;
1.866 + case 2:
1.867 + SendCtrlAltShift(DIMENSION2);
1.868 + break;
1.869 + case 3:
1.870 + SendCtrlAltShift(DIMENSION3);
1.871 + break;
1.872 + default:
1.873 + INFO_PRINTF2(_L("Error Invalid Key: %d"),key);
1.874 + TEST(EFalse);
1.875 + break;
1.876 + }
1.877 +
1.878 +
1.879 + if (aChange)
1.880 + {
1.881 + retVal = TheClient->iScreen->CurrentScreenMode();
1.882 + TEST(retVal==key);
1.883 + if (retVal!=key)
1.884 + INFO_PRINTF3(_L("TheClient->iScreen->CurrentScreenMode() return value - Expected: %d, Actual: %d"), key, retVal);
1.885 +
1.886 + }
1.887 + else
1.888 + {
1.889 + retVal = TheClient->iScreen->CurrentScreenMode();
1.890 + TEST(retVal==screenMode);
1.891 + if (retVal!=screenMode)
1.892 + INFO_PRINTF3(_L("TheClient->iScreen->CurrentScreenMode() return value - Expected: %d, Actual: %d"), screenMode, retVal);
1.893 +
1.894 + }
1.895 + }
1.896 + }
1.897 +
1.898 +void CTKey::ScreenSizeModeKeysL()
1.899 + {
1.900 + // The test does nothing if there is only one possible screen mode -> return
1.901 + TInt numScreenModes=TheClient->iScreen->NumScreenModes();
1.902 + if (numScreenModes<2)
1.903 + return;
1.904 +
1.905 + // Use at most 4 different modes for the test
1.906 + if (numScreenModes>4) {numScreenModes=4;}
1.907 +
1.908 + // Set screen mode 3
1.909 + TInt screenMode=TheClient->iScreen->CurrentScreenMode();
1.910 + iVisibleGroup->SetMode(numScreenModes-1);
1.911 + TheClient->iScreen->SetScreenMode(numScreenModes-1);
1.912 +
1.913 + // Test default screen mode switch buttons
1.914 + TestDefaultScreenSizeModeL(numScreenModes,ETrue);
1.915 +
1.916 + // Add new screen mode switch buttons. Test that default and program defined screen mode switch buttons switch modes.
1.917 + SetHotKey(EHotKeyScreenDimension0,DIMENSION0);
1.918 + SetHotKey(EHotKeyScreenDimension1,DIMENSION1);
1.919 + SetHotKey(EHotKeyScreenDimension2,DIMENSION2);
1.920 + SetHotKey(EHotKeyScreenDimension3,DIMENSION3);
1.921 + TestDefaultScreenSizeModeL(numScreenModes,ETrue);
1.922 + TestScreenSizeModeL(numScreenModes,ETrue);
1.923 +
1.924 + // Clear all screen mode switch buttons. Test that default and program defined screen mode switch buttons don't affect screen modes
1.925 + TheClient->iWs.ClearHotKeys(EHotKeyScreenDimension0);
1.926 + TheClient->iWs.ClearHotKeys(EHotKeyScreenDimension1);
1.927 + TheClient->iWs.ClearHotKeys(EHotKeyScreenDimension2);
1.928 + TheClient->iWs.ClearHotKeys(EHotKeyScreenDimension3);
1.929 + TestDefaultScreenSizeModeL(numScreenModes,EFalse);
1.930 + TestScreenSizeModeL(numScreenModes,EFalse);
1.931 +
1.932 + // Restore default screen mode switch buttons. Test that only default screen mode switch buttons switch screen modes
1.933 + TheClient->iWs.RestoreDefaultHotKey(EHotKeyScreenDimension0);
1.934 + TheClient->iWs.RestoreDefaultHotKey(EHotKeyScreenDimension1);
1.935 + TheClient->iWs.RestoreDefaultHotKey(EHotKeyScreenDimension2);
1.936 + TheClient->iWs.RestoreDefaultHotKey(EHotKeyScreenDimension3);
1.937 + TestDefaultScreenSizeModeL(numScreenModes,ETrue);
1.938 + TestScreenSizeModeL(numScreenModes,EFalse);
1.939 +
1.940 + // Add new screen mode switch buttons. Test that default and program defined screen mode switch buttons switch modes.
1.941 + SetHotKey(EHotKeyScreenDimension0,DIMENSION0);
1.942 + SetHotKey(EHotKeyScreenDimension1,DIMENSION1);
1.943 + SetHotKey(EHotKeyScreenDimension2,DIMENSION2);
1.944 + SetHotKey(EHotKeyScreenDimension3,DIMENSION3);
1.945 + TestDefaultScreenSizeModeL(numScreenModes,ETrue);
1.946 + TestScreenSizeModeL(numScreenModes,ETrue);
1.947 +
1.948 + // Restore default screen mode switch buttons. Test that only default screen mode switch buttons switch screen modes
1.949 + TheClient->iWs.RestoreDefaultHotKey(EHotKeyScreenDimension0);
1.950 + TheClient->iWs.RestoreDefaultHotKey(EHotKeyScreenDimension1);
1.951 + TheClient->iWs.RestoreDefaultHotKey(EHotKeyScreenDimension2);
1.952 + TheClient->iWs.RestoreDefaultHotKey(EHotKeyScreenDimension3);
1.953 + TestDefaultScreenSizeModeL(numScreenModes,ETrue);
1.954 + TestScreenSizeModeL(numScreenModes,EFalse);
1.955 +
1.956 + // Restore initial screen mode
1.957 + iVisibleGroup->SetMode(screenMode);
1.958 + TheClient->iScreen->SetScreenMode(screenMode);
1.959 + }
1.960 +
1.961 +void CTKey::RunTestCaseL(TInt /*aCurTestCase*/)
1.962 + {
1.963 + _LIT(KTest0,"KeyOfDeath");
1.964 + _LIT(KTest1,"Contrast");
1.965 + _LIT(KTest2,"BackLight");
1.966 + _LIT(KTest3,"Brightness");
1.967 + _LIT(KTest4,"Screen Size Mode");
1.968 + ((CTKeyStep*)iStep)->SetTestStepID(KUnknownSYMTestCaseIDName);
1.969 +#ifdef _DEBUG
1.970 + _LIT(KTest5,"Orientation");
1.971 + _LIT(KTest6,"CycleDisplaySize");
1.972 +#endif
1.973 + switch(++iTest->iState)
1.974 + {
1.975 +/**
1.976 +@SYMTestCaseID GRAPHICS-WSERV-0106
1.977 +
1.978 +@SYMDEF DEF081259
1.979 +
1.980 +@SYMTestCaseDesc Key of Death test
1.981 +
1.982 +@SYMTestPriority High
1.983 +
1.984 +@SYMTestStatus Implemented
1.985 +
1.986 +@SYMTestActions Creates a new client process and runs it.
1.987 + Waits until the process is started and simulates Ctrl-Alt-Shift-K press.
1.988 + When starts the process assumes that TAutoServer.exe exists in z:\sys\bin directory.
1.989 + Otherwise the test will not exit a wait-state and will be aborted.
1.990 +
1.991 +@SYMTestExpectedResults Checks that the process is dead after the Ctrl-Alt-Shift-K press.
1.992 + Check also that the difference between amounts of window groups efore
1.993 + death-key press and after death-key press is 1.
1.994 +*/
1.995 + case 1:
1.996 + ((CTKeyStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0106"));
1.997 + iTest->LogSubTest(KTest0);
1.998 + KeyOfDeathL();
1.999 + break;
1.1000 + case 2:
1.1001 +/**
1.1002 +@SYMTestCaseID GRAPHICS-WSERV-0539
1.1003 +*/
1.1004 + ((CTKeyStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0539"));
1.1005 + iTest->LogSubTest(KTest1);
1.1006 + ContrastKeysL();
1.1007 + break;
1.1008 +/**
1.1009 +@SYMTestCaseID GRAPHICS-WSERV-0107
1.1010 +
1.1011 +@SYMDEF DEF081259
1.1012 +
1.1013 +@SYMTestCaseDesc Test backlight
1.1014 +
1.1015 +@SYMTestPriority High
1.1016 +
1.1017 +@SYMTestStatus Implemented
1.1018 +
1.1019 +@SYMTestActions Does nothing if hardware attributes are not supported.
1.1020 + 1. Turns backlight off.
1.1021 + 2. Tests that default backlight ON/OFF/TOGGLE buttons work.
1.1022 + 3. Sets user defined backlight buttons and tests that both default and user defined buttons work.
1.1023 + 4. Calls RWsSession::ClearHotKeys and tests that both default and user defined buttons don't work.
1.1024 + 5. Calls RWsSession::RestoreDefaultHotKey and tests that only default buttons work.
1.1025 + 6. Sets user defined backlight buttons and tests that both default and user defined buttons work.
1.1026 + 7. Calls RWsSession::RestoreDefaultHotKey and tests that only default buttons work.
1.1027 + 8. Restores previous backlight state.
1.1028 +
1.1029 +@SYMTestExpectedResults Expects that actions described above give positive result.
1.1030 + The test also checks that programmatic turn off/on doesn't fail.
1.1031 +*/
1.1032 + case 3:
1.1033 + ((CTKeyStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0107"));
1.1034 + iTest->LogSubTest(KTest2);
1.1035 + BackLightKeysL();
1.1036 + break;
1.1037 +/**
1.1038 +@SYMTestCaseID GRAPHICS-WSERV-0108
1.1039 +
1.1040 +@SYMDEF DEF081259
1.1041 +
1.1042 +@SYMTestCaseDesc Test brightness
1.1043 +
1.1044 +@SYMTestPriority High
1.1045 +
1.1046 +@SYMTestStatus Implemented
1.1047 +
1.1048 +@SYMTestActions Does nothing if hardware attributes are not supported.
1.1049 + 1. Get maximum brightness and current, test that those operations don't fail
1.1050 + 2. Sets brightness to be neither maximal nor minimal, test that those operations don't fail
1.1051 + 3. Test default brightness buttons increase/decrease brightness by 1
1.1052 + 4. Add new inc/dec buttons, test that default and program defined brightness buttons increase/decrease brightness by 1
1.1053 + 5. Clear brightness buttons, test that default and program defined brightness buttons doesn't affect brightness
1.1054 + 6. Restore default brightness buttons, test that only default brightness buttons increase/decrease brightness by 1
1.1055 + 7. Add new inc/dec buttons, test that default and program defined brightness buttons increase/decrease brightness by 1
1.1056 + 8. Restore default brightness buttons, test that only default brightness buttons increase/decrease brightness by 1
1.1057 +
1.1058 +@SYMTestExpectedResults Expects that actions described above give positive result.
1.1059 + The test also checks that programmatic brightness increase and decrease doesn't fail.
1.1060 +*/
1.1061 + case 4:
1.1062 + ((CTKeyStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0108"));
1.1063 + iTest->LogSubTest(KTest3);
1.1064 + BrightnessKeysL();
1.1065 + break;
1.1066 +/**
1.1067 +@SYMTestCaseID GRAPHICS-WSERV-0109
1.1068 +
1.1069 +@SYMDEF DEF081259
1.1070 +
1.1071 +@SYMTestCaseDesc Test screen mode switching
1.1072 +
1.1073 +@SYMTestPriority High
1.1074 +
1.1075 +@SYMTestStatus Implemented
1.1076 +
1.1077 +@SYMTestActions The test does nothing if there is only one possible screen mode. It uses at most 4 different modes for the test.
1.1078 + 1. Test default screen mode switch buttons
1.1079 + 2. Add new screen mode switch buttons. Test that default and program defined screen mode switch buttons switch modes.
1.1080 + 3. Clear all screen mode switch buttons. Test that default and program defined screen mode switch buttons don't affect screen modes
1.1081 + 4. Restore default screen mode switch buttons. Test that only default screen mode switch buttons switch screen modes
1.1082 + 5. Add new screen mode switch buttons. Test that default and program defined screen mode switch buttons switch modes.
1.1083 + 6. Restore default screen mode switch buttons. Test that only default screen mode switch buttons switch screen modes
1.1084 + 7. Restore initial screen mode
1.1085 +
1.1086 +
1.1087 +
1.1088 +@SYMTestExpectedResults Expects that actions described above give positive result.
1.1089 +*/
1.1090 + case 5:
1.1091 + ((CTKeyStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0109"));
1.1092 + iTest->LogSubTest(KTest4);
1.1093 + ScreenSizeModeKeysL();
1.1094 + break;
1.1095 +#ifdef _DEBUG
1.1096 + case 6:
1.1097 +/**
1.1098 +@SYMTestCaseID GRAPHICS-WSERV-0540
1.1099 +*/
1.1100 + ((CTKeyStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0540"));
1.1101 + iTest->LogSubTest(KTest5);
1.1102 + KeyOfOrientation();
1.1103 + break;
1.1104 + case 7:
1.1105 +/**
1.1106 +@SYMTestCaseID GRAPHICS-WSERV-0541
1.1107 +*/
1.1108 + ((CTKeyStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0541"));
1.1109 + iTest->LogSubTest(KTest6);
1.1110 + CycleDisplaySize();
1.1111 + break;
1.1112 +#endif
1.1113 + default:
1.1114 + ((CTKeyStep*)iStep)->SetTestStepID(KNotATestSYMTestCaseIDName);
1.1115 + ((CTKeyStep*)iStep)->CloseTMSGraphicsStep();
1.1116 + TestComplete();
1.1117 + }
1.1118 + ((CTKeyStep*)iStep)->RecordTestResultL();
1.1119 + }
1.1120 +
1.1121 +
1.1122 +__WS_CONSTRUCT_STEP__(Key)