lafagnosticuifoundation/cone/tef/TCONE4STEPExe.CPP
changeset 0 2f259fa3e83a
--- /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 <e32test.h>
+#include <coemain.h>
+#include <coecntrl.h>
+#include <coeaui.h>
+#include <e32keys.h>
+#include <basched.h>
+#include <apgtask.h>
+#include <apacmdln.h>
+#include <apgcli.h>
+#include <apgwgnam.h>
+#include <e32base.h>
+#include <eikenv.h>
+#include <ecom/ecom.h>
+
+#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();
+	}