diff -r 000000000000 -r 2f259fa3e83a lafagnosticuifoundation/cone/tef/TCONE4STEPExe.CPP --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lafagnosticuifoundation/cone/tef/TCONE4STEPExe.CPP Tue Feb 02 01:00:49 2010 +0200 @@ -0,0 +1,319 @@ +// Copyright (c) 2005-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: +// This test requires Cone\Tef\TConeTestExe to be built first.\n +// This test is fully automated and performs the following tasks\n +// 1. Launches TConeTestExe.\n +// 2. Closes TConeTestExe.\n +// 3. Compares the standard results file with results file generated by TConeTestExe.\n +// +// + +/** + @file + @internalComponent - Internal Symbian test code +*/ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "TCone4StepExe.h" +//! Sample Executable Name used in TCone4 TestExe Step.\n +_LIT(KAppName, "TConeTestExe"); +//! Executable launched in TCone4 TestExe Step.\n +_LIT(KAppFileName, "z:\\sys\\bin\\TConeTestExe.exe"); + + +//! File which stores the results of TCone4Step . +_LIT(KConeTestResultsFileName, "c:\\system\\conetest\\ConeTestResultsFile2.txt"); + +//! File which contains the expected results which needs to be compared with the results +//! generated form the test +_LIT(KConeTestStdFileName,"z:\\conetest\\ConeTestStdFile.txt"); + + //!random error code +const TInt KErrFileContentNotMatched = -421; + +//! A CTestCoeAppUi derived class.\n +/** + The class is the AppUi class for the TCone4Step test case.\n +*/ +class CCone4ExeTestAppUi : public CTestCoeAppUi + { +public: // from CCoeAppUi + //! Single Argument Constructor for CCone4ExeTestAppUi Class.\n + CCone4ExeTestAppUi(CTmsTestStep* aStep) : + CTestCoeAppUi(aStep){} + ~CCone4ExeTestAppUi(); + // from CCoeAppUi + void ConstructL(); + void RunTestStepL(TInt aNumStep); + + void LoadAppL(); + void CompareConeTestFileL(); + TInt CloseApp(); + }; +/** + Second phase constructor for the CCone4ExeTestAppUi class.\n + Invokes the base class CTestCoeAppUi ConstructL function.\n + Starts the asynchronous execution of tests using Auto test manager.\n +*/ +void CCone4ExeTestAppUi::ConstructL() + { + CTestCoeAppUi::ConstructL(); + AutoTestManager().StartAutoTest(); + } + +/** + Destructor for CCone4ExeTestAppUi class.\n +*/ +CCone4ExeTestAppUi::~CCone4ExeTestAppUi() + { + } +/** + Auxilliary Function for all test cases.\n + This function is iteratively called by the RunL function of the Autotestmanager + asynchronously.\n + Calls the following functions in succession\n + 1. LoadAppL()\n + 2. CloseApp()\n + 3. CompareConeTestFileL()\n +*/ +void CCone4ExeTestAppUi::RunTestStepL(TInt aNumStep) + { + User::After(TTimeIntervalMicroSeconds32(2000000)); + switch(aNumStep) + { + case 1: + { + SetTestStepID(_L("UIF-TCone4StepExe-LoadAppL")); + INFO_PRINTF1(_L("Loading TConeTestApp")); + TRAPD(ret, LoadAppL()); + TEST(ret==KErrNone); + RecordTestResultL(); + } + break; + case 2: + SetTestStepID(_L("UIF-TCone4StepExe-CloseApp")); + INFO_PRINTF1(_L("Closing TConeTestApp")); + TEST(CloseApp()==KErrNone); + RecordTestResultL(); + break; + case 3: + { + SetTestStepID(_L("UIF-TCone4StepExe-CompareConeTestFileL")); + INFO_PRINTF1(_L("Comparing the results file with standard results file")); + TRAPD(ret, CompareConeTestFileL()); + TEST(ret==KErrNone); + RecordTestResultL(); + CloseTMSGraphicsStep(); + } + break; + case 4: + AutoTestManager().FinishAllTestCases(CAutoTestManager::EPass); + break; + default: + break; + } + } + +/** + @SYMTestCaseID UIF-TCone4StepExe-LoadAppL + + @SYMPREQ + + @SYMTestCaseDesc Launches the TConeTestApp application.\n + + @SYMTestPriority High + + @SYMTestStatus Implemented + + @SYMTestActions : Launches an test application as follows.\n + Instantiates a CApaCommandLine object and sets the appName as the LibraryName.\n + Sets the command to EApaCommandOpen.\n + Opens a RApaLsSession.\n + Sends a request to the apparc server to start the application.\n + + @SYMTestExpectedResults The application should be started without any error.\n + + @SYMTestType : CIT + */ +void CCone4ExeTestAppUi::LoadAppL() + { + TBuf<256> fileNameBuf(KAppFileName()); + TFileName appName = fileNameBuf; + + CApaCommandLine* cmdLine=CApaCommandLine::NewLC(); + cmdLine->SetExecutableNameL(appName); + cmdLine->SetCommandL(EApaCommandOpen); + RApaLsSession ls; + + User::LeaveIfError(ls.Connect()); + CleanupClosePushL(ls); + User::LeaveIfError(ls.StartApp(*cmdLine)); + CleanupStack::PopAndDestroy(2); // ls and cmdLine + } + + +/** + @SYMTestCaseID UIF-TCone4StepExe-CloseApp + + @SYMPREQ + + @SYMTestCaseDesc Closes the TConeTestApp application.\n + + @SYMTestPriority High + + @SYMTestStatus Implemented + + @SYMTestActions : Closes a test application as follows.\n + Gets the currently running tasks list using TApaTaskList.\n + Gets the current task using TApaTaskList::FindApp() \n + Ends the application using TApaTaskList::EndTask().\n + + @SYMTestExpectedResults The application should be closed without any error.\n + + @SYMTestType : CIT + */ + +TInt CCone4ExeTestAppUi::CloseApp() + { + TApaTaskList taskList(CCoeEnv::Static()->WsSession()); + TApaTask task = taskList.FindApp(KAppName); + task.EndTask(); + return KErrNone; + } + +/** + @SYMTestCaseID UIF-TCone4StepExe-CompareConeTestFileL + + @SYMPREQ + + @SYMTestCaseDesc Tests standard results file with the generated results file. + + @SYMTestPriority High + + @SYMTestStatus Implemented + + @SYMTestActions Reads in the standard result file and the one generated. + + @SYMTestExpectedResults. The test verifies that the files are the same. + + @SYMTestType : CIT + */ +void CCone4ExeTestAppUi::CompareConeTestFileL() + { + RFs fs; + RFile rFileResults; + RFile rFileStd; + + User::LeaveIfError(fs.Connect()); + CleanupClosePushL( fs ); + + User::LeaveIfError( rFileResults.Open(fs,KConeTestResultsFileName,EFileRead | EFileShareAny) ); + CleanupClosePushL( rFileResults ); + + User::LeaveIfError( rFileStd.Open(fs,KConeTestStdFileName,EFileRead) ); + CleanupClosePushL( rFileStd ); + + TBuf8<240> bufReadStd; + TBuf8<240> bufReadResults; + + // Read from the results generated for the static object test + User::LeaveIfError( rFileResults.Read(bufReadResults) ); + // Read from the standard file which contains the results that has to be generated + User::LeaveIfError( rFileStd.Read(bufReadStd) ); + + CleanupStack::PopAndDestroy( 3, &fs ); + + + // Compare the generated results with the standard results + if( (bufReadResults.Compare(bufReadStd)) != 0 ) + { + TBuf<256> resultsWide; + TBuf<256> stdWide; + resultsWide.Copy( bufReadResults ); + stdWide.Copy( bufReadStd ); + + ERR_PRINTF1( _L("Results files differ.") ); + INFO_PRINTF2( _L("results descriptor length %d"), bufReadResults.Length() ); + ERR_PRINTF2( _L("Test results:-\n%S"), &resultsWide ); + ERR_PRINTF2( _L("Expected results:-\n%S"), &stdWide ); + + User::Leave( KErrFileContentNotMatched ); + } + } +/** + Constructor for CTCone4StepExe class.\n + Sets the test step name.\n +*/ +CTCone4StepExe::CTCone4StepExe() + { + SetTestStepName(KTCone4StepExe); + } +/** + Destructor for CTCone4StepExe class.\n +*/ +CTCone4StepExe::~CTCone4StepExe() + { + } +/** + Completes the construction of the Control Environment(CCoeEnv object).\n + Instantiates the CCone4TestAppUi class which serves as a AppUi class.\n + Sets the CCone4ExeTestAppUi object as the application's user interface object.\n + Invokes the second phase constructor of the application's UI.\n +*/ +void CTCone4StepExe::ConstructAppL(CCoeEnv* aCoe) + { // runs inside a TRAP harness + aCoe->ConstructL(); + CCone4ExeTestAppUi* appUi= new (ELeave) CCone4ExeTestAppUi(this); + aCoe->SetAppUi(appUi); + appUi->ConstructL(); + } +/** + Entry function for CTCone4Exe Test Step.\n + Sets up the control environment.\n + Constructs and Launches the CTCone4 Test application.\n +*/ +TVerdict CTCone4StepExe::doTestStepL() // main function called by E32 + { + + PreallocateHALBuffer(); + __UHEAP_MARK; + + CCoeEnv* coe=new(ELeave) CCoeEnv; + TRAPD(err,ConstructAppL(coe)); + + if (!err) + coe->ExecuteD(); + else + { + SetTestStepResult(EFail); + delete coe; + } + REComSession::FinalClose(); + __UHEAP_MARKEND; + + INFO_PRINTF1(_L("Test Finished")); + return TestStepResult(); + }