diff -r 2717213c588a -r 171fae344dd4 windowing/windowserver/tauto/TScreenModeScaling.cpp --- a/windowing/windowserver/tauto/TScreenModeScaling.cpp Tue Jun 22 15:21:29 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1104 +0,0 @@ -// Copyright (c) 1996-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "Eclipse Public License v1.0" -// which accompanies this distribution, and is available -// at the URL "http://www.eclipse.org/legal/epl-v10.html". -// -// Initial Contributors: -// Nokia Corporation - initial contribution. -// -// Contributors: -// -// Description: -// Test code for screen mode scaling CR -// Test code for the Scaling part of Change Request PHAR-5SJGAM -// ("Enable screen mode positioning and scaling"). -// Tests screen scale being configurable for a screen mode - -// eg it is now possible to set in wsini.ini amount by which a screen -// mode's screen will be scaled when drawn on the physical screen. -// -// - -/** - @file - @test - @internalComponent - Internal Symbian test code -*/ - -#include "TScreenModeScaling.h" - -#define MY_TEST_BITMAP _L("Z:\\WSTEST\\MYTEST.MBM") - -LOCAL_D TSize FullScreenModeSize; -LOCAL_D TInt Copy2ndHalfOfScreen; - -void ClearBitmap(CFbsBitmap* aBitMap) - { - // clear the content of bitmap before it is used for copying - CFbsBitmapDevice *device=CFbsBitmapDevice::NewL(aBitMap); - CleanupStack::PushL(device); - CFbsBitGc *gc=NULL; - User::LeaveIfError(device->CreateContext(gc)); - CleanupStack::PushL(gc); - gc->Clear(); - CleanupStack::PopAndDestroy(2,device); - } - -/*CBitMapWin*/ - -void CBitMapWin::Draw() - { - iGc->BitBlt(TPoint(),&iBackup->Bitmap()); - } - -/*CTestSpriteWin*/ - -CTestSpriteWin::~CTestSpriteWin() - { - } - -void CTestSpriteWin::UpdateWin(TPoint aOrigin) - { - SetOrigin(aOrigin); - DrawNow(); - } - -void CTestSpriteWin::Draw() - { - iGc->BitBlt(iOrigin,&iSpriteBitmap); - } - -/*CTScreenModeScaling*/ - -CTScreenModeScaling::CTScreenModeScaling(CTestStep* aStep) : CTWsGraphicsBase(aStep) - { - } - -CTScreenModeScaling::~CTScreenModeScaling() - { - delete iTestWin; - delete iBlankWin; - delete iBackedUpWin; - delete iTestChildWin; - delete iScreenBitmap; - delete iBitmapWin; - delete iCheckWin; - delete iTransWin; - delete iBackgroundWin; - delete iCheckBitmap; - delete iTransparencyBitmap; - delete iBackgroundBitmap; - delete iForegroundBitmap; - } - -void CTScreenModeScaling::ConstructL() - { - iDisplayMode=TheClient->iScreen->DisplayMode(); - if (iDisplayModeiScreen->SetAppScreenMode(TheClient->iScreenModes[0]); - FullScreenModeSize=TheClient->iScreen->SizeInPixels(); - iBlankWin=new(ELeave) CTBlankWindow(); - iBlankWin->ConstructL(*TheClient->iGroup); - User::LeaveIfError(iBlankWin->BaseWin()->SetRequiredDisplayMode(EColor256)); - iBlankWin->SetExt(TPoint(),FullScreenModeSize); - iBlankWin->Activate(); - - iTestWin=new(ELeave) CBasicWin; - iTestWin->ConstructExtLD(*TheClient->iGroup,TPoint(),FullScreenModeSize); - User::LeaveIfError(iTestWin->BaseWin()->SetRequiredDisplayMode(EColor256)); - iTestWin->AssignGC(*TheClient->iGc); - iTestWin->SetVisible(EFalse); - iTestWin->Activate(); - iTestWin->BaseWin()->SetShadowDisabled(ETrue); - iTestWin->BaseWin()->SetShadowHeight(0); - - iBackedUpWin=new(ELeave) CTBackedUpWin(iDisplayMode); - iBackedUpWin->ConstructExtLD(*iTestWin,TPoint(),FullScreenModeSize); - iBackedUpWin->SetVisible(EFalse); - iBackedUpWin->Activate(); - - iTestChildWin=new(ELeave) CTBlankWindow(); - iTestChildWin->ConstructL(*iTestWin); - User::LeaveIfError(iTestChildWin->BaseWin()->SetRequiredDisplayMode(EColor256)); - iTestChildWin->BaseWin()->SetShadowDisabled(ETrue); - iTestChildWin->SetColor(KRgbGreen); - iTestChildWin->BaseWin()->SetVisible(EFalse); - iTestChildWin->Activate(); - - iScreenBitmap=new(ELeave) CFbsBitmap(); - User::LeaveIfError(iScreenBitmap->Create(TSize(FullScreenModeSize.iWidth/2,FullScreenModeSize.iHeight),iDisplayMode)); - - iBitmapWin=new(ELeave) CBmpWin(*iScreenBitmap); - iBitmapWin->ConstructExtLD(*TheClient->iGroup,TPoint(),iScreenBitmap->SizeInPixels()); - User::LeaveIfError(iBitmapWin->BaseWin()->SetRequiredDisplayMode(EColor256)); - iBitmapWin->AssignGC(*TheClient->iGc); - iBitmapWin->Activate(); - iBitmapWin->SetVisible(EFalse); - iBitmapWin->BaseWin()->SetShadowDisabled(ETrue); - iBitmapWin->BaseWin()->SetShadowHeight(0); - - //.. Create all the bitmaps and transparent windows - iWinSize.SetSize(20,20); - iTransparencyBitmap=CBitmap::NewL(iWinSize,EGray256); - iBackgroundBitmap=CBitmap::NewL(iWinSize,iDisplayMode); - iForegroundBitmap=CBitmap::NewL(iWinSize,iDisplayMode); - - CBitMapWin* backgroundWin=new(ELeave) CBitMapWin(iBackgroundBitmap); - backgroundWin->ConstructExtLD(*TheClient->iGroup,TPoint(),iWinSize); - iBackgroundWin=backgroundWin; - User::LeaveIfError(iBackgroundWin->BaseWin()->SetRequiredDisplayMode(EColor256)); - iBackgroundWin->SetVisible(EFalse); - iBackgroundWin->BaseWin()->SetShadowDisabled(ETrue); - iBackgroundWin->BaseWin()->SetShadowHeight(0); - iBackgroundWin->AssignGC(*TheClient->iGc); - iBackgroundWin->Activate(); - - CBitMapWin* transWin=new(ELeave) CBitMapWin(iForegroundBitmap); - transWin->ConstructExtLD(*TheClient->iGroup,TPoint(),iWinSize); - iTransWin=transWin; - RWindowBase& transWinB=*iTransWin->BaseWin(); - User::LeaveIfError(transWinB.SetRequiredDisplayMode(EColor256)); - transWinB.SetShadowDisabled(ETrue); - transWinB.SetShadowHeight(0); - iTransWin->SetVisible(EFalse); - iTransWin->AssignGC(*TheClient->iGc); - iTransWin->Win()->SetTransparencyBitmap(iTransparencyBitmap->Bitmap()); - iTransWin->Activate(); - - CTBackedUpWin* checkWin=new(ELeave) CTBackedUpWin(iDisplayMode); - checkWin->ConstructExtLD(*TheClient->iGroup,TPoint(iWinSize.iWidth+1,0),iWinSize); - iCheckWin=checkWin; - RBackedUpWindow& win=*iCheckWin->BackedUpWin(); - win.SetShadowHeight(0); - iCheckWin->Activate(); - win.MaintainBackup(); - iCheckBitmap=CBitmap::NewL(win.BitmapHandle()); - iCheckWin->BaseWin()->SetShadowDisabled(ETrue); - iCheckWin->BaseWin()->SetShadowHeight(0); - iCheckWin->BaseWin()->SetVisible(EFalse); - TheClient->Flush(); - TheClient->WaitForRedrawsToFinish(); - } - -void CTScreenModeScaling::TestTopClientWindowPositionAPIs(TPoint aPos,RWindowBase* aWin) - { - TEST(aWin->AbsPosition()==aPos); - TEST(aWin->Position()==aPos); - TEST(aWin->InquireOffset(*TheClient->iGroup->GroupWin())==aPos); - } - -void CTScreenModeScaling::TestChildWindowPositionAPIs(TPoint aPos,TPoint aParentPos,RWindowBase* aWin,RWindowBase* aParentWin) - { - TEST(aWin->AbsPosition()==aParentPos+aPos); - TEST(aWin->Position()==aPos); - TEST(aWin->InquireOffset(*TheClient->iGroup->GroupWin())==aParentPos+aPos); - TEST(aWin->InquireOffset(*aParentWin)==aPos); - } - -void CTScreenModeScaling::TestRect() - { - // Here if the width or height of the screen cannot be divided by 2 - // then make both the rect size same by reducing the first or second which ever is smaller - // and make sure that top left corner is not disturbed. - TRect rect1=TRect(PhysicalToLogical(TPoint()-iCurrentScreenModeOrigin,iCurrentScreenModeScale), - PhysicalToLogical(TPoint(FullScreenModeSize.iWidth/2,FullScreenModeSize.iHeight)-iCurrentScreenModeOrigin, - iCurrentScreenModeScale) - ); - TRect rect2=TRect(PhysicalToLogical(TPoint(FullScreenModeSize.iWidth/2,0)-iCurrentScreenModeOrigin, - iCurrentScreenModeScale), - PhysicalToLogical(FullScreenModeSize.AsPoint()-iCurrentScreenModeOrigin, - iCurrentScreenModeScale) - ); - if ((Abs(rect1.iBr.iX-rect1.iTl.iX)>Abs(rect2.iBr.iX-rect2.iTl.iX)) || (Abs(rect1.iBr.iY-rect1.iTl.iY)>Abs(rect2.iBr.iY-rect2.iTl.iY))) - { - rect1.SetRect(rect1.iTl,rect2.Size()); - } - if ((Abs(rect1.iBr.iX-rect1.iTl.iX)iScreen->RectCompare(rect1,rect2); - TEST(retVal); - if (!retVal) - INFO_PRINTF3(_L("TheClient->iScreen->RectCompare(rect1,rect2) return value - Expected: %d, Actual: %d"), ETrue, retVal); - } - -void CTScreenModeScaling::CompareRegionsL(const TRegion &aRegion1,const TRegion &aRegion2) - { - RRegion tmp; - tmp.Copy(aRegion1); - tmp.SubRegion(aRegion2); - if (tmp.CheckError()) - User::Leave(KErrNoMemory); - TBool retVal = tmp.IsEmpty(); - TEST(retVal); - if (!retVal) - INFO_PRINTF3(_L("RRegion1.IsEmpty() return value - Expected: %d, Actual: %d"), ETrue, retVal); - tmp.Copy(aRegion2); - tmp.SubRegion(aRegion1); - if (tmp.CheckError()) - User::Leave(KErrNoMemory); - retVal = tmp.IsEmpty(); - TEST(retVal); - if (!retVal) - INFO_PRINTF3(_L("RRegion2.IsEmpty() return value - Expected: %d, Actual: %d"), ETrue, retVal); - - tmp.Close(); - } - -void CTScreenModeScaling::SetUpSpriteLC(RWsSprite &aSprite, RWsSession &aSession, RWindowTreeNode &aWindow,TInt aFlags) - { - aSprite=RWsSprite(aSession); - User::LeaveIfError(aSprite.Construct(aWindow,TPoint(),aFlags)); - CleanupClosePushL(aSprite); - TSpriteMember member; - iTest->SetUpMember(member); - member.iBitmap=&iSpriteBitmap; - User::LeaveIfError(aSprite.AppendMember(member)); - User::LeaveIfError(aSprite.Activate()); - } - -void CTScreenModeScaling::TestGetInvalidRegionL(TRect& aRect) - { - RRegion testRegion; - RRegion invalid; - iTestWin->Invalidate(aRect); - testRegion.AddRect(aRect); - iTestWin->Win()->GetInvalidRegion(invalid); - CleanupClosePushL(testRegion); - CleanupClosePushL(invalid); - CompareRegionsL(testRegion, invalid); - CleanupStack::PopAndDestroy(2, &testRegion); - TheClient->WaitForRedrawsToFinish(); - } - -void CTScreenModeScaling::CopyAndCompareL() - { - TInt oldOrdinalPriority = TheClient->iGroup->GroupWin()->OrdinalPriority(); - TInt oldOrdinalPosition = TheClient->iGroup->GroupWin()->OrdinalPosition(); - // the following line makes sure that a console object hidden outside of - // screens range doesn't affect test results ocerlapping the bitmap window - TheClient->iGroup->GroupWin()->SetOrdinalPosition(0, 65535); - - // clear the content of bitmap before it is used for copying - ClearBitmap(iScreenBitmap); - - // Copy first half or second half of the screen to a bitmap then paste it to second or first half of the screen - TRect testWinRect(PhysicalToLogical(TPoint((Copy2ndHalfOfScreen ? FullScreenModeSize.iWidth/2 : 0),0)-iCurrentScreenModeOrigin,iCurrentScreenModeScale), - PhysicalToLogical(TPoint((Copy2ndHalfOfScreen ? FullScreenModeSize.iWidth : FullScreenModeSize.iWidth/2),FullScreenModeSize.iHeight)-iCurrentScreenModeOrigin,iCurrentScreenModeScale) - ); - TheClient->iScreen->CopyScreenToBitmap(iScreenBitmap,testWinRect); - iBitmapWin->SetExt(PhysicalToLogical(TPoint((Copy2ndHalfOfScreen ? 0 : FullScreenModeSize.iWidth/2),0)-iCurrentScreenModeOrigin,iCurrentScreenModeScale),testWinRect.Size()); - iBitmapWin->SetVisible(ETrue); - iBitmapWin->DrawNow(); - TheClient->Flush(); - TestRect(); - iBitmapWin->SetVisible(EFalse); - iTestWin->SetVisible(EFalse); - TheClient->Flush(); - - TheClient->iGroup->GroupWin()->SetOrdinalPosition(oldOrdinalPosition, oldOrdinalPriority); - } - -/** -@SYMTestCaseID GRAPHICS-WSERV-0093 - -@SYMDEF DEF081259, DEF111847 - -@SYMTestCaseDesc Window tests - REQUIREMENT: PREQ673 (Screen Scaling) - API: RWindowBase::InquireOffset(), RWindowBase::AbsPosition(),RWindowBase::Position() - -@SYMTestPriority High - -@SYMTestStatus Implemented - -@SYMTestActions Loops through all the screen modes present in the wsini file, and then moves to the test screen - mode where it goes on changing the screen scale and origin. In each of the wsini screen modes and test - screen modes, it checks the test window's API's RWindowBase::InquireOffset(), RWindowBase::AbsPosition() - RWindowBase::Position(). Then it copies the content from either first or second half to second or first - half and compares both the regions so that its content are same. - Additionally, as part of defect fix DEF111847, this also loops through all the display modes, and if possible - tests each with the above described method. Previously, it use to only test Color256. - -@SYMTestExpectedResults The content of both halves of the screen should match. -*/ -void CTScreenModeScaling::WindowTestsL() - { - INFO_PRINTF1(_L("AUTO WindowTests : ")); - - TDisplayMode curDispMode; // Holds the current display mode being tested - - for(curDispMode = EGray2; curDispMode < EColorLast; curDispMode = TDisplayMode(curDispMode+1)) - { - if (curDispMode == ERgb) - { - continue; - } - CTClient* client=new(ELeave) CTClient(); - CleanupStack::PushL(client); - client->SetScreenNumber(iTest->iScreenNumber); - client->ConstructL(); - client->iGroup=new(ELeave) TestWindowGroup(client); - client->iGroup->ConstructL(); - client->iGroup->WinTreeNode()->SetOrdinalPosition(1); - RBlankWindow testWindow(client->iWs); - User::LeaveIfError(testWindow.Construct(*TheClient->iGroup->GroupWin(),ENullWsHandle)); - CleanupClosePushL(testWindow); - - TInt setDispMode; // Holds the actual display mode that was set - setDispMode = testWindow.SetRequiredDisplayMode(curDispMode); - - //Only do the tests if the requested mode was actually set - if(curDispMode == setDispMode) - { - //Create and show DisplayMode details message - _LIT(KModeDetails, "Display Mode: "); - TBuf<30> modeDetailsMessage(KModeDetails); - modeDetailsMessage.Append(DisplayModeAsString(curDispMode)); - LOG_MESSAGE(modeDetailsMessage); - - testWindow.Activate(); - TheClient->iGroup->GroupWin()->EnableScreenChangeEvents(); - TInt numOfModes=TheClient->iScreenModes.Count(); - TInt ii; - for (ii=0; iiiScreenModes[ii]; - TPixelsAndRotation pixelsAndRotation; - iCurrentScreenModeOrigin=TheClient->iScreen->GetScreenModeOrigin(iCurrentMode); - iCurrentScreenModeScale=TheClient->iScreen->GetScreenModeScale(iCurrentMode); - TheClient->iScreen->GetScreenModeSizeAndRotation(iCurrentMode,pixelsAndRotation); - if (pixelsAndRotation.iRotation==CFbsBitGc::EGraphicsOrientationNormal) - { - INFO_PRINTF1(_L(" Do Tests")); - TRAPD(ret,DoWindowTestsL()); - TEST(ret==KErrNone); - if (ret!=KErrNone) - { - INFO_PRINTF3(_L("DoWindowTestsL() return value - Expected: %d, Actual: %d"), KErrNone, ret); - } - - INFO_PRINTF1(_L(" Window Trees")); - client->iScreen->SetAppScreenMode(iCurrentMode); - client->Flush(); - } - } - TestDifferentScales(numOfModes-1); - } - CleanupStack::PopAndDestroy(2,client); - } - } - -void CTScreenModeScaling::TestDifferentScales(TInt aLastModeIdx) - { - if (aLastModeIdx<0) return; - TPixelsAndRotation pixelsAndRotation; - for (TInt modeCount=aLastModeIdx;modeCount>=0;--modeCount) - { - TheClient->iScreen->GetScreenModeSizeAndRotation(TheClient->iScreenModes[modeCount],pixelsAndRotation); - if (pixelsAndRotation.iRotation==CFbsBitGc::EGraphicsOrientationNormal) - break; - } - iCurrentMode=TheClient->iScreenModes[aLastModeIdx]; - TheClient->iScreen->SetAppScreenMode(iCurrentMode); - TheClient->iScreen->SetScreenMode(iCurrentMode); - TSizeMode storeModeData=TheClient->iScreen->GetCurrentScreenModeAttributes(); - TSizeMode testMode=storeModeData; - for (TInt xScale=1;xScale<4;++xScale) - { - for (TInt yScale=1;yScale<4;++yScale) - { - testMode.iScreenScale=TSize(xScale,yScale); - TestDifferentOrigin(testMode,TPoint(20,20)); - TestDifferentOrigin(testMode,TPoint(20,30)); - TestDifferentOrigin(testMode,TPoint(30,20)); - TestDifferentOrigin(testMode,TPoint(FullScreenModeSize.iWidth/2+640/FullScreenModeSize.iWidth*10,60)); - } - } - TheClient->iScreen->SetScreenMode(iCurrentMode); - TheClient->iScreen->SetCurrentScreenModeAttributes(storeModeData); - TInt defaultMode=TheClient->iScreenModes[0]; - TheClient->iScreen->SetAppScreenMode(defaultMode); - TheClient->iScreen->SetScreenMode(defaultMode); - } - -void CTScreenModeScaling::TestDifferentOrigin(TSizeMode &aMode,TPoint aOrigin) - { - TheClient->iScreen->SetScreenMode(iCurrentMode);//.. this is required because at the end of next screenmode test it will be set to zero screen mode - aMode.iOrigin=aOrigin; - TheClient->iScreen->SetCurrentScreenModeAttributes(aMode); - TheClient->iScreen->SetAppScreenMode(iCurrentMode); - TheClient->iScreen->SetScreenMode(iCurrentMode); - iCurrentScreenModeOrigin=TheClient->iScreen->GetScreenModeOrigin(iCurrentMode); - iCurrentScreenModeScale=TheClient->iScreen->GetScreenModeScale(iCurrentMode); - TRAPD(ret,DoWindowTestsL()); - TEST(ret==KErrNone); - if (ret!=KErrNone) - INFO_PRINTF3(_L("DoWindowTestsL() return value - Expected: %d, Actual: %d"), KErrNone, ret); - } - -void CTScreenModeScaling::DoWindowTestsL() - { - TheClient->iScreen->SetAppScreenMode(iCurrentMode); - TheClient->iScreen->SetScreenMode(iCurrentMode); - Copy2ndHalfOfScreen=(iCurrentScreenModeOrigin.iX>FullScreenModeSize.iWidth/2? 1 : 0); - TRect testWinRect(PhysicalToLogical(TPoint(),iCurrentScreenModeScale), - PhysicalToLogical(TPoint((Copy2ndHalfOfScreen ? FullScreenModeSize.iWidth - : FullScreenModeSize.iWidth/2), - FullScreenModeSize.iHeight)-iCurrentScreenModeOrigin,iCurrentScreenModeScale) - ); - testWinRect.Shrink(10,10); - iTestWinSize=testWinRect.Size(); - PositionTestL(testWinRect.iTl); - testWinRect.Shrink(10,10); - iTestWinSize=testWinRect.Size(); - PositionTestL(testWinRect.iTl); - BackedUpChildWindowTestL(testWinRect.iTl); - GetInvalidRegionTestL(testWinRect.iTl); - //NextScreenModeTestL(testWinRect.iTl); //This test needs a lot more work ### - } - -void CTScreenModeScaling::PositionTestL(TPoint aPostion) - { - iTestWin->SetExt(aPostion,iTestWinSize); - iTestWin->SetVisible(ETrue); - iTestWin->Invalidate(); - TheClient->Flush(); - TheClient->WaitForRedrawsToFinish(); - TestTopClientWindowPositionAPIs(aPostion,iTestWin->BaseWin()); - CopyAndCompareL(); - } - -void CTScreenModeScaling::BackedUpChildWindowTestL(TPoint aPostion) - { - iTestWin->SetVisible(ETrue); - TPoint backedUpWinPt=TPoint(iTestWinSize.iWidth/3,iTestWinSize.iHeight/4); - iBackedUpWin->SetExtL(backedUpWinPt,TSize(iTestWinSize.iWidth/6,iTestWinSize.iHeight/6)); - iBackedUpWin->SetVisible(ETrue); - TestChildWindowPositionAPIs(backedUpWinPt,aPostion,iBackedUpWin->BaseWin(),iTestWin->BaseWin()); - aPostion+=TPoint(10,10); - iTestWin->SetPos(aPostion); - TestTopClientWindowPositionAPIs(aPostion,iTestWin->BaseWin()); - TestChildWindowPositionAPIs(backedUpWinPt,aPostion,iBackedUpWin->BaseWin(),iTestWin->BaseWin()); - iTestWin->Invalidate(); - TheClient->Flush(); - TheClient->WaitForRedrawsToFinish(); - TestTopClientWindowPositionAPIs(aPostion,iTestWin->BaseWin()); - TestChildWindowPositionAPIs(backedUpWinPt,aPostion,iBackedUpWin->BaseWin(),iTestWin->BaseWin()); - CopyAndCompareL(); - iBackedUpWin->SetVisible(EFalse); - } - -void CTScreenModeScaling::NextScreenModeTestL(TPoint aPos) - { - TInt numOfModes=TheClient->iScreenModes.Count(); - TInt defaultMode=TheClient->iScreenModes[0]; - TInt lastMode=TheClient->iScreenModes[numOfModes-1]; - TInt mode=(iCurrentModeiScreenModes[ii]) - { - modeIdx=ii; - break; - } - } - TPoint screenModeOrigin(0,0); - TPixelsAndRotation pixelsAndRotation; - while (screenModeOrigin==TPoint()||(pixelsAndRotation.iRotation!=CFbsBitGc::EGraphicsOrientationNormal)) - { - mode=(mode==lastMode? defaultMode : TheClient->iScreenModes[++modeIdx]); - if (mode==iCurrentMode) - { - return; - } - screenModeOrigin=TheClient->iScreen->GetScreenModeOrigin(mode); - TheClient->iScreen->GetScreenModeSizeAndRotation(mode,pixelsAndRotation); - } - iTestWin->SetExt(aPos,iTestWinSize); - iTestWin->SetVisible(ETrue); - TheClient->Flush(); - CBasicWin* basicWin=new(ELeave) CBasicWin; - CleanupStack::PushL(basicWin); - basicWin->ConstructExtLD(*iTestWin,TPoint(),TSize(iTestWinSize.iWidth/5,iTestWinSize.iHeight/5)); - User::LeaveIfError(basicWin->BaseWin()->SetRequiredDisplayMode(EColor256)); - basicWin->AssignGC(*TheClient->iGc); - basicWin->BaseWin()->SetShadowDisabled(ETrue); - basicWin->BaseWin()->SetShadowHeight(0); - basicWin->Activate(); - TPoint pos(iTestWinSize.iWidth/3,iTestWinSize.iWidth/4); - basicWin->SetPos(pos); - TheClient->Flush(); - TheClient->WaitForRedrawsToFinish(); - TestChildWindowPositionAPIs(pos,aPos,basicWin->BaseWin(),iTestWin->BaseWin()); - iCurrentScreenModeScale=TheClient->iScreen->GetScreenModeScale(mode); - iCurrentScreenModeOrigin=TheClient->iScreen->GetScreenModeOrigin(mode); - Copy2ndHalfOfScreen=(iCurrentScreenModeOrigin.iX>FullScreenModeSize.iWidth/2? 1 : 0); - TheClient->iScreen->SetAppScreenMode(mode); - TheClient->iScreen->SetScreenMode(mode); - iTestWin->SetVisible(ETrue); - CopyAndCompareL(); - TheClient->iScreen->SetAppScreenMode(defaultMode); - TheClient->iScreen->SetScreenMode(defaultMode); - CleanupStack::PopAndDestroy(basicWin); - } - -void CTScreenModeScaling::GetInvalidRegionTestL(TPoint aPos) - { - iTestWin->SetExt(aPos,iTestWinSize); - iTestWin->SetVisible(ETrue); - iTestChildWin->SetExt(TPoint(iTestWinSize.iWidth>>2,iTestWinSize.iHeight>>2),TSize(iTestWinSize.iWidth>>1,iTestWinSize.iHeight>>1)); - iTestChildWin->SetVisible(ETrue); - TheClient->Flush(); // ensure testchildwin is on-screen - - CArrayFixFlat *rectList=new(ELeave) CArrayFixFlat(3); - CleanupStack::PushL(rectList); - rectList->AppendL(TRect(1,1,5,2)); - rectList->AppendL(TRect(iTest->StdTestWindowSize().iWidth>>1,iTest->StdTestWindowSize().iHeight>>1,iTest->StdTestWindowSize().iWidth,iTest->StdTestWindowSize().iHeight)); - rectList->AppendL(TRect(2,0,4,5)); - - // set iTestWin to a 'clean state' before invalidating rects in the window - iTestWin->DrawNow(); - TheClient->Flush(); - - // invalidate the various rectangles in iTestWin & then initiate a redraw of the window - RRegion invalidRegion; - RRegion region; - for (TInt index=0;indexCount();index++) - { - const TRect& myRect = (*rectList)[index]; - iTestWin->Invalidate(myRect); - region.AddRect(myRect); - } - CleanupStack::PopAndDestroy(rectList); - CleanupClosePushL(invalidRegion); - CleanupClosePushL(region); - iTestWin->Win()->GetInvalidRegion(invalidRegion); - CompareRegionsL(region, invalidRegion); - CleanupStack::PopAndDestroy(2,&invalidRegion); - iTestChildWin->SetVisible(EFalse); - - // ensure the test child win is removed - TheClient->Flush(); - TheClient->WaitForRedrawsToFinish(); - - TRect rect1(iTestWinSize); - TestGetInvalidRegionL(rect1); - TInt width=iTestWinSize.iWidth; - TInt height=iTestWinSize.iHeight; - TRect rect2(TPoint(width/6,height/6),TSize(width/3,height/3)); - TestGetInvalidRegionL(rect2); - - // invalidate the entire test window - iTestWin->Invalidate(); - TheClient->Flush(); - - iTestWin->SetPos(TPoint(15,15)); - iTestWin->SetPos(TPoint()); - iTestWin->SetPos(TPoint(-15,-15)); - iTestWin->SetPos(aPos); - RRegion invalid; - RRegion testRegion(rect1); - CleanupClosePushL(invalid); - CleanupClosePushL(testRegion); - iTestWin->Win()->GetInvalidRegion(invalid); - TBool retVal = !invalid.CheckError(); - TEST(retVal); - if (!retVal) - INFO_PRINTF3(_L("RRegion.CheckError() return value - Expected: %d, Actual: %d"), ETrue, retVal); - TEST(invalid.BoundingRect().iBr.iX<=iTestWinSize.iWidth); - if (invalid.BoundingRect().iBr.iX>iTestWinSize.iWidth) - INFO_PRINTF3(_L("invalid.BoundingRect().iBr.iX<=iTestWinSize.iWidth - Expected: %d, Actual: %d"), invalid.BoundingRect().iBr.iX, iTestWinSize.iWidth); - CompareRegionsL(testRegion,invalid); - CleanupStack::PopAndDestroy(2,&invalid); - - // redraw the test window & confirm - iTestWin->DrawNow(); - TheClient->Flush(); - CopyAndCompareL(); - } - -/** -@SYMTestCaseID GRAPHICS-WSERV-0094 - -@SYMDEF DEF081259 - -@SYMTestCaseDesc SpriteTestL - REQUIREMENT: PREQ673 (Screen Scaling) - API: RWsSprite::SetPosition() - -@SYMTestPriority High - -@SYMTestStatus Implemented - -@SYMTestActions In the same way as in window tests it shifts the screen modes. - In each screen modes it creates a sprite window and then it moves slightly - either side or bottom of the sprite, then it compares both the regions - to check whether content are same. - -@SYMTestExpectedResults The content of both halves of the screen should match. -*/ -void CTScreenModeScaling::SpriteTestL() - { - CTClient* client=new(ELeave) CTClient(); - CleanupStack::PushL(client); - client->SetScreenNumber(iTest->iScreenNumber); - client->ConstructL(); - client->iGroup=new(ELeave) TestWindowGroup(client); - client->iGroup->ConstructL(); - client->iGroup->WinTreeNode()->SetOrdinalPosition(1); - RBlankWindow color256(client->iWs); - User::LeaveIfError(color256.Construct(*TheClient->iGroup->GroupWin(),ENullWsHandle)); - CleanupClosePushL(color256); - color256.SetRequiredDisplayMode(EColor256); - color256.Activate(); - TInt numOfModes=TheClient->iScreenModes.Count(); - TInt flushState=TheClient->iWs.SetAutoFlush(ETrue); - TInt ii; - for (ii=0; iiiScreenModes[ii]; - TPixelsAndRotation pixelsAndRotation; - iCurrentScreenModeOrigin=TheClient->iScreen->GetScreenModeOrigin(iCurrentMode); - iCurrentScreenModeScale=TheClient->iScreen->GetScreenModeScale(iCurrentMode); - TheClient->iScreen->GetScreenModeSizeAndRotation(iCurrentMode,pixelsAndRotation); - DoSpriteTestsL(); - client->iScreen->SetAppScreenMode(iCurrentMode); - client->Flush(); - } - iCurrentMode=TheClient->iScreenModes[numOfModes-1]; - TheClient->iScreen->SetAppScreenMode(iCurrentMode); - TheClient->iScreen->SetScreenMode(iCurrentMode); - TSizeMode storeModeData=TheClient->iScreen->GetCurrentScreenModeAttributes(); - TSizeMode testMode=storeModeData; - for (TInt xScale=1;xScale<4;xScale++) - { - for (TInt yScale=1;yScale<4;yScale++) - { - testMode.iScreenScale=TSize(xScale,yScale); - TestDifferentOriginAndScaleForSpritesL(testMode,TPoint(20,20)); - TestDifferentOriginAndScaleForSpritesL(testMode,TPoint(20,30)); - TestDifferentOriginAndScaleForSpritesL(testMode,TPoint(30,20)); - TestDifferentOriginAndScaleForSpritesL(testMode,TPoint(FullScreenModeSize.iWidth/2+10,60)); - } - } - TheClient->iScreen->SetScreenMode(iCurrentMode); - TheClient->iScreen->SetCurrentScreenModeAttributes(storeModeData); - TInt defaultMode=TheClient->iScreenModes[0]; - TheClient->iScreen->SetAppScreenMode(defaultMode); - TheClient->iScreen->SetScreenMode(defaultMode); - CleanupStack::PopAndDestroy(2,client); - TheClient->iWs.SetAutoFlush(flushState); - } - -void CTScreenModeScaling::TestDifferentOriginAndScaleForSpritesL(TSizeMode &aMode, TPoint aOrigin) - { - TheClient->iScreen->SetScreenMode(iCurrentMode); - aMode.iOrigin=aOrigin; - TheClient->iScreen->SetCurrentScreenModeAttributes(aMode); - iCurrentScreenModeOrigin=TheClient->iScreen->GetScreenModeOrigin(iCurrentMode); - iCurrentScreenModeScale=TheClient->iScreen->GetScreenModeScale(iCurrentMode); - DoSpriteTestsL(); - } - -void CTScreenModeScaling::DoSpriteTestsL() - { - TheClient->iScreen->SetAppScreenMode(iCurrentMode); - TheClient->iScreen->SetScreenMode(iCurrentMode); - TPixelsAndRotation pixelsAndRotation; - TheClient->iScreen->GetScreenModeSizeAndRotation(iCurrentMode,pixelsAndRotation); - RWsSprite sprite; - TSize spriteSize=iSpriteBitmap.SizeInPixels(); - if (spriteSize.iWidth*iCurrentScreenModeScale.iWidth>FullScreenModeSize.iWidth/2) - spriteSize.iWidth=(FullScreenModeSize.iWidth/2-20)/iCurrentScreenModeScale.iWidth; - SetUpSpriteLC(sprite,TheClient->iWs,*iBlankWin->BaseWin()); - sprite.SetPosition(TPoint()); - CTestSpriteWin* spriteWin=new(ELeave) CTestSpriteWin(iSpriteBitmap); - CleanupStack::PushL(spriteWin); - spriteWin->ConstructExtLD(*TheClient->iGroup,PhysicalToLogical(TPoint()-iCurrentScreenModeOrigin,iCurrentScreenModeScale),spriteSize); - User::LeaveIfError(spriteWin->BaseWin()->SetRequiredDisplayMode(EColor256)); - spriteWin->AssignGC(*TheClient->iGc); - spriteWin->SetVisible(ETrue); - spriteWin->Activate(); - spriteWin->UpdateWin(TPoint()); - spriteWin->BaseWin()->SetShadowDisabled(ETrue); - spriteWin->BaseWin()->SetShadowHeight(0); - TheClient->Flush(); - TheClient->WaitForRedrawsToFinish(); - TPoint spritePosition; - if (iCurrentScreenModeOrigin.iX<=spriteSize.iWidth || iCurrentScreenModeOrigin.iY<=spriteSize.iHeight) - { - if (pixelsAndRotation.iRotation==CFbsBitGc::EGraphicsOrientationNormal || pixelsAndRotation.iRotation==CFbsBitGc::EGraphicsOrientationRotated180) - spritePosition=TPoint(spriteSize.iWidth+1,0); - else - spritePosition=TPoint(0,spriteSize.iHeight+1); - } - sprite.SetPosition(spritePosition); - const TInt KAnimationGrace = 35000; //defined in server.cpp, but can be changed in wsini.ini - User::After(KAnimationGrace); - TBool retVal = TheClient->iScreen->RectCompare(TRect(PhysicalToLogical(TPoint()-iCurrentScreenModeOrigin,iCurrentScreenModeScale),spriteSize),TRect(spritePosition,spriteSize),CWsScreenDevice::EIncludeSprite); - TEST(retVal); - if (!retVal) - INFO_PRINTF3(_L("TheClient->iScreen->RectCompare(rect1,rect2) return value - Expected: %d, Actual: %d"), ETrue, retVal); - - sprite.SetPosition(TPoint()); - CleanupStack::PopAndDestroy(spriteWin); - CleanupStack::PopAndDestroy(&sprite); - } - -/** -@SYMTestCaseID GRAPHICS-WSERV-0095 - -@SYMDEF DEF081259 - -@SYMTestCaseDesc Rotation Tests - REQUIREMENT: PREQ673 (Screen Scaling) - API: RWindowBase::InquireOffset(), RWindowBase::AbsPosition(),RWindowBase::Position() - -@SYMTestPriority High - -@SYMTestStatus Implemented - -@SYMTestActions For each of the screen mode with all its rotation it checks whether the window - is correctly placed in particular screen mode. Then it creates a child window - and checks whether it s correctly placed. - -@SYMTestExpectedResults Checks the windows are positioned correctly according to the origin,scale and rotation - of the new screen mode. -*/ -void CTScreenModeScaling::RotationTestsL() - { - CTClient* client=new(ELeave) CTClient(); - CleanupStack::PushL(client); - client->SetScreenNumber(iTest->iScreenNumber); - client->ConstructL(); - client->iGroup=new(ELeave) TestWindowGroup(client); - client->iGroup->ConstructL(); - client->iGroup->WinTreeNode()->SetOrdinalPosition(1); - RBlankWindow color256(client->iWs); - User::LeaveIfError(color256.Construct(*TheClient->iGroup->GroupWin(),ENullWsHandle)); - CleanupClosePushL(color256); - color256.SetRequiredDisplayMode(EColor256); - color256.Activate(); - TInt oldCurrentMode=0; - TInt ii; - //TInt screenMode=TheClient->iScreen->CurrentScreenMode(); - for (ii=0;iiiScreenModes.Count();) - { - iCurrentMode=TheClient->iScreenModes[ii]; - if (iCurrentMode!=oldCurrentMode) - { - client->iScreen->SetAppScreenMode(iCurrentMode); - TheClient->iScreen->SetScreenMode(iCurrentMode); - TheClient->iScreen->SetAppScreenMode(iCurrentMode); - } - TPixelsAndRotation pixelsAndRotation; - TheClient->iScreen->GetDefaultScreenSizeAndRotation(pixelsAndRotation); - oldCurrentMode=iCurrentMode; - CArrayFixFlat* rotations=new(ELeave) CArrayFixFlat(1); - CleanupStack::PushL(rotations); - User::LeaveIfError(TheClient->iScreen->GetRotationsList(iCurrentMode,rotations)); - TInt count=rotations->Count(); - TInt jj=0; - if (count>1) - { - for (jj=0;jjiScreen->SetCurrentRotations(oldCurrentMode,REINTERPRET_CAST(CFbsBitGc::TGraphicsOrientation&,currentRotation)); - CleanupStack::PopAndDestroy(rotations); - iCurrentScreenModeOrigin=TheClient->iScreen->GetScreenModeOrigin(oldCurrentMode); - iCurrentScreenModeScale=TheClient->iScreen->GetScreenModeScale(oldCurrentMode); - TRect testWinRect(PhysicalToLogical(TPoint(),iCurrentScreenModeScale), - PhysicalToLogical(TPoint((Copy2ndHalfOfScreen ? FullScreenModeSize.iWidth : FullScreenModeSize.iWidth/2),FullScreenModeSize.iHeight)-iCurrentScreenModeOrigin,iCurrentScreenModeScale) - ); - testWinRect.Shrink(10,10); - iTestWin->SetExtL(testWinRect.iTl,testWinRect.Size()); - iTestWin->Invalidate(); - iTestWin->SetVisible(ETrue); - TheClient->Flush(); - TheClient->WaitForRedrawsToFinish(); - TestTopClientWindowPositionAPIs(testWinRect.iTl,iTestWin->BaseWin()); - TPoint backedUpWinPt=TPoint(testWinRect.Width()/3,testWinRect.Height()/4); - iBackedUpWin->SetVisible(ETrue); - iBackedUpWin->SetExtL(backedUpWinPt,TSize(testWinRect.Width()/6,testWinRect.Height()/6)); - TestChildWindowPositionAPIs(backedUpWinPt,testWinRect.iTl,iBackedUpWin->BaseWin(),iTestWin->BaseWin()); - iTestWin->SetVisible(EFalse); - iBackedUpWin->SetVisible(EFalse); - } - CleanupStack::PopAndDestroy(2,client); - } - -void CTScreenModeScaling::DrawTransparentWindows() - { - //.. First Draw on Backgroundbitmap - iBackgroundBitmap->Gc().SetBrushColor(TRgb(255,0,255)); - iBackgroundBitmap->Gc().SetBrushStyle(CGraphicsContext::ESolidBrush); - iBackgroundBitmap->Gc().SetPenStyle(CGraphicsContext::ENullPen); - iBackgroundBitmap->Gc().DrawRect(iWinSize); - - //.. Invalidate the background bitmap and do bitBlt to iCheckBitmap also - iBackgroundWin->BaseWin()->SetVisible(ETrue); - iBackgroundWin->DrawNow(); - - //.. Copy to checkbitmap - iCheckBitmap->Gc().SetFaded(EFalse); - iCheckBitmap->Gc().BitBlt(TPoint(),&iBackgroundBitmap->Bitmap()); - - //.. Set the grade of transperency - iTransparencyBitmap->Gc().SetBrushColor(TRgb::Gray256(128)); - iTransparencyBitmap->Gc().SetBrushStyle(CGraphicsContext::ESolidBrush); - iTransparencyBitmap->Gc().SetPenStyle(CGraphicsContext::ENullPen); - iTransparencyBitmap->Gc().DrawRect(iWinSize); - - //.. Then draw to the fore ground bitmap and invalidate the second window - iForegroundBitmap->Gc().Reset(); - iForegroundBitmap->Gc().SetPenStyle(CGraphicsContext::ESolidPen); - iForegroundBitmap->Gc().SetPenSize(TSize(1,1)); - iForegroundBitmap->Gc().SetPenColor(TRgb(0,0,0)); - iForegroundBitmap->Gc().DrawLine(TPoint(0,0),TPoint(iWinSize.iWidth,iWinSize.iHeight)); - iForegroundBitmap->Gc().DrawLine(TPoint(iWinSize.iWidth,0),TPoint(0,iWinSize.iHeight)); - iTransWin->BaseWin()->SetVisible(ETrue); - iTransWin->Invalidate(); - iTransWin->DrawNow(); - - iCheckBitmap->Gc().AlphaBlendBitmaps(TPoint(0,0),&iForegroundBitmap->Bitmap(),&iCheckBitmap->Bitmap() - ,TRect(iWinSize),TPoint(0,0),&iTransparencyBitmap->Bitmap(),TPoint(0,0)); - iCheckWin->BaseWin()->SetVisible(ETrue); - iCheckWin->BackedUpWin()->UpdateScreen(); - TheClient->Flush(); - TheClient->WaitForRedrawsToFinish(); - CheckRect(iTransWin,iCheckWin,TRect(iWinSize),_L("DrawTransparentWindows() CheckRect failed")); - } - -// !!! THE COMMENT BELOW IS DISABLED BECAUSE TransparentTests() METHOD IS NOT USED !!! -//** -//@SYMTestCaseID GRAPHICS-WSERV-0096 -// -//@SYMDEF DEF081259 -// -//@SYMTestCaseDesc TransparentTests -// REQUIREMENT: PREQ673 (Screen Scaling) -// API: CWindowGc::AlphaBlendBitmaps() -// -//@SYMTestPriority High -// -//@SYMTestStatus Implemented -// -//@SYMTestActions The main logic behind this test is to copy the content of the background window -// bitmap to checkwindow bitmap and then use the foreground window bitmap and transparency bitmap -// with the function AlphaBlendBitmaps() to get the content present on the combination of -// foreground(transparent) window and background window. Then compare both the regions of the -// window to check whether the content is same. -// -//@SYMTestExpectedResults The content of both halves of the screen should match. -//*/ -void CTScreenModeScaling::TransparentTestsL() - { - TInt flushState=TheClient->iWs.SetAutoFlush(ETrue); - TInt defaultMode=TheClient->iScreenModes[0]; - TheClient->iScreen->SetAppScreenMode(defaultMode); - TheClient->iScreen->SetScreenMode(defaultMode); - CTClient* client=new(ELeave) CTClient(); - CleanupStack::PushL(client); - client->SetScreenNumber(iTest->iScreenNumber); - client->ConstructL(); - client->iGroup=new(ELeave) TestWindowGroup(client); - client->iGroup->ConstructL(); - client->iGroup->WinTreeNode()->SetOrdinalPosition(1); - RBlankWindow color256(client->iWs); - User::LeaveIfError(color256.Construct(*TheClient->iGroup->GroupWin(),ENullWsHandle)); - CleanupClosePushL(color256); - color256.SetRequiredDisplayMode(EColor256); - color256.Activate(); - client->Flush(); - DrawTransparentWindows(); - iCurrentMode=TheClient->iScreenModes[TheClient->iScreenModes.Count()-1]; - TheClient->iScreen->SetAppScreenMode(iCurrentMode); - TheClient->iScreen->SetScreenMode(iCurrentMode); - TSizeMode storeModeData=TheClient->iScreen->GetCurrentScreenModeAttributes(); - TSizeMode testMode=storeModeData; - for (TInt xScale=1;xScale<4;xScale++) - { - for (TInt yScale=1;yScale<4;yScale++) - { - testMode.iScreenScale=TSize(xScale,yScale); - TestDifferentOriginAndScaleForTranspWin(testMode,TPoint(20,20)); - TestDifferentOriginAndScaleForTranspWin(testMode,TPoint(20,30)); - TestDifferentOriginAndScaleForTranspWin(testMode,TPoint(30,20)); - TestDifferentOriginAndScaleForTranspWin(testMode,TPoint(FullScreenModeSize.iWidth/2+1,60)); - } - } - TheClient->iScreen->SetScreenMode(iCurrentMode); - TheClient->iScreen->SetCurrentScreenModeAttributes(storeModeData); - client->iScreen->SetAppScreenMode(iCurrentMode); - client->Flush(); - TheClient->iScreen->SetAppScreenMode(defaultMode); - TheClient->iScreen->SetScreenMode(defaultMode); - TheClient->iWs.SetAutoFlush(flushState); - CleanupStack::PopAndDestroy(2,client); - } - -void CTScreenModeScaling::TestDifferentOriginAndScaleForTranspWin(TSizeMode &aMode,TPoint aOrigin) - { - TheClient->iScreen->SetScreenMode(iCurrentMode); - aMode.iOrigin=aOrigin; - TheClient->iScreen->SetCurrentScreenModeAttributes(aMode); - TheClient->iScreen->SetAppScreenMode(iCurrentMode); - TheClient->iScreen->SetScreenMode(iCurrentMode); - TRAPD(ret,DrawTransparentWindows()); - TEST(ret==KErrNone); - if (ret!=KErrNone) - INFO_PRINTF3(_L("DrawTransparentWindows() return value - Expected: %d, Actual: %d"), KErrNone, ret); - - } - -/** -@SYMTestCaseID GRAPHICS-WSERV-0097 - -@SYMDEF DEF081259 - -@SYMTestCaseDesc AppScreenModeTest - REQUIREMENT: PREQ673 (Screen Scaling) - API: CWsScreenDevice::SetAppScreenMode() - -@SYMTestPriority High - -@SYMTestStatus Implemented - -@SYMTestActions Enable the visibility of Test window, Call SetAppScreenMode() API with different - screen mode. Check the variable which is set in its draw function. - -@SYMTestExpectedResults The variable should not be set when the application screen mode is different - then current screen mode. -*/ -void CTScreenModeScaling::AppScreenModeTestL() - { - TheClient->iScreen->SetAppScreenMode(0); - TheClient->iScreen->SetScreenMode(0); - iTestWin->iDrawn=EFalse; - iTestWin->SetExtL(TPoint(),TSize(FullScreenModeSize.iWidth/2,FullScreenModeSize.iHeight)); - iTestWin->SetVisible(ETrue); - TheClient->Flush(); - TheClient->WaitForRedrawsToFinish(); - TEST(iTestWin->iDrawn); - if (!iTestWin->iDrawn) - INFO_PRINTF3(_L("iTestWin->iDrawn - Expected: %d, Actual: %d"), ETrue, iTestWin->iDrawn); - - iTestWin->iDrawn=EFalse; - TheClient->iScreen->SetAppScreenMode(2); - TheClient->iScreen->SetScreenMode(0); - iTestWin->Invalidate(); - TheClient->Flush(); - TEST(!iTestWin->iDrawn); - if (iTestWin->iDrawn) - INFO_PRINTF3(_L("iTestWin->iDrawn - Expected: %d, Actual: %d"), EFalse, iTestWin->iDrawn); - - TheClient->iScreen->SetAppScreenMode(0); - TheClient->Flush(); - TheClient->WaitForRedrawsToFinish(); - TEST(iTestWin->iDrawn); - if (!iTestWin->iDrawn) - INFO_PRINTF3(_L("iTestWin->iDrawn - Expected: %d, Actual: %d"), ETrue, iTestWin->iDrawn); - - iTestWin->iDrawn=EFalse; - TheClient->iScreen->SetScreenMode(1); - iTestWin->Invalidate(); - TheClient->Flush(); - TEST(!iTestWin->iDrawn); - if (iTestWin->iDrawn) - INFO_PRINTF3(_L("iTestWin->iDrawn - Expected: %d, Actual: %d"), EFalse, iTestWin->iDrawn); - - iTestWin->SetVisible(EFalse); - TheClient->iScreen->SetAppScreenMode(0); - TheClient->iScreen->SetScreenMode(0); - } - -void CTScreenModeScaling::RunTestCaseL(TInt /*aCurTestCase*/) - { - _LIT(KWindowTests,"Window Tests"); - _LIT(KSpriteTest,"Sprite Test"); - _LIT(KRotationTests,"Rotation Tests"); - _LIT(KTransparentTests,"Transparent Tests"); - _LIT(KAppScreenModeTest,"AppScreenMode Test"); - _LIT(KScalling,"Scaling not Supported"); - _LIT(KModes,"Only one Screen Size Mode"); - - ((CTScreenModeScalingStep*)iStep)->SetTestStepID(KUnknownSYMTestCaseIDName); - switch(++iTest->iState) - { - case 1: - { - ((CTScreenModeScalingStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0097")); - TInt numScrModes=TheClient->iScreen->NumScreenModes(); - if (numScrModes<2 || !CheckScalingSupportedOrNot()) - { - if (numScrModes<2) - LOG_MESSAGE(KModes); - else - LOG_MESSAGE(KScalling); - TestComplete(); - return; - } - iTest->LogSubTest(KAppScreenModeTest); - AppScreenModeTestL(); - } - break; - case 2: - ((CTScreenModeScalingStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0093")); - iTest->LogSubTest(KWindowTests); - WindowTestsL(); - break; - case 3: - ((CTScreenModeScalingStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0094")); - iTest->LogSubTest(KSpriteTest); - SpriteTestL(); - break; - case 4: - ((CTScreenModeScalingStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0095")); - iTest->LogSubTest(KRotationTests); - RotationTestsL(); - break; - case 5: - ((CTScreenModeScalingStep*)iStep)->SetTestStepID(KNotATestSYMTestCaseIDName); - iTest->LogSubTest(KTransparentTests); - //TransparentTestsL(); //This tests currently fails sometimes for reasons not understood #### - break; - default: - { - TInt defaultMode=TheClient->iScreenModes[0]; - TheClient->iScreen->SetAppScreenMode(defaultMode); - TheClient->iScreen->SetScreenMode(defaultMode); - } - ((CTScreenModeScalingStep*)iStep)->SetTestStepID(KNotATestSYMTestCaseIDName); - ((CTScreenModeScalingStep*)iStep)->CloseTMSGraphicsStep(); - TestComplete(); - return; - } - ((CTScreenModeScalingStep*)iStep)->RecordTestResultL(); - } - -__WS_CONSTRUCT_STEP__(ScreenModeScaling)