startupservices/Startup/syserrcmd/tsrc/syserrcmdtest/src/syserrcmdtest.cpp
changeset 77 b01c07dfcf84
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/startupservices/Startup/syserrcmd/tsrc/syserrcmdtest/src/syserrcmdtest.cpp	Thu Oct 07 06:25:45 2010 +0300
@@ -0,0 +1,346 @@
+/*
+* 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:
+* CSysErrCmdTest class implementation.
+*
+*/
+
+#include <e32debug.h>
+#include <stifparser.h>
+#include <stiftestinterface.h>
+
+//#include <aknglobalnote.h>
+//#include <akncapserverclient.h>
+#include <ssm/ssmcustomcommand.h>
+
+#include "syserrcmdtest.h"
+#include "syserrcmdfactory.h"
+#include "syserrcmdtestsstub.h"
+#include "trace.h"
+
+//  INTERNAL INCLUDES
+NONSHARABLE_CLASS( TWaitInfo )
+    {
+    public:
+    
+        CPeriodic* iPeriodic;
+        CActiveSchedulerWait* iWait;
+    };
+    
+
+/**
+* Call back method when we need to stop active scheduler wait.
+*/
+LOCAL_C TInt WaitCallBack( TAny* aSelf )
+    {
+    if( aSelf )
+        {
+        TWaitInfo* info = static_cast<TWaitInfo*>( aSelf );
+        if( info->iPeriodic )
+            {
+            info->iPeriodic->Cancel();
+            }
+        if( info->iWait )
+            {
+            if( info->iWait->IsStarted() )
+                {
+                info->iWait->AsyncStop();
+                }
+            }
+        }
+    
+    return KErrNone;
+    }
+
+/**
+* Helper method to wait current scheduler before teardown is completed.
+*/
+LOCAL_C void WaitL( TInt aIntervalInMicorseconds )
+    {
+    TWaitInfo info;
+    
+    // Construct periodic
+    CPeriodic* periodic = CPeriodic::NewL( CActive::EPriorityStandard );
+    CleanupStack::PushL( periodic );
+    info.iPeriodic = periodic;
+    
+    // Construct active scheduler wait
+    CActiveSchedulerWait* wait = new( ELeave ) CActiveSchedulerWait;
+    CleanupStack::PushL( wait );
+    info.iWait = wait;
+    
+    // Start timer and wait
+    TCallBack cb( WaitCallBack, &info );
+    periodic->Start( aIntervalInMicorseconds, aIntervalInMicorseconds, cb );
+    wait->Start();
+    
+    // Cleanup
+    CleanupStack::PopAndDestroy( wait );
+    CleanupStack::PopAndDestroy( periodic );
+    }
+
+// ---------------------------------------------------------
+// CSysErrCmdTest::LibEntryL
+// Returns: Poiter to CSysErrCmdTest class
+// ---------------------------------------------------------
+EXPORT_C CSysErrCmdTest* LibEntryL( CTestModuleIf& aTestModuleIf )
+    {
+    FUNC_LOG;
+    
+    CSysErrCmdTest* libEntry( CSysErrCmdTest::NewL( aTestModuleIf ) );
+    return libEntry;
+    }
+
+// ---------------------------------------------------------
+// CSysErrCmdTest::CSysErrCmdTest
+// ---------------------------------------------------------
+CSysErrCmdTest::CSysErrCmdTest( CTestModuleIf& aTestModuleIf ) :
+    CScriptBase( aTestModuleIf )
+    {
+    FUNC_LOG;    
+    }
+
+// ---------------------------------------------------------
+// CSysErrCmdTest::ConstructL
+// ---------------------------------------------------------
+void CSysErrCmdTest::ConstructL()
+    {
+    FUNC_LOG;
+    
+    iExecuteHandler = CAsyncRequestHandler<CSysErrCmdTest>::NewL(
+                                    *this,
+                                    HandleIssueRequest,
+                                    HandleRunL,
+                                    HandleRunError,
+                                    HandleDoCancel,
+                    CAsyncRequestHandler<CSysErrCmdTest>::ERequestOneShot );
+
+    User::LeaveIfError( iFs.Connect() );
+    
+    iCustCmdEnvStub = SysErrCmdTestsStub::CustomCommandEnvStubL( iFs );
+    }
+
+// ---------------------------------------------------------
+// CSysErrCmdTest::NewL
+// ---------------------------------------------------------
+CSysErrCmdTest* CSysErrCmdTest::NewL( CTestModuleIf& aTestModuleIf )
+    {
+    FUNC_LOG;
+    
+    CSysErrCmdTest* self = new (ELeave) CSysErrCmdTest( aTestModuleIf );
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop( self );
+    return self;
+    }
+
+// ---------------------------------------------------------
+// CSysErrCmdTest::~CSysErrCmdTest
+// ---------------------------------------------------------
+CSysErrCmdTest::~CSysErrCmdTest()
+    {
+    iFs.Close();
+    delete iExecuteHandler;
+    delete iCustCmdEnvStub;
+    FUNC_LOG;    
+    }
+
+// ---------------------------------------------------------
+// CSysErrCmdTest::RunMethodL
+// ---------------------------------------------------------
+TInt CSysErrCmdTest::RunMethodL( CStifItemParser& aItem )
+    {
+    FUNC_LOG;
+    
+    const TStifFunctionInfo KFunctions[] =
+        {
+        // Copy this line for every implemented function.
+        // First string is the function name used in TestScripter script file.
+        // Second is the actual implementation member function.
+        ENTRY( "CreateAndDestroy", CSysErrCmdTest::CreateAndDestroyL ),
+        ENTRY( "InitAndClose", CSysErrCmdTest::InitAndCloseL ),
+        ENTRY( "Execute", CSysErrCmdTest::ExecuteL ),
+        ENTRY( "ExecuteCancel", CSysErrCmdTest::ExecuteCancelL ),
+        ENTRY( "ExecuteAfterGlobalNote", CSysErrCmdTest::ShowAfterAknGlobalNoteL ),
+        ENTRY( "ExecuteAfterUiServiceGlobalNote", CSysErrCmdTest::ShowAfterUiServerGlobalNoteL )
+        };
+    const TInt count( sizeof( KFunctions ) / sizeof( TStifFunctionInfo ) );
+    TInt ret( RunInternalL( KFunctions, count, aItem ) );
+    return ret;
+    }
+
+// ---------------------------------------------------------
+// CSysErrCmdTest::CreateAndDestroyL
+// ---------------------------------------------------------
+    
+TInt CSysErrCmdTest::CreateAndDestroyL( CStifItemParser& aItem )
+    {
+    FUNC_LOG;
+    ( void )aItem;
+    MSsmCustomCommand* sysErrCmd = SysErrCmdFactory::SysErrCmdNewL();
+    sysErrCmd->Release();
+    return KErrNone;
+    }
+
+// ---------------------------------------------------------
+// CSysErrCmdTest::InitAndCloseL
+// ---------------------------------------------------------
+TInt CSysErrCmdTest::InitAndCloseL( CStifItemParser& aItem )
+    {
+    FUNC_LOG;
+    ( void )aItem;
+
+    MSsmCustomCommand* sysErrCmd = SysErrCmdFactory::SysErrCmdNewL();
+     
+    TInt err( sysErrCmd->Initialize( iCustCmdEnvStub ) );
+    ERROR( err, "Failed to init syserrcmd" );
+    User::LeaveIfError( err );
+    
+    sysErrCmd->Close();    
+    sysErrCmd->Release();
+
+    return KErrNone;
+    }
+// ---------------------------------------------------------
+// CSysErrCmdTest::ExecuteL
+// ---------------------------------------------------------
+
+TInt CSysErrCmdTest::ExecuteL( CStifItemParser& aItem )
+    {
+    FUNC_LOG;
+    ( void )aItem;
+    iSysErrCmd = SysErrCmdFactory::SysErrCmdNewL();
+    TInt err( iSysErrCmd->Initialize( iCustCmdEnvStub ) );
+    ERROR( err, "Failed to init syserrcmd" );
+    User::LeaveIfError( err );
+    
+    iExecuteHandler->IssueRequest();
+    
+    WaitL( 5000 );
+    
+    iSysErrCmd->Close();
+    iSysErrCmd->Release();
+    
+    INFO_1( "Execution result %d", iExecutionResult );
+    
+    return iExecutionResult;
+    }
+
+// ---------------------------------------------------------
+// CSysErrCmdTest::ExecuteL
+// ---------------------------------------------------------
+
+TInt CSysErrCmdTest::ExecuteCancelL( CStifItemParser& aItem )
+    {
+    FUNC_LOG;
+    ( void )aItem;
+    iSysErrCmd = SysErrCmdFactory::SysErrCmdNewL();
+    TInt err( iSysErrCmd->Initialize( iCustCmdEnvStub ) );
+    ERROR( err, "Failed to init syserrcmd" );
+    User::LeaveIfError( err );
+    
+    iExecuteHandler->IssueRequest();
+    
+    WaitL( 5000 );
+
+    iSysErrCmd->ExecuteCancel();
+    
+    WaitL( 5000 );
+        
+    iSysErrCmd->Close();
+    iSysErrCmd->Release();
+    
+    INFO_1( "ExecutionCancel result %d", iExecutionResult );
+    
+    return ( iExecutionResult == KErrCancel ) ? KErrNone : KErrGeneral;    
+    }
+
+// ---------------------------------------------------------
+// CSysErrCmdTest::ShowAfterAknGlobalNoteL
+// ---------------------------------------------------------
+TInt CSysErrCmdTest::ShowAfterAknGlobalNoteL( CStifItemParser& aItem )
+    {/*
+    CAknGlobalNote* note = CAknGlobalNote::NewLC();
+    note->ShowNoteL( EAknGlobalInformationNote, _L("CAknGlobalNote::ShowNoteL()") );
+    CleanupStack::PopAndDestroy( note );
+
+    return ExecuteL( aItem );
+    */
+    return KErrNone;
+    }
+
+// ---------------------------------------------------------
+// CSysErrCmdTest::ShowAfterUiServerGlobalNoteL
+// ---------------------------------------------------------
+TInt CSysErrCmdTest::ShowAfterUiServerGlobalNoteL( CStifItemParser& aItem )
+    {
+  /*  RAknUiServer aknSrv;
+    
+    User::LeaveIfError( aknSrv.Connect() );
+    
+    CleanupClosePushL( aknSrv );
+    
+    aknSrv.ShowGlobalNoteL(  _L("RAknUiServer::ShowGlobalNoteL()"), EAknGlobalInformationNote );
+    
+    CleanupStack::PopAndDestroy( &aknSrv );
+    */
+    
+    return ExecuteL( aItem );
+    }
+
+// ---------------------------------------------------------
+// CSysErrCmdTest::HandleIssueRequest
+// ---------------------------------------------------------
+
+void CSysErrCmdTest::HandleIssueRequest( TRequestStatus& aRequest )
+    {
+    FUNC_LOG;
+    
+    iSysErrCmd->Execute( KNullDesC8, aRequest );
+
+    }
+// ---------------------------------------------------------
+// CSysErrCmdTest::HandleRunL
+// ---------------------------------------------------------
+   
+void CSysErrCmdTest::HandleRunL( TInt aStatus )
+    {
+    FUNC_LOG;
+    INFO_1( "CSysErrCmdTest::HandleRunL %d", aStatus );
+    
+    if ( KErrNone != aStatus )
+        {
+        iExecutionResult = aStatus;
+        }
+    }
+// ---------------------------------------------------------
+// CSysErrCmdTest::HandleRunError
+// ---------------------------------------------------------
+   
+TInt CSysErrCmdTest::HandleRunError( TInt aError )
+    {
+    FUNC_LOG;
+    ERROR( aError, "CSysErrCmdTest::HandleRunError" );
+    return KErrNone;
+    }
+// ---------------------------------------------------------
+// CSysErrCmdTest::HandleDoCancel
+// ---------------------------------------------------------
+   
+void CSysErrCmdTest::HandleDoCancel()
+    {
+    FUNC_LOG;
+    }
+
+