diff -r bf7481649c98 -r 7f25ef56562d windowing/windowserver/tauto/TOOMDRAW.CPP --- a/windowing/windowserver/tauto/TOOMDRAW.CPP Fri Jun 11 14:58:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,244 +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 out of memory redraws -// -// - -/** - @file - @test - @internalComponent - Internal Symbian test code -*/ - -#include "TOOMDRAW.H" - -void DrawTestScreen(CWindowGc *aGc, const TSize &aSize) - { - aGc->SetPenSize(TSize(10,10)); - aGc->SetBrushStyle(CGraphicsContext::EVerticalHatchBrush); - aGc->DrawRect(TRect(aSize)); - } - -CTestWin::CTestWin() - { - } - -void CTestWin::Draw() - { -#if defined(FULLLOGGING) - _LIT(KLog,"Drawing Test Win:%d %d,%d"); - TLogMessageText buf; - buf.Format(KLog,Size().iWidth>320?1:0,Size().iWidth,Size().iHeight); - TheClient->LogMessage(buf); -#endif - DrawTestScreen(iGc,Size()); - } - -CBaseTestWin::CBaseTestWin() : CTBackedUpWin(EGray4) - {} - -void CBaseTestWin::Resized(const TSize &aNewSize) - { - TheGc->Activate(*DrawableWin()); - DrawTestScreen(TheGc,aNewSize); - TheGc->Deactivate(); - } - -CToomDraw::CToomDraw(CTestStep* aStep): - CTWsGraphicsBase(aStep) - { - } - -CToomDraw::~CToomDraw() - { - TheClient->iWs.HeapSetFail(RHeap::ENone,0); //In case the test crashes and it hasn't been reset - DeleteWindows(); - } - -void CToomDraw::DeleteWindows() - { - delete iTestWin; - iTestWin=NULL; - delete iBaseWin; - iBaseWin=NULL; - delete iBackWin; - iBackWin=NULL; - delete iBlankWin; - iBlankWin=NULL; - } - -void CToomDraw::ConstructL() - { - iScrSize=TheClient->iScreen->SizeInPixels(); - iBlankWin=new(ELeave) CTBlankWindow; - iBlankWin->ConstructL(*TheClient->iGroup); - iBlankWin->SetColor(TRgb::Gray4(2)); //Grey - iBlankWin->Activate(); - iBackWin=new(ELeave) CTestWin(); - iBackWin->SetUpL(TPoint(0,iScrSize.iHeight/4), TSize(iScrSize.iWidth,iScrSize.iHeight/2), TheClient->iGroup, *TheClient->iGc); - iBaseWin=new(ELeave) CBaseTestWin(); - iBaseWin->SetUpL(TPoint(iScrSize.iWidth*2/3,0), TSize(iScrSize.iWidth/3,iScrSize.iHeight), TheClient->iGroup, *TheClient->iGc); - } - -void CToomDraw::CreateTestWinL() - { - iTestWin=new(ELeave) CTestWin(); - iTestWin->ConstructL(*TheClient->iGroup); - iTestWin->SetExtL(TPoint(0,0), TSize(iScrSize.iWidth/3,iScrSize.iHeight)); - iTestWin->AssignGC(*TheClient->iGc); - iTestWin->BaseWin()->SetShadowHeight(2); - } - -void CToomDraw::TriggerOomDrawsL(TInt aCount) - { - if(iTestWin) - { - iTestWin->SetExtL(TPoint(),iScrSize); - } - delete iTestWin; - iTestWin=NULL; - CreateTestWinL(); - TheClient->iWs.HeapSetFail(RHeap::EDeterministic,aCount); - iTestWin->Activate(); - TheClient->iWs.Finish(); - } - -TBool CToomDraw::CheckWindowsL() - { - TLogMessageText buf; - TBool pass = DoCheckRect(iTestWin,iBaseWin); - if (pass) - { - TEST(ETrue); //Adds one to test count - #if defined(FULLLOGGING) - _LIT(KLog,"OOM Draw Test Pass, State=%d"); - buf.Format(KLog,iState); - #endif - iRetryCount=0; - } - else - { - if (iRetryCount==4) - { - if ((iTest->RedrawStoreTypeL()==EPartialRedraw_PreserveStoredCmds || - iTest->RedrawStoreTypeL()==EPartialRedraw_FullRedrawSupport) && (iState==19 || iState==30) || - ((iState>=2 && iState<=6) && (iTest->RedrawStoreTypeL()==EPartialRedraw_None || iTest->RedrawStoreTypeL()==EPartialRedraw_FullRedrawSupport))) - { - #if defined(FULLLOGGING) - _LIT(KLog,"OOM Draw Test Known F a i l, State=%d"); - buf.Format(KLog,iState); - #endif - pass=ETrue; - } - else - { - if (iFailAt==0) - iFailAt=iState; - ++iFails; //mark this test as failed - #if defined(LOGGING) - _LIT(KLog,"OOM Draw Test FAIL, State=%d <------- FAIL"); - buf.Format(KLog,iState); - #endif - ++iState; //and advance to next test - } - iRetryCount=0; - } - else - { - #if defined(FULLLOGGING) - _LIT(KLog,"OOM Draw Test F a i l, State=%d retrying"); - buf.Format(KLog,iState); - #endif - if (++iRetryCount%2==0) - iBackWin->DrawNow(); - } - } - if (buf.Length()>0) - TheClient->LogMessage(buf); - return pass; - } - -void CToomDraw::RunTestCaseL(TInt aCurTestCase) - { - TBool testFinished = false; - ((CToomDrawStep*)iStep)->SetTestStepID(KUnknownSYMTestCaseIDName); - switch(aCurTestCase) - { -/** -@SYMTestCaseID GRAPHICS-WSERV-0110 - -@SYMDEF DEF081259 - -@SYMTestCaseDesc Test trying to draw when out of memory - -@SYMTestPriority High - -@SYMTestStatus Implemented - -@SYMTestActions Set out of memory and try drawing - -@SYMTestExpectedResults Out of memory drawing is handle correctly -*/ - case 1: - ((CToomDrawStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0110")); - while (!testFinished) - { - if (iDoCheck) - { - TheClient->iWs.HeapSetFail(RHeap::ENone,0); - TheClient->WaitForRedrawsToFinish(); - if (CheckWindowsL()) - { - ++iState; - if (iState==EMaxOOMState) - DeleteWindows(); - } - iDoCheck=EFalse; - TheClient->iWs.Finish(); - } - else - { - if (iState==EMaxOOMState) - { - if (iFails>0) - { - #if defined(LOGING) - _LIT(KLog,"OOM Draw Test Failed, First Fail At %d, Number of Fails %d"); - TLogMessageText buf; - buf.Format(KLog,iFailAt,iFails); - TheClient->LogMessage(buf); - #endif - TEST(iFails==0); - } - User::After(500000); // Let the rest of the world catch up after OOM death - testFinished = true; - } - else if (iState < 3 && iTest->IsFullRomL()) - testFinished = true; - else - TriggerOomDrawsL(iState); - iDoCheck=ETrue; - } - } - break; - case 2: - ((CToomDrawStep*)iStep)->SetTestStepID(KNotATestSYMTestCaseIDName); - ((CToomDrawStep*)iStep)->CloseTMSGraphicsStep(); - TestComplete(); - break; - } - ((CToomDrawStep*)iStep)->RecordTestResultL(); - } - -__WS_CONSTRUCT_STEP__(oomDraw)