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