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