sl@0: // Copyright (c) 1996-2009 Nokia Corporation and/or its subsidiary(-ies). sl@0: // All rights reserved. sl@0: // This component and the accompanying materials are made available sl@0: // under the terms of "Eclipse Public License v1.0" sl@0: // which accompanies this distribution, and is available sl@0: // at the URL "http://www.eclipse.org/legal/epl-v10.html". sl@0: // sl@0: // Initial Contributors: sl@0: // Nokia Corporation - initial contribution. sl@0: // sl@0: // Contributors: sl@0: // sl@0: // Description: sl@0: // Window scroll tests sl@0: // sl@0: // sl@0: sl@0: /** sl@0: @file sl@0: @test sl@0: @internalComponent - Internal Symbian test code sl@0: */ sl@0: sl@0: #include "TSCROLL.H" sl@0: sl@0: #pragma warning(disable : 4710) sl@0: sl@0: // sl@0: // Scroll window, used to test the Scroll() command sl@0: // sl@0: sl@0: void DrawScrollWin(CBitmapContext *aGc, const TPoint &aOffset, const TSize &aSize) sl@0: { sl@0: aGc->Clear(); sl@0: TPoint drawBase(-10,-20); sl@0: TSize drawSize(aSize.iWidth-2*drawBase.iX,aSize.iHeight-2*drawBase.iY); sl@0: aGc->DrawRect(TRect(drawBase,drawBase+drawSize)); sl@0: TPoint offset=drawBase+aOffset; sl@0: aGc->SetPenColor(TRgb::Gray4(2)); sl@0: // aGc->SetDrawMode(CGraphicsContext::EDrawModeXOR); sl@0: aGc->DrawRect(TRect(offset+TPoint(13,23),offset+TPoint(22,32))); sl@0: TInt xpos,xplus; sl@0: for(xpos=0,xplus=2;xposDrawLine(TPoint(xpos,0)+offset,TPoint(xpos,drawSize.iHeight)+offset); sl@0: for(TInt ypos=0,yplus=2;yposDrawLine(TPoint(0,ypos)+offset,TPoint(drawSize.iWidth,ypos)+offset); sl@0: // sl@0: aGc->SetPenColor(TRgb(0,0,0)); sl@0: aGc->SetDrawMode(CGraphicsContext::EDrawModePEN); sl@0: TheClient->iWs.Flush(); sl@0: for(xpos=0;xposDrawLine(TPoint(xpos,0)+offset,TPoint(drawSize.iWidth,xpos*drawSize.iHeight/drawSize.iWidth)+offset); sl@0: aGc->DrawLine(TPoint(xpos,0)+offset,TPoint(0,drawSize.iHeight-xpos*drawSize.iHeight/drawSize.iWidth)+offset); sl@0: aGc->DrawLine(TPoint(xpos,drawSize.iHeight)+offset,TPoint(drawSize.iWidth,drawSize.iHeight-xpos*drawSize.iHeight/drawSize.iWidth)+offset); sl@0: aGc->DrawLine(TPoint(xpos,drawSize.iHeight)+offset,TPoint(0,xpos*drawSize.iHeight/drawSize.iWidth)+offset); sl@0: } sl@0: sl@0: } sl@0: sl@0: CScrollWindowNorm::CScrollWindowNorm() : CTWin() sl@0: { sl@0: } sl@0: sl@0: void DrawScrollWin(const TPoint &aOffset, const TSize &aSize) sl@0: { sl@0: ::DrawScrollWin(TheClient->iGc, aOffset, aSize); sl@0: } sl@0: sl@0: void CScrollWindowNorm::Draw() sl@0: { sl@0: DrawScrollWin(iScrollTest->Offset(), Size()); sl@0: } sl@0: sl@0: void CScrollWindowNorm::SetScrollTest(CScrollTestBase *aScrollTest) sl@0: { sl@0: iScrollTest=aScrollTest; sl@0: } sl@0: sl@0: // sl@0: // CScrollWindowBackedUp sl@0: // sl@0: sl@0: CScrollWindowBackedUp::CScrollWindowBackedUp(TDisplayMode aDisplayMode) : CTBackedUpWin(aDisplayMode) sl@0: { sl@0: } sl@0: sl@0: void CScrollWindowBackedUp::Draw() sl@0: { sl@0: DrawScrollWin(iScrollTest->Offset(), Size()); sl@0: } sl@0: sl@0: void CScrollWindowBackedUp::SetScrollTest(CScrollTestBase *aScrollTest) sl@0: { sl@0: iScrollTest=aScrollTest; sl@0: } sl@0: sl@0: // sl@0: // CScrollTestBase sl@0: // sl@0: sl@0: void CScrollTestBase::Reset() sl@0: { sl@0: iOffset=TPoint(0,0); sl@0: iInvalid.Clear(); sl@0: } sl@0: sl@0: void CScrollTestBase::DoInvalidate() sl@0: { sl@0: } sl@0: sl@0: TPoint CScrollTestBase::Offset() const sl@0: { sl@0: return(iOffset); sl@0: } sl@0: sl@0: CScrollTestBase::~CScrollTestBase() sl@0: { sl@0: delete iBlankWin; sl@0: iInvalid.Close(); sl@0: } sl@0: sl@0: void CScrollTestBaseNorm::ConstructL(const TPoint &aPos, const TSize &aSize) sl@0: { sl@0: iScrollWin=new(ELeave) CScrollWindowNorm(); sl@0: iScrollWin->SetUpL(aPos, aSize, TheClient->iGroup, *TheClient->iGc); sl@0: iScrollWin->SetScrollTest(this); sl@0: iSize=iScrollWin->Size(); sl@0: } sl@0: sl@0: CScrollTestBaseNorm::~CScrollTestBaseNorm() sl@0: { sl@0: delete iScrollWin; sl@0: } sl@0: sl@0: void CScrollTestBaseNorm::Redraw() sl@0: { sl@0: iScrollWin->Redraw(); sl@0: } sl@0: sl@0: void CScrollTestBaseNorm::Reset() sl@0: { sl@0: iScrollWin->Win()->Invalidate(); sl@0: iScrollWin->Redraw(); sl@0: CScrollTestBase::Reset(); sl@0: } sl@0: sl@0: CTDrawableWin *CScrollTestBaseNorm::ScrollWin() const sl@0: { sl@0: return(iScrollWin); sl@0: } sl@0: sl@0: void CScrollTestBaseNorm::AdjustTestScrollRegion(const TRect &aClipRect, const TPoint &aOffset, const TRect &aRect) sl@0: { sl@0: RRegion clipped_visible; sl@0: VisibleRegion(clipped_visible); sl@0: clipped_visible.ClipRect(aClipRect); sl@0: // sl@0: // sl@0: RRegion invalidate(aRect); sl@0: invalidate.SubRegion(clipped_visible); sl@0: invalidate.Offset(aOffset); sl@0: invalidate.ClipRect(aClipRect); sl@0: // sl@0: RRegion invalidate2(aRect); sl@0: invalidate2.ClipRect(aClipRect); sl@0: invalidate2.Intersect(iInvalid); sl@0: invalidate2.Offset(aOffset); sl@0: invalidate2.ClipRect(aClipRect); sl@0: // sl@0: RRegion validate(aRect); sl@0: validate.Intersect(clipped_visible); sl@0: validate.SubRegion(iInvalid); sl@0: validate.Offset(aOffset); sl@0: validate.ClipRect(aClipRect); sl@0: // sl@0: iInvalid.SubRegion(validate); sl@0: iInvalid.Union(invalidate); sl@0: iInvalid.Union(invalidate2); sl@0: RRegion visible; sl@0: VisibleRegion(visible); sl@0: iInvalid.Intersect(visible); sl@0: iInvalid.Tidy(); sl@0: // sl@0: invalidate2.Close(); sl@0: invalidate.Close(); sl@0: validate.Close(); sl@0: visible.Close(); sl@0: clipped_visible.Close(); sl@0: sl@0: iOffset+=aOffset; sl@0: } sl@0: sl@0: void CScrollTestBaseNorm::VisibleRegion(RRegion &aRegion) sl@0: { sl@0: aRegion.Clear(); sl@0: aRegion.AddRect(TRect(iSize)); sl@0: TRect child; sl@0: child.iTl=iBlankWin->BaseWin()->InquireOffset(*ScrollWin()->BaseWin()); sl@0: child.iBr=child.iTl+iBlankWin->BaseWin()->Size(); sl@0: aRegion.SubRect(child); sl@0: } sl@0: sl@0: void CScrollWindow1::DoTestScroll(const TRect &aClipRect, const TPoint &aOffset, const TRect &aRect) sl@0: { sl@0: TheGc->Activate(*iScrollWin->DrawableWin()); sl@0: RRegion region(aRect); sl@0: RRegion visible; sl@0: VisibleRegion(visible); sl@0: visible.ClipRect(aClipRect); sl@0: region.Intersect(visible); sl@0: visible.Close(); sl@0: region.SubRegion(iInvalid); sl@0: region.Offset(aOffset); sl@0: region.ClipRect(aClipRect); sl@0: TheGc->SetClippingRegion(region); sl@0: TheGc->CopyRect(aOffset,aRect); sl@0: TheGc->Deactivate(); sl@0: AdjustTestScrollRegion(aClipRect, aOffset,aRect); sl@0: iInvalid.Union(TRegionFix<1>(TRect(aClipRect))); sl@0: region.Close(); sl@0: } sl@0: sl@0: void CScrollWindow1::DoTestScroll(const TPoint &aOffset) sl@0: { sl@0: DoTestScroll(TRect(TPoint(0,0),iSize), aOffset,TRect(-aOffset,iSize)); sl@0: } sl@0: sl@0: void CScrollWindow1::DoTestScroll(const TPoint &aOffset, const TRect &aRect) sl@0: { sl@0: DoTestScroll(TRect(TPoint(0,0),iSize), aOffset, aRect); sl@0: } sl@0: sl@0: void CScrollWindow1::DoTestScroll(const TRect &aClipRect, const TPoint &aOffset) sl@0: { sl@0: DoTestScroll(aClipRect, aOffset, TRect(-aOffset.iX,-aOffset.iY,iSize.iWidth-aOffset.iX, iSize.iHeight-aOffset.iY)); sl@0: } sl@0: sl@0: void CScrollWindow1::DoInvalidate() sl@0: { sl@0: for(TInt index=0;indexInvalidate(iInvalid[index]); sl@0: } sl@0: sl@0: void CScrollWindow2::Reset() sl@0: { sl@0: CScrollTestBaseNorm::Reset(); sl@0: iClipped=EFalse; sl@0: } sl@0: sl@0: CScrollWindow2::CScrollWindow2(CTScroll *aTest) : iTest(aTest) sl@0: { sl@0: } sl@0: sl@0: void CScrollWindow2::Draw() sl@0: { sl@0: if (iClipped) sl@0: TheClient->iGc->SetClippingRegion(iInvalid); sl@0: iScrollWin->Draw(); sl@0: if (iClipped) sl@0: TheClient->iGc->CancelClippingRegion(); sl@0: } sl@0: sl@0: void CScrollWindow2::DoTestScroll(const TPoint &aOffset) sl@0: { sl@0: AdjustTestScrollRegion(TRect(iSize), aOffset, TRect(-aOffset.iX,-aOffset.iY,iSize.iWidth-aOffset.iX, iSize.iHeight-aOffset.iY)); sl@0: iClipped=ETrue; sl@0: iScrollWin->DrawableWin()->Scroll(aOffset); sl@0: } sl@0: sl@0: void CScrollWindow2::DoTestScroll(const TRect &aClipRect, const TPoint &aOffset) sl@0: { sl@0: AdjustTestScrollRegion(aClipRect, aOffset, TRect(-aOffset.iX,-aOffset.iY,iSize.iWidth-aOffset.iX, iSize.iHeight-aOffset.iY)); sl@0: iClipped=ETrue; sl@0: iScrollWin->DrawableWin()->Scroll(aClipRect, aOffset); sl@0: } sl@0: sl@0: void CScrollWindow2::DoTestScroll(const TPoint &aOffset, const TRect &aRect) sl@0: { sl@0: AdjustTestScrollRegion(TRect(iSize), aOffset, aRect); sl@0: iClipped=ETrue; sl@0: iScrollWin->DrawableWin()->Scroll(aOffset, aRect); sl@0: } sl@0: sl@0: void CScrollWindow2::DoTestScroll(const TRect &aClipRect, const TPoint &aOffset, const TRect &aRect) sl@0: { sl@0: AdjustTestScrollRegion(aClipRect, aOffset, aRect); sl@0: iClipped=ETrue; sl@0: iScrollWin->DrawableWin()->Scroll(aClipRect, aOffset, aRect); sl@0: } sl@0: sl@0: void CScrollWindow3::DrawScrollBit() sl@0: { sl@0: ::DrawScrollWin(iBitmapGc, iOffset, iSize); sl@0: } sl@0: sl@0: void CScrollWindow3::Reset() sl@0: { sl@0: CScrollTestBase::Reset(); sl@0: iBitmapGc->Clear(TRect(iSize)); sl@0: DrawScrollBit(); sl@0: DoInvalidate(); sl@0: } sl@0: sl@0: CScrollWindow3::~CScrollWindow3() sl@0: { sl@0: delete iBitmapGc; sl@0: delete iBitmapDevice; sl@0: delete iBitmap; sl@0: } sl@0: sl@0: void CScrollWindow3::ConstructL(const TPoint &aPos, const TSize &aSize) sl@0: { sl@0: CScrollTestBaseNorm::ConstructL(aPos,aSize); sl@0: iBitmap=new(ELeave) CFbsBitmap(); sl@0: User::LeaveIfError(iBitmap->Create(iSize,EGray4)); sl@0: iBitmapDevice=CFbsBitmapDevice::NewL(iBitmap); sl@0: User::LeaveIfError(iBitmapDevice->CreateContext(iBitmapGc)); sl@0: DrawScrollBit(); sl@0: } sl@0: sl@0: void CScrollWindow3::DoTestScroll(const TRect &aClipRect, const TPoint &aOffset, const TRect &aRect) sl@0: { sl@0: iOffset+=aOffset; sl@0: RRegion blank(aRect); sl@0: TRect clipRect(aClipRect); sl@0: clipRect.Intersection(TRect(iSize)); sl@0: blank.SubRect(clipRect); sl@0: blank.Offset(aOffset); sl@0: blank.ClipRect(clipRect); sl@0: TRect rect(aRect); sl@0: rect.Intersection(clipRect); sl@0: TRect rect2(clipRect); sl@0: rect2.Move(-aOffset); sl@0: rect.Intersection(rect2); sl@0: iBitmapGc->CopyRect(aOffset,rect); sl@0: iBitmapGc->SetClippingRegion(&blank); sl@0: iBitmapGc->Clear(TRect(iSize)); sl@0: iBitmapGc->SetClippingRegion(NULL); sl@0: blank.Close(); sl@0: } sl@0: sl@0: void CScrollWindow3::DoTestScroll(const TPoint &aOffset) sl@0: { sl@0: DoTestScroll(TRect(iSize), aOffset,TRect(-aOffset.iX,-aOffset.iY,iSize.iWidth-aOffset.iX, iSize.iHeight-aOffset.iY)); sl@0: } sl@0: sl@0: void CScrollWindow3::DoTestScroll(const TPoint &aOffset, const TRect &aRect) sl@0: { sl@0: DoTestScroll(TRect(iSize), aOffset, aRect); sl@0: } sl@0: sl@0: void CScrollWindow3::DoTestScroll(const TRect &aClipRect, const TPoint &aOffset) sl@0: { sl@0: DoTestScroll(aClipRect, aOffset, TRect(-aOffset.iX,-aOffset.iY,iSize.iWidth-aOffset.iX, iSize.iHeight-aOffset.iY)); sl@0: } sl@0: sl@0: void CScrollWindow3::Draw() sl@0: { sl@0: TheGc->BitBlt(TPoint(),iBitmap); sl@0: } sl@0: sl@0: void CScrollWindow3::DoInvalidate() sl@0: { sl@0: RWindow win=*iScrollWin->Win(); sl@0: win.Invalidate(); sl@0: win.BeginRedraw(); sl@0: TheGc->Activate(win); sl@0: Draw(); sl@0: TheGc->Deactivate(); sl@0: win.EndRedraw(); sl@0: } sl@0: sl@0: void CScrollWindow4::ConstructL(const TPoint &aPos, const TSize &aSize) sl@0: { sl@0: iScrollWin=new(ELeave) CScrollWindowBackedUp(EGray4); sl@0: iScrollWin->SetUpL(aPos, aSize, TheClient->iGroup, *TheClient->iGc); sl@0: iScrollWin->SetScrollTest(this); sl@0: iSize=iScrollWin->Size(); sl@0: TheClient->iGc->Activate(*iScrollWin->DrawableWin()); sl@0: TheClient->iGc->Clear(); sl@0: DrawScrollWin(TPoint(), iSize); sl@0: TheClient->iGc->Deactivate(); sl@0: } sl@0: sl@0: CScrollWindow4::~CScrollWindow4() sl@0: { sl@0: delete iScrollWin; sl@0: } sl@0: sl@0: void CScrollWindow4::Redraw() sl@0: { sl@0: } sl@0: sl@0: void CScrollWindow4::Reset() sl@0: { sl@0: TheClient->iGc->Activate(*iScrollWin->DrawableWin()); sl@0: TheClient->iGc->Clear(); sl@0: DrawScrollWin(TPoint(), iSize); sl@0: TheClient->iGc->Deactivate(); sl@0: CScrollTestBase::Reset(); sl@0: } sl@0: sl@0: void CScrollWindow4::DoTestScroll(const TPoint &aOffset) sl@0: { sl@0: iScrollWin->DrawableWin()->Scroll(aOffset); sl@0: iOffset+=aOffset; sl@0: } sl@0: sl@0: void CScrollWindow4::DoTestScroll(const TPoint &aOffset, const TRect &aRect) sl@0: { sl@0: iScrollWin->DrawableWin()->Scroll(aOffset, aRect); sl@0: iOffset+=aOffset; sl@0: } sl@0: sl@0: void CScrollWindow4::DoTestScroll(const TRect &aClipRect, const TPoint &aOffset) sl@0: { sl@0: iScrollWin->DrawableWin()->Scroll(aClipRect, aOffset); sl@0: iOffset+=aOffset; sl@0: } sl@0: sl@0: void CScrollWindow4::DoTestScroll(const TRect &aClipRect, const TPoint &aOffset, const TRect &aRect) sl@0: { sl@0: iScrollWin->DrawableWin()->Scroll(aClipRect, aOffset, aRect); sl@0: iOffset+=aOffset; sl@0: } sl@0: sl@0: CTDrawableWin *CScrollWindow4::ScrollWin() const sl@0: { sl@0: return(iScrollWin); sl@0: } sl@0: sl@0: // sl@0: sl@0: CTScroll::CTScroll(CTestStep* aStep): sl@0: CTWsGraphicsBase(aStep) sl@0: { sl@0: } sl@0: sl@0: CTScroll::~CTScroll() sl@0: { sl@0: BaseWin->SetVisible(ETrue); sl@0: TestWin->SetVisible(ETrue); sl@0: delete iBaseScrollWin; sl@0: delete iTestScrollWin; sl@0: } sl@0: sl@0: void CTScroll::ConstructL() sl@0: { sl@0: BaseWin->SetVisible(EFalse); sl@0: TestWin->SetVisible(EFalse); sl@0: // sl@0: iTest->iState=1; sl@0: TSize screenSize=TheClient->iGroup->Size(); sl@0: TInt winWidth=(screenSize.iWidth/3)-10; sl@0: TInt winHeight=screenSize.iHeight-10; sl@0: TInt winBaseX=(screenSize.iWidth/3); sl@0: if (iMode==0) sl@0: { sl@0: iBaseScrollWin=new(ELeave) CScrollWindow1(); sl@0: iTestScrollWin=new(ELeave) CScrollWindow2(this); sl@0: } sl@0: else sl@0: { sl@0: iBaseScrollWin=new(ELeave) CScrollWindow3(); sl@0: iTestScrollWin=new(ELeave) CScrollWindow4(); sl@0: } sl@0: iWinSize=TSize(winWidth,winHeight); sl@0: iBaseScrollWin->ConstructL(TPoint(winBaseX+5,5),iWinSize); sl@0: iTestScrollWin->ConstructL(TPoint(winBaseX+winWidth+15,5),iWinSize); sl@0: sl@0: iBaseScrollWin->iBlankWin=new(ELeave) CTBlankWindow(); sl@0: iBaseScrollWin->iBlankWin->SetUpL(iBaseScrollWin->ScrollWin()->BaseWin()->InquireOffset(*TheClient->iGroup->GroupWin())+TPoint(winWidth>>2,winHeight>>2),TSize(winWidth>>2,winHeight>>1),TheClient->iGroup,*TheClient->iGc); sl@0: iBaseScrollWin->iBlankWin->BlankWin()->SetShadowHeight(2); sl@0: sl@0: iTestScrollWin->iBlankWin=new(ELeave) CTBlankWindow(); sl@0: iTestScrollWin->iBlankWin->SetUpL(iTestScrollWin->ScrollWin()->BaseWin()->InquireOffset(*TheClient->iGroup->GroupWin())+TPoint(winWidth>>2,winHeight>>2),TSize(winWidth>>2,winHeight>>1),TheClient->iGroup,*TheClient->iGc); sl@0: } sl@0: sl@0: void CTScroll::CheckScrollWindows() sl@0: { sl@0: CheckRect(iBaseScrollWin->ScrollWin(),iTestScrollWin->ScrollWin(),TRect(iBaseScrollWin->ScrollWin()->Size()),_L("CTScroll::CheckScrollWindows()")); sl@0: } sl@0: sl@0: void CTScroll::DoTestScroll(const TPoint &aOffset) sl@0: { sl@0: iTestScrollWin->DoTestScroll(aOffset); sl@0: iBaseScrollWin->DoTestScroll(aOffset); sl@0: } sl@0: sl@0: void CTScroll::DoTestScroll(const TRect &aClipRect, const TPoint &aOffset) sl@0: { sl@0: iTestScrollWin->DoTestScroll(aClipRect,aOffset); sl@0: iBaseScrollWin->DoTestScroll(aClipRect,aOffset); sl@0: } sl@0: sl@0: void CTScroll::DoTestScroll(const TPoint &aOffset, const TRect &aRect) sl@0: { sl@0: iTestScrollWin->DoTestScroll(aOffset,aRect); sl@0: iBaseScrollWin->DoTestScroll(aOffset,aRect); sl@0: } sl@0: sl@0: void CTScroll::DoTestScroll(const TRect &aClipRect, const TPoint &aOffset, const TRect &aRect) sl@0: { sl@0: iTestScrollWin->DoTestScroll(aClipRect,aOffset,aRect); sl@0: iBaseScrollWin->DoTestScroll(aClipRect,aOffset,aRect); sl@0: } sl@0: sl@0: void CTScroll::FinishedRectScrolls() sl@0: { sl@0: iBaseScrollWin->DoInvalidate(); sl@0: } sl@0: sl@0: void CTScroll::CheckOomScroll() sl@0: { sl@0: TheClient->iWs.HeapSetFail(RHeap::ENone,0); sl@0: FinishedRectScrolls(); sl@0: iTestScrollWin->Redraw(); sl@0: iBaseScrollWin->Redraw(); sl@0: // if (iMode!=1) // Out of memory scrolling of backed up windows can not work 100% when out of memory sl@0: // CheckScrollWindows(); // Redraw window code can't check these cases properly yet sl@0: } sl@0: sl@0: void CTScroll::OomScrolling() sl@0: { sl@0: iTestScrollWin->iBlankWin->BaseWin()->SetShadowHeight(0); sl@0: iBaseScrollWin->iBlankWin->BaseWin()->SetShadowHeight(0); sl@0: iTestScrollWin->ScrollWin()->BaseWin()->SetShadowHeight(0); sl@0: iTestScrollWin->Redraw(); sl@0: iBaseScrollWin->Redraw(); sl@0: for(TInt count=1;count<20;count++) sl@0: { sl@0: TheClient->iWs.HeapSetFail(RHeap::EDeterministic,count); sl@0: DoTestScroll(TPoint(50,0)); sl@0: CheckOomScroll(); sl@0: // sl@0: TheClient->iWs.HeapSetFail(RHeap::EDeterministic,count); sl@0: iTestScrollWin->Reset(); sl@0: iBaseScrollWin->Reset(); sl@0: DoTestScroll(TPoint(-6,-14),TRect(20,20,100,50)); sl@0: CheckOomScroll(); sl@0: // sl@0: TheClient->iWs.HeapSetFail(RHeap::EDeterministic,count); sl@0: iTestScrollWin->Reset(); sl@0: iBaseScrollWin->Reset(); sl@0: DoTestScroll(TRect(TPoint(1,1),iWinSize-TSize(1,1)),TPoint(50,0),TRect(10,10,50,50)); sl@0: CheckOomScroll(); sl@0: } sl@0: } sl@0: sl@0: void CTScroll::RunTestCaseL(TInt /*aCurTestCase*/) sl@0: { sl@0: _LIT(KScroll,"Scroll"); sl@0: //if (iTest->iState==0) iTest->iState=22; sl@0: if (iDoCheck) sl@0: { sl@0: if (iMode==1) // The test code does not mimic scrolling to a non-backed up window properly sl@0: { sl@0: TheClient->iWs.Flush(); sl@0: TheClient->iWs.Finish(); sl@0: CheckScrollWindows(); sl@0: } sl@0: iTestScrollWin->Reset(); sl@0: iBaseScrollWin->Reset(); sl@0: TheClient->iWs.Flush(); sl@0: ++iTest->iState; sl@0: iDoCheck=EFalse; sl@0: return; sl@0: } sl@0: ((CTScrollStep*)iStep)->SetTestStepID(KUnknownSYMTestCaseIDName); sl@0: switch(iTest->iState) sl@0: { sl@0: /** sl@0: @SYMTestCaseID GRAPHICS-WSERV-0249 sl@0: sl@0: @SYMDEF DEF081259 sl@0: sl@0: @SYMTestCaseDesc Test window scrolling by different offsets sl@0: sl@0: @SYMTestPriority High sl@0: sl@0: @SYMTestStatus Implemented sl@0: sl@0: @SYMTestActions Pass different offsets for scrolling a window by and sl@0: check the window is scrolled correctly sl@0: sl@0: @SYMTestExpectedResults Window scrolls correctly to offsets sl@0: */ sl@0: case 1: sl@0: ((CTScrollStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0249")); sl@0: //DemoWindowScroll(); sl@0: iTest->LogSubTest(KScroll); sl@0: DoTestScroll(TPoint(6,0)); sl@0: DoTestScroll(TPoint(-6,-14)); sl@0: DoTestScroll(TPoint(-6,-14)); sl@0: DoTestScroll(TPoint(0,10)); sl@0: DoTestScroll(TPoint(0,0)); sl@0: DoTestScroll(TPoint(10,23)); sl@0: break; sl@0: case 2: sl@0: ((CTScrollStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0249")); sl@0: iTest->LogSubTest(KScroll); sl@0: DoTestScroll(TPoint(50,0)); sl@0: break; sl@0: case 3: sl@0: ((CTScrollStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0249")); sl@0: iTest->LogSubTest(KScroll); sl@0: DoTestScroll(TPoint(0,33)); sl@0: break; sl@0: case 4: sl@0: ((CTScrollStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0249")); sl@0: iTest->LogSubTest(KScroll); sl@0: DoTestScroll(TPoint(-10,0)); sl@0: break; sl@0: case 5: sl@0: ((CTScrollStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0249")); sl@0: iTest->LogSubTest(KScroll); sl@0: DoTestScroll(TPoint(0,-13)); sl@0: break; sl@0: case 6: sl@0: ((CTScrollStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0249")); sl@0: iTest->LogSubTest(KScroll); sl@0: DoTestScroll(TPoint(0,0)); sl@0: break; sl@0: case 7: sl@0: ((CTScrollStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0249")); sl@0: iTest->LogSubTest(KScroll); sl@0: DoTestScroll(TPoint(-234,-1400)); sl@0: break; sl@0: case 8: sl@0: ((CTScrollStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0249")); sl@0: iTest->LogSubTest(KScroll); sl@0: DoTestScroll(TPoint(-69,15)); sl@0: break; sl@0: case 9: sl@0: ((CTScrollStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0249")); sl@0: iTest->LogSubTest(KScroll); sl@0: DoTestScroll(TPoint(-234,-1400)); sl@0: DoTestScroll(TPoint(233,1401)); sl@0: break; sl@0: case 10: sl@0: ((CTScrollStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0249")); sl@0: iTest->LogSubTest(KScroll); sl@0: DoTestScroll(TPoint(10,-1)); sl@0: DoTestScroll(TPoint(11,-10)); sl@0: DoTestScroll(TPoint(-5,-40)); sl@0: DoTestScroll(TPoint(0,50)); sl@0: break; sl@0: sl@0: /** sl@0: @SYMTestCaseID GRAPHICS-WSERV-0250 sl@0: sl@0: @SYMDEF DEF081259 sl@0: sl@0: @SYMTestCaseDesc Test window scrolling by different offsets and sl@0: source rectangles sl@0: sl@0: @SYMTestPriority High sl@0: sl@0: @SYMTestStatus Implemented sl@0: sl@0: @SYMTestActions Pass different offsets for scroll a window by and sl@0: different source rectangles. sl@0: Check the window is scrolled correctly sl@0: sl@0: @SYMTestExpectedResults Window scrolls correctly to offsets and source sl@0: rectangles sl@0: */ sl@0: case 11: sl@0: ((CTScrollStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0250")); sl@0: iTest->LogSubTest(KScroll); sl@0: DoTestScroll(TPoint(-6,-14),TRect(20,20,100,50)); sl@0: DoTestScroll(TPoint(-6,-14),TRect(20,20,100,50)); sl@0: DoTestScroll(TPoint(-6,-14),TRect(40,10,130,130)); sl@0: break; sl@0: case 12: sl@0: ((CTScrollStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0250")); sl@0: iTest->LogSubTest(KScroll); sl@0: DoTestScroll(TPoint(10,-1),TRect(20,20,21,21)); sl@0: break; sl@0: case 13: sl@0: ((CTScrollStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0250")); sl@0: iTest->LogSubTest(KScroll); sl@0: DoTestScroll(TPoint(-20,-14),TRect(10,10,10,10)); sl@0: break; sl@0: case 14: sl@0: ((CTScrollStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0250")); sl@0: iTest->LogSubTest(KScroll); sl@0: DoTestScroll(TPoint(-6,-14),TRect(20,20,200,300)); sl@0: DoTestScroll(TPoint(10,-24),TRect(20,20,200,300)); sl@0: DoTestScroll(TPoint(3,12),TRect(20,20,200,300)); sl@0: DoTestScroll(TPoint(-20,19),TRect(20,20,200,300)); sl@0: break; sl@0: case 15: sl@0: ((CTScrollStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0250")); sl@0: iTest->LogSubTest(KScroll); sl@0: DoTestScroll(TPoint(-6,-14),TRect(20000,200000,30000,300000)); sl@0: DoTestScroll(TPoint(10,-24),TRect(20,20,-200,-300)); sl@0: DoTestScroll(TPoint(10,-24),TRect(20,20,-200,300)); sl@0: DoTestScroll(TPoint(10,-24),TRect(20,20,200,-300)); sl@0: DoTestScroll(TPoint(3,12),TRect(-100,-200,1000,2000)); sl@0: DoTestScroll(TPoint(-20,19),TRect(0,0,0,0)); sl@0: break; sl@0: sl@0: /** sl@0: @SYMTestCaseID GRAPHICS-WSERV-0251 sl@0: sl@0: @SYMDEF DEF081259 sl@0: sl@0: @SYMTestCaseDesc Test window scrolling by different offsets and sl@0: clipping rectangles sl@0: sl@0: @SYMTestPriority High sl@0: sl@0: @SYMTestStatus Implemented sl@0: sl@0: @SYMTestActions Pass different offsets for scroll a window by and sl@0: different clipping rectangles. sl@0: Check the window is scrolled correctly sl@0: sl@0: @SYMTestExpectedResults Window scrolls correctly to offsets and clipping sl@0: rectangles sl@0: */ sl@0: case 16: sl@0: ((CTScrollStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0251")); sl@0: iTest->LogSubTest(KScroll); sl@0: DoTestScroll(TRect(10,10,200,200),TPoint(-6,-14)); sl@0: break; sl@0: case 17: sl@0: ((CTScrollStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0251")); sl@0: iTest->LogSubTest(KScroll); sl@0: DoTestScroll(TRect(10,50,210,200),TPoint(10,20)); sl@0: DoTestScroll(TRect(0,0,100,100),TPoint(-22,4)); sl@0: DoTestScroll(TRect(50,50,300,500),TPoint(-5,-2)); sl@0: break; sl@0: case 18: sl@0: ((CTScrollStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0251")); sl@0: iTest->LogSubTest(KScroll); sl@0: DoTestScroll(TRect(-1000,-10000,23456,1111),TPoint(-6,-14)); sl@0: break; sl@0: case 19: sl@0: ((CTScrollStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0251")); sl@0: iTest->LogSubTest(KScroll); sl@0: DoTestScroll(TRect(20,5,198,202),TPoint(-100,1)); sl@0: DoTestScroll(TRect(1,1,200,123),TPoint(2,1)); sl@0: DoTestScroll(TRect(23,23,200,400),TPoint(5,-1)); sl@0: break; sl@0: case 20: sl@0: ((CTScrollStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0251")); sl@0: iTest->LogSubTest(KScroll); sl@0: DoTestScroll(TRect(0,0,0,0),TPoint(-10,1)); sl@0: DoTestScroll(TRect(-1000,1,2000,123),TPoint(2,1)); sl@0: DoTestScroll(TRect(23,-23,200,40000),TPoint(5,-1)); sl@0: DoTestScroll(TRect(-1000,-10000,23456,1111),TPoint(-6,-14)); sl@0: break; sl@0: sl@0: /** sl@0: @SYMTestCaseID GRAPHICS-WSERV-0252 sl@0: sl@0: @SYMDEF DEF081259 sl@0: sl@0: @SYMTestCaseDesc Test window scrolling by different offsets and sl@0: clipping ans source rectangles sl@0: sl@0: @SYMTestPriority High sl@0: sl@0: @SYMTestStatus Implemented sl@0: sl@0: @SYMTestActions Pass different offsets for scroll a window by and sl@0: different clipping and source rectangles. sl@0: Check the window is scrolled correctly sl@0: sl@0: @SYMTestExpectedResults Window scrolls correctly to offsets and source sl@0: and clipping rectangles sl@0: */ sl@0: case 21: sl@0: ((CTScrollStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0252")); sl@0: iTest->LogSubTest(KScroll); sl@0: DoTestScroll(TRect(TPoint(1,1),iWinSize-TSize(1,1)),TPoint(-6,-14),TRect(10,10,50,50)); sl@0: DoTestScroll(TRect(TPoint(1,1),iWinSize-TSize(1,1)),TPoint(16,4),TRect(10,10,50,50)); sl@0: break; sl@0: case 22: sl@0: ((CTScrollStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0252")); sl@0: iTest->LogSubTest(KScroll); sl@0: DoTestScroll(TRect(TPoint(10,100),iWinSize-TSize(0,10)),TPoint(26,22),TRect(iWinSize)); sl@0: DoTestScroll(TRect(iWinSize),TPoint(2,-1),TRect(-10,-10,50,50)); sl@0: break; sl@0: /** sl@0: @SYMTestCaseID GRAPHICS-WSERV-0253 sl@0: sl@0: @SYMDEF DEF081259 sl@0: sl@0: @SYMTestCaseDesc Out of memory window scrolling test sl@0: sl@0: @SYMTestPriority High sl@0: sl@0: @SYMTestStatus Implemented sl@0: sl@0: @SYMTestActions Out of memory window scrolling test sl@0: sl@0: @SYMTestExpectedResults Out of memory scrolling is handled correctly sl@0: */ sl@0: case 23: sl@0: ((CTScrollStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0253")); sl@0: iTest->LogSubTest(KScroll); sl@0: OomScrolling(); sl@0: iTest->CloseAllPanicWindows(); sl@0: ++iTest->iState; sl@0: return; sl@0: case 24: sl@0: ((CTScrollStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0253")); sl@0: ++iTest->iState; sl@0: ++iMode; sl@0: if (iMode==1) sl@0: { sl@0: delete iBaseScrollWin; sl@0: delete iTestScrollWin; sl@0: ConstructL(); sl@0: } sl@0: return; sl@0: default: sl@0: ((CTScrollStep*)iStep)->SetTestStepID(KNotATestSYMTestCaseIDName); sl@0: ((CTScrollStep*)iStep)->CloseTMSGraphicsStep(); sl@0: TestComplete(); sl@0: break; sl@0: } sl@0: ((CTScrollStep*)iStep)->RecordTestResultL(); sl@0: FinishedRectScrolls(); sl@0: iDoCheck=ETrue; sl@0: } sl@0: sl@0: void CTScroll::DemoWindowScrollL() sl@0: //Function to see what scrolling does. sl@0: { sl@0: CBlankWindow* iWin; sl@0: iWin=new(ELeave) CBlankWindow(TRgb(64,64,224)); sl@0: iWin->SetUpL(TPoint(20,10),TSize(120,100),TheClient->iGroup,*TheClient->iGc); sl@0: iWin->BaseWin()->SetRequiredDisplayMode(EColor256); sl@0: iWin->Win()->SetBackgroundColor(TRgb(64,224,64)); sl@0: iWin->RealDraw(ETrue); sl@0: TheClient->WaitForRedrawsToFinish(); sl@0: iWin->DrawableWin()->Scroll(TPoint(8,5),TRect(20,20,100,80)); sl@0: TheClient->Flush(); sl@0: TheClient->WaitForRedrawsToFinish(); sl@0: TheClient->Flush(); sl@0: } sl@0: sl@0: sl@0: __WS_CONSTRUCT_STEP__(Scroll) sl@0: #pragma warning(default : 4710)