--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sysstatemgmt/systemstarter/test/tapstart/src/tapstart_step.cpp Tue Feb 02 00:53:00 2010 +0200
@@ -0,0 +1,194 @@
+// Copyright (c) 2007-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:
+//
+
+/**
+ @file
+ @test
+ @internalComponent - Internal Symbian test code
+*/
+
+#include <apgtask.h>
+
+#include <apastarter.h>
+#include "tapstart_step.h"
+#include "testapps.h"
+
+_LIT(KApStartDLL, "apstart.dll");
+typedef CApaStarter* (*TFuncNewL)();
+
+CApStartTestStep::CApStartTestStep()
+ {
+ SetTestStepName(KCTestCaseApStart);
+ }
+
+TVerdict CApStartTestStep::doTestStepPreambleL()
+ {
+ // Load the CApaStarter implementation
+ RLibrary lib;
+ User::LeaveIfError(lib.Load(KApStartDLL)); // load the library
+ CleanupClosePushL(lib);
+ TLibraryFunction ord1 = lib.Lookup(1); // This is the NewL function
+ TFuncNewL funcL = reinterpret_cast<TFuncNewL>(ord1);
+ iAppStart = static_cast<CApaStarter*> (funcL());
+ CleanupStack::PopAndDestroy(&lib);
+
+ return CTestStep::doTestStepPreambleL();
+ }
+
+TVerdict CApStartTestStep::doTestStepPostambleL()
+ {
+ delete iAppStart;
+ iAppStart = NULL;
+
+ return CTestStep::doTestStepPostambleL();
+ }
+
+TVerdict CApStartTestStep::doTestStepL()
+ {
+ INFO_PRINTF1(_L("CApStartTestStep started....\n"));
+ __UHEAP_MARK;
+
+ RWsSession wsSession;
+ User::LeaveIfError(wsSession.Connect());
+ CleanupClosePushL(wsSession);
+
+ TRAPD(err, TestStartAndForgetL(wsSession));
+ TESTE(KErrNone == err, err);
+
+ TRAP(err, TestStartAndFollowUpL(wsSession));
+ TESTE(KErrNone == err, err);
+
+ CleanupStack::PopAndDestroy(); //wsSession.Close();
+
+ TRAP(err, TestInitApparcL());
+ TESTE(KErrNone == err, err);
+
+ __UHEAP_MARKEND;
+ INFO_PRINTF1(_L(".... CApStartTestStep finished!!"));
+
+ return TestStepResult();
+ }
+
+/**
+Old Test CaseID APPFWK-APSTART-0001
+New Test CaseID DEVSRVS-SYSSTART-APSTART-0001
+ */
+
+
+void CApStartTestStep::TestStartAndForgetL(RWsSession& aWsSession)
+ {
+ INFO_PRINTF1(_L("Entering test case: APPFWK-APSTART-0001"));
+
+ TApaTask task = TestStartL(NULL, aWsSession);
+
+ if(task.Exists())
+ {
+ task.KillTask();
+ INFO_PRINTF1(_L("Leaving test case: APPFWK-APSTART-0001\n"));
+ }
+ else
+ {
+ ERR_PRINTF1(_L("APPFWK-APSTART-0001 failed\n"));
+ }
+ }
+
+/**
+Old Test CaseID APPFWK-APSTART-0002
+New Test CaseID DEVSRVS-SYSSTART-APSTART-0001
+ */
+
+void CApStartTestStep::TestStartAndFollowUpL(RWsSession& aWsSession)
+ {
+ INFO_PRINTF1(_L("Entering test case: APPFWK-APSTART-0002"));
+
+ TRequestStatus status;
+ TApaTask task = TestStartL(&status, aWsSession);
+ TESTE(KErrNone == status.Int(), status.Int());
+
+ if(task.Exists())
+ {
+ task.KillTask();
+ INFO_PRINTF1(_L("Leaving test case: APPFWK-APSTART-0002\n"));
+ }
+ else
+ {
+ ERR_PRINTF1(_L("APPFWK-APSTART-0002 failed\n"));
+ }
+ }
+
+/**
+Old Test CaseID APPFWK-APSTART-0003
+New Test CaseID DEVSRVS-SYSSTART-APSTART-0001
+ */
+
+void CApStartTestStep::TestInitApparcL()
+ { // Leavescan, this implementation of this method does not leave but further derived implementations may if they choose
+ INFO_PRINTF1(_L("Entering test case: APPFWK-APSTART-0003"));
+ INFO_PRINTF1(_L("Going to sleep until Apparc finished initialisation."));
+ TRAPD(err, iAppStart->WaitForApparcToInitialiseL());
+ TEST(err == KErrNone);
+ if(err)
+ ERR_PRINTF2(_L("APPFWK-APSTART-0003 finished with errorcode = '%d'\n"), err);
+ else
+ INFO_PRINTF1(_L("Leaving test case: APPFWK-APSTART-0003\n"));
+ }
+
+/**
+ * Common implementation for test case 0001 and 0002. See INFO_PRINTs for further information.
+ */
+TApaTask CApStartTestStep::TestStartL(TRequestStatus* aRequestStatus, RWsSession& aWsSession)
+ {
+ INFO_PRINTF1(_L("Requesting start of KTestAppGood in foreground."));
+ const TDesC& cmdLineParams = KNullDesC;
+ const TBool viewLess = EFalse;
+ const TBool startInBackground = EFalse;
+ TThreadId tId;
+ if(aRequestStatus)
+ {
+ iAppStart->StartAppL(KTestAppGood, cmdLineParams, viewLess, startInBackground, tId, *aRequestStatus);
+ }
+ else
+ {
+ iAppStart->StartAppL(KTestAppGood, cmdLineParams, viewLess, startInBackground, tId);
+ }
+
+ RThread thread;
+ RProcess process;
+ INFO_PRINTF1(_L("Verifying that the process was created."));
+ TEST(KErrNone == thread.Open(tId));
+ TEST(KErrNone == thread.Process(process));
+
+ INFO_PRINTF1(_L("Waiting for KTestAppGood to resume."));
+ if(aRequestStatus)
+ {
+ User::WaitForRequest(*aRequestStatus);
+ }
+ else
+ {
+ TRequestStatus status;
+ process.Rendezvous(status);
+ User::WaitForRequest(status);
+ }
+ process.Close();
+ thread.Close();
+
+ INFO_PRINTF1(_L("Verifying that KTestAppGood is now up and running."));
+ TApaTaskList taskList(aWsSession);
+ const TUid appUid = {KTestAppGoodUid};
+ TApaTask task = taskList.FindApp(appUid);
+ TEST(task.Exists());
+
+ return task;
+ }