printingservices/printerdriversupport/tps/T_PDRMEM.CPP
changeset 0 5d03bc08d59c
child 103 2717213c588a
child 110 7f25ef56562d
child 163 bbf46f59e123
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/printingservices/printerdriversupport/tps/T_PDRMEM.CPP	Tue Feb 02 01:47:50 2010 +0200
@@ -0,0 +1,273 @@
+// 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:
+//
+
+#include <prnsetup.h>
+#include "T_PDRMEM.H"
+
+
+_LIT( KDriveName, "z:" );
+_LIT( KEpsonFileName, "epson.pdr" );
+
+
+class CTPdrMem : public CTGraphicsBase
+	{
+public:
+	CTPdrMem(CTestStep* aStep);
+protected:
+//from 	CTGraphicsStep
+	virtual void RunTestCaseL(TInt aCurTestCase);
+private:
+	void TestNewL();
+	void TestOpenPdrL();
+	void TestCreatePrinterDeviceL();
+	};
+
+CTPdrMem::CTPdrMem(CTestStep* aStep) :
+	CTGraphicsBase(aStep)
+	{
+	
+	}
+
+void CTPdrMem::RunTestCaseL(TInt aCurTestCase)
+	{
+	TInt ret;
+	((CTPdrMemStep*)iStep)->SetTestStepID(KUnknownSYMTestCaseIDName);
+	switch(aCurTestCase)
+		{
+	case 1:
+/**
+@SYMTestCaseID			GRAPHICS-PDRMEM-0001
+*/
+		((CTPdrMemStep*)iStep)->SetTestStepID(_L("GRAPHICS-PDRMEM-0001"));
+		TRAP(ret,TestNewL());
+		TEST(ret==KErrNone);
+		break;
+	case 2:
+/**
+@SYMTestCaseID			GRAPHICS-PDRMEM-0002
+*/
+		((CTPdrMemStep*)iStep)->SetTestStepID(_L("GRAPHICS-PDRMEM-0002"));
+		TRAP(ret,TestOpenPdrL());
+		TEST(ret==KErrNone);
+		break;
+	case 3:
+/**
+@SYMTestCaseID			GRAPHICS-PDRMEM-0003
+*/
+		((CTPdrMemStep*)iStep)->SetTestStepID(_L("GRAPHICS-PDRMEM-0003"));
+		TRAP(ret,TestCreatePrinterDeviceL());
+		TEST(ret==KErrNone);
+		break;
+	case 4:
+		((CTPdrMemStep*)iStep)->SetTestStepID(KNotATestSYMTestCaseIDName);
+//		TRAP(ret,testGetNearestFontToDesignHeightInTwips());
+//		TEST(ret==KErrNone);
+		break;
+	case 5:
+		((CTPdrMemStep*)iStep)->SetTestStepID(KNotATestSYMTestCaseIDName);
+		((CTPdrMemStep*)iStep)->CloseTMSGraphicsStep();
+		TestComplete();
+		break;
+		}
+	((CTPdrMemStep*)iStep)->RecordTestResultL();
+	}
+
+void CTPdrMem::TestNewL()
+	{
+	INFO_PRINTF1(_L("NewL"));
+	
+	TInt ret=KErrGeneral;
+	CPrinterDriver *driver=NULL;
+	TInt failRate=1;
+
+	while (ret!=KErrNone)
+		{
+		__UHEAP_RESET;
+		__UHEAP_SETFAIL(RHeap::EDeterministic,failRate);
+		__UHEAP_MARK;
+		TRAP(ret,driver=CPrinterDriver::NewL());
+		RDebug::Print(_L("driver %d failrate %d\n"),driver,failRate);
+		if (ret==KErrNoMemory)
+			{
+			__UHEAP_MARKEND;
+			__UHEAP_RESET;
+			TEST(driver==NULL);
+			}
+		else if(ret==KErrNone)
+			{
+			delete driver;
+			__UHEAP_MARKEND;
+			__UHEAP_RESET;
+			__UHEAP_SETFAIL(RHeap::ENone,failRate);
+			}
+		else
+			User::Panic(_L("Unknown error"),ret);
+		failRate++;
+		}
+	}
+
+void CTPdrMem::TestOpenPdrL()
+	{
+	INFO_PRINTF1(_L("OpenPdrL"));
+	TInt failRate=1;
+	CPrinterDriver* driver=CPrinterDriver::NewL();
+	TFileName filename( KDriveName );
+	filename.Append( KDefaultPrinterDriverPath );
+	filename.Append( KEpsonFileName );
+	driver->OpenPdrL( filename );
+	driver->Close();
+	TInt ret=KErrGeneral;
+
+	while (ret!=KErrNone)
+		{
+		__UHEAP_RESET;
+		__UHEAP_SETFAIL(RHeap::EDeterministic,failRate);
+		__UHEAP_MARK;
+		TRAP(ret,driver->OpenPdrL( filename ));
+		RDebug::Print(_L("NumModels %d failrate %d\n"),driver->NumModels(), failRate);
+		if (ret==KErrNoMemory)
+			{
+			driver->Close();
+			__UHEAP_MARKEND;
+			__UHEAP_RESET;
+			TEST(driver->NumModels()==0);
+			}
+		else if(ret==KErrNone)
+			{
+			driver->Close();
+			__UHEAP_MARKEND;
+			__UHEAP_RESET;
+			__UHEAP_SETFAIL(RHeap::ENone,failRate);
+			}
+		else
+			User::Panic(_L("Unknown error"),ret);
+		failRate++;
+		}
+			
+	delete driver;
+
+	}
+
+void CTPdrMem::TestCreatePrinterDeviceL()
+	{
+
+	INFO_PRINTF1(_L("CreatePrinterDeviceL"));
+	TInt failRate=1;
+	CPrinterDriver* driver=CPrinterDriver::NewL();
+	TFileName filename( KDriveName );
+	filename.Append( KDefaultPrinterDriverPath );
+	filename.Append( KEpsonFileName );
+	driver->OpenPdrL( filename );
+	TPrinterModelEntry entry;
+	entry=driver->Model(0);
+	RDebug::Print(_L("Drivers: %d\r\n"), driver->NumModels());
+	RDebug::Print(_L("Model %d: %d\r\n"), 0, entry.iUid.iUid);
+	CPrinterDevice* device=NULL;
+	TInt ret=KErrGeneral;
+
+	while(ret!=KErrNone)
+		{
+		__UHEAP_RESET;
+		__UHEAP_SETFAIL(RHeap::EDeterministic,failRate);
+		__UHEAP_MARK;
+		TRAP(ret,device=driver->CreatePrinterDeviceL(entry.iUid));
+		RDebug::Print(_L("device %d failrate %d\n"),device, failRate);
+		if (ret==KErrNoMemory)
+			{
+			__UHEAP_MARKEND;
+			__UHEAP_RESET;
+			TEST(device==NULL);
+			}
+		else if	(ret==KErrNone)
+			{
+			__UHEAP_RESET;
+			__UHEAP_SETFAIL(RHeap::ENone,failRate);
+			}
+		else
+			User::Panic(_L("Unknown error"),ret);
+		failRate++;
+		}
+
+	delete driver;
+  
+	}
+
+//This test is useless. 
+//It fails every time when calling device->GetNearestFontToDesignHeightInTwips().
+//device->GetNearestFontToDesignHeightInTwips() calls CFbsDrvDevice::LoadTypeFaceList()
+//which allocates additional memory for iGenTypefaceFontsType between
+//__UHEAP_MARK and __UHEAP_MARKEND macros.
+//CFbsDrvDevice takes care of deleting iGenTypefaceFontsType in its destructor.
+/*
+LOCAL_C void testGetNearestFontToDesignHeightInTwips()
+	{
+
+	INFO_PRINTF1(_L("GetNearestFontToDesignHeightInTwips"));
+	CPrinterDriver* driver=CPrinterDriver::NewL();
+	driver->OpenPdrL(_L("z:\\system\\printers\\epson.pdr"));
+	TInt failRate=1;
+	CFont *font;
+	TFontSpec spec;
+	spec.iTypeface.iName=_L("NewCourier");
+	spec.iHeight=100;
+	spec.iFontStyle.SetPosture(EPostureUpright);
+	spec.iFontStyle.SetStrokeWeight(EStrokeWeightNormal);
+	spec.iFontStyle.SetPrintPosition(EPrintPosNormal);
+	TPrinterModelEntry entry;
+	entry=driver->Model(0);
+	CPrinterDevice* device=NULL;
+	TRAPD(ret,device=driver->CreatePrinterDeviceL(entry.iUid));
+	TEST(ret==KErrNone);
+	ret=device->GetNearestFontToDesignHeightInTwips((CFont *&) font,spec);
+	TEST(ret==KErrNone);
+	device->ReleaseFont(font);
+
+	ret=KErrGeneral;
+
+	while(ret!=KErrNone)
+		{
+		__UHEAP_RESET;
+		__UHEAP_SETFAIL(RHeap::EDeterministic,failRate);
+		__UHEAP_MARK;
+		font=NULL;
+		ret = device->GetNearestFontToDesignHeightInTwips((CFont *&) font,spec);
+		INFO_PRINTF2(_L("Font %d failrate %d\n"),font,failRate);
+		if (ret==KErrNoMemory)
+			{
+			__UHEAP_MARKEND;
+			__UHEAP_RESET;
+			TEST(font==NULL);
+			}
+		else if	(ret==KErrNone)
+			{
+//			device->ReleaseFont(font);
+			font=NULL;
+			__UHEAP_RESET;
+			}
+		else
+			User::Panic(_L("Unknown error"),ret);
+		failRate++;
+		}
+
+	
+	delete driver;
+
+	test.End();
+	}
+*/
+
+//--------------
+__CONSTRUCT_STEP__(PdrMem)
+