sysstatemgmt/systemstatereferenceplugins/test/tunitcustcmd/src/tcmd_step_execute.cpp
changeset 0 4e1aa6a622a0
child 21 ccb4f6b3db21
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sysstatemgmt/systemstatereferenceplugins/test/tunitcustcmd/src/tcmd_step_execute.cpp	Tue Feb 02 00:53:00 2010 +0200
@@ -0,0 +1,215 @@
+// Copyright (c) 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: Unit test case to test functionalities of CmdCheckUserDrive,
+//							CCustomCmdClearStartupReason,CCustomCmdDeleteTempFiles,CCmdInitRamDrive and CCustomCmdValidateRTC custom commands.
+//
+
+/**
+ @file
+ @test
+ @internalComponent - Internal Symbian test code 
+*/
+
+#include "tcmd_step_execute.h"
+
+/**
+ This function is wrapped in  Callback and used to stop the CActiveScheduler
+ when all other activities have been peformed
+ */
+static TInt StopScheduler(TAny* aCmdValidateRTCTest)
+    {
+    CTestCustomCmdExecute*  cmdValidateRTCTest = static_cast<CTestCustomCmdExecute*>(aCmdValidateRTCTest);
+    cmdValidateRTCTest->StopActiveScheduler();
+    return KErrNone;
+    }
+
+void CTestCustomCmdExecute::StopActiveScheduler()
+    {
+    if(iStatus != KRequestPending)
+        {
+        CActiveScheduler::Stop();
+        }
+    else
+        {
+        iAsyncStopScheduler->CallBack();
+        }
+    }
+
+CTestCustomCmdExecute::~CTestCustomCmdExecute()
+    {
+    delete iCmdEnv;
+    iFs.Close();
+    delete iAsyncStopScheduler;
+    delete iActiveScheduler;
+    }
+
+CTestCustomCmdExecute::CTestCustomCmdExecute()
+    {
+    SetTestStepName(KTestCustomCmdExecute);
+    }
+
+/**
+ Create common resources for this test 
+ Install CActiveScheduler necessary for the tests
+ */
+TVerdict CTestCustomCmdExecute::doTestStepPreambleL( )
+    {
+    iActiveScheduler = new(ELeave) CActiveScheduler;
+    CActiveScheduler::Install (iActiveScheduler );
+
+    iAsyncStopScheduler = new(ELeave) CAsyncCallBack(CActive::EPriorityIdle);
+    TCallBack stop(StopScheduler, this);
+    iAsyncStopScheduler->Set (stop );
+		
+    User::LeaveIfError(iFs.Connect());
+ 
+    iCmdEnv = CSsmCustomCommandEnv::NewL(iFs);
+    
+    return CTestStep::doTestStepPreambleL ( );
+    }
+
+/**
+Test CaseID         DEVSRVS-SSREFPLUGINS-CUSTCMD-0028
+ */
+void CTestCustomCmdExecute::TestCustomCmdValidateRTC()
+    {
+    INFO_PRINTF1(_L("TestCustomCmdValidateRTC started"));
+    //Create ValidateRTC custom command
+    MSsmCustomCommand* customCmdValidateRTC = SsmCustomCmdFactory::CmdValidateRTCNewL();
+    customCmdValidateRTC->Initialize(iCmdEnv);
+    ExecuteCommand(customCmdValidateRTC);
+    TEST(KErrNotSupported == iStatus.Int());
+    ExecuteCommand(customCmdValidateRTC);
+    customCmdValidateRTC->ExecuteCancel();
+    TEST(KErrNotSupported == iStatus.Int());
+    //Close the command
+    customCmdValidateRTC->Close();
+    //Releasing the comand will delete itself.
+    customCmdValidateRTC->Release();
+    INFO_PRINTF3(_L("TestCustomCmdValidateRTC completed with %d Expected %d"),iStatus.Int(),KErrNotSupported);
+    }
+
+/**
+Test CaseID 		DEVSRVS-SSREFPLUGINS-CUSTCMD-0028
+ */
+void CTestCustomCmdExecute::TestCustomCmdCheckUserDrive()
+	{
+	INFO_PRINTF1(_L("TestCustomCmdCheckUserDriveL started"));
+	//Create ChectUserDrive custom command
+	MSsmCustomCommand* customCmdCheckUserDrive = SsmCustomCmdFactory::CmdCheckUserDriveNewL();
+	customCmdCheckUserDrive->Initialize(iCmdEnv);
+	ExecuteCommand(customCmdCheckUserDrive);
+    TEST(KErrNone == iStatus.Int());
+    ExecuteCommand(customCmdCheckUserDrive);
+    customCmdCheckUserDrive->ExecuteCancel();
+    TEST(KErrNone == iStatus.Int());
+    //Close the command
+    customCmdCheckUserDrive->Close();
+    //Delete the custom command
+    customCmdCheckUserDrive->Release();
+    INFO_PRINTF3(_L("TestCustomCmdCheckUserDriveL completed with %d Expected %d"),iStatus.Int(),KErrNone);
+	}
+
+/**
+Test CaseID         DEVSRVS-SSREFPLUGINS-CUSTCMD-0028
+ */
+void CTestCustomCmdExecute::TestCustomCmdClearStartupReason()
+    {
+    INFO_PRINTF1(_L("TestCustomCmdClearStartupReason started"));
+    //Create ClearStartupReason custom command
+    MSsmCustomCommand* customCmdClearStartupReason = SsmCustomCmdFactory::CmdClearStartupReasonNewL();
+    customCmdClearStartupReason->Initialize(iCmdEnv);
+    ExecuteCommand(customCmdClearStartupReason);
+    TEST(KErrNone == iStatus.Int());
+    ExecuteCommand(customCmdClearStartupReason);
+    customCmdClearStartupReason->ExecuteCancel();
+    TEST(KErrNone == iStatus.Int());
+    //Close the command
+    customCmdClearStartupReason->Close();
+    customCmdClearStartupReason->Release();
+    INFO_PRINTF3(_L("TestCustomCmdClearStartupReason completed with %d Expected %d"),iStatus.Int(),KErrNone);
+    }
+
+/**
+Test CaseID         DEVSRVS-SSREFPLUGINS-CUSTCMD-0028
+ */
+void CTestCustomCmdExecute::TestCustomCmdDeleteTempFiles() 
+    {
+    INFO_PRINTF1(_L("TestCustomCmdDeleteTempFilesL started"));
+    //Create DeleteTempFiles custom command
+    MSsmCustomCommand* customCmdDeleteTempFiles = SsmCustomCmdFactory::CmdDeleteTempFilesNewL();
+    customCmdDeleteTempFiles->Initialize(iCmdEnv);
+    ExecuteCommand(customCmdDeleteTempFiles);
+    TEST(KErrNone == iStatus.Int());
+    ExecuteCommand(customCmdDeleteTempFiles);
+    customCmdDeleteTempFiles->ExecuteCancel();
+    TEST(KErrNone == iStatus.Int());
+    //Close the command
+    customCmdDeleteTempFiles->Close();
+    //Delete the custom command
+    customCmdDeleteTempFiles->Release();
+    INFO_PRINTF3(_L("TestCustomCmdDeleteTempFilesL completed with %d Expected %d"),iStatus.Int(),KErrNone);
+    }
+
+/**
+Test CaseID         DEVSRVS-SSREFPLUGINS-CUSTCMD-0028
+ */
+void CTestCustomCmdExecute::TestCustomCmdInitRamDrive()
+    {
+    INFO_PRINTF1(_L("TestCustomCmdInitRamDrive started"));
+    //Create InitRamDrive custom command
+    MSsmCustomCommand* customCmdInitRamDrive = SsmCustomCmdFactory::CmdInitRamDriveNewL();
+    customCmdInitRamDrive->Initialize(iCmdEnv);
+    ExecuteCommand(customCmdInitRamDrive);
+    TEST(KErrNone == iStatus.Int());
+    ExecuteCommand(customCmdInitRamDrive);
+    customCmdInitRamDrive->ExecuteCancel();
+    TEST(KErrNone == iStatus.Int());
+    //Close the command
+    customCmdInitRamDrive->Close();
+    //Delete the custom command
+    customCmdInitRamDrive->Release();
+    INFO_PRINTF3(_L("TestCustomCmdInitRamDrive completed with %d Expected %d"),iStatus.Int(),KErrNone);
+    }
+
+void CTestCustomCmdExecute::ExecuteCommand(MSsmCustomCommand *aCustCmd)
+		{
+    TBufC8<1> dummy;
+    //Command parameter is not used inside the Execute. So passing any dummy data should be fine
+    //Execute the command
+    aCustCmd->Execute(dummy, iStatus);
+    //this callback will not run until the test is finished because it has priority idle
+    iAsyncStopScheduler->CallBack ( );
+    //run custom command
+    iActiveScheduler->Start( );
+	}
+	
+/**
+ Clean up if necessary
+ */
+TVerdict CTestCustomCmdExecute::doTestStepPostambleL( )
+    {
+    return CTestStep::doTestStepPostambleL ( );
+    }
+
+TVerdict CTestCustomCmdExecute::doTestStepL()
+    {
+    __UHEAP_MARK;
+    TestCustomCmdInitRamDrive();
+    TestCustomCmdDeleteTempFiles();
+    TestCustomCmdCheckUserDrive();
+    TestCustomCmdClearStartupReason();
+    TestCustomCmdValidateRTC();
+    __UHEAP_MARKEND;
+    return TestStepResult();
+    }