os/graphics/fbs/fontandbitmapserver/tfbs/tipctest.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-2010 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
//
sl@0
    15
sl@0
    16
#include "../sfbs/UTILS.H"
sl@0
    17
#include "tipctest.h"
sl@0
    18
#include "fbsdefs.h"
sl@0
    19
#include "fbsmessage.h"
sl@0
    20
sl@0
    21
// Invalid parameters to be passed in SendCommand() calls.
sl@0
    22
const TInt KInvalidParam1 = 963955448;
sl@0
    23
const TInt KInvalidParam2 = 963955368;
sl@0
    24
const TInt KInvalidParam3 = 963955300;
sl@0
    25
const TInt KInvalidParam4 = 963955232;
sl@0
    26
sl@0
    27
CTIPCTest::CTIPCTest(CTestStep* aStep):
sl@0
    28
	CTGraphicsBase(aStep),
sl@0
    29
	iFbs(NULL),
sl@0
    30
	iFs(NULL)
sl@0
    31
	{}
sl@0
    32
sl@0
    33
CTIPCTest::~CTIPCTest()
sl@0
    34
	{
sl@0
    35
	if(iShutdownFbs)
sl@0
    36
		RFbsSession::GetSession()->SendCommand(EFbsMessShutdown);
sl@0
    37
	RFbsSession::Disconnect();
sl@0
    38
	delete iFs;
sl@0
    39
	iHeap->Close();
sl@0
    40
	}
sl@0
    41
sl@0
    42
void CTIPCTest::ConstructL()
sl@0
    43
	{
sl@0
    44
	INFO_PRINTF1(_L("Font/Bitmap Server IPC Messages Testing"));
sl@0
    45
sl@0
    46
	if(RFbsSession::Connect()==KErrNone)
sl@0
    47
		{
sl@0
    48
		RFbsSession::Disconnect();
sl@0
    49
		iShutdownFbs = EFalse;
sl@0
    50
		}
sl@0
    51
	else
sl@0
    52
		{
sl@0
    53
		FbsStartup();
sl@0
    54
		iShutdownFbs = ETrue;
sl@0
    55
		}
sl@0
    56
	RFbsSession::Connect();
sl@0
    57
	iFbs=RFbsSession::GetSession();
sl@0
    58
	
sl@0
    59
	if(!iShutdownFbs)
sl@0
    60
		{
sl@0
    61
		if(iClient.Connect() == KErrNone)
sl@0
    62
			{
sl@0
    63
			iShutdownFbs = EFalse;
sl@0
    64
			}
sl@0
    65
		else
sl@0
    66
			{
sl@0
    67
			iShutdownFbs = ETrue;
sl@0
    68
			}
sl@0
    69
		}
sl@0
    70
		
sl@0
    71
	iHeap=UserHeap::ChunkHeap(NULL,0x10000,0x10000);
sl@0
    72
	TRAPD(ret,iFs=CFontStore::NewL(iHeap));
sl@0
    73
	TEST(ret==KErrNone);
sl@0
    74
	TEST(iFs != NULL);
sl@0
    75
	
sl@0
    76
	}
sl@0
    77
sl@0
    78
void CTIPCTest::RunTestCaseL(TInt aCurTestCase)
sl@0
    79
	{
sl@0
    80
	_LIT(KCaseNumber, "CaseNumber");
sl@0
    81
	
sl@0
    82
	TBool res = iStep->GetIntFromConfig(iStep->ConfigSection(), KCaseNumber, aCurTestCase);
sl@0
    83
	
sl@0
    84
	if(!res)
sl@0
    85
		{
sl@0
    86
		return;
sl@0
    87
		}
sl@0
    88
		
sl@0
    89
	switch(aCurTestCase)
sl@0
    90
		{
sl@0
    91
	/**
sl@0
    92
		@SYMTestCaseID
sl@0
    93
		GRAPHICS-FBSERV-0603
sl@0
    94
sl@0
    95
		@SYMTestCaseDesc
sl@0
    96
		Tests the sending of commands to a FbsSession 
sl@0
    97
		server thru Inter Process Communication. Sends
sl@0
    98
		both valid and invalid commands.
sl@0
    99
sl@0
   100
		@SYMTestActions
sl@0
   101
		Commands sent to the server:
sl@0
   102
		1. EFbsMessShutdown
sl@0
   103
		2. EFbsMessFontHeightInTwips
sl@0
   104
		3. EFbsMessFontHeightInTwips
sl@0
   105
		4. EFbsMessFontHeightInPixels
sl@0
   106
		5. EFbsMessFontHeightInPixels
sl@0
   107
		6. EFbsMessAddFontStoreFile
sl@0
   108
		7. EFbsMessAddFontStoreFile
sl@0
   109
		8. EFbsMessInstallFontStoreFile
sl@0
   110
		9. EFbsMessInstallFontStoreFile
sl@0
   111
		10. EFbsMessInstallFontStoreFile
sl@0
   112
		11. EFbsMessBitmapCreate
sl@0
   113
		12. EFbsMessRasterize
sl@0
   114
		13. EFbsMessFaceAttrib
sl@0
   115
		14. EFbsMessHasCharacter
sl@0
   116
		15. EFbsMessFontNameAlias
sl@0
   117
		16. EFbsMessGetNearestFontToDesignHeightInTwips
sl@0
   118
		17. EFbsMessGetNearestFontToMaxHeightInTwips
sl@0
   119
		18. EFbsMessGetNearestFontToDesignHeightInPixels
sl@0
   120
		19. EFbsMessGetNearestFontToMaxHeightInPixels
sl@0
   121
		20. EFbsMessShapeText
sl@0
   122
		21. EFbsMessShapeDelete
sl@0
   123
		22. EFbsMessSetTwipsHeight
sl@0
   124
		23. EFbsMessGetTwipsHeight
sl@0
   125
		
sl@0
   126
		@SYMTestExpectedResults
sl@0
   127
		Test should pass
sl@0
   128
	*/
sl@0
   129
	case 1:
sl@0
   130
		INFO_PRINTF1(_L("Shutdown"));
sl@0
   131
		iFbs->SendCommand(EFbsMessShutdown);
sl@0
   132
		TestComplete();
sl@0
   133
		break;
sl@0
   134
	case 2:
sl@0
   135
		INFO_PRINTF1(_L("Height in twips with negative typeface index"));
sl@0
   136
		iFbs->SendCommand(EFbsMessFontHeightInTwips, -1);	
sl@0
   137
		TEST(EFalse); // Previous line should have paniced 
sl@0
   138
		TestComplete();
sl@0
   139
		break;	
sl@0
   140
	case 3:
sl@0
   141
		INFO_PRINTF1(_L("Height in twips with invalid size"));
sl@0
   142
		iClient.SendInvalidSize(EFbsMessFontHeightInTwips);
sl@0
   143
		TEST(EFalse);
sl@0
   144
		TestComplete();
sl@0
   145
		break;
sl@0
   146
	case 4:
sl@0
   147
		INFO_PRINTF1(_L("Height in pixels with negative typeface index"));
sl@0
   148
		iFbs->SendCommand(EFbsMessFontHeightInPixels, -1);
sl@0
   149
		TEST(EFalse);
sl@0
   150
		TestComplete();
sl@0
   151
		break;
sl@0
   152
	case 5:
sl@0
   153
		INFO_PRINTF1(_L("Height in pixels with invalid size"));
sl@0
   154
		iClient.SendInvalidSize(EFbsMessFontHeightInPixels);
sl@0
   155
		TEST(EFalse);
sl@0
   156
		TestComplete();
sl@0
   157
		break;
sl@0
   158
	case 6:
sl@0
   159
		INFO_PRINTF1(_L("Add font store file with negative length"));
sl@0
   160
		iFbs->SendCommand(EFbsMessAddFontStoreFile, 0, -1);
sl@0
   161
		TEST(EFalse);
sl@0
   162
		TestComplete();
sl@0
   163
		break;
sl@0
   164
	case 7:
sl@0
   165
		INFO_PRINTF1(_L("Add font store file with huge length"));
sl@0
   166
		iFbs->SendCommand(EFbsMessAddFontStoreFile, KInvalidParam1, KInvalidParam2, KInvalidParam3, KInvalidParam4);
sl@0
   167
		TEST(EFalse);
sl@0
   168
		TestComplete();
sl@0
   169
		break;
sl@0
   170
	case 8:
sl@0
   171
		INFO_PRINTF1(_L("Install font store file with negative length"));
sl@0
   172
		iFbs->SendCommand(EFbsMessInstallFontStoreFile, 0, -1);
sl@0
   173
		TEST(EFalse);
sl@0
   174
		TestComplete();
sl@0
   175
		break;
sl@0
   176
	case 9:
sl@0
   177
		INFO_PRINTF1(_L("Install font store file with huge length"));
sl@0
   178
		iFbs->SendCommand(EFbsMessInstallFontStoreFile, KInvalidParam1, KInvalidParam2, KInvalidParam3, KInvalidParam4);
sl@0
   179
		TEST(EFalse);
sl@0
   180
		TestComplete();
sl@0
   181
		break;
sl@0
   182
	case 10:
sl@0
   183
		INFO_PRINTF1(_L("Remove font store file with active references"));
sl@0
   184
		iFbs->SendCommand(EFbsMessRemoveFontStoreFile, 11);
sl@0
   185
		// With PDEF121246 (INC120690) fix in place, this test will always pass. Without the fix there will be a KERN 4 panic.
sl@0
   186
		TEST(ETrue); 
sl@0
   187
		TestComplete();
sl@0
   188
		break;
sl@0
   189
	case 11:
sl@0
   190
		INFO_PRINTF1(_L("Bitmap create with invalid display mode"));
sl@0
   191
		iClient.SendInvalidDisplayMode(EFbsMessBitmapCreate);
sl@0
   192
		TEST(EFalse);
sl@0
   193
		TestComplete();
sl@0
   194
		break;
sl@0
   195
	case 12:
sl@0
   196
		INFO_PRINTF1(_L("Rasterize with invalid bitmap handle"));
sl@0
   197
		iFbs->SendCommand(EFbsMessRasterize, KInvalidParam1, KInvalidParam2, KInvalidParam3, KInvalidParam4);
sl@0
   198
		TEST(EFalse);
sl@0
   199
		TestComplete();
sl@0
   200
		break;
sl@0
   201
	case 13:
sl@0
   202
		INFO_PRINTF1(_L("Face Attribute with invalid bitmap handle"));
sl@0
   203
		iFbs->SendCommand(EFbsMessFaceAttrib, KInvalidParam1, KInvalidParam2, KInvalidParam3, KInvalidParam4);
sl@0
   204
		TEST(EFalse);
sl@0
   205
		TestComplete();
sl@0
   206
		break;
sl@0
   207
	case 14:
sl@0
   208
		INFO_PRINTF1(_L("Has Character with invalid bitmap handle"));
sl@0
   209
		iFbs->SendCommand(EFbsMessHasCharacter, KInvalidParam1, KInvalidParam2, KInvalidParam3, KInvalidParam4);
sl@0
   210
		TEST(EFalse);
sl@0
   211
		TestComplete();
sl@0
   212
		break;
sl@0
   213
	case 15:
sl@0
   214
		INFO_PRINTF1(_L("Name Alias with huge alias name length"));
sl@0
   215
		iFbs->SendCommand(EFbsMessFontNameAlias, KInvalidParam1, KInvalidParam2, KInvalidParam3, KInvalidParam4);
sl@0
   216
		TEST(EFalse);
sl@0
   217
		TestComplete();
sl@0
   218
		break;
sl@0
   219
	case 16:
sl@0
   220
		INFO_PRINTF1(_L("Get nearest font to design height in twips with invalid typeface name length"));
sl@0
   221
		iClient.SendInvalidNameLength(EFbsMessGetNearestFontToDesignHeightInTwips);
sl@0
   222
		TEST(EFalse);
sl@0
   223
		TestComplete();
sl@0
   224
		break;
sl@0
   225
	case 17:
sl@0
   226
		INFO_PRINTF1(_L("Get nearest font to max height in twips with invalid typeface name length"));
sl@0
   227
		iClient.SendInvalidNameLength(EFbsMessGetNearestFontToMaxHeightInTwips);
sl@0
   228
		TEST(EFalse);
sl@0
   229
		TestComplete();
sl@0
   230
		break;
sl@0
   231
	case 18:
sl@0
   232
		INFO_PRINTF1(_L("Get nearest font to design height in pixels with invalid typeface name length"));
sl@0
   233
		iClient.SendInvalidNameLength(EFbsMessGetNearestFontToDesignHeightInPixels);
sl@0
   234
		TEST(EFalse);
sl@0
   235
		TestComplete();
sl@0
   236
		break;
sl@0
   237
	case 19:
sl@0
   238
		INFO_PRINTF1(_L("Get nearest font to max height in pixels with invalid typeface name length"));
sl@0
   239
		iClient.SendInvalidNameLength(EFbsMessGetNearestFontToMaxHeightInPixels);
sl@0
   240
		TEST(EFalse);
sl@0
   241
		TestComplete();
sl@0
   242
		break;
sl@0
   243
	case 20:
sl@0
   244
		INFO_PRINTF1(_L("Shape text with invalid bitmap font handle"));
sl@0
   245
		iFbs->SendCommand(EFbsMessShapeText, KInvalidParam1, KInvalidParam2, KInvalidParam3, KInvalidParam4);
sl@0
   246
		TEST(EFalse);
sl@0
   247
		TestComplete();
sl@0
   248
		break;
sl@0
   249
	case 21:
sl@0
   250
		INFO_PRINTF1(_L("Shape delete with invalid bitmap font handle"));
sl@0
   251
		iFbs->SendCommand(EFbsMessShapeDelete, KInvalidParam1, KInvalidParam2, KInvalidParam3, KInvalidParam4);
sl@0
   252
		TEST(EFalse);
sl@0
   253
		TestComplete();
sl@0
   254
		break;
sl@0
   255
	case 22:
sl@0
   256
		INFO_PRINTF1(_L("Set twips height with invalid font handle"));
sl@0
   257
		iFbs->SendCommand(EFbsMessSetTwipsHeight, KInvalidParam1, KInvalidParam2, KInvalidParam3, KInvalidParam4);
sl@0
   258
		TEST(EFalse);
sl@0
   259
		TestComplete();
sl@0
   260
		break;
sl@0
   261
	case 23:
sl@0
   262
		INFO_PRINTF1(_L("Get twips height with invalid font handle"));
sl@0
   263
		iFbs->SendCommand(EFbsMessGetTwipsHeight, KInvalidParam1, KInvalidParam2, KInvalidParam3, KInvalidParam4);
sl@0
   264
		TEST(EFalse);
sl@0
   265
		TestComplete();
sl@0
   266
		break;	
sl@0
   267
	case 24:
sl@0
   268
		/**
sl@0
   269
			@SYMTestCaseID	GRAPHICS-FBSERV-0630
sl@0
   270
sl@0
   271
			@SYMTestCaseDesc
sl@0
   272
			Tests that invalid font handle to EFbsMessGetGlyphs causes panic
sl@0
   273
sl@0
   274
			@SYMTestExpectedResults
sl@0
   275
			Client should panic with FBSERV -8
sl@0
   276
		*/
sl@0
   277
		INFO_PRINTF1(_L("Get glyphs from glyph atlas with invalid font handle"));
sl@0
   278
		iFbs->SendCommand(EFbsMessGetGlyphs, KInvalidParam1, KInvalidParam2, KInvalidParam3, KInvalidParam4);
sl@0
   279
		TEST(EFalse);
sl@0
   280
		TestComplete();
sl@0
   281
		break;
sl@0
   282
	case 25:
sl@0
   283
		/**
sl@0
   284
			@SYMTestCaseID	GRAPHICS-FBSERV-0670
sl@0
   285
sl@0
   286
			@SYMTestCaseDesc
sl@0
   287
			Tests that invalid font handle to EFbsMessGetGlyphMetrics causes panic
sl@0
   288
sl@0
   289
			@SYMTestExpectedResults
sl@0
   290
			Client should panic with FBSERV -8
sl@0
   291
		*/
sl@0
   292
		INFO_PRINTF1(_L("Get glyph metrics with invalid font handle"));
sl@0
   293
		iFbs->SendCommand(EFbsMessGetGlyphMetrics, KInvalidParam1, KInvalidParam2, KInvalidParam3, KInvalidParam4);
sl@0
   294
		TEST(EFalse);
sl@0
   295
		TestComplete();
sl@0
   296
		break;
sl@0
   297
	/**
sl@0
   298
		@SYMTestCaseID
sl@0
   299
		TI18N-GDI-CIT-4086
sl@0
   300
sl@0
   301
		@SYMTestCaseDesc
sl@0
   302
		Test if FBS can handle invalid messages correctly
sl@0
   303
		and panic the client as needed.
sl@0
   304
sl@0
   305
		@SYMTestActions
sl@0
   306
		26. EFbsMessGetFontTable
sl@0
   307
		27. EFbsMessReleaseFontTable
sl@0
   308
		28. EFbsMessGetGlyphOutline
sl@0
   309
		29. EFbsMessReleaseGlyphOutline
sl@0
   310
	
sl@0
   311
		@SYMTestExpectedResults
sl@0
   312
		Test should pass
sl@0
   313
	*/
sl@0
   314
	case 26:
sl@0
   315
		INFO_PRINTF1(_L("Get Font Table with wrong msg"));
sl@0
   316
		iFbs->SendCommand(EFbsMessGetFontTable, KInvalidParam1, KInvalidParam2, KInvalidParam3, KInvalidParam4);
sl@0
   317
		TEST(EFalse); 
sl@0
   318
		TestComplete();
sl@0
   319
		break;
sl@0
   320
	case 27:
sl@0
   321
		INFO_PRINTF1(_L("Release Font Table with wrong msg"));
sl@0
   322
		iFbs->SendCommand(EFbsMessReleaseFontTable, KInvalidParam1, KInvalidParam2, KInvalidParam3, KInvalidParam4);
sl@0
   323
		TEST(EFalse); 
sl@0
   324
		TestComplete();
sl@0
   325
		break;
sl@0
   326
	case 28:
sl@0
   327
		INFO_PRINTF1(_L("Get Glyph outline with wrong msg"));
sl@0
   328
		iFbs->SendCommand(EFbsMessGetGlyphOutline,KInvalidParam1, KInvalidParam2, KInvalidParam3, KInvalidParam4);
sl@0
   329
		TEST(EFalse); 
sl@0
   330
		TestComplete();
sl@0
   331
		break;
sl@0
   332
	case 29:
sl@0
   333
		INFO_PRINTF1(_L("Release Glyph outline with wrong msg"));
sl@0
   334
		iFbs->SendCommand(EFbsMessReleaseGlyphOutline, KInvalidParam1, KInvalidParam2, KInvalidParam3, KInvalidParam4);
sl@0
   335
		TEST(EFalse); 
sl@0
   336
		TestComplete();
sl@0
   337
		break;
sl@0
   338
	case 30:
sl@0
   339
		TestComplete();
sl@0
   340
		break;
sl@0
   341
		}
sl@0
   342
	}
sl@0
   343
	
sl@0
   344
RIPCTestFbservClient::RIPCTestFbservClient()
sl@0
   345
	{
sl@0
   346
	
sl@0
   347
	}
sl@0
   348
	
sl@0
   349
RIPCTestFbservClient::~RIPCTestFbservClient()
sl@0
   350
	{
sl@0
   351
	
sl@0
   352
	}
sl@0
   353
	
sl@0
   354
TInt RIPCTestFbservClient::Connect(void)
sl@0
   355
	{
sl@0
   356
	_LIT(KFbServerName, "!Fontbitmapserver");
sl@0
   357
	TVersion version(0, 0, 0);
sl@0
   358
	TInt ret = CreateSession(KFbServerName, version);
sl@0
   359
	return ret;
sl@0
   360
	}
sl@0
   361
	
sl@0
   362
void RIPCTestFbservClient::SendInvalidSize(TInt aFunctionNumber)
sl@0
   363
	{
sl@0
   364
	TPckgBuf<TSize> size;
sl@0
   365
	size().iHeight = 0;
sl@0
   366
	size().iWidth = 0;
sl@0
   367
	TIpcArgs args;
sl@0
   368
	args.Set(0, 1);
sl@0
   369
	args.Set(2, &size);
sl@0
   370
	
sl@0
   371
	SendReceive(aFunctionNumber, args);
sl@0
   372
	}
sl@0
   373
	
sl@0
   374
void RIPCTestFbservClient::SendInvalidDisplayMode(TInt aFunctionNumber)
sl@0
   375
	{
sl@0
   376
	TPckgBuf<TBmpSpec> bmpSpec;
sl@0
   377
	bmpSpec().iDispMode = EColorLast;
sl@0
   378
	TIpcArgs args = TIpcArgs();
sl@0
   379
	args.Set(0, &bmpSpec);
sl@0
   380
	
sl@0
   381
	SendReceive(aFunctionNumber, args);
sl@0
   382
	}
sl@0
   383
sl@0
   384
void RIPCTestFbservClient::SendInvalidNameLength(TInt aFunctionNumber)	
sl@0
   385
	{
sl@0
   386
	TIpcArgs args = TIpcArgs();
sl@0
   387
	_LIT(KDefault, "Default");
sl@0
   388
	TInt size = 7;
sl@0
   389
	HBufC8 *buf1 = HBufC8::NewLC(size);
sl@0
   390
	TPtr8 ptr1 = buf1->Des();
sl@0
   391
	ptr1.Copy(KDefault);
sl@0
   392
	CleanupStack::PopAndDestroy(buf1);
sl@0
   393
	args.Set(0, &ptr1);	
sl@0
   394
	SendReceive(aFunctionNumber, args);
sl@0
   395
	}
sl@0
   396
sl@0
   397
sl@0
   398
//--------------
sl@0
   399
__CONSTRUCT_STEP__(IPCTest)
sl@0
   400