sl@0: // Copyright (c) 1996-2010 Nokia Corporation and/or its subsidiary(-ies). sl@0: // All rights reserved. sl@0: // This component and the accompanying materials are made available sl@0: // under the terms of "Eclipse Public License v1.0" sl@0: // which accompanies this distribution, and is available sl@0: // at the URL "http://www.eclipse.org/legal/epl-v10.html". sl@0: // sl@0: // Initial Contributors: sl@0: // Nokia Corporation - initial contribution. sl@0: // sl@0: // Contributors: sl@0: // sl@0: // Description: sl@0: // sl@0: sl@0: #include "T_PDRMEM.H" sl@0: sl@0: _LIT( KDriveName, "z:" ); sl@0: _LIT( KEpsonFileName, "epson.pdr" ); sl@0: sl@0: sl@0: class CTPdrMem : public CTGraphicsBase sl@0: { sl@0: public: sl@0: CTPdrMem(CTestStep* aStep); sl@0: protected: sl@0: //from CTGraphicsStep sl@0: virtual void RunTestCaseL(TInt aCurTestCase); sl@0: private: sl@0: void TestNewL(); sl@0: void TestOpenPdrL(); sl@0: void TestCreatePrinterDeviceL(); sl@0: }; sl@0: sl@0: CTPdrMem::CTPdrMem(CTestStep* aStep) : sl@0: CTGraphicsBase(aStep) sl@0: { sl@0: sl@0: } sl@0: sl@0: void CTPdrMem::RunTestCaseL(TInt aCurTestCase) sl@0: { sl@0: TInt ret; sl@0: ((CTPdrMemStep*)iStep)->SetTestStepID(KUnknownSYMTestCaseIDName); sl@0: switch(aCurTestCase) sl@0: { sl@0: case 1: sl@0: /** sl@0: @SYMTestCaseID GRAPHICS-PDRMEM-0001 sl@0: */ sl@0: ((CTPdrMemStep*)iStep)->SetTestStepID(_L("GRAPHICS-PDRMEM-0001")); sl@0: TRAP(ret,TestNewL()); sl@0: TEST(ret==KErrNone); sl@0: break; sl@0: case 2: sl@0: /** sl@0: @SYMTestCaseID GRAPHICS-PDRMEM-0002 sl@0: */ sl@0: ((CTPdrMemStep*)iStep)->SetTestStepID(_L("GRAPHICS-PDRMEM-0002")); sl@0: TRAP(ret,TestOpenPdrL()); sl@0: TEST(ret==KErrNone); sl@0: break; sl@0: case 3: sl@0: /** sl@0: @SYMTestCaseID GRAPHICS-PDRMEM-0003 sl@0: */ sl@0: ((CTPdrMemStep*)iStep)->SetTestStepID(_L("GRAPHICS-PDRMEM-0003")); sl@0: TRAP(ret,TestCreatePrinterDeviceL()); sl@0: TEST(ret==KErrNone); sl@0: break; sl@0: case 4: sl@0: ((CTPdrMemStep*)iStep)->SetTestStepID(KNotATestSYMTestCaseIDName); sl@0: // TRAP(ret,testGetNearestFontToDesignHeightInTwips()); sl@0: // TEST(ret==KErrNone); sl@0: break; sl@0: case 5: sl@0: ((CTPdrMemStep*)iStep)->SetTestStepID(KNotATestSYMTestCaseIDName); sl@0: ((CTPdrMemStep*)iStep)->CloseTMSGraphicsStep(); sl@0: TestComplete(); sl@0: break; sl@0: } sl@0: ((CTPdrMemStep*)iStep)->RecordTestResultL(); sl@0: } sl@0: sl@0: void CTPdrMem::TestNewL() sl@0: { sl@0: INFO_PRINTF1(_L("NewL")); sl@0: sl@0: TInt ret=KErrGeneral; sl@0: CPrinterDriver *driver=NULL; sl@0: TInt failRate=1; sl@0: sl@0: while (ret!=KErrNone) sl@0: { sl@0: __UHEAP_RESET; sl@0: __UHEAP_SETFAIL(RHeap::EDeterministic,failRate); sl@0: __UHEAP_MARK; sl@0: TRAP(ret,driver=CPrinterDriver::NewL()); sl@0: RDebug::Print(_L("driver %d failrate %d\n"),driver,failRate); sl@0: if (ret==KErrNoMemory) sl@0: { sl@0: __UHEAP_MARKEND; sl@0: __UHEAP_RESET; sl@0: TEST(driver==NULL); sl@0: } sl@0: else if(ret==KErrNone) sl@0: { sl@0: delete driver; sl@0: __UHEAP_MARKEND; sl@0: __UHEAP_RESET; sl@0: __UHEAP_SETFAIL(RHeap::ENone,failRate); sl@0: } sl@0: else sl@0: User::Panic(_L("Unknown error"),ret); sl@0: failRate++; sl@0: } sl@0: } sl@0: sl@0: void CTPdrMem::TestOpenPdrL() sl@0: { sl@0: INFO_PRINTF1(_L("OpenPdrL")); sl@0: TInt failRate=1; sl@0: CPrinterDriver* driver=CPrinterDriver::NewL(); sl@0: TFileName filename( KDriveName ); sl@0: filename.Append( KDefaultPrinterDriverPath ); sl@0: filename.Append( KEpsonFileName ); sl@0: driver->OpenPdrL( filename ); sl@0: driver->Close(); sl@0: TInt ret=KErrGeneral; sl@0: sl@0: while (ret!=KErrNone) sl@0: { sl@0: __UHEAP_RESET; sl@0: __UHEAP_SETFAIL(RHeap::EDeterministic,failRate); sl@0: __UHEAP_MARK; sl@0: TRAP(ret,driver->OpenPdrL( filename )); sl@0: RDebug::Print(_L("NumModels %d failrate %d\n"),driver->NumModels(), failRate); sl@0: if (ret==KErrNoMemory) sl@0: { sl@0: driver->Close(); sl@0: __UHEAP_MARKEND; sl@0: __UHEAP_RESET; sl@0: TEST(driver->NumModels()==0); sl@0: } sl@0: else if(ret==KErrNone) sl@0: { sl@0: driver->Close(); sl@0: __UHEAP_MARKEND; sl@0: __UHEAP_RESET; sl@0: __UHEAP_SETFAIL(RHeap::ENone,failRate); sl@0: } sl@0: else sl@0: User::Panic(_L("Unknown error"),ret); sl@0: failRate++; sl@0: } sl@0: sl@0: delete driver; sl@0: sl@0: } sl@0: sl@0: void CTPdrMem::TestCreatePrinterDeviceL() sl@0: { sl@0: sl@0: INFO_PRINTF1(_L("CreatePrinterDeviceL")); sl@0: TInt failRate=1; sl@0: CPrinterDriver* driver=CPrinterDriver::NewL(); sl@0: TFileName filename( KDriveName ); sl@0: filename.Append( KDefaultPrinterDriverPath ); sl@0: filename.Append( KEpsonFileName ); sl@0: driver->OpenPdrL( filename ); sl@0: TPrinterModelEntry entry; sl@0: entry=driver->Model(0); sl@0: RDebug::Print(_L("Drivers: %d\r\n"), driver->NumModels()); sl@0: RDebug::Print(_L("Model %d: %d\r\n"), 0, entry.iUid.iUid); sl@0: CPrinterDevice* device=NULL; sl@0: TInt ret=KErrGeneral; sl@0: sl@0: while(ret!=KErrNone) sl@0: { sl@0: __UHEAP_RESET; sl@0: __UHEAP_SETFAIL(RHeap::EDeterministic,failRate); sl@0: __UHEAP_MARK; sl@0: TRAP(ret,device=driver->CreatePrinterDeviceL(entry.iUid)); sl@0: RDebug::Print(_L("device %d failrate %d\n"),device, failRate); sl@0: if (ret==KErrNoMemory) sl@0: { sl@0: __UHEAP_MARKEND; sl@0: __UHEAP_RESET; sl@0: TEST(device==NULL); sl@0: } sl@0: else if (ret==KErrNone) sl@0: { sl@0: __UHEAP_RESET; sl@0: __UHEAP_SETFAIL(RHeap::ENone,failRate); sl@0: } sl@0: else sl@0: User::Panic(_L("Unknown error"),ret); sl@0: failRate++; sl@0: } sl@0: sl@0: delete driver; sl@0: sl@0: } sl@0: sl@0: //This test is useless. sl@0: //It fails every time when calling device->GetNearestFontToDesignHeightInTwips(). sl@0: //device->GetNearestFontToDesignHeightInTwips() calls CFbsDrvDevice::LoadTypeFaceList() sl@0: //which allocates additional memory for iGenTypefaceFontsType between sl@0: //__UHEAP_MARK and __UHEAP_MARKEND macros. sl@0: //CFbsDrvDevice takes care of deleting iGenTypefaceFontsType in its destructor. sl@0: /* sl@0: LOCAL_C void testGetNearestFontToDesignHeightInTwips() sl@0: { sl@0: sl@0: INFO_PRINTF1(_L("GetNearestFontToDesignHeightInTwips")); sl@0: CPrinterDriver* driver=CPrinterDriver::NewL(); sl@0: driver->OpenPdrL(_L("z:\\system\\printers\\epson.pdr")); sl@0: TInt failRate=1; sl@0: CFont *font; sl@0: TFontSpec spec; sl@0: spec.iTypeface.iName=_L("NewCourier"); sl@0: spec.iHeight=100; sl@0: spec.iFontStyle.SetPosture(EPostureUpright); sl@0: spec.iFontStyle.SetStrokeWeight(EStrokeWeightNormal); sl@0: spec.iFontStyle.SetPrintPosition(EPrintPosNormal); sl@0: TPrinterModelEntry entry; sl@0: entry=driver->Model(0); sl@0: CPrinterDevice* device=NULL; sl@0: TRAPD(ret,device=driver->CreatePrinterDeviceL(entry.iUid)); sl@0: TEST(ret==KErrNone); sl@0: ret=device->GetNearestFontToDesignHeightInTwips((CFont *&) font,spec); sl@0: TEST(ret==KErrNone); sl@0: device->ReleaseFont(font); sl@0: sl@0: ret=KErrGeneral; sl@0: sl@0: while(ret!=KErrNone) sl@0: { sl@0: __UHEAP_RESET; sl@0: __UHEAP_SETFAIL(RHeap::EDeterministic,failRate); sl@0: __UHEAP_MARK; sl@0: font=NULL; sl@0: ret = device->GetNearestFontToDesignHeightInTwips((CFont *&) font,spec); sl@0: INFO_PRINTF2(_L("Font %d failrate %d\n"),font,failRate); sl@0: if (ret==KErrNoMemory) sl@0: { sl@0: __UHEAP_MARKEND; sl@0: __UHEAP_RESET; sl@0: TEST(font==NULL); sl@0: } sl@0: else if (ret==KErrNone) sl@0: { sl@0: // device->ReleaseFont(font); sl@0: font=NULL; sl@0: __UHEAP_RESET; sl@0: } sl@0: else sl@0: User::Panic(_L("Unknown error"),ret); sl@0: failRate++; sl@0: } sl@0: sl@0: sl@0: delete driver; sl@0: sl@0: test.End(); sl@0: } sl@0: */ sl@0: sl@0: //-------------- sl@0: __CONSTRUCT_STEP__(PdrMem) sl@0: