os/graphics/windowing/windowserver/test/tauto/TDERIVED.CPP
author sl@SLION-WIN7.fritz.box
Fri, 15 Jun 2012 03:10:57 +0200
changeset 0 bde4ae8d615e
permissions -rw-r--r--
First public contribution.
     1 // Copyright (c) 1996-2009 Nokia Corporation and/or its subsidiary(-ies).
     2 // All rights reserved.
     3 // This component and the accompanying materials are made available
     4 // under the terms of "Eclipse Public License v1.0"
     5 // which accompanies this distribution, and is available
     6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
     7 //
     8 // Initial Contributors:
     9 // Nokia Corporation - initial contribution.
    10 //
    11 // Contributors:
    12 //
    13 // Description:
    14 // Test classes derived from Wserv client side classes
    15 // 
    16 //
    17 
    18 /**
    19  @file
    20  @test
    21  @internalComponent - Internal Symbian test code
    22 */
    23 
    24 #include "TDERIVED.H"
    25 
    26 CTDerived::CTDerived(CTestStep* aStep) : CTWsGraphicsBase(aStep)
    27 	{
    28 	}
    29 
    30 CTDerived::~CTDerived()
    31 	{
    32 	}
    33 
    34 //
    35 // CDerivedWindowGc //
    36 //
    37 
    38 CDerivedWindowGc::CDerivedWindowGc(CWsScreenDevice *aDevice) : CWindowGc(aDevice)
    39 	{
    40 	}
    41 
    42 CDerivedWindowGc::~CDerivedWindowGc()
    43 	{
    44 	}
    45 
    46 void CDerivedWindowGc::DrawLine(const TPoint &aPoint1,const TPoint &aPoint2)
    47 	{
    48 	CWindowGc::DrawLine(aPoint1+TPoint(10,10), aPoint2-TPoint(10,10));
    49 	}
    50 
    51 //
    52 // RDerivedSession //
    53 //
    54 
    55 TInt RDerivedSession::ResourceCount()
    56 	{
    57 	return(RWsSession::ResourceCount()+1);
    58 	}
    59 
    60 void RDerivedSession::EnableAutoFlush()
    61 	{
    62 	SetAutoFlush(ETrue);
    63 	}
    64 
    65 //
    66 // Derived windows //
    67 //
    68 
    69 RDerivedBlankWindow::RDerivedBlankWindow()
    70 	{}
    71 RDerivedBlankWindow::RDerivedBlankWindow(RWsSession &aWs) : RBlankWindow(aWs)
    72 	{
    73 	}
    74 
    75 void RDerivedBlankWindow::SetColor(TRgb aColor)
    76 	{
    77 	RBlankWindow::SetColor(~aColor);
    78 	}
    79 
    80 void RDerivedBlankWindow::SetColorGray()
    81 	{
    82 	RBlankWindow::SetColor(TRgb::Gray16(8));
    83 	}
    84 
    85 RDerivedWindow::RDerivedWindow()
    86 	{}
    87 RDerivedWindow::RDerivedWindow(RWsSession &aWs) : RWindow(aWs)
    88 	{
    89 	}
    90 
    91 void RDerivedWindow::SetBackgroundColor(TRgb aColor)
    92 	{
    93 	RWindow::SetBackgroundColor(~aColor);
    94 	}
    95 
    96 void RDerivedWindow::SetBackgroundColorGray()
    97 	{
    98 	RWindow::SetBackgroundColor(TRgb::Gray16(8));
    99 	}
   100 
   101 RDerivedBackedUpWindow::RDerivedBackedUpWindow()
   102 	{}
   103 RDerivedBackedUpWindow::RDerivedBackedUpWindow(RWsSession &aWs) : RBackedUpWindow(aWs)
   104 	{
   105 	}
   106 
   107 TInt RDerivedBackedUpWindow::BitmapHandle()
   108 	{
   109 	MaintainBackup();
   110 	return(RBackedUpWindow::BitmapHandle()+1);
   111 	};
   112 
   113 RDerivedWindowGroup::RDerivedWindowGroup()
   114 	{}
   115 
   116 RDerivedWindowGroup::RDerivedWindowGroup(RWsSession &aWs) : RWindowGroup(aWs)
   117 	{
   118 	}
   119 
   120 TName RDerivedWindowGroup::Name() const
   121 	{
   122 	return(_L("Fred"));
   123 	}
   124 
   125 //
   126 // CDerivedScreenDevice //
   127 //
   128 
   129 CDerivedScreenDevice::CDerivedScreenDevice()
   130 	{}
   131 
   132 CDerivedScreenDevice::CDerivedScreenDevice(RWsSession &aWs) : CWsScreenDevice(aWs)
   133 	{}
   134 
   135 TSize CDerivedScreenDevice::SizeInPixels() const
   136 	{
   137 	TSize size=CWsScreenDevice::SizeInPixels();
   138 	return(TSize(size.iWidth*2,size.iHeight*2));
   139 	}
   140 
   141 //
   142 // Derived Sprite/Pointer cursor //
   143 //
   144 
   145 RDerivedSprite::RDerivedSprite()
   146 	{
   147 	}
   148 
   149 RDerivedSprite::RDerivedSprite(RWsSession &aWs) : RWsSprite(aWs)
   150 	{
   151 	}
   152 
   153 RDerivedPointerCursor::RDerivedPointerCursor()
   154 	{
   155 	}
   156 
   157 RDerivedPointerCursor::RDerivedPointerCursor(RWsSession &aWs) : RWsPointerCursor(aWs)
   158 	{
   159 	}
   160 
   161 //
   162 
   163 void CTDerived::ConstructL()
   164 	{
   165 	TheGc->Activate(*BaseWin->Win());
   166 	TheGc->Clear();
   167 	TheGc->SetBrushColor(TRgb::Gray16(12));
   168 	TheGc->SetBrushStyle(CGraphicsContext::ESolidBrush);
   169 	TheGc->SetPenStyle(CGraphicsContext::ENullPen);
   170 	TheGc->DrawRect(TRect(BaseWin->Win()->Size()));
   171 	TheGc->Deactivate();
   172 	TheGc->Activate(*TestWin->Win());
   173 	TheGc->Clear();
   174 	TheGc->SetBrushColor(TRgb::Gray16(4));
   175 	TheGc->SetBrushStyle(CGraphicsContext::ESolidBrush);
   176 	TheGc->SetPenStyle(CGraphicsContext::ENullPen);
   177 	TheGc->DrawRect(TRect(TestWin->Win()->Size()));
   178 	TheGc->Deactivate();
   179 	}
   180 
   181 void CTDerived::DerivedWindowGcL()
   182 	{
   183 	CDerivedWindowGc *dgc=new(ELeave) CDerivedWindowGc(TheClient->iScreen);
   184 	dgc->Construct();
   185 	dgc->Activate(*TestWin->Win());
   186 	dgc->SetBrushStyle(CGraphicsContext::ESolidBrush);
   187 	TestWin->Win()->BeginRedraw();
   188 	dgc->DrawRect(TRect(TestWin->Win()->Size()));
   189 	dgc->DrawLine(TPoint(0,0),TestWin->Win()->Size().AsPoint());
   190 	TestWin->Win()->EndRedraw();
   191 	dgc->Deactivate();
   192 	delete dgc;
   193 	dgc = NULL;
   194 	CWindowGc *wgc=new(ELeave) CWindowGc(TheClient->iScreen);
   195 	wgc->Construct();
   196 	wgc->Activate(*BaseWin->Win());
   197 	wgc->SetBrushStyle(CGraphicsContext::ESolidBrush);
   198 	BaseWin->Win()->BeginRedraw();
   199 	wgc->DrawRect(TRect(TestWin->Win()->Size()));
   200 	wgc->DrawLine(TPoint(10,10),TestWin->Win()->Size().AsPoint()-TPoint(10,10));
   201 	BaseWin->Win()->EndRedraw();
   202 	wgc->Deactivate();
   203 	delete wgc;
   204 	wgc = NULL;
   205 	CompareWindows(_L("CTDerived::DerivedWindowGcL()"));
   206 	}
   207 
   208 void CTDerived::DerivedSession()
   209 	{
   210 	TInt err;
   211 	err = iDSession.Connect();
   212 	if (err!=KErrNone)
   213 		return;
   214 	
   215 	// use the correct screen
   216 	CWsScreenDevice* screen = NULL;
   217 	TRAP(err, screen = new (ELeave) CWsScreenDevice(iDSession));
   218 	if (err!=KErrNone)
   219 		{
   220 		iDSession.Close();
   221 		return;
   222 		}
   223 	
   224 	if ((err=screen->Construct(iTest->iScreenNumber))!=KErrNone)
   225 		{
   226 		delete screen;
   227 		iDSession.Close();
   228 		return;
   229 		}
   230 
   231 	delete screen;
   232 	
   233 	TInt retVal = iDSession.ResourceCount();	
   234 	TEST(retVal==1);
   235 	if (retVal!=1)
   236 		INFO_PRINTF3(_L("iDSession.ResourceCount() return value - Expected: %d, Actual: %d"), 1, retVal);		
   237 	
   238 	iDSession.SetAutoFlush(EFalse);
   239 	iDSession.EnableAutoFlush();
   240 	
   241 	TBool retBool = iDSession.SetAutoFlush(EFalse);	
   242 	TEST(retBool);
   243 	if (!retBool)
   244 		INFO_PRINTF3(_L("iDSession.SetAutoFlush(EFalse) return value - Expected: %d, Actual: %d"), ETrue, retBool);		
   245 	
   246 	iDSession.Close();
   247 	}
   248 
   249 void CTDerived::DerivedWindows()
   250 	{
   251 //
   252 // Window group
   253 //
   254 	iDGroup=RDerivedWindowGroup(TheClient->iWs);
   255 	iDGroup.Construct(222);
   256 	iDGroup.Name();
   257 //
   258 // Redraw up window
   259 //
   260 	iDRedraw=RDerivedWindow(TheClient->iWs);
   261 	iDRedraw.Construct(iDGroup,12);
   262 	iDRedraw.SetBackgroundColor(TRgb(1,2,3));
   263 	iDRedraw.SetBackgroundColorGray();
   264 	iDRedraw.Close();
   265 //
   266 // Blank up window
   267 //
   268 	iDBlank=RDerivedBlankWindow(TheClient->iWs);
   269 	iDBlank.Construct(iDGroup,123);
   270 	iDBlank.SetColor(TRgb(1,20,50));
   271 	iDBlank.SetColorGray();
   272 	iDBlank.Close();
   273 //
   274 // Backed up window
   275 //
   276 	iDBackedUp=RDerivedBackedUpWindow(TheClient->iWs);
   277 	iDBackedUp.Construct(iDGroup,EGray4,1234);
   278 	iDBackedUp.BitmapHandle();
   279 	iDBackedUp.Close();
   280 //
   281 	iDGroup.Close();
   282 	}
   283 
   284 void CTDerived::DerivedScreenDeviceL()
   285 	{
   286 	CWsScreenDevice *wsd=new(ELeave) CWsScreenDevice(TheClient->iWs);
   287 	User::LeaveIfError(wsd->Construct(iTest->iScreenNumber));
   288 	TSize size1(wsd->SizeInPixels());
   289 	delete wsd;
   290 	CDerivedScreenDevice *dsd=new(ELeave) CDerivedScreenDevice(TheClient->iWs);
   291 	User::LeaveIfError(dsd->Construct(iTest->iScreenNumber));
   292 	TSize size2(dsd->SizeInPixels());
   293 	delete dsd;
   294 	TEST(size2.iWidth==size1.iWidth*2 && size2.iHeight==size1.iHeight*2);
   295 	}
   296 
   297 void CTDerived::DerivedSprite()
   298 	{
   299 	iDSprite=RDerivedSprite(TheClient->iWs);
   300 	TSpriteMember spm;
   301 	spm.iBitmap=NULL;
   302 	spm.iMaskBitmap=NULL;
   303 	spm.iInvertMask=EFalse;
   304 	spm.iOffset=TPoint(0,0);				// Offset from sprites central position
   305 	spm.iInterval=TTimeIntervalMicroSeconds32(1000000);
   306 	iDSprite.Construct(*TestWin->Win(), TPoint(10,10), 0);
   307 	iDSprite.Close();
   308 //
   309 	iDPCursor=RDerivedPointerCursor(TheClient->iWs);
   310 	iDPCursor.Construct(0);
   311 	iDPCursor.Close();
   312 	};
   313 
   314 void CTDerived::RunTestCaseL(TInt /*aCurTestCase*/)
   315 	{
   316 	((CTDerivedStep*)iStep)->SetTestStepID(KUnknownSYMTestCaseIDName);
   317 	switch(++iTest->iState)
   318 		{
   319 /**
   320 @SYMTestCaseID		GRAPHICS-WSERV-0075
   321 
   322 @SYMDEF             DEF081259
   323 
   324 @SYMTestCaseDesc    Test derived window graphics context
   325 
   326 @SYMTestPriority    High
   327 
   328 @SYMTestStatus      Implemented
   329 
   330 @SYMTestActions     Draw using a derived window gc and a normal
   331 					window gc and check the dawing is the same
   332 
   333 @SYMTestExpectedResults Drawing is the same with a derived window gc
   334 */
   335 		case 1:
   336 			((CTDerivedStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0075"));
   337 			iTest->LogSubTest(_L("Derived Gc"));
   338 			DerivedWindowGcL();
   339 			break;
   340 /**
   341 @SYMTestCaseID		GRAPHICS-WSERV-0076
   342 
   343 @SYMDEF             DEF081259
   344 
   345 @SYMTestCaseDesc    Test derived window server session
   346 
   347 @SYMTestPriority    High
   348 
   349 @SYMTestStatus      Implemented
   350 
   351 @SYMTestActions     Test that a derived window server session functions
   352 					the same as a normal window server session
   353 
   354 @SYMTestExpectedResults The derived window server session functions correctly
   355 */
   356 		case 2:
   357 			((CTDerivedStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0076"));
   358 			iTest->LogSubTest(_L("Derived Session"));
   359 			DerivedSession();
   360 			break;
   361 /**
   362 @SYMTestCaseID		GRAPHICS-WSERV-0077
   363 
   364 @SYMDEF             DEF081259
   365 
   366 @SYMTestCaseDesc    Test derived windows and window groups function correctly
   367 
   368 @SYMTestPriority    High
   369 
   370 @SYMTestStatus      Implemented
   371 
   372 @SYMTestActions     Test that a derived windows and window groups function
   373 					the same as the classes they are derived from
   374 
   375 @SYMTestExpectedResults The derived windows and window group functions correctly
   376 */
   377 		case 3:
   378 			((CTDerivedStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0077"));
   379 			iTest->LogSubTest(_L("Derived Blank Window"));
   380 			DerivedWindows();
   381 			break;
   382 /**
   383 @SYMTestCaseID		GRAPHICS-WSERV-0078
   384 
   385 @SYMDEF             DEF081259
   386 
   387 @SYMTestCaseDesc    Test derived screen devices function correctly
   388 
   389 @SYMTestPriority    High
   390 
   391 @SYMTestStatus      Implemented
   392 
   393 @SYMTestActions     Test that a derived screen device function
   394 					the same as the class it is derived from
   395 
   396 @SYMTestExpectedResults The derived screen device functions correctly
   397 */
   398 		case 4:
   399 			((CTDerivedStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0078"));
   400 			iTest->LogSubTest(_L("Derived Screed Device"));
   401 			DerivedScreenDeviceL();
   402 			break;
   403 /**
   404 @SYMTestCaseID		GRAPHICS-WSERV-0079
   405 
   406 @SYMDEF             DEF081259
   407 
   408 @SYMTestCaseDesc    Test derived sprites and pointer cursors function
   409 					correctly
   410 
   411 @SYMTestPriority    High
   412 
   413 @SYMTestStatus      Implemented
   414 
   415 @SYMTestActions     Test that a derived sprite and pointer cursor
   416 					function correctly
   417 
   418 @SYMTestExpectedResults The derived sprite and pointer cursor function 
   419 					correctly
   420 */
   421 		case 5:
   422 			((CTDerivedStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0079"));
   423 			iTest->LogSubTest(_L("Derived Sprites"));
   424 			DerivedSprite();
   425 			break;
   426 		case 6:
   427 			((CTDerivedStep*)iStep)->SetTestStepID(KNotATestSYMTestCaseIDName);
   428 			((CTDerivedStep*)iStep)->CloseTMSGraphicsStep();
   429 			TestComplete();	
   430 			break;
   431 		}
   432 	((CTDerivedStep*)iStep)->RecordTestResultL();
   433 	}
   434 	
   435 __WS_CONSTRUCT_STEP__(Derived)