os/graphics/printingservices/printerdriversupport/tps/T_PDRMEM.CPP
author sl
Tue, 10 Jun 2014 14:32:02 +0200
changeset 1 260cb5ec6c19
permissions -rw-r--r--
Update contrib.
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 "T_PDRMEM.H"
sl@0
    17
sl@0
    18
_LIT( KDriveName, "z:" );
sl@0
    19
_LIT( KEpsonFileName, "epson.pdr" );
sl@0
    20
sl@0
    21
sl@0
    22
class CTPdrMem : public CTGraphicsBase
sl@0
    23
	{
sl@0
    24
public:
sl@0
    25
	CTPdrMem(CTestStep* aStep);
sl@0
    26
protected:
sl@0
    27
//from 	CTGraphicsStep
sl@0
    28
	virtual void RunTestCaseL(TInt aCurTestCase);
sl@0
    29
private:
sl@0
    30
	void TestNewL();
sl@0
    31
	void TestOpenPdrL();
sl@0
    32
	void TestCreatePrinterDeviceL();
sl@0
    33
	};
sl@0
    34
sl@0
    35
CTPdrMem::CTPdrMem(CTestStep* aStep) :
sl@0
    36
	CTGraphicsBase(aStep)
sl@0
    37
	{
sl@0
    38
	
sl@0
    39
	}
sl@0
    40
sl@0
    41
void CTPdrMem::RunTestCaseL(TInt aCurTestCase)
sl@0
    42
	{
sl@0
    43
	TInt ret;
sl@0
    44
	((CTPdrMemStep*)iStep)->SetTestStepID(KUnknownSYMTestCaseIDName);
sl@0
    45
	switch(aCurTestCase)
sl@0
    46
		{
sl@0
    47
	case 1:
sl@0
    48
/**
sl@0
    49
@SYMTestCaseID			GRAPHICS-PDRMEM-0001
sl@0
    50
*/
sl@0
    51
		((CTPdrMemStep*)iStep)->SetTestStepID(_L("GRAPHICS-PDRMEM-0001"));
sl@0
    52
		TRAP(ret,TestNewL());
sl@0
    53
		TEST(ret==KErrNone);
sl@0
    54
		break;
sl@0
    55
	case 2:
sl@0
    56
/**
sl@0
    57
@SYMTestCaseID			GRAPHICS-PDRMEM-0002
sl@0
    58
*/
sl@0
    59
		((CTPdrMemStep*)iStep)->SetTestStepID(_L("GRAPHICS-PDRMEM-0002"));
sl@0
    60
		TRAP(ret,TestOpenPdrL());
sl@0
    61
		TEST(ret==KErrNone);
sl@0
    62
		break;
sl@0
    63
	case 3:
sl@0
    64
/**
sl@0
    65
@SYMTestCaseID			GRAPHICS-PDRMEM-0003
sl@0
    66
*/
sl@0
    67
		((CTPdrMemStep*)iStep)->SetTestStepID(_L("GRAPHICS-PDRMEM-0003"));
sl@0
    68
		TRAP(ret,TestCreatePrinterDeviceL());
sl@0
    69
		TEST(ret==KErrNone);
sl@0
    70
		break;
sl@0
    71
	case 4:
sl@0
    72
		((CTPdrMemStep*)iStep)->SetTestStepID(KNotATestSYMTestCaseIDName);
sl@0
    73
//		TRAP(ret,testGetNearestFontToDesignHeightInTwips());
sl@0
    74
//		TEST(ret==KErrNone);
sl@0
    75
		break;
sl@0
    76
	case 5:
sl@0
    77
		((CTPdrMemStep*)iStep)->SetTestStepID(KNotATestSYMTestCaseIDName);
sl@0
    78
		((CTPdrMemStep*)iStep)->CloseTMSGraphicsStep();
sl@0
    79
		TestComplete();
sl@0
    80
		break;
sl@0
    81
		}
sl@0
    82
	((CTPdrMemStep*)iStep)->RecordTestResultL();
sl@0
    83
	}
sl@0
    84
sl@0
    85
void CTPdrMem::TestNewL()
sl@0
    86
	{
sl@0
    87
	INFO_PRINTF1(_L("NewL"));
sl@0
    88
	
sl@0
    89
	TInt ret=KErrGeneral;
sl@0
    90
	CPrinterDriver *driver=NULL;
sl@0
    91
	TInt failRate=1;
sl@0
    92
sl@0
    93
	while (ret!=KErrNone)
sl@0
    94
		{
sl@0
    95
		__UHEAP_RESET;
sl@0
    96
		__UHEAP_SETFAIL(RHeap::EDeterministic,failRate);
sl@0
    97
		__UHEAP_MARK;
sl@0
    98
		TRAP(ret,driver=CPrinterDriver::NewL());
sl@0
    99
		RDebug::Print(_L("driver %d failrate %d\n"),driver,failRate);
sl@0
   100
		if (ret==KErrNoMemory)
sl@0
   101
			{
sl@0
   102
			__UHEAP_MARKEND;
sl@0
   103
			__UHEAP_RESET;
sl@0
   104
			TEST(driver==NULL);
sl@0
   105
			}
sl@0
   106
		else if(ret==KErrNone)
sl@0
   107
			{
sl@0
   108
			delete driver;
sl@0
   109
			__UHEAP_MARKEND;
sl@0
   110
			__UHEAP_RESET;
sl@0
   111
			__UHEAP_SETFAIL(RHeap::ENone,failRate);
sl@0
   112
			}
sl@0
   113
		else
sl@0
   114
			User::Panic(_L("Unknown error"),ret);
sl@0
   115
		failRate++;
sl@0
   116
		}
sl@0
   117
	}
sl@0
   118
sl@0
   119
void CTPdrMem::TestOpenPdrL()
sl@0
   120
	{
sl@0
   121
	INFO_PRINTF1(_L("OpenPdrL"));
sl@0
   122
	TInt failRate=1;
sl@0
   123
	CPrinterDriver* driver=CPrinterDriver::NewL();
sl@0
   124
	TFileName filename( KDriveName );
sl@0
   125
	filename.Append( KDefaultPrinterDriverPath );
sl@0
   126
	filename.Append( KEpsonFileName );
sl@0
   127
	driver->OpenPdrL( filename );
sl@0
   128
	driver->Close();
sl@0
   129
	TInt ret=KErrGeneral;
sl@0
   130
sl@0
   131
	while (ret!=KErrNone)
sl@0
   132
		{
sl@0
   133
		__UHEAP_RESET;
sl@0
   134
		__UHEAP_SETFAIL(RHeap::EDeterministic,failRate);
sl@0
   135
		__UHEAP_MARK;
sl@0
   136
		TRAP(ret,driver->OpenPdrL( filename ));
sl@0
   137
		RDebug::Print(_L("NumModels %d failrate %d\n"),driver->NumModels(), failRate);
sl@0
   138
		if (ret==KErrNoMemory)
sl@0
   139
			{
sl@0
   140
			driver->Close();
sl@0
   141
			__UHEAP_MARKEND;
sl@0
   142
			__UHEAP_RESET;
sl@0
   143
			TEST(driver->NumModels()==0);
sl@0
   144
			}
sl@0
   145
		else if(ret==KErrNone)
sl@0
   146
			{
sl@0
   147
			driver->Close();
sl@0
   148
			__UHEAP_MARKEND;
sl@0
   149
			__UHEAP_RESET;
sl@0
   150
			__UHEAP_SETFAIL(RHeap::ENone,failRate);
sl@0
   151
			}
sl@0
   152
		else
sl@0
   153
			User::Panic(_L("Unknown error"),ret);
sl@0
   154
		failRate++;
sl@0
   155
		}
sl@0
   156
			
sl@0
   157
	delete driver;
sl@0
   158
sl@0
   159
	}
sl@0
   160
sl@0
   161
void CTPdrMem::TestCreatePrinterDeviceL()
sl@0
   162
	{
sl@0
   163
sl@0
   164
	INFO_PRINTF1(_L("CreatePrinterDeviceL"));
sl@0
   165
	TInt failRate=1;
sl@0
   166
	CPrinterDriver* driver=CPrinterDriver::NewL();
sl@0
   167
	TFileName filename( KDriveName );
sl@0
   168
	filename.Append( KDefaultPrinterDriverPath );
sl@0
   169
	filename.Append( KEpsonFileName );
sl@0
   170
	driver->OpenPdrL( filename );
sl@0
   171
	TPrinterModelEntry entry;
sl@0
   172
	entry=driver->Model(0);
sl@0
   173
	RDebug::Print(_L("Drivers: %d\r\n"), driver->NumModels());
sl@0
   174
	RDebug::Print(_L("Model %d: %d\r\n"), 0, entry.iUid.iUid);
sl@0
   175
	CPrinterDevice* device=NULL;
sl@0
   176
	TInt ret=KErrGeneral;
sl@0
   177
sl@0
   178
	while(ret!=KErrNone)
sl@0
   179
		{
sl@0
   180
		__UHEAP_RESET;
sl@0
   181
		__UHEAP_SETFAIL(RHeap::EDeterministic,failRate);
sl@0
   182
		__UHEAP_MARK;
sl@0
   183
		TRAP(ret,device=driver->CreatePrinterDeviceL(entry.iUid));
sl@0
   184
		RDebug::Print(_L("device %d failrate %d\n"),device, failRate);
sl@0
   185
		if (ret==KErrNoMemory)
sl@0
   186
			{
sl@0
   187
			__UHEAP_MARKEND;
sl@0
   188
			__UHEAP_RESET;
sl@0
   189
			TEST(device==NULL);
sl@0
   190
			}
sl@0
   191
		else if	(ret==KErrNone)
sl@0
   192
			{
sl@0
   193
			__UHEAP_RESET;
sl@0
   194
			__UHEAP_SETFAIL(RHeap::ENone,failRate);
sl@0
   195
			}
sl@0
   196
		else
sl@0
   197
			User::Panic(_L("Unknown error"),ret);
sl@0
   198
		failRate++;
sl@0
   199
		}
sl@0
   200
sl@0
   201
	delete driver;
sl@0
   202
  
sl@0
   203
	}
sl@0
   204
sl@0
   205
//This test is useless. 
sl@0
   206
//It fails every time when calling device->GetNearestFontToDesignHeightInTwips().
sl@0
   207
//device->GetNearestFontToDesignHeightInTwips() calls CFbsDrvDevice::LoadTypeFaceList()
sl@0
   208
//which allocates additional memory for iGenTypefaceFontsType between
sl@0
   209
//__UHEAP_MARK and __UHEAP_MARKEND macros.
sl@0
   210
//CFbsDrvDevice takes care of deleting iGenTypefaceFontsType in its destructor.
sl@0
   211
/*
sl@0
   212
LOCAL_C void testGetNearestFontToDesignHeightInTwips()
sl@0
   213
	{
sl@0
   214
sl@0
   215
	INFO_PRINTF1(_L("GetNearestFontToDesignHeightInTwips"));
sl@0
   216
	CPrinterDriver* driver=CPrinterDriver::NewL();
sl@0
   217
	driver->OpenPdrL(_L("z:\\system\\printers\\epson.pdr"));
sl@0
   218
	TInt failRate=1;
sl@0
   219
	CFont *font;
sl@0
   220
	TFontSpec spec;
sl@0
   221
	spec.iTypeface.iName=_L("NewCourier");
sl@0
   222
	spec.iHeight=100;
sl@0
   223
	spec.iFontStyle.SetPosture(EPostureUpright);
sl@0
   224
	spec.iFontStyle.SetStrokeWeight(EStrokeWeightNormal);
sl@0
   225
	spec.iFontStyle.SetPrintPosition(EPrintPosNormal);
sl@0
   226
	TPrinterModelEntry entry;
sl@0
   227
	entry=driver->Model(0);
sl@0
   228
	CPrinterDevice* device=NULL;
sl@0
   229
	TRAPD(ret,device=driver->CreatePrinterDeviceL(entry.iUid));
sl@0
   230
	TEST(ret==KErrNone);
sl@0
   231
	ret=device->GetNearestFontToDesignHeightInTwips((CFont *&) font,spec);
sl@0
   232
	TEST(ret==KErrNone);
sl@0
   233
	device->ReleaseFont(font);
sl@0
   234
sl@0
   235
	ret=KErrGeneral;
sl@0
   236
sl@0
   237
	while(ret!=KErrNone)
sl@0
   238
		{
sl@0
   239
		__UHEAP_RESET;
sl@0
   240
		__UHEAP_SETFAIL(RHeap::EDeterministic,failRate);
sl@0
   241
		__UHEAP_MARK;
sl@0
   242
		font=NULL;
sl@0
   243
		ret = device->GetNearestFontToDesignHeightInTwips((CFont *&) font,spec);
sl@0
   244
		INFO_PRINTF2(_L("Font %d failrate %d\n"),font,failRate);
sl@0
   245
		if (ret==KErrNoMemory)
sl@0
   246
			{
sl@0
   247
			__UHEAP_MARKEND;
sl@0
   248
			__UHEAP_RESET;
sl@0
   249
			TEST(font==NULL);
sl@0
   250
			}
sl@0
   251
		else if	(ret==KErrNone)
sl@0
   252
			{
sl@0
   253
//			device->ReleaseFont(font);
sl@0
   254
			font=NULL;
sl@0
   255
			__UHEAP_RESET;
sl@0
   256
			}
sl@0
   257
		else
sl@0
   258
			User::Panic(_L("Unknown error"),ret);
sl@0
   259
		failRate++;
sl@0
   260
		}
sl@0
   261
sl@0
   262
	
sl@0
   263
	delete driver;
sl@0
   264
sl@0
   265
	test.End();
sl@0
   266
	}
sl@0
   267
*/
sl@0
   268
sl@0
   269
//--------------
sl@0
   270
__CONSTRUCT_STEP__(PdrMem)
sl@0
   271