1 // Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies). |
1 // Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies). |
2 // All rights reserved. |
2 // All rights reserved. |
3 // This component and the accompanying materials are made available |
3 // This component and the accompanying materials are made available |
4 // under the terms of the License "Eclipse Public License v1.0" |
4 // under the terms of "Eclipse Public License v1.0" |
5 // which accompanies this distribution, and is available |
5 // which accompanies this distribution, and is available |
6 // at the URL "http://www.eclipse.org/legal/epl-v10.html". |
6 // at the URL "http://www.eclipse.org/legal/epl-v10.html". |
7 // |
7 // |
8 // Initial Contributors: |
8 // Initial Contributors: |
9 // Nokia Corporation - initial contribution. |
9 // Nokia Corporation - initial contribution. |
43 // Case 1: We could create statics A, B and C with priority zero, -1 and -2 respectively. |
43 // Case 1: We could create statics A, B and C with priority zero, -1 and -2 respectively. |
44 // Then check in the app ui destructor that A is null, and B and C are both non-null. |
44 // Then check in the app ui destructor that A is null, and B and C are both non-null. |
45 // Case 2: Then in B's destructor check that C is still non-null. |
45 // Case 2: Then in B's destructor check that C is still non-null. |
46 // Case 3: And in C's destructor check that B is now null. |
46 // Case 3: And in C's destructor check that B is now null. |
47 // |
47 // |
48 // |
48 // tapparctestapp.cpp |
49 |
49 // |
50 |
|
51 |
50 |
52 #include <coeccntx.h> |
51 #include <coeccntx.h> |
53 #include <apgtask.h> |
52 #include <apgtask.h> |
54 #include <eikenv.h> |
53 #include <eikenv.h> |
55 #include <eikappui.h> |
54 #include <eikappui.h> |
56 #include <eikapp.h> |
55 #include <eikapp.h> |
57 #include <eikdoc.h> |
56 #include <eikdoc.h> |
58 #include <eikmenup.h> |
57 #include <mw/eikmenup.h> |
59 #include <f32file.h> |
58 #include <f32file.h> |
60 #include <eikon.hrh> |
59 #include <mw/eikon.hrh> |
61 #include <eikstart.h> ////TKAS added for exe-app |
60 #include <eikstart.h> //TKAS added for exe-app |
62 |
61 |
63 #include <TApparcTestApp.rsg> |
62 #include <tapparctestapp.rsg> |
64 |
63 |
65 // File which stores the test results |
64 // File which stores the test results |
66 _LIT(KApparcTestResultsFileName, "c:\\system\\Apparctest\\ApparcTestResultsFile.txt"); |
65 _LIT(KApparcTestResultsFileName, "c:\\system\\Apparctest\\ApparcTestResultsFile.txt"); |
67 _LIT(KApparcTestDir, "c:\\system\\Apparctest\\"); |
66 _LIT(KApparcTestDir, "c:\\system\\Apparctest\\"); |
68 |
67 |
122 class CTApparcTestNegativePrioStaticB : public CCoeStatic |
121 class CTApparcTestNegativePrioStaticB : public CCoeStatic |
123 { |
122 { |
124 public: |
123 public: |
125 inline CTApparcTestNegativePrioStaticB(); |
124 inline CTApparcTestNegativePrioStaticB(); |
126 inline static CTApparcTestNegativePrioStaticB* Self(); |
125 inline static CTApparcTestNegativePrioStaticB* Self(); |
|
126 static CTApparcTestNegativePrioStaticB* NewL(); |
|
127 void ConstructL(); |
127 ~CTApparcTestNegativePrioStaticB(); |
128 ~CTApparcTestNegativePrioStaticB(); |
128 |
129 |
129 RFile iFile; |
130 RFile iFile; |
130 RFs iFs; |
131 RFs iFs; |
131 }; |
132 }; |
263 iFile.Write(KTestPass); |
264 iFile.Write(KTestPass); |
264 else |
265 else |
265 iFile.Write(KTestFail); |
266 iFile.Write(KTestFail); |
266 } |
267 } |
267 |
268 |
268 //////////////////////////////////////////////////////////////////////// |
269 // |
269 // |
270 // |
270 // CTApparcTestAppView |
271 // CTApparcTestAppView |
271 // |
272 // |
272 //////////////////////////////////////////////////////////////////////// |
273 // |
273 class CTApparcTestAppView : public CCoeControl |
274 class CTApparcTestAppView : public CCoeControl |
274 { |
275 { |
275 public: |
276 public: |
276 static CTApparcTestAppView* NewL(const TRect& aRect); |
277 static CTApparcTestAppView* NewL(const TRect& aRect); |
277 CTApparcTestAppView(); |
278 CTApparcTestAppView(); |
321 TInt baselineOffset=(drawRect.Height() - fontUsed->HeightInPixels())/2; |
322 TInt baselineOffset=(drawRect.Height() - fontUsed->HeightInPixels())/2; |
322 gc.DrawText(*iApparcTestText,drawRect,baselineOffset,CGraphicsContext::ECenter, 0); |
323 gc.DrawText(*iApparcTestText,drawRect,baselineOffset,CGraphicsContext::ECenter, 0); |
323 gc.DiscardFont(); |
324 gc.DiscardFont(); |
324 } |
325 } |
325 |
326 |
326 //////////////////////////////////////////////////////////////////////// |
327 // |
327 // |
328 // |
328 // CTApparcTestAppUi |
329 // CTApparcTestAppUi |
329 // |
330 // |
330 //////////////////////////////////////////////////////////////////////// |
331 // |
331 |
332 |
332 class CTApparcTestAppUi : public CEikAppUi |
333 class CTApparcTestAppUi : public CEikAppUi |
333 { |
334 { |
334 public: |
335 public: |
335 void ConstructL(); |
336 void ConstructL(); |
348 { |
349 { |
349 BaseConstructL(); |
350 BaseConstructL(); |
350 iAppView = CTApparcTestAppView::NewL(ClientRect()); |
351 iAppView = CTApparcTestAppView::NewL(ClientRect()); |
351 |
352 |
352 // Constructs the static object for tests |
353 // Constructs the static object for tests |
353 CTApparcTestNegativePrioStaticB* testCoeStaticB = new(ELeave)CTApparcTestNegativePrioStaticB(); |
354 CTApparcTestNegativePrioStaticB* testCoeStaticB = CTApparcTestNegativePrioStaticB::NewL(); |
354 |
355 |
355 CTApparcTestStatic* testCoeStatic = new (ELeave)CTApparcTestStatic(testCoeStaticB->iFile); |
356 CTApparcTestStatic* testCoeStatic = new (ELeave)CTApparcTestStatic(testCoeStaticB->iFile); |
356 CTApparcTestNegativePrioStaticA* testCoeStaticA = new(ELeave)CTApparcTestNegativePrioStaticA(testCoeStaticB->iFile); |
357 CTApparcTestNegativePrioStaticA* testCoeStaticA = new(ELeave)CTApparcTestNegativePrioStaticA(testCoeStaticB->iFile); |
357 CTApparcTestPrioTwoStaticC* testPrioTwoStaticC = new(ELeave) CTApparcTestPrioTwoStaticC(testCoeStaticB->iFile); |
358 CTApparcTestPrioTwoStaticC* testPrioTwoStaticC = new(ELeave) CTApparcTestPrioTwoStaticC(testCoeStaticB->iFile); |
358 CTApparcTestPosPrioStaticA* testPosPriStaticA = new(ELeave) CTApparcTestPosPrioStaticA(testCoeStaticB->iFile); |
359 CTApparcTestPosPrioStaticA* testPosPriStaticA = new(ELeave) CTApparcTestPosPrioStaticA(testCoeStaticB->iFile); |
427 testCoeStatic->iFile.Write(KTestPass); |
428 testCoeStatic->iFile.Write(KTestPass); |
428 else |
429 else |
429 testCoeStatic->iFile.Write(KTestFail); |
430 testCoeStatic->iFile.Write(KTestFail); |
430 } |
431 } |
431 |
432 |
432 //////////////////////////////////////////////////////////////////////// |
433 // |
433 // |
434 // |
434 // CTApparcTestDocument |
435 // CTApparcTestDocument |
435 // |
436 // |
436 //////////////////////////////////////////////////////////////////////// |
437 // |
437 |
438 |
438 class CTApparcTestDocument : public CEikDocument |
439 class CTApparcTestDocument : public CEikDocument |
439 { |
440 { |
440 public: |
441 public: |
441 static CTApparcTestDocument* NewL(CEikApplication& aApp); |
442 static CTApparcTestDocument* NewL(CEikApplication& aApp); |
454 CEikAppUi* CTApparcTestDocument::CreateAppUiL() |
455 CEikAppUi* CTApparcTestDocument::CreateAppUiL() |
455 { |
456 { |
456 return new(ELeave) CTApparcTestAppUi; |
457 return new(ELeave) CTApparcTestAppUi; |
457 } |
458 } |
458 |
459 |
459 //////////////////////////////////////////////////////////////////////// |
460 // |
460 // |
461 // |
461 // CTApparcTestApplication |
462 // CTApparcTestApplication |
462 // |
463 // |
463 //////////////////////////////////////////////////////////////////////// |
464 // |
464 |
465 |
465 class CTApparcTestApplication : public CEikApplication |
466 class CTApparcTestApplication : public CEikApplication |
466 { |
467 { |
467 private: |
468 private: |
468 // Inherited from class CApaApplication |
469 // Inherited from class CApaApplication |
490 GLDEF_C TInt E32Main() |
491 GLDEF_C TInt E32Main() |
491 { |
492 { |
492 return EikStart::RunApplication(NewApplication); |
493 return EikStart::RunApplication(NewApplication); |
493 } |
494 } |
494 |
495 |
495 |
|
496 |
|
497 // |
|
498 // inline functions |
|
499 // |
|
500 |
496 |
501 // inline function for CTApparcTestStatic |
497 // inline function for CTApparcTestStatic |
502 inline CTApparcTestStatic::CTApparcTestStatic(RFile& aFile) |
498 inline CTApparcTestStatic::CTApparcTestStatic(RFile& aFile) |
503 : CCoeStatic(KUidTestStatic),iFile(aFile) |
499 : CCoeStatic(KUidTestStatic),iFile(aFile) |
504 { |
500 { |
522 |
518 |
523 // inline functions for CTApparcTestNegativePrioStaticB |
519 // inline functions for CTApparcTestNegativePrioStaticB |
524 inline CTApparcTestNegativePrioStaticB::CTApparcTestNegativePrioStaticB() |
520 inline CTApparcTestNegativePrioStaticB::CTApparcTestNegativePrioStaticB() |
525 : CCoeStatic(KUidTestStaticNegativePrioB,ENegativePriortyStaticA - 1) |
521 : CCoeStatic(KUidTestStaticNegativePrioB,ENegativePriortyStaticA - 1) |
526 { |
522 { |
|
523 } |
|
524 |
|
525 inline CTApparcTestNegativePrioStaticB* CTApparcTestNegativePrioStaticB::Self() |
|
526 { |
|
527 return STATIC_CAST(CTApparcTestNegativePrioStaticB*,CCoeEnv::Static(KUidTestStaticNegativePrioB)); |
|
528 } |
|
529 |
|
530 CTApparcTestNegativePrioStaticB* CTApparcTestNegativePrioStaticB::NewL() |
|
531 { |
|
532 CTApparcTestNegativePrioStaticB* self = new(ELeave)CTApparcTestNegativePrioStaticB(); |
|
533 CleanupStack::PushL(self); |
|
534 self->ConstructL(); |
|
535 CleanupStack::Pop(); |
|
536 return self; |
|
537 } |
|
538 |
|
539 void CTApparcTestNegativePrioStaticB::ConstructL() |
|
540 { |
527 User::LeaveIfError(iFs.Connect()); |
541 User::LeaveIfError(iFs.Connect()); |
528 TInt err = iFs.MkDirAll(KApparcTestDir); |
542 TInt err = iFs.MkDirAll(KApparcTestDir); |
529 |
543 |
530 err = iFile.Create(iFs,KApparcTestResultsFileName,EFileWrite | EFileShareAny); |
544 err = iFile.Create(iFs,KApparcTestResultsFileName,EFileWrite | EFileShareAny); |
531 if(err == KErrAlreadyExists) |
545 if(err == KErrAlreadyExists) |
532 iFile.Open(iFs,KApparcTestResultsFileName,EFileWrite | EFileShareAny); |
546 iFile.Open(iFs,KApparcTestResultsFileName,EFileWrite | EFileShareAny); |
533 } |
|
534 |
|
535 inline CTApparcTestNegativePrioStaticB* CTApparcTestNegativePrioStaticB::Self() |
|
536 { |
|
537 return STATIC_CAST(CTApparcTestNegativePrioStaticB*,CCoeEnv::Static(KUidTestStaticNegativePrioB)); |
|
538 } |
547 } |
539 |
548 |
540 // inline functions for CTApparcTestPosPrioStaticA |
549 // inline functions for CTApparcTestPosPrioStaticA |
541 inline CTApparcTestPosPrioStaticA::CTApparcTestPosPrioStaticA(RFile& aFile) |
550 inline CTApparcTestPosPrioStaticA::CTApparcTestPosPrioStaticA(RFile& aFile) |
542 : CCoeStatic(KUidTestStaticPosPriA,EDefaultDestructionPriority),iFile(aFile) |
551 : CCoeStatic(KUidTestStaticPosPriA,EDefaultDestructionPriority),iFile(aFile) |