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