|
1 // Copyright (c) 2006-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 /** |
|
17 @file |
|
18 @internalComponent - Internal Symbian test code |
|
19 */ |
|
20 |
|
21 |
|
22 #include <e32keys.h> |
|
23 #include <basched.h> |
|
24 #include <coemain.h> |
|
25 #include <coeaui.h> |
|
26 #include <gulutil.h> |
|
27 |
|
28 #include "TEgulAlignmentStep.h" |
|
29 |
|
30 |
|
31 |
|
32 CTestAlignmentUi::CTestAlignmentUi(CTmsTestStep* aStep) : |
|
33 CTestCoeAppUi(aStep) |
|
34 {} |
|
35 |
|
36 CTestAlignmentUi::~CTestAlignmentUi() |
|
37 { |
|
38 } |
|
39 |
|
40 void CTestAlignmentUi::ConstructL() |
|
41 { |
|
42 CTestCoeAppUi::ConstructL(); |
|
43 AutoTestManager().StartAutoTest(); |
|
44 } |
|
45 |
|
46 |
|
47 void CTestAlignmentUi::RunTestStepL(TInt aStep) |
|
48 { |
|
49 TGulAlignment align(EHLeftVTop); |
|
50 |
|
51 switch(aStep) |
|
52 { |
|
53 case 1: |
|
54 // Check that SetAbsoluteHAlignment() / HasAbsoluteHAlignment() works |
|
55 INFO_PRINTF1(_L("Test SetAbsoluteHAlignment() / HasAbsoluteHAlignment()")); |
|
56 TEST(!align.HasAbsoluteHAlignment()); // Make sure default value is false |
|
57 |
|
58 align.SetAbsoluteHAlignment(ETrue); // Set to true |
|
59 TEST(align.HasAbsoluteHAlignment()); // Verify true |
|
60 |
|
61 align.SetAbsoluteHAlignment(EFalse); // Set to false |
|
62 TEST(!align.HasAbsoluteHAlignment()); // Verify false |
|
63 |
|
64 // Check the operation of the implicitly called TGulAlignment(TGulAlignmentValue) constructor |
|
65 align.SetAbsoluteHAlignment(ETrue); // Set to true |
|
66 align = EHRightVBottom; // Change alignement to lower right... |
|
67 TEST(!align.HasAbsoluteHAlignment()); // ...and verify that absolution is reset to false |
|
68 break; |
|
69 case 2: |
|
70 // Check that HAlignment() swapps left and right for RightToLeft scripts, unless absolute alignment is set |
|
71 INFO_PRINTF1(_L("Test HAlignment(TBidiText::TDirectionality)")); |
|
72 |
|
73 align = EHLeftVCenter; |
|
74 TEST(align.HAlignment(TBidiText::ELeftToRight) == EHLeft); // no swapping |
|
75 TEST(align.HAlignment(TBidiText::ERightToLeft) == EHRight); // swap! |
|
76 align.SetAbsoluteHAlignment(ETrue); |
|
77 TEST(align.HAlignment(TBidiText::ELeftToRight) == EHLeft); // no swapping |
|
78 TEST(align.HAlignment(TBidiText::ERightToLeft) == EHLeft); // abs, no swapping |
|
79 |
|
80 align = EHCenterVCenter; |
|
81 TEST(align.HAlignment(TBidiText::ELeftToRight) == EHCenter); |
|
82 TEST(align.HAlignment(TBidiText::ERightToLeft) == EHCenter); |
|
83 align.SetAbsoluteHAlignment(ETrue); |
|
84 TEST(align.HAlignment(TBidiText::ELeftToRight) == EHCenter); |
|
85 TEST(align.HAlignment(TBidiText::ERightToLeft) == EHCenter); |
|
86 |
|
87 align = EHRightVCenter; |
|
88 TEST(align.HAlignment(TBidiText::ELeftToRight) == EHRight); // no swapping |
|
89 TEST(align.HAlignment(TBidiText::ERightToLeft) == EHLeft); // swap! |
|
90 align.SetAbsoluteHAlignment(ETrue); |
|
91 TEST(align.HAlignment(TBidiText::ELeftToRight) == EHRight); // no swapping |
|
92 TEST(align.HAlignment(TBidiText::ERightToLeft) == EHRight); // abs, no swapping |
|
93 break; |
|
94 case 3: |
|
95 // Check the operator() allows comparation between TGulAlignment value (left side) and TGulAlignment (right side) |
|
96 INFO_PRINTF1(_L("Test TAlignment::operator()")); |
|
97 align = EHCenterVCenter; |
|
98 TEST(!align.HasAbsoluteHAlignment()); // Verify false |
|
99 |
|
100 TEST(EHCenterVCenter == align); // Test operator() with absolute alignment flag not set |
|
101 align.SetAbsoluteHAlignment(ETrue); // Set absolute alignment flag |
|
102 TEST(EHCenterVCenter == align); // Test operator() with absolute alignment flag set |
|
103 break; |
|
104 case 4: |
|
105 // Check that setting the horizontal alignment resets the absolute alignment flag |
|
106 align.SetAbsoluteHAlignment(ETrue); // Set absolute horizontal alignment |
|
107 align.SetHAlignment(EHLeft); // Set the alignment |
|
108 TEST(align.HAlignment() == EHLeft); // Check set operation worked |
|
109 TEST(!align.HasAbsoluteHAlignment()); // Check set operation reset the absolute alignment flag as expected |
|
110 |
|
111 align.SetAbsoluteHAlignment(ETrue); // Same as above |
|
112 align.SetHAlignment(EHCenter); |
|
113 TEST(align.HAlignment() == EHCenter); |
|
114 TEST(!align.HasAbsoluteHAlignment()); |
|
115 |
|
116 align.SetAbsoluteHAlignment(ETrue); // Same as above |
|
117 align.SetHAlignment(EHRight); |
|
118 TEST(align.HAlignment() == EHRight); |
|
119 TEST(!align.HasAbsoluteHAlignment()); |
|
120 break; |
|
121 case 5: |
|
122 { |
|
123 // Check that InnerTopLeft() and InnerRect() does not swap alignment for the inner object |
|
124 // even though absolute horizontal alignment is ON |
|
125 const TRect outerRect(10,10,110,110); |
|
126 const TSize innerSize(20,20); |
|
127 TPoint innerTopLeft; |
|
128 TRect innerRect; |
|
129 |
|
130 align.SetHAlignment(EHLeft); |
|
131 innerTopLeft = align.InnerTopLeft(outerRect, innerSize); |
|
132 TEST( innerTopLeft == TPoint(10,10) ); |
|
133 innerRect = align.InnerRect(outerRect, innerSize); |
|
134 TEST( innerRect == TRect(10,10,30,30) ); |
|
135 |
|
136 align.SetHAlignment(EHCenter); |
|
137 innerTopLeft = align.InnerTopLeft(outerRect, innerSize); |
|
138 TEST( innerTopLeft == TPoint(50,10) ); |
|
139 innerRect = align.InnerRect(outerRect, innerSize); |
|
140 TEST( innerRect == TRect(50,10,70,30) ); |
|
141 |
|
142 align.SetHAlignment(EHRight); |
|
143 innerTopLeft = align.InnerTopLeft(outerRect, innerSize); |
|
144 TEST( innerTopLeft == TPoint(90,10) ); |
|
145 innerRect = align.InnerRect(outerRect, innerSize); |
|
146 TEST( innerRect == TRect(90,10,110,30) ); |
|
147 |
|
148 |
|
149 align.SetVAlignment(EVCenter); |
|
150 |
|
151 |
|
152 align.SetHAlignment(EHLeft); |
|
153 innerTopLeft = align.InnerTopLeft(outerRect, innerSize); |
|
154 TEST( innerTopLeft == TPoint(10,50) ); |
|
155 innerRect = align.InnerRect(outerRect, innerSize); |
|
156 TEST( innerRect == TRect(10,50,30,70) ); |
|
157 |
|
158 align.SetHAlignment(EHCenter); |
|
159 innerTopLeft = align.InnerTopLeft(outerRect, innerSize); |
|
160 TEST( innerTopLeft == TPoint(50,50) ); |
|
161 innerRect = align.InnerRect(outerRect, innerSize); |
|
162 TEST( innerRect == TRect(50,50,70,70) ); |
|
163 |
|
164 align.SetHAlignment(EHRight); |
|
165 innerTopLeft = align.InnerTopLeft(outerRect, innerSize); |
|
166 TEST( innerTopLeft == TPoint(90,50) ); |
|
167 innerRect = align.InnerRect(outerRect, innerSize); |
|
168 TEST( innerRect == TRect(90,50,110,70) ); |
|
169 |
|
170 |
|
171 align.SetVAlignment(EVBottom); |
|
172 |
|
173 |
|
174 align.SetHAlignment(EHLeft); |
|
175 innerTopLeft = align.InnerTopLeft(outerRect, innerSize); |
|
176 TEST( innerTopLeft == TPoint(10,90) ); |
|
177 innerRect = align.InnerRect(outerRect, innerSize); |
|
178 TEST( innerRect == TRect(10,90,30,110) ); |
|
179 |
|
180 align.SetHAlignment(EHCenter); |
|
181 innerTopLeft = align.InnerTopLeft(outerRect, innerSize); |
|
182 TEST( innerTopLeft == TPoint(50,90) ); |
|
183 innerRect = align.InnerRect(outerRect, innerSize); |
|
184 TEST( innerRect == TRect(50,90,70,110) ); |
|
185 |
|
186 align.SetHAlignment(EHRight); |
|
187 innerTopLeft = align.InnerTopLeft(outerRect, innerSize); |
|
188 TEST( innerTopLeft == TPoint(90,90) ); |
|
189 innerRect = align.InnerRect(outerRect, innerSize); |
|
190 TEST( innerRect == TRect(90,90,110,110) ); |
|
191 } |
|
192 break; |
|
193 |
|
194 case 6: |
|
195 { |
|
196 // Check that InnerTopLeft(TBidiText::TDirectionality) and InnerRect(TBidiText::TDirectionality) |
|
197 // does NOT swap alignment for the inner object when scrip directionality is RightToLeft (only) |
|
198 // when absolute alignment is ON |
|
199 const TRect outerRect(10,10,110,110); |
|
200 const TSize innerSize(20,20); |
|
201 TPoint innerTopLeft; |
|
202 TRect innerRect; |
|
203 |
|
204 align.SetHAlignment(EHLeft); |
|
205 align.SetAbsoluteHAlignment(ETrue); |
|
206 innerTopLeft = align.InnerTopLeft(outerRect, innerSize); |
|
207 TEST( innerTopLeft == TPoint(10,10) ); |
|
208 innerRect = align.InnerRect(outerRect, innerSize); |
|
209 TEST( innerRect == TRect(10,10,30,30) ); |
|
210 |
|
211 align.SetHAlignment(EHCenter); |
|
212 align.SetAbsoluteHAlignment(ETrue); |
|
213 innerTopLeft = align.InnerTopLeft(outerRect, innerSize); |
|
214 TEST( innerTopLeft == TPoint(50,10) ); |
|
215 innerRect = align.InnerRect(outerRect, innerSize); |
|
216 TEST( innerRect == TRect(50,10,70,30) ); |
|
217 |
|
218 align.SetHAlignment(EHRight); |
|
219 align.SetAbsoluteHAlignment(ETrue); |
|
220 innerTopLeft = align.InnerTopLeft(outerRect, innerSize); |
|
221 TEST( innerTopLeft == TPoint(90,10) ); |
|
222 innerRect = align.InnerRect(outerRect, innerSize); |
|
223 TEST( innerRect == TRect(90,10,110,30) ); |
|
224 |
|
225 |
|
226 align.SetVAlignment(EVCenter); |
|
227 |
|
228 |
|
229 align.SetHAlignment(EHLeft); |
|
230 align.SetAbsoluteHAlignment(ETrue); |
|
231 innerTopLeft = align.InnerTopLeft(outerRect, innerSize); |
|
232 TEST( innerTopLeft == TPoint(10,50) ); |
|
233 innerRect = align.InnerRect(outerRect, innerSize); |
|
234 TEST( innerRect == TRect(10,50,30,70) ); |
|
235 |
|
236 align.SetHAlignment(EHCenter); |
|
237 align.SetAbsoluteHAlignment(ETrue); |
|
238 innerTopLeft = align.InnerTopLeft(outerRect, innerSize); |
|
239 TEST( innerTopLeft == TPoint(50,50) ); |
|
240 innerRect = align.InnerRect(outerRect, innerSize); |
|
241 TEST( innerRect == TRect(50,50,70,70) ); |
|
242 |
|
243 align.SetHAlignment(EHRight); |
|
244 align.SetAbsoluteHAlignment(ETrue); |
|
245 innerTopLeft = align.InnerTopLeft(outerRect, innerSize); |
|
246 TEST( innerTopLeft == TPoint(90,50) ); |
|
247 innerRect = align.InnerRect(outerRect, innerSize); |
|
248 TEST( innerRect == TRect(90,50,110,70) ); |
|
249 |
|
250 |
|
251 align.SetVAlignment(EVBottom); |
|
252 |
|
253 |
|
254 align.SetHAlignment(EHLeft); |
|
255 align.SetAbsoluteHAlignment(ETrue); |
|
256 innerTopLeft = align.InnerTopLeft(outerRect, innerSize); |
|
257 TEST( innerTopLeft == TPoint(10,90) ); |
|
258 innerRect = align.InnerRect(outerRect, innerSize); |
|
259 TEST( innerRect == TRect(10,90,30,110) ); |
|
260 |
|
261 align.SetHAlignment(EHCenter); |
|
262 align.SetAbsoluteHAlignment(ETrue); |
|
263 innerTopLeft = align.InnerTopLeft(outerRect, innerSize); |
|
264 TEST( innerTopLeft == TPoint(50,90) ); |
|
265 innerRect = align.InnerRect(outerRect, innerSize); |
|
266 TEST( innerRect == TRect(50,90,70,110) ); |
|
267 |
|
268 align.SetHAlignment(EHRight); |
|
269 align.SetAbsoluteHAlignment(ETrue); |
|
270 innerTopLeft = align.InnerTopLeft(outerRect, innerSize); |
|
271 TEST( innerTopLeft == TPoint(90,90) ); |
|
272 innerRect = align.InnerRect(outerRect, innerSize); |
|
273 TEST( innerRect == TRect(90,90,110,110) ); |
|
274 } |
|
275 break; |
|
276 |
|
277 case 7: |
|
278 { |
|
279 // Check that InnerTopLeft(TBidiText::TDirectionality) and InnerRect(TBidiText::TDirectionality) |
|
280 // DOES swap alignment for the inner object when scrip directionality is RightToLeft (only) |
|
281 // when absolute alignment is OFF |
|
282 const TRect outerRect(10,10,110,110); |
|
283 const TSize innerSize(20,20); |
|
284 TPoint innerTopLeft; |
|
285 TRect innerRect; |
|
286 |
|
287 align.SetHAlignment(EHLeft); |
|
288 innerTopLeft = align.InnerTopLeft(outerRect, innerSize, TBidiText::ERightToLeft); |
|
289 TEST( innerTopLeft == TPoint(90,10) ); |
|
290 innerRect = align.InnerRect(outerRect, innerSize, TBidiText::ERightToLeft); |
|
291 TEST( innerRect == TRect(90,10,110,30) ); |
|
292 |
|
293 align.SetHAlignment(EHCenter); |
|
294 innerTopLeft = align.InnerTopLeft(outerRect, innerSize, TBidiText::ERightToLeft); |
|
295 TEST( innerTopLeft == TPoint(50,10) ); |
|
296 innerRect = align.InnerRect(outerRect, innerSize, TBidiText::ERightToLeft); |
|
297 TEST( innerRect == TRect(50,10,70,30) ); |
|
298 |
|
299 align.SetHAlignment(EHRight); |
|
300 innerTopLeft = align.InnerTopLeft(outerRect, innerSize, TBidiText::ERightToLeft); |
|
301 TEST( innerTopLeft == TPoint(10,10) ); |
|
302 innerRect = align.InnerRect(outerRect, innerSize, TBidiText::ERightToLeft); |
|
303 TEST( innerRect == TRect(10,10,30,30) ); |
|
304 |
|
305 |
|
306 align.SetVAlignment(EVCenter); |
|
307 |
|
308 |
|
309 align.SetHAlignment(EHLeft); |
|
310 innerTopLeft = align.InnerTopLeft(outerRect, innerSize, TBidiText::ERightToLeft); |
|
311 TEST( innerTopLeft == TPoint(90,50) ); |
|
312 innerRect = align.InnerRect(outerRect, innerSize, TBidiText::ERightToLeft); |
|
313 TEST( innerRect == TRect(90,50,110,70) ); |
|
314 |
|
315 align.SetHAlignment(EHCenter); |
|
316 innerTopLeft = align.InnerTopLeft(outerRect, innerSize, TBidiText::ERightToLeft); |
|
317 TEST( innerTopLeft == TPoint(50,50) ); |
|
318 innerRect = align.InnerRect(outerRect, innerSize, TBidiText::ERightToLeft); |
|
319 TEST( innerRect == TRect(50,50,70,70) ); |
|
320 |
|
321 align.SetHAlignment(EHRight); |
|
322 innerTopLeft = align.InnerTopLeft(outerRect, innerSize, TBidiText::ERightToLeft); |
|
323 TEST( innerTopLeft == TPoint(10,50) ); |
|
324 innerRect = align.InnerRect(outerRect, innerSize, TBidiText::ERightToLeft); |
|
325 TEST( innerRect == TRect(10,50,30,70) ); |
|
326 |
|
327 |
|
328 align.SetVAlignment(EVBottom); |
|
329 |
|
330 |
|
331 align.SetHAlignment(EHLeft); |
|
332 innerTopLeft = align.InnerTopLeft(outerRect, innerSize, TBidiText::ERightToLeft); |
|
333 TEST( innerTopLeft == TPoint(90,90) ); |
|
334 innerRect = align.InnerRect(outerRect, innerSize, TBidiText::ERightToLeft); |
|
335 TEST( innerRect == TRect(90,90,110,110) ); |
|
336 |
|
337 align.SetHAlignment(EHCenter); |
|
338 innerTopLeft = align.InnerTopLeft(outerRect, innerSize, TBidiText::ERightToLeft); |
|
339 TEST( innerTopLeft == TPoint(50,90) ); |
|
340 innerRect = align.InnerRect(outerRect, innerSize, TBidiText::ERightToLeft); |
|
341 TEST( innerRect == TRect(50,90,70,110) ); |
|
342 |
|
343 align.SetHAlignment(EHRight); |
|
344 innerTopLeft = align.InnerTopLeft(outerRect, innerSize, TBidiText::ERightToLeft); |
|
345 TEST( innerTopLeft == TPoint(10,90) ); |
|
346 innerRect = align.InnerRect(outerRect, innerSize, TBidiText::ERightToLeft); |
|
347 TEST( innerRect == TRect(10,90,30,110) ); |
|
348 } |
|
349 break; |
|
350 |
|
351 case 8: |
|
352 // Check the operation of ParaAlign() and SetHAlignment(CParaFormat) |
|
353 align.SetHAlignment(CParaFormat::ELeftAlign); |
|
354 TEST(align.ParaAlign() == CParaFormat::ELeftAlign); |
|
355 TEST(align.HAlignment() == EHLeft); |
|
356 TEST(!align.HasAbsoluteHAlignment()); |
|
357 |
|
358 align.SetHAlignment(CParaFormat::ERightAlign); |
|
359 TEST(align.ParaAlign() == CParaFormat::ERightAlign); |
|
360 TEST(align.HAlignment() == EHRight); |
|
361 TEST(!align.HasAbsoluteHAlignment()); |
|
362 |
|
363 align.SetHAlignment(CParaFormat::EAbsoluteLeftAlign); |
|
364 TEST(align.ParaAlign() == CParaFormat::EAbsoluteLeftAlign); |
|
365 TEST(align.HAlignment() == EHLeft); |
|
366 TEST(align.HasAbsoluteHAlignment()); |
|
367 |
|
368 align.SetHAlignment(CParaFormat::EAbsoluteRightAlign); |
|
369 TEST(align.ParaAlign() == CParaFormat::EAbsoluteRightAlign); |
|
370 TEST(align.HAlignment() == EHRight); |
|
371 TEST(align.HasAbsoluteHAlignment()); |
|
372 |
|
373 break; |
|
374 |
|
375 default: |
|
376 AutoTestManager().FinishAllTestCases(CAutoTestManager::EPass); |
|
377 break; |
|
378 } |
|
379 |
|
380 } |
|
381 |
|
382 // |
|
383 // Main |
|
384 // |
|
385 |
|
386 void CTAlignmentStep::ConstructAppL(CCoeEnv* aCoeEnv) |
|
387 { // runs inside a TRAP harness |
|
388 aCoeEnv->ConstructL(); |
|
389 CTestAlignmentUi* appUi=new(ELeave) CTestAlignmentUi(this); |
|
390 appUi->ConstructL(); |
|
391 aCoeEnv->SetAppUi(appUi); |
|
392 } |
|
393 |
|
394 |
|
395 CTAlignmentStep::~CTAlignmentStep() |
|
396 /** |
|
397 Destructor |
|
398 */ |
|
399 { |
|
400 } |
|
401 |
|
402 CTAlignmentStep::CTAlignmentStep() |
|
403 /** |
|
404 Constructor |
|
405 */ |
|
406 { |
|
407 // Call base class method to set up the human readable name for logging |
|
408 SetTestStepName(KTAlignmentStep); |
|
409 } |
|
410 |
|
411 |
|
412 TVerdict CTAlignmentStep::doTestStepL() |
|
413 { |
|
414 INFO_PRINTF1(_L("Test Started")); |
|
415 |
|
416 PreallocateHALBuffer(); |
|
417 |
|
418 __UHEAP_MARK; |
|
419 |
|
420 CCoeEnv* coe=new(ELeave) CCoeEnv; |
|
421 TRAPD(err,ConstructAppL(coe)); |
|
422 if (!err) |
|
423 coe->ExecuteD(); |
|
424 else |
|
425 { |
|
426 SetTestStepResult(EFail); |
|
427 delete coe; |
|
428 } |
|
429 |
|
430 INFO_PRINTF1(_L("Test Finished")); |
|
431 |
|
432 __UHEAP_MARKEND; |
|
433 return TestStepResult(); |
|
434 } |