appinstall_plat/sifui_api/tsrc/src/sifuitestcases.cpp
changeset 25 98b66e4fb0be
child 42 d17dc5398051
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/appinstall_plat/sifui_api/tsrc/src/sifuitestcases.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -0,0 +1,586 @@
+/*
+* Copyright (c) 2010 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 file contains hardcoded module implementation.
+*
+*/
+
+#include <badesca.h>                    // CDesCArray
+#include <sifui.h>                      // CSifUi
+#include "SifUiTest.h"                  // CSifUiTest
+
+_LIT( KEnter, "Enter" );
+_LIT( KStepFormat, "Step %d" );
+_LIT( KExit, "Exit" );
+
+// Internal structure containing test case name and pointer to test function
+class TCaseInfoInternal
+    {
+    public:
+        const TText*    iCaseName;
+        TestFunction    iMethod;
+        TBool           iIsOOMTest;
+        TInt            iFirstMemoryAllocation;
+        TInt            iLastMemoryAllocation;
+    };
+
+const TInt KOneSecond = 1000000;
+const TInt KThreeSeconds = 3 * KOneSecond;
+const TInt KFiveSeconds = 5 * KOneSecond;
+const TInt KHalfSecond = KOneSecond / 2;
+const TKeyEvent KRightSoftkey = { EKeyDevice1, 0, 0, EStdKeyDevice1 };  // EKeyCBA2
+
+
+// ======== MEMBER FUNCTIONS ========
+
+// -----------------------------------------------------------------------------
+// CSifUiTest::Case
+// Returns a test case by number.
+//
+// This function contains an array of all available test cases
+// i.e pair of case name and test function. If case specified by parameter
+// aCaseNumber is found from array, then that item is returned.
+// -----------------------------------------------------------------------------
+//
+const TCaseInfo CSifUiTest::Case ( const TInt aCaseNumber ) const
+     {
+    /**
+    * When adding new test cases, implement new test case function and add new
+    * line to KCases array specifing the name of the case and the function.
+    *
+    * ENTRY macro takes two parameters: test case name and test case
+    * function name.
+    *
+    * FUNCENTRY macro takes only test case function name as a parameter and
+    * uses that as a test case name and test case function name.
+    *
+    */
+
+    static TCaseInfoInternal const KCases[] =
+        {
+        ENTRY( "CreateLowMemTest", CSifUiTest::CreateLowMemTest ),
+        ENTRY( "InformationNoteTest", CSifUiTest::InformationNoteTest ),
+        ENTRY( "WarningNoteTest", CSifUiTest::WarningNoteTest ),
+        ENTRY( "ErrorNoteTest", CSifUiTest::ErrorNoteTest ),
+        ENTRY( "PermanentNoteTest", CSifUiTest::PermanentNoteTest ),
+        ENTRY( "ProgressNoteTest", CSifUiTest::ProgressNoteTest ),
+        ENTRY( "WaitNoteTest", CSifUiTest::WaitNoteTest ),
+        ENTRY( "LaunchHelpTest", CSifUiTest::LaunchHelpTest )
+        };
+
+    if( (TUint) aCaseNumber >= sizeof( KCases ) / sizeof( TCaseInfoInternal ) )
+        {
+        TCaseInfo emptyObject( KNullDesC );
+        emptyObject.iMethod = NULL;
+        emptyObject.iIsOOMTest = EFalse;
+        emptyObject.iFirstMemoryAllocation = 0;
+        emptyObject.iLastMemoryAllocation = 0;
+        return emptyObject;
+        }
+
+    TPtrC caseName( static_cast<const TUint16*>( KCases[ aCaseNumber ].iCaseName ) );
+    TCaseInfo caseInfo( caseName );
+    caseInfo.iMethod = KCases[ aCaseNumber ].iMethod;
+    caseInfo.iIsOOMTest = KCases[ aCaseNumber ].iIsOOMTest;
+    caseInfo.iFirstMemoryAllocation = KCases[ aCaseNumber ].iFirstMemoryAllocation;
+    caseInfo.iLastMemoryAllocation = KCases[ aCaseNumber ].iLastMemoryAllocation;
+    return caseInfo;
+    }
+
+// -----------------------------------------------------------------------------
+// CSifUiTest::CreateSifUi()
+// -----------------------------------------------------------------------------
+//
+TInt CSifUiTest::CreateSifUi()
+    {
+    if( iSifUi )
+        {
+        delete iSifUi;
+        iSifUi = NULL;
+        }
+
+    TRAPD( err, iSifUi = CSifUi::NewL() );
+    return err;
+    }
+
+// -----------------------------------------------------------------------------
+// CSifUiTest::CreateTest()
+// -----------------------------------------------------------------------------
+//
+TInt CSifUiTest::CreateLowMemTest( TTestResult& aResult )
+    {
+    _LIT( KTestName, "CreateLowMemTest" );
+    TestModuleIf().Printf( 0, KTestName, KEnter );
+
+    TInt count = 0;
+    TInt error = KErrNoMemory;
+    while( error == KErrNoMemory )
+        {
+        User::__DbgSetAllocFail( EFalse, RHeap::EDeterministic, ++count );
+        __UHEAP_MARK;
+        error = CreateSifUi();
+        __UHEAP_MARKEND;
+        User::__DbgSetAllocFail( EFalse, RHeap::ENone, count );
+        }
+    TestModuleIf().Printf( 1, KTestName, _L("count %d, last error %d"), count, error );
+    SetResult( aResult, error );
+    delete iSifUi;
+    iSifUi = NULL;
+
+    TestModuleIf().Printf( 0, KTestName, KExit );
+    return KErrNone;
+    }
+
+// -----------------------------------------------------------------------------
+// CSifUiTest::InformationNoteTest()
+// -----------------------------------------------------------------------------
+//
+TInt CSifUiTest::InformationNoteTest( TTestResult& aResult )
+    {
+    _LIT( KTestName, "InformationNoteTest" );
+    TestModuleIf().Printf( 0, KTestName, KEnter );
+
+    enum TTestSteps
+        {
+        EFirstStep,
+        EChangeText,
+        EWaitSomeTime,
+        EAllDone
+        };
+    _LIT( KInfoNoteText, "This is information note" );
+    _LIT( KChangedInfoNoteText, "Changed information note text" );
+
+    TInt result = CreateSifUi();
+    for( TInt step = EFirstStep; step < EAllDone && result == KErrNone; ++step )
+        {
+        TestModuleIf().Printf( 1, KTestName, KStepFormat, step );
+        switch( step )
+            {
+            case EFirstStep:
+                TRAP( result, iSifUi->DisplayInformationNoteL( KInfoNoteText ) );
+                break;
+            case EChangeText:
+                User::After( KOneSecond );
+                TRAP( result, iSifUi->DisplayInformationNoteL( KChangedInfoNoteText ) );
+                break;
+            case EWaitSomeTime:
+                User::After( KOneSecond );
+                break;
+            default:
+                User::Leave( KErrGeneral );
+                break;
+            }
+        }
+
+    delete iSifUi;
+    iSifUi = NULL;
+
+    SetResult( aResult, result );
+
+    TestModuleIf().Printf( 0, KTestName, KExit );
+    return KErrNone;
+    }
+
+// -----------------------------------------------------------------------------
+// CSifUiTest::WarningNoteTest()
+// -----------------------------------------------------------------------------
+//
+TInt CSifUiTest::WarningNoteTest( TTestResult& aResult )
+    {
+    _LIT( KTestName, "WarningNoteTest" );
+    TestModuleIf().Printf( 0, KTestName, KEnter );
+
+    enum TTestSteps
+        {
+        EFirstStep,
+        EChangeText,
+        EWaitSomeTime,
+        EAllDone
+        };
+    _LIT( KWarningNoteText, "This is warning note" );
+    _LIT( KChangedWarningNoteText, "Changed warning note text" );
+
+    TInt result = CreateSifUi();
+    for( TInt step = EFirstStep; step < EAllDone && result == KErrNone; ++step )
+        {
+        TestModuleIf().Printf( 1, KTestName, KStepFormat, step );
+        switch( step )
+            {
+            case EFirstStep:
+                TRAP( result, iSifUi->DisplayInformationNoteL( KWarningNoteText ) );
+                break;
+            case EChangeText:
+                User::After( KOneSecond );
+                TRAP( result, iSifUi->DisplayInformationNoteL( KChangedWarningNoteText ) );
+                break;
+            case EWaitSomeTime:
+                User::After( KOneSecond );
+                break;
+            default:
+                User::Leave( KErrGeneral );
+                break;
+            }
+        }
+
+    delete iSifUi;
+    iSifUi = NULL;
+
+    SetResult( aResult, result );
+
+    TestModuleIf().Printf( 0, KTestName, KExit );
+    return KErrNone;
+    }
+
+// -----------------------------------------------------------------------------
+// CSifUiTest::ErrorNoteTest()
+// -----------------------------------------------------------------------------
+//
+TInt CSifUiTest::ErrorNoteTest( TTestResult& aResult )
+    {
+    _LIT( KTestName, "ErrorNoteTest" );
+    TestModuleIf().Printf( 0, KTestName, KEnter );
+
+    enum TTestSteps
+        {
+        EFirstStep,
+        EChangeText,
+        EAllDone
+        };
+    _LIT( KErrorNoteText, "This is error note" );
+    _LIT( KChangedErrorNoteText, "Changed error note text" );
+
+    TInt result = CreateSifUi();
+    for( TInt step = EFirstStep; step < EAllDone && result == KErrNone; ++step )
+        {
+        TestModuleIf().Printf( 1, KTestName, KStepFormat, step );
+        switch( step )
+            {
+            case EFirstStep:
+                TRAP( result, iSifUi->DisplayErrorNoteL( KErrorNoteText ) );
+                break;
+            case EChangeText:
+                User::After( KOneSecond );
+                TRAP( result, iSifUi->DisplayErrorNoteL( KChangedErrorNoteText ) );
+                break;
+            default:
+                User::Leave( KErrGeneral );
+                break;
+            }
+        }
+
+    delete iSifUi;
+    iSifUi = NULL;
+
+    SetResult( aResult, result );
+
+    TestModuleIf().Printf( 0, KTestName, KExit );
+    return KErrNone;
+    }
+
+// -----------------------------------------------------------------------------
+// CSifUiTest::PermanentNoteTest()
+// -----------------------------------------------------------------------------
+//
+TInt CSifUiTest::PermanentNoteTest( TTestResult& aResult )
+    {
+    _LIT( KTestName, "PermanentNoteTest" );
+    TestModuleIf().Printf( 0, KTestName, KEnter );
+
+    enum TTestSteps
+        {
+        EFirstStep,
+        EDisplayNote,
+        EChangeText,
+        ECloseNote,
+        EDisplayDelayedNote,
+        EChangeDelayedNoteText,
+        ECloseSecondNote,
+        EAllDone
+        };
+
+    _LIT( KPermanentNoteText, "This is permanent note" );
+    _LIT( KChangedNoteText, "Changed permanent note text" );
+    _LIT( KDelayedNoteText, "This is delayed permanent note" );
+    _LIT( KChangedDelayedNoteText, "Changed delayed permanent note text" );
+
+    TInt result = CreateSifUi();
+    for( TInt step = EFirstStep; step < EAllDone && result == KErrNone; ++step )
+        {
+        TestModuleIf().Printf( 1, KTestName, KStepFormat, step );
+        switch( step )
+            {
+            case EFirstStep:
+                TRAP( result, iSifUi->ClosePermanentNote() );
+                break;
+            case EDisplayNote:
+                TRAP( result, iSifUi->DisplayPermanentNoteL( KPermanentNoteText ) );
+                break;
+            case EChangeText:
+                User::After( KThreeSeconds );
+                TRAP( result, iSifUi->DisplayPermanentNoteL( KChangedNoteText ) );
+                break;
+            case ECloseNote:
+                TRAP( result, iSifUi->ClosePermanentNote() );
+                break;
+            case EDisplayDelayedNote:
+                User::After( KThreeSeconds );
+                TRAP( result, iSifUi->DisplayPermanentNoteL( KDelayedNoteText ) );
+                break;
+            case EChangeDelayedNoteText:
+                User::After( KFiveSeconds );
+                TRAP( result, iSifUi->DisplayPermanentNoteL( KChangedDelayedNoteText ) );
+                break;
+            case ECloseSecondNote:
+                User::After( KOneSecond );
+                TRAP( result, iSifUi->ClosePermanentNote() );
+                break;
+            default:
+                User::Leave( KErrGeneral );
+                break;
+            }
+        }
+
+    delete iSifUi;
+    iSifUi = NULL;
+
+    SetResult( aResult, result );
+
+    TestModuleIf().Printf( 0, KTestName, KExit );
+    return KErrNone;
+    }
+
+// -----------------------------------------------------------------------------
+// CSifUiTest::ProgressNoteTest()
+// -----------------------------------------------------------------------------
+//
+TInt CSifUiTest::ProgressNoteTest( TTestResult& aResult )
+    {
+    _LIT( KTestName, "ProgressNoteTest" );
+    TestModuleIf().Printf( 0, KTestName, KEnter );
+
+    enum TTestSteps
+        {
+        EDisplayProgressNote,
+        EIncreaseBar1,
+        EIncreaseBar2,
+        EChangeProgressText,
+        EIncreaseBar3,
+        EIncreaseBar4,
+        EIncreaseBar5,
+        ECloseProgressNote,
+        EDelayedProgressNote,
+        EAllDone
+        };
+    _LIT( KProgressNoteText, "This is progress note" );
+    _LIT( KChangedProgressNoteText, "Changed progress note text" );
+
+    const TInt KProgressBarFinalValue = 6;
+    TInt progressBarValue = -1;
+    TRequestStatus reqStatus;       // ignored now, not monitoring if user cancels the note
+    TRequestStatus reqUpdate;
+    TInt result = CreateSifUi();
+    for( TInt step = EDisplayProgressNote; step < EAllDone && result == KErrNone; ++step )
+        {
+        TestModuleIf().Printf( 1, KTestName, KStepFormat, step );
+        switch( step )
+            {
+            case EDisplayProgressNote:
+                TRAP( result, iSifUi->DisplayProgressNoteL( KProgressNoteText, reqStatus ) );
+                if( result == KErrNone )
+                    {
+                    TRAP( result, iSifUi->SetProgressNoteFinalValueL( KProgressBarFinalValue ) );
+                    }
+                break;
+
+            case EIncreaseBar1:
+            case EIncreaseBar2:
+            case EIncreaseBar3:
+            case EIncreaseBar4:
+            case EIncreaseBar5:
+                User::After( KOneSecond );
+                TRAP( result, iSifUi->UpdateProgressNoteValueL( progressBarValue ) );
+                progressBarValue += 2;
+                break;
+
+            case EChangeProgressText:
+                User::After( KOneSecond );
+                TRAP( result, iSifUi->DisplayProgressNoteL( KChangedProgressNoteText, reqUpdate ) );
+                if( result == KErrNone )
+                    {
+                    User::WaitForRequest( reqUpdate );
+                    result = reqUpdate.Int();
+                    }
+                break;
+
+            case ECloseProgressNote:
+                User::After( KOneSecond );
+                TRAP( result, iSifUi->CloseProgressNoteL() );
+                if( result == KErrNone )
+                    {
+                    User::WaitForRequest( reqStatus );
+                    result = reqStatus.Int();
+                    }
+                break;
+
+            case EDelayedProgressNote:
+                TRAP( result, iSifUi->DisplayProgressNoteL( KProgressNoteText, reqStatus ) );
+                if( result == KErrNone )
+                    {
+                    User::After( KHalfSecond );
+                    TRAP( result, iSifUi->CloseProgressNoteL() );
+                    }
+                break;
+
+            default:
+                User::Leave( KErrGeneral );
+                break;
+            }
+        }
+
+    delete iSifUi;
+    iSifUi = NULL;
+
+    SetResult( aResult, result );
+
+    TestModuleIf().Printf( 0, KTestName, KExit );
+    return KErrNone;
+    }
+
+// -----------------------------------------------------------------------------
+// CSifUiTest::WaitNoteTest()
+// -----------------------------------------------------------------------------
+//
+TInt CSifUiTest::WaitNoteTest( TTestResult& aResult )
+    {
+    _LIT( KTestName, "WaitNoteTest" );
+    TestModuleIf().Printf( 0, KTestName, KEnter );
+
+    enum TTestSteps
+        {
+        ECloseWaitNoteBeforeItsOpened,
+        EDisplayWaitNote,
+        EChangeDisplayedText,
+        ECloseFirstWaitNote,
+        EDisplayDelayedWaitNote,
+        EChangeDelayedWaitNoteText,
+        ECloseWaitNote,
+        EAllDone
+        };
+    _LIT( KWaitNoteText, "This is wait note" );
+    _LIT( KChangedWaitNoteText, "Changed wait note text" );
+    _LIT( KDelayedWaitNoteText, "This is delayed wait note" );
+    _LIT( KChangedDelayedWaitNoteText, "Changed delayed wait note text" );
+
+    TInt result = CreateSifUi();
+    TRequestStatus reqStatus;       // ignored now, not monitoring if user cancels the note
+    for( TInt step = EDisplayWaitNote; step < EAllDone && result == KErrNone; ++step )
+        {
+        TestModuleIf().Printf( 1, KTestName, KStepFormat, step );
+        switch( step )
+            {
+            case ECloseWaitNoteBeforeItsOpened:
+                TRAP( result, iSifUi->CloseWaitNote() );
+                break;
+            case EDisplayWaitNote:
+                TRAP( result, iSifUi->DisplayWaitNoteL( KWaitNoteText, reqStatus ) );
+                if( result == KErrNone && reqStatus != KRequestPending )
+                    {
+                    User::WaitForRequest( reqStatus );
+                    result = reqStatus.Int();
+                    }
+                break;
+            case EChangeDisplayedText:
+                User::After( KThreeSeconds );
+                TRAP( result, iSifUi->DisplayWaitNoteL( KChangedWaitNoteText, reqStatus ) );
+                if( result == KErrNone && reqStatus != KRequestPending )
+                    {
+                    User::WaitForRequest( reqStatus );
+                    result = reqStatus.Int();
+                    }
+                break;
+            case ECloseFirstWaitNote:
+                TRAP( result, iSifUi->CloseWaitNote() );
+                if( result == KErrNone )
+                    {
+                    User::WaitForRequest( reqStatus );
+                    result = reqStatus.Int();
+                    }
+                break;
+            case EDisplayDelayedWaitNote:
+                User::After( KOneSecond );
+                TRAP( result, iSifUi->DisplayWaitNoteL( KDelayedWaitNoteText, reqStatus ) );
+                if( result == KErrNone && reqStatus != KRequestPending )
+                    {
+                    User::WaitForRequest( reqStatus );
+                    result = reqStatus.Int();
+                    }
+                break;
+            case EChangeDelayedWaitNoteText:
+                User::After( KThreeSeconds );
+                TRAP( result, iSifUi->DisplayWaitNoteL( KChangedDelayedWaitNoteText, reqStatus ) );
+                if( result == KErrNone && reqStatus != KRequestPending )
+                    {
+                    User::WaitForRequest( reqStatus );
+                    result = reqStatus.Int();
+                    }
+                break;
+            case ECloseWaitNote:
+                User::After( KOneSecond );
+                TRAP( result, iSifUi->CloseWaitNote() );
+                if( result == KErrNone )
+                    {
+                    User::WaitForRequest( reqStatus );
+                    result = reqStatus.Int();
+                    }
+                break;
+            default:
+                User::Leave( KErrGeneral );
+                break;
+            }
+        }
+
+    delete iSifUi;
+    iSifUi = NULL;
+
+    SetResult( aResult, result );
+
+    TestModuleIf().Printf( 0, KTestName, KExit );
+    return KErrNone;
+    }
+
+// -----------------------------------------------------------------------------
+// CSifUiTest::LaunchHelpTest()
+// -----------------------------------------------------------------------------
+//
+TInt CSifUiTest::LaunchHelpTest( TTestResult& aResult )
+    {
+    _LIT( KTestName, "LaunchHelpTest" );
+    TestModuleIf().Printf( 0, KTestName, KEnter );
+
+    TInt result = CreateSifUi();
+    if( result == KErrNone )
+        {
+        AsyncWaitAndSendKeyEventL( KFiveSeconds, KRightSoftkey );
+
+        _LIT( KAM_HLP_INSTALL_CAPAB, "AM_HLP_INSTALL_CAPAB" );
+        TRAP( result, iSifUi->LaunchHelpL( KAM_HLP_INSTALL_CAPAB ) );
+
+        delete iSifUi;
+        iSifUi = NULL;
+        }
+    SetResult( aResult, result );
+
+    TestModuleIf().Printf( 0, KTestName, KExit );
+    return KErrNone;
+    }
+