windowing/windowserver/test/tauto/TCAPABILITY.CPP
changeset 110 7f25ef56562d
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/windowing/windowserver/test/tauto/TCAPABILITY.CPP	Wed Jun 23 19:41:15 2010 +0300
@@ -0,0 +1,263 @@
+// Copyright (c) 1996-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:
+// Capability test
+// 
+//
+
+/**
+ @file
+ @test
+ @internalComponent - Internal Symbian test code
+*/
+
+#include "TCAPABILITY.H"
+
+_LIT(KTestResultsFile, "C:\\DATA\\TestResult.Dat");
+_LIT(KSpace, " ");
+_LIT(KTest0Name, "All capabilities");
+_LIT(KTest0Exe, "TCAP_ALL.exe");
+_LIT(KTest0Cap, "CAPABILITY_ALL");
+_LIT(KTest1Name, "No capabilities");
+_LIT(KTest1Exe, "TCAP_NONE.exe");
+_LIT(KTest1Cap, "CAPABILITY_NONE");
+_LIT(KTest2Name, "WriteDeviceData and SwEvent capabilities");
+_LIT(KTest2Exe, "TCAP_ONE.exe");
+_LIT(KTest2Cap, "WRITEDATA+SWEVENT");
+_LIT(KTest3Name, "WriteDeviceData and PowerMgnt capabilities");
+_LIT(KTest3Exe, "TCAP_TWO.exe");
+_LIT(KTest3Cap, "WRITEDATA+POWERMGMT");
+_LIT(KTest4Name, "PowerMgnt and SwEvent capabilities");
+_LIT(KTest4Exe, "TCAP_THREE.exe");
+_LIT(KTest4Cap, "POWERMGMT+SWEVENT");
+
+
+//CCapabilityTest 
+CTCapability::CTCapability(CTestStep* aStep):
+	CTWsGraphicsBase(aStep)
+	{
+	}
+
+CTCapability::~CTCapability()
+	{
+	}
+
+void CTCapability::ConstructL()
+	{
+	//Empty function ConstructL is pure virtual function and this 
+	//definition required to satisfy the compiler
+	}
+
+//Reads the shared files which contains the total tests	run and tests passed.
+void CTCapability::GetCapabilityTestResultsL(TInt& aNoOfTests, TInt& aNoOfTestsPass)
+	{	
+	TBuf<256> noOfTest;
+	TBuf<256> noOfTestPass;
+	RFs fileSession;
+	RFile file;
+	TFileText textFile;
+	User::LeaveIfError(fileSession.Connect());
+	CleanupClosePushL(fileSession);
+	User::LeaveIfError(file.Open(fileSession,KTestResultsFile,EFileRead));
+	CleanupClosePushL(file);
+	textFile.Set(file);
+	if(textFile.Read(noOfTest)==KErrNone)
+		{
+		TLex lexVar(noOfTest);
+		lexVar.Val(aNoOfTests);
+		if(textFile.Read(noOfTestPass)==KErrNone)
+			{
+			lexVar=noOfTestPass;
+			lexVar.Val(aNoOfTestsPass);
+			}
+		else
+			{
+			aNoOfTestsPass=0;
+			}
+		}
+	CleanupStack::PopAndDestroy(&file);
+	CleanupStack::PopAndDestroy(&fileSession);
+	}
+	
+ void CTCapability::LaunchNewProcess(const TDesC& aExecutable,const TDesC& aCapability)
+	{
+	TBuf<128> args;
+ 	args.Append(aCapability);
+ 	args.Append(KSpace);
+ 	args.AppendNum(TheClient->iGroup->GroupWin()->Identifier());
+	RProcess pr;
+//	TInt noOfTest,noOfTestPass;
+	if (pr.Create(aExecutable,args)==KErrNone)
+		{
+		TRequestStatus status=NULL;
+		pr.Logon(status);
+		pr.Resume();
+		User::WaitForRequest(status);
+		//Close all the panic windows to avoid "Hangs the H4" 
+		//PDEF100501: TEF Migrated Test TCapability Hangs the H4 
+	   	if (iTest->iScreenNumber == 0)
+			iTest->CloseAllPanicWindows();
+		pr.Close();
+//		GetCapabilityTestResultsL(noOfTest,noOfTestPass);
+//		UpdateTestResults(noOfTest,noOfTestPass);
+		}
+	}
+	
+void CTCapability::RunTestCaseL(TInt /*aCurTestCase*/)
+	{
+	((CTCapabilityStep*)iStep)->SetTestStepID(KUnknownSYMTestCaseIDName);
+	switch(++iTest->iState)
+		{
+/**
+
+  @SYMTestCaseID GRAPHICS-WSERV-0305
+  
+  @SYMDEF             DEF081259
+ 
+  @SYMTestCaseDesc Capability test with a process with all capability
+    
+  @SYMTestPriority High
+ 
+  @SYMTestStatus Implemented
+ 
+  @SYMTestActions The security threat API's are called with all 
+ 				 capability to test whether the API's are accessible or not.
+  
+  @SYMTestExpectedResults If the required capability is defined to test code then API should 
+ 							 accessible, otherwise it should panic the test.
+ 
+*/
+		case 1:
+			((CTCapabilityStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0305"));
+			iTest->LogSubTest(KTest0Name);
+ 			LaunchNewProcess(KTest0Exe, KTest0Cap);
+			break;
+/**
+
+  @SYMTestCaseID GRAPHICS-WSERV-0306
+  
+  @SYMDEF             DEF081259
+ 
+  @SYMTestCaseDesc Capability test with a process with no capability
+    
+  @SYMTestPriority High
+ 
+  @SYMTestStatus Implemented
+ 
+  @SYMTestActions The security threat API's are called with no 
+ 				 capability to test whether the API's are accessible or not.
+  
+  @SYMTestExpectedResults If the required capability is defined to test code then API should 
+ 							 accessible, otherwise it should panic the test.
+ 
+*/
+		case 2:
+			((CTCapabilityStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0306"));
+			//create process with no capability 
+			RDebug::Print(KPlatsecBegin);
+			iTest->LogSubTest(KTest1Name);
+ 			LaunchNewProcess(KTest1Exe,KTest1Cap);
+			break;
+/**
+
+  @SYMTestCaseID GRAPHICS-WSERV-0307
+  
+  @SYMDEF             DEF081259
+ 
+  @SYMTestCaseDesc Capability test with a process with WriteDevicedata and SwEvent capability
+    
+  @SYMTestPriority High
+ 
+  @SYMTestStatus Implemented
+ 
+  @SYMTestActions The security threat API's are called with WriteDevicedata and SwEvent 
+ 				 capability to test whether the API's are accessible or not.
+  
+  @SYMTestExpectedResults If the required capability is defined to test code then API should 
+ 							 accessible, otherwise it should panic the test.
+ 
+*/
+		case 3:
+			((CTCapabilityStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0307"));
+			//create process with WriteDevicedata and SwEvent capability 
+			iTest->LogSubTest(KTest2Name);
+ 			LaunchNewProcess(KTest2Exe,KTest2Cap);
+			break;
+/**
+
+  @SYMTestCaseID GRAPHICS-WSERV-0308
+  
+  @SYMDEF             DEF081259
+ 
+  @SYMTestCaseDesc Capability test with a process with WriteDevicedata and PowerMgmt capability
+    
+  @SYMTestPriority High
+ 
+  @SYMTestStatus Implemented
+ 
+  @SYMTestActions The security threat API's are called with WriteDevicedata and PowerMgmt 
+ 				 capability to test whether the API's are accessible or not.
+  
+  @SYMTestExpectedResults If the required capability is defined to test code then API should 
+ 							 accessible, otherwise it should panic the test.
+ 
+*/
+		case 4:
+			((CTCapabilityStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0308"));
+			//create process with WriteDevicedata and PowerMgmt capability 
+			iTest->LogSubTest(KTest3Name);
+ 			LaunchNewProcess(KTest3Exe,KTest3Cap);
+			break;
+/**
+
+  @SYMTestCaseID GRAPHICS-WSERV-0309
+  
+  @SYMDEF             DEF081259
+ 
+  @SYMTestCaseDesc Capability test with a process with PowerMgmt and SwEvent capability
+    
+  @SYMTestPriority High
+ 
+  @SYMTestStatus Implemented
+ 
+  @SYMTestActions The security threat API's are called with PowerMgmt and SwEvent 
+ 				 capability to test whether the API's are accessible or not.
+  
+  @SYMTestExpectedResults If the required capability is defined to test code then API should 
+ 							 accessible, otherwise it should panic the test.
+ 
+*/
+		case 5:
+			((CTCapabilityStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0309"));
+			//create process with PowerMgmt and SwEvent capability 
+			iTest->LogSubTest(KTest4Name);
+ 			LaunchNewProcess(KTest4Exe, KTest4Cap);
+			break;
+		default :
+			((CTCapabilityStep*)iStep)->SetTestStepID(KNotATestSYMTestCaseIDName);
+			((CTCapabilityStep*)iStep)->CloseTMSGraphicsStep();
+			RDebug::Print(KPlatsecEnd);
+			RFs fileSession;
+			User::LeaveIfError(fileSession.Connect());
+			CleanupClosePushL(fileSession);
+			CFileMan *fileMan=CFileMan::NewL(fileSession);
+			fileMan->Delete(KTestResultsFile);
+			delete fileMan;
+			CleanupStack::PopAndDestroy(&fileSession);
+			TestComplete();		
+			break;
+		}
+	((CTCapabilityStep*)iStep)->RecordTestResultL();
+	}
+	
+__WS_CONSTRUCT_STEP__(Capability)