--- /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;
+ }
+