appinstall_plat/sifui_api/tsrc/src/sifuitestcases.cpp
changeset 42 d17dc5398051
parent 25 98b66e4fb0be
equal deleted inserted replaced
37:6e7b00453237 42:d17dc5398051
    13 *
    13 *
    14 * Description: This file contains hardcoded module implementation.
    14 * Description: This file contains hardcoded module implementation.
    15 *
    15 *
    16 */
    16 */
    17 
    17 
    18 #include <badesca.h>                    // CDesCArray
    18 #include <badesca.h>                    // CDesCArray, StifUnitMacros.h needs this
       
    19 #include <StifUnitMacros.h>             // STIF_ASSERT_NULL, STIF_ASSERT_NOT_NULL
    19 #include <sifui.h>                      // CSifUi
    20 #include <sifui.h>                      // CSifUi
    20 #include "SifUiTest.h"                  // CSifUiTest
    21 #include <sifuiappinfo.h>               // CSifUiAppInfo
       
    22 #include <sifuicertificateinfo.h>       // CSifUiCertificateInfo
       
    23 #include <s32file.h>                    // RFileReadStream
       
    24 #include <s32mem.h>                     // RDesReadStream
       
    25 #include <apgcli.h>                     // RApaLsSession
       
    26 #include <swi/msisuihandlers.h>         // Swi::CCertificateInfo
       
    27 #include "sifuitest.h"                  // CSifUiTest
       
    28 #include "sifuitestcleanuputils.h"      // CleanupResetAndDestroyPushL
       
    29 
       
    30 _LIT( KX509TestCertFile, "\\testing\\data\\test_x509_cert.cer" );
    21 
    31 
    22 _LIT( KEnter, "Enter" );
    32 _LIT( KEnter, "Enter" );
    23 _LIT( KStepFormat, "Step %d" );
    33 _LIT( KStepFormat, "Step %d" );
    24 _LIT( KExit, "Exit" );
    34 _LIT( KExit, "Exit" );
       
    35 
       
    36 const TInt KBufferGranularity = 1024;
       
    37 
    25 
    38 
    26 // Internal structure containing test case name and pointer to test function
    39 // Internal structure containing test case name and pointer to test function
    27 class TCaseInfoInternal
    40 class TCaseInfoInternal
    28     {
    41     {
    29     public:
    42     public:
    31         TestFunction    iMethod;
    44         TestFunction    iMethod;
    32         TBool           iIsOOMTest;
    45         TBool           iIsOOMTest;
    33         TInt            iFirstMemoryAllocation;
    46         TInt            iFirstMemoryAllocation;
    34         TInt            iLastMemoryAllocation;
    47         TInt            iLastMemoryAllocation;
    35     };
    48     };
    36 
       
    37 const TInt KOneSecond = 1000000;
       
    38 const TInt KThreeSeconds = 3 * KOneSecond;
       
    39 const TInt KFiveSeconds = 5 * KOneSecond;
       
    40 const TInt KHalfSecond = KOneSecond / 2;
       
    41 const TKeyEvent KRightSoftkey = { EKeyDevice1, 0, 0, EStdKeyDevice1 };  // EKeyCBA2
       
    42 
    49 
    43 
    50 
    44 // ======== MEMBER FUNCTIONS ========
    51 // ======== MEMBER FUNCTIONS ========
    45 
    52 
    46 // -----------------------------------------------------------------------------
    53 // -----------------------------------------------------------------------------
    67     */
    74     */
    68 
    75 
    69     static TCaseInfoInternal const KCases[] =
    76     static TCaseInfoInternal const KCases[] =
    70         {
    77         {
    71         ENTRY( "CreateLowMemTest", CSifUiTest::CreateLowMemTest ),
    78         ENTRY( "CreateLowMemTest", CSifUiTest::CreateLowMemTest ),
    72         ENTRY( "InformationNoteTest", CSifUiTest::InformationNoteTest ),
    79         ENTRY( "MemorySelectionTest", CSifUiTest::MemorySelectionTest ),
    73         ENTRY( "WarningNoteTest", CSifUiTest::WarningNoteTest ),
    80         ENTRY( "CertificateInfoTest", CSifUiTest::CertificateInfoTest ),
    74         ENTRY( "ErrorNoteTest", CSifUiTest::ErrorNoteTest ),
    81         ENTRY( "AppInfoTest", CSifUiTest::AppInfoTest ),
    75         ENTRY( "PermanentNoteTest", CSifUiTest::PermanentNoteTest ),
    82         ENTRY( "ProgressDialogsTest", CSifUiTest::ProgressDialogsTest )
    76         ENTRY( "ProgressNoteTest", CSifUiTest::ProgressNoteTest ),
       
    77         ENTRY( "WaitNoteTest", CSifUiTest::WaitNoteTest ),
       
    78         ENTRY( "LaunchHelpTest", CSifUiTest::LaunchHelpTest )
       
    79         };
    83         };
    80 
    84 
    81     if( (TUint) aCaseNumber >= sizeof( KCases ) / sizeof( TCaseInfoInternal ) )
    85     if( (TUint) aCaseNumber >= sizeof( KCases ) / sizeof( TCaseInfoInternal ) )
    82         {
    86         {
    83         TCaseInfo emptyObject( KNullDesC );
    87         TCaseInfo emptyObject( KNullDesC );
    96     caseInfo.iLastMemoryAllocation = KCases[ aCaseNumber ].iLastMemoryAllocation;
   100     caseInfo.iLastMemoryAllocation = KCases[ aCaseNumber ].iLastMemoryAllocation;
    97     return caseInfo;
   101     return caseInfo;
    98     }
   102     }
    99 
   103 
   100 // -----------------------------------------------------------------------------
   104 // -----------------------------------------------------------------------------
   101 // CSifUiTest::CreateSifUi()
   105 // CSifUiTest::ReadCertificateL()
   102 // -----------------------------------------------------------------------------
   106 // -----------------------------------------------------------------------------
   103 //
   107 //
   104 TInt CSifUiTest::CreateSifUi()
   108 CX509Certificate* CSifUiTest::ReadCertificateL( const TDesC& aFileName )
   105     {
   109     {
   106     if( iSifUi )
   110     TFindFile findFile( iFs );
   107         {
   111     User::LeaveIfError( findFile.FindByDir( aFileName, KNullDesC ) );
   108         delete iSifUi;
   112 
   109         iSifUi = NULL;
   113     RFile file;
   110         }
   114     User::LeaveIfError( file.Open( iFs, findFile.File(), EFileRead ) );
   111 
   115     CleanupClosePushL( file );
   112     TRAPD( err, iSifUi = CSifUi::NewL() );
   116 
   113     return err;
   117     TInt fileSize = 0;
       
   118     User::LeaveIfError( file.Size( fileSize ) );
       
   119 
       
   120     HBufC8* buffer = HBufC8::NewLC( fileSize );
       
   121     TPtr8 ptr( buffer->Des() );
       
   122     User::LeaveIfError( file.Read( ptr ) );
       
   123 
       
   124     CX509Certificate* x509cert = CX509Certificate::NewL( *buffer );
       
   125 
       
   126     CleanupStack::PopAndDestroy( buffer );
       
   127     CleanupStack::PopAndDestroy( &file );
       
   128     return x509cert;
   114     }
   129     }
   115 
   130 
   116 // -----------------------------------------------------------------------------
   131 // -----------------------------------------------------------------------------
   117 // CSifUiTest::CreateTest()
   132 // CSifUiTest::CreateTest()
   118 // -----------------------------------------------------------------------------
   133 // -----------------------------------------------------------------------------
   122     _LIT( KTestName, "CreateLowMemTest" );
   137     _LIT( KTestName, "CreateLowMemTest" );
   123     TestModuleIf().Printf( 0, KTestName, KEnter );
   138     TestModuleIf().Printf( 0, KTestName, KEnter );
   124 
   139 
   125     TInt count = 0;
   140     TInt count = 0;
   126     TInt error = KErrNoMemory;
   141     TInt error = KErrNoMemory;
       
   142     CSifUi* sifUi = NULL;
   127     while( error == KErrNoMemory )
   143     while( error == KErrNoMemory )
   128         {
   144         {
   129         User::__DbgSetAllocFail( EFalse, RHeap::EDeterministic, ++count );
   145         User::__DbgSetAllocFail( EFalse, RHeap::EDeterministic, ++count );
   130         __UHEAP_MARK;
   146         TRAP( error, sifUi = CSifUi::NewL() );
   131         error = CreateSifUi();
       
   132         __UHEAP_MARKEND;
       
   133         User::__DbgSetAllocFail( EFalse, RHeap::ENone, count );
   147         User::__DbgSetAllocFail( EFalse, RHeap::ENone, count );
       
   148         if( !error )
       
   149             {
       
   150             delete sifUi;
       
   151             sifUi = NULL;
       
   152             }
   134         }
   153         }
   135     TestModuleIf().Printf( 1, KTestName, _L("count %d, last error %d"), count, error );
   154     TestModuleIf().Printf( 1, KTestName, _L("count %d, last error %d"), count, error );
   136     SetResult( aResult, error );
   155     SetResult( aResult, error );
   137     delete iSifUi;
       
   138     iSifUi = NULL;
       
   139 
   156 
   140     TestModuleIf().Printf( 0, KTestName, KExit );
   157     TestModuleIf().Printf( 0, KTestName, KExit );
   141     return KErrNone;
   158     return KErrNone;
   142     }
   159     }
   143 
   160 
   144 // -----------------------------------------------------------------------------
   161 // -----------------------------------------------------------------------------
   145 // CSifUiTest::InformationNoteTest()
   162 // CSifUiTest::MemorySelectionTest()
   146 // -----------------------------------------------------------------------------
   163 // -----------------------------------------------------------------------------
   147 //
   164 //
   148 TInt CSifUiTest::InformationNoteTest( TTestResult& aResult )
   165 TInt CSifUiTest::MemorySelectionTest( TTestResult& aResult )
   149     {
   166     {
   150     _LIT( KTestName, "InformationNoteTest" );
   167     TRAPD( result, DoMemorySelectionTestL( aResult ) );
       
   168     SetResult( aResult, result );
       
   169     return KErrNone;
       
   170     }
       
   171 
       
   172 // -----------------------------------------------------------------------------
       
   173 // CSifUiTest::DoMemorySelectionTestL()
       
   174 // -----------------------------------------------------------------------------
       
   175 //
       
   176 void CSifUiTest::DoMemorySelectionTestL( TTestResult& aResult )
       
   177     {
       
   178     _LIT( KTestName, "MemorySelectionTest" );
   151     TestModuleIf().Printf( 0, KTestName, KEnter );
   179     TestModuleIf().Printf( 0, KTestName, KEnter );
   152 
   180 
   153     enum TTestSteps
   181     enum TTestSteps
   154         {
   182         {
   155         EFirstStep,
   183         EFirstStep,
   156         EChangeText,
   184         EGetSelectedWhenNotSet,
   157         EWaitSomeTime,
   185         ESetNoDrivesStep,
       
   186         ESetThreeDriveStep,
       
   187         ESetOneDriveStep,
       
   188         EGetSelectedWhenSetButNotAskedStep,
       
   189         ELastStep,
   158         EAllDone
   190         EAllDone
   159         };
   191         };
   160     _LIT( KInfoNoteText, "This is information note" );
   192 
   161     _LIT( KChangedInfoNoteText, "Changed information note text" );
   193     CSifUi* sifUi = NULL;
   162 
   194     RArray<TInt> driveNumbers;
   163     TInt result = CreateSifUi();
   195     CleanupClosePushL( driveNumbers );
   164     for( TInt step = EFirstStep; step < EAllDone && result == KErrNone; ++step )
   196     TInt drive = 0;
       
   197     TInt errorCode = KErrNone;
       
   198 
       
   199     TInt error = KErrNone;
       
   200     for( TInt step = EFirstStep; step < EAllDone && !error; ++step )
   165         {
   201         {
   166         TestModuleIf().Printf( 1, KTestName, KStepFormat, step );
   202         TestModuleIf().Printf( 1, KTestName, KStepFormat, step );
   167         switch( step )
   203         switch( step )
   168             {
   204             {
   169             case EFirstStep:
   205             case EFirstStep:
   170                 TRAP( result, iSifUi->DisplayInformationNoteL( KInfoNoteText ) );
   206                 STIF_ASSERT_NULL( sifUi );
   171                 break;
   207                 TRAP( error, sifUi = CSifUi::NewL() );
   172             case EChangeText:
   208                 if( !error )
   173                 User::After( KOneSecond );
   209                     {
   174                 TRAP( result, iSifUi->DisplayInformationNoteL( KChangedInfoNoteText ) );
   210                     CleanupStack::PushL( sifUi );
   175                 break;
   211                     }
   176             case EWaitSomeTime:
   212                 break;
   177                 User::After( KOneSecond );
   213 
   178                 break;
   214             case EGetSelectedWhenNotSet:
       
   215                 STIF_ASSERT_NOT_NULL( sifUi );
       
   216                 TRAP( error, errorCode = sifUi->SelectedDrive( drive ) );
       
   217                 if( error == KErrNone && errorCode == KErrNotFound )
       
   218                     {
       
   219                     error = KErrNone;
       
   220                     }
       
   221                 else
       
   222                     {
       
   223                     error = KErrGeneral;
       
   224                     }
       
   225                 break;
       
   226 
       
   227             case ESetNoDrivesStep:
       
   228                 STIF_ASSERT_NOT_NULL( sifUi );
       
   229                 TRAP( error, sifUi->SetMemorySelectionL( driveNumbers ) );
       
   230                 break;
       
   231 
       
   232             case ESetThreeDriveStep:
       
   233                 STIF_ASSERT_NOT_NULL( sifUi );
       
   234                 driveNumbers.Append( EDriveC );
       
   235                 driveNumbers.Append( EDriveE );
       
   236                 driveNumbers.Append( EDriveF );
       
   237                 TRAP( error, sifUi->SetMemorySelectionL( driveNumbers ) );
       
   238                 break;
       
   239 
       
   240             case ESetOneDriveStep:
       
   241                 STIF_ASSERT_NOT_NULL( sifUi );
       
   242                 driveNumbers.Append( EDriveC );
       
   243                 TRAP( error, sifUi->SetMemorySelectionL( driveNumbers ) );
       
   244                 break;
       
   245 
       
   246             case EGetSelectedWhenSetButNotAskedStep:
       
   247                 STIF_ASSERT_NOT_NULL( sifUi );
       
   248                 TRAP( error, errorCode = sifUi->SelectedDrive( drive ) );
       
   249                 if( error == KErrNone && errorCode == KErrNotFound )
       
   250                     {
       
   251                     error = KErrNone;
       
   252                     }
       
   253                 else
       
   254                     {
       
   255                     error = KErrGeneral;
       
   256                     }
       
   257                 break;
       
   258 
       
   259             case ELastStep:
       
   260                 STIF_ASSERT_NOT_NULL( sifUi );
       
   261                 CleanupStack::PopAndDestroy( sifUi );
       
   262                 sifUi = NULL;
       
   263                 break;
       
   264 
   179             default:
   265             default:
   180                 User::Leave( KErrGeneral );
   266                 User::Leave( KErrGeneral );
   181                 break;
   267                 break;
   182             }
   268             }
   183         }
   269         }
   184 
   270     User::LeaveIfError( error );
   185     delete iSifUi;
   271 
   186     iSifUi = NULL;
   272     CleanupStack::PopAndDestroy( &driveNumbers );
   187 
   273     TestModuleIf().Printf( 0, KTestName, KExit );
       
   274     }
       
   275 
       
   276 // -----------------------------------------------------------------------------
       
   277 // CSifUiTest::CertificateInfoTest()
       
   278 // -----------------------------------------------------------------------------
       
   279 //
       
   280 TInt CSifUiTest::CertificateInfoTest( TTestResult& aResult )
       
   281     {
       
   282     TRAPD( result, DoCertificateInfoTestL( aResult ) );
   188     SetResult( aResult, result );
   283     SetResult( aResult, result );
   189 
       
   190     TestModuleIf().Printf( 0, KTestName, KExit );
       
   191     return KErrNone;
   284     return KErrNone;
   192     }
   285     }
   193 
   286 
   194 // -----------------------------------------------------------------------------
   287 // -----------------------------------------------------------------------------
   195 // CSifUiTest::WarningNoteTest()
   288 // CSifUiTest::DoCertificateInfoTestL()
   196 // -----------------------------------------------------------------------------
   289 // -----------------------------------------------------------------------------
   197 //
   290 //
   198 TInt CSifUiTest::WarningNoteTest( TTestResult& aResult )
   291 void CSifUiTest::DoCertificateInfoTestL( TTestResult& aResult )
   199     {
   292     {
   200     _LIT( KTestName, "WarningNoteTest" );
   293     _LIT( KTestName, "CertificateInfoTest" );
   201     TestModuleIf().Printf( 0, KTestName, KEnter );
   294     TestModuleIf().Printf( 0, KTestName, KEnter );
   202 
   295 
   203     enum TTestSteps
   296     enum TTestSteps
   204         {
   297         {
   205         EFirstStep,
   298         EFirstStep,
   206         EChangeText,
   299         ESetNoCertificates,
   207         EWaitSomeTime,
   300         EReadAndSetCertificate,
       
   301         ELastStep,
   208         EAllDone
   302         EAllDone
   209         };
   303         };
   210     _LIT( KWarningNoteText, "This is warning note" );
   304 
   211     _LIT( KChangedWarningNoteText, "Changed warning note text" );
   305     CSifUi* sifUi = NULL;
   212 
   306     RPointerArray<CSifUiCertificateInfo> certificates;
   213     TInt result = CreateSifUi();
   307     CleanupResetAndDestroyPushL( certificates );
   214     for( TInt step = EFirstStep; step < EAllDone && result == KErrNone; ++step )
   308 
       
   309     TInt error = KErrNone;
       
   310     for( TInt step = EFirstStep; step < EAllDone && !error; ++step )
   215         {
   311         {
   216         TestModuleIf().Printf( 1, KTestName, KStepFormat, step );
   312         TestModuleIf().Printf( 1, KTestName, KStepFormat, step );
   217         switch( step )
   313         switch( step )
   218             {
   314             {
   219             case EFirstStep:
   315             case EFirstStep:
   220                 TRAP( result, iSifUi->DisplayInformationNoteL( KWarningNoteText ) );
   316                 STIF_ASSERT_NULL( sifUi );
   221                 break;
   317                 TRAP( error, sifUi = CSifUi::NewL() );
   222             case EChangeText:
   318                 if( !error )
   223                 User::After( KOneSecond );
   319                     {
   224                 TRAP( result, iSifUi->DisplayInformationNoteL( KChangedWarningNoteText ) );
   320                     CleanupStack::PushL( sifUi );
   225                 break;
   321                     }
   226             case EWaitSomeTime:
   322                 break;
   227                 User::After( KOneSecond );
   323 
   228                 break;
   324             case ESetNoCertificates:
       
   325                 STIF_ASSERT_NOT_NULL( sifUi );
       
   326                 TRAP( error, sifUi->SetCertificateInfoL( certificates ) );
       
   327                 break;
       
   328 
       
   329             case EReadAndSetCertificate:
       
   330                 {
       
   331                 STIF_ASSERT_NOT_NULL( sifUi );
       
   332                 CX509Certificate* x509cert = ReadCertificateL( KX509TestCertFile );
       
   333                 CleanupStack::PushL( x509cert );
       
   334 
       
   335                 Swi::CCertificateInfo* swiCert = Swi::CCertificateInfo::NewLC( *x509cert );
       
   336                 CSifUiCertificateInfo* testCert = CSifUiCertificateInfo::NewLC( *swiCert );
       
   337 
       
   338                 CBufBase* buf = CBufFlat::NewL( KBufferGranularity );
       
   339                 CleanupStack::PushL( buf );
       
   340                 RBufWriteStream writeStream( *buf );
       
   341                 CleanupClosePushL( writeStream );
       
   342                 STIF_ASSERT_TRUE( buf->Size() == 0 );
       
   343                 testCert->ExternalizeL( writeStream );
       
   344                 STIF_ASSERT_TRUE( buf->Size() > 0 );
       
   345                 CleanupStack::PopAndDestroy( 2, buf );      // writeStream, buf
       
   346 
       
   347                 CleanupStack::PopAndDestroy( testCert );
       
   348                 testCert = NULL;
       
   349 
       
   350                 testCert = CSifUiCertificateInfo::NewL( *swiCert );
       
   351                 CleanupStack::PushL( testCert );
       
   352                 certificates.AppendL( testCert );
       
   353                 CleanupStack::Pop( testCert );
       
   354                 TRAP( error, sifUi->SetCertificateInfoL( certificates ) );
       
   355 
       
   356                 CleanupStack::PopAndDestroy( 2, x509cert );     // swiCert, x509cert
       
   357                 }
       
   358                 break;
       
   359 
       
   360             case ELastStep:
       
   361                 STIF_ASSERT_NOT_NULL( sifUi );
       
   362                 CleanupStack::PopAndDestroy( sifUi );
       
   363                 sifUi = NULL;
       
   364                 break;
       
   365 
   229             default:
   366             default:
   230                 User::Leave( KErrGeneral );
   367                 User::Leave( KErrGeneral );
   231                 break;
   368                 break;
   232             }
   369             }
   233         }
   370         }
   234 
   371     User::LeaveIfError( error );
   235     delete iSifUi;
   372 
   236     iSifUi = NULL;
   373     CleanupStack::PopAndDestroy( &certificates );
   237 
   374     TestModuleIf().Printf( 0, KTestName, KExit );
       
   375     }
       
   376 
       
   377 // -----------------------------------------------------------------------------
       
   378 // CSifUiTest::AppInfoTest()
       
   379 // -----------------------------------------------------------------------------
       
   380 //
       
   381 TInt CSifUiTest::AppInfoTest( TTestResult& aResult )
       
   382     {
       
   383     TRAPD( result, DoAppInfoTestL( aResult ) );
   238     SetResult( aResult, result );
   384     SetResult( aResult, result );
   239 
       
   240     TestModuleIf().Printf( 0, KTestName, KExit );
       
   241     return KErrNone;
   385     return KErrNone;
   242     }
   386     }
   243 
   387 
   244 // -----------------------------------------------------------------------------
   388 // -----------------------------------------------------------------------------
   245 // CSifUiTest::ErrorNoteTest()
   389 // CSifUiTest::DoAppInfoTestL()
   246 // -----------------------------------------------------------------------------
   390 // -----------------------------------------------------------------------------
   247 //
   391 //
   248 TInt CSifUiTest::ErrorNoteTest( TTestResult& aResult )
   392 void CSifUiTest::DoAppInfoTestL( TTestResult& aResult )
   249     {
   393     {
   250     _LIT( KTestName, "ErrorNoteTest" );
   394     _LIT( KTestName, "AppInfoTest" );
   251     TestModuleIf().Printf( 0, KTestName, KEnter );
   395     TestModuleIf().Printf( 0, KTestName, KEnter );
   252 
   396 
   253     enum TTestSteps
   397     enum TTestSteps
   254         {
   398         {
   255         EFirstStep,
   399         EFirstStep,
   256         EChangeText,
   400         EAppInfoTests,
       
   401         EAppInfoIconTest,
       
   402         EShowConfirmation,
       
   403         EShowError,
       
   404         ELastStep,
   257         EAllDone
   405         EAllDone
   258         };
   406         };
   259     _LIT( KErrorNoteText, "This is error note" );
   407 
   260     _LIT( KChangedErrorNoteText, "Changed error note text" );
   408     CSifUi* sifUi = NULL;
   261 
   409 
   262     TInt result = CreateSifUi();
   410     _LIT( KAppName, "TestApplication" );
   263     for( TInt step = EFirstStep; step < EAllDone && result == KErrNone; ++step )
   411     _LIT( KAppVendor, "TestSupplier" );
       
   412     const TVersion KAppVersion( 1, 2, 3 );
       
   413     const TInt KAppSize = 0x1234;
       
   414 
       
   415     TInt error = KErrNone;
       
   416     for( TInt step = EFirstStep; step < EAllDone && !error; ++step )
   264         {
   417         {
   265         TestModuleIf().Printf( 1, KTestName, KStepFormat, step );
   418         TestModuleIf().Printf( 1, KTestName, KStepFormat, step );
   266         switch( step )
   419         switch( step )
   267             {
   420             {
   268             case EFirstStep:
   421             case EFirstStep:
   269                 TRAP( result, iSifUi->DisplayErrorNoteL( KErrorNoteText ) );
   422                 STIF_ASSERT_NULL( sifUi );
   270                 break;
   423                 TRAP( error, sifUi = CSifUi::NewL() );
   271             case EChangeText:
   424                 if( !error )
   272                 User::After( KOneSecond );
   425                     {
   273                 TRAP( result, iSifUi->DisplayErrorNoteL( KChangedErrorNoteText ) );
   426                     CleanupStack::PushL( sifUi );
   274                 break;
   427                     }
       
   428                 break;
       
   429 
       
   430             case EAppInfoTests:
       
   431                 {
       
   432                 STIF_ASSERT_NOT_NULL( sifUi );
       
   433                 CSifUiAppInfo* appInfo = NULL;
       
   434                 appInfo = CSifUiAppInfo::NewLC( KAppName, KAppVendor, KAppVersion, KAppSize, NULL );
       
   435 
       
   436                 STIF_ASSERT_TRUE( appInfo->Name().Compare( KAppName ) == 0 );
       
   437                 STIF_ASSERT_TRUE( appInfo->Vendor().Compare( KAppVendor ) == 0 );
       
   438 
       
   439                 STIF_ASSERT_TRUE( appInfo->Version().iMajor == KAppVersion.iMajor );
       
   440                 STIF_ASSERT_TRUE( appInfo->Version().iMinor == KAppVersion.iMinor );
       
   441                 STIF_ASSERT_TRUE( appInfo->Version().iBuild == KAppVersion.iBuild );
       
   442 
       
   443                 STIF_ASSERT_TRUE( appInfo->Size() == KAppSize );
       
   444                 STIF_ASSERT_TRUE( appInfo->Bitmaps() == NULL );
       
   445 
       
   446                 CBufBase* buf = CBufFlat::NewL( KBufferGranularity );
       
   447                 CleanupStack::PushL( buf );
       
   448                 RBufWriteStream writeStream( *buf );
       
   449                 CleanupClosePushL( writeStream );
       
   450                 STIF_ASSERT_TRUE( buf->Size() == 0 );
       
   451                 appInfo->ExternalizeL( writeStream );
       
   452                 STIF_ASSERT_TRUE( buf->Size() > 0 );
       
   453                 CleanupStack::PopAndDestroy( &writeStream );
       
   454                 CleanupStack::PopAndDestroy( buf );
       
   455 
       
   456                 CleanupStack::PopAndDestroy( appInfo );
       
   457                 }
       
   458                 break;
       
   459 
       
   460             case EAppInfoIconTest:
       
   461                 {
       
   462                 STIF_ASSERT_NOT_NULL( sifUi );
       
   463                 CSifUiAppInfo* appInfo = NULL;
       
   464 
       
   465                 // TODO: proper icon test needed
       
   466                 CApaMaskedBitmap* appBitmap = NULL;
       
   467                 appInfo = CSifUiAppInfo::NewLC( KAppName, KAppVendor, KAppVersion, KAppSize, appBitmap );
       
   468 
       
   469                 CBufBase* buf = CBufFlat::NewL( KBufferGranularity );
       
   470                 CleanupStack::PushL( buf );
       
   471                 RBufWriteStream writeStream( *buf );
       
   472                 CleanupClosePushL( writeStream );
       
   473                 STIF_ASSERT_TRUE( buf->Size() == 0 );
       
   474                 appInfo->ExternalizeL( writeStream );
       
   475                 STIF_ASSERT_TRUE( buf->Size() > 0 );
       
   476                 CleanupStack::PopAndDestroy( &writeStream );
       
   477                 CleanupStack::PopAndDestroy( buf );
       
   478 
       
   479                 CleanupStack::PopAndDestroy( appInfo );
       
   480                 }
       
   481                 break;
       
   482 
       
   483             case EShowConfirmation:
       
   484                 {
       
   485                 STIF_ASSERT_NOT_NULL( sifUi );
       
   486                 CSifUiAppInfo* appInfo = NULL;
       
   487                 appInfo = CSifUiAppInfo::NewL( KAppName, KAppVendor, KAppVersion, KAppSize, NULL );
       
   488                 CleanupStack::PushL( appInfo );
       
   489 
       
   490                 CBufBase* buf = CBufFlat::NewL( KBufferGranularity );
       
   491                 CleanupStack::PushL( buf );
       
   492                 RBufWriteStream writeStream( *buf );
       
   493                 CleanupClosePushL( writeStream );
       
   494                 STIF_ASSERT_TRUE( buf->Size() == 0 );
       
   495                 appInfo->ExternalizeL( writeStream );
       
   496                 STIF_ASSERT_TRUE( buf->Size() > 0 );
       
   497                 CleanupStack::PopAndDestroy( &writeStream );
       
   498                 CleanupStack::PopAndDestroy( buf );
       
   499 
       
   500                 TBool result = EFalse;
       
   501                 // TODO: how to close opened dialog automatically?
       
   502                 TRAP( error, result = sifUi->ShowConfirmationL( *appInfo ) );
       
   503                 if( result )
       
   504                     {
       
   505                     _LIT( KAccepted, "Accepted" );
       
   506                     TestModuleIf().Printf( 1, KTestName, KAccepted );
       
   507                     }
       
   508                 else
       
   509                     {
       
   510                     _LIT( KCancelled, "Cancelled" );
       
   511                     TestModuleIf().Printf( 1, KTestName, KCancelled );
       
   512                     }
       
   513                 CleanupStack::PopAndDestroy( appInfo );
       
   514                 }
       
   515                 break;
       
   516 
       
   517             case EShowError:
       
   518                 {
       
   519                 STIF_ASSERT_NOT_NULL( sifUi );
       
   520                 _LIT( KErrorMessage, "Test error" );
       
   521                 _LIT( KErrorDetails, "Test error details" );
       
   522                 // TODO: how to close opened dialog automatically?
       
   523                 TRAP( error, sifUi->ShowFailedL( KErrNotFound, KErrorMessage, KErrorDetails ) );
       
   524                 }
       
   525                 break;
       
   526 
       
   527             case ELastStep:
       
   528                 STIF_ASSERT_NOT_NULL( sifUi );
       
   529                 CleanupStack::PopAndDestroy( sifUi );
       
   530                 sifUi = NULL;
       
   531                 break;
       
   532 
   275             default:
   533             default:
   276                 User::Leave( KErrGeneral );
   534                 User::Leave( KErrGeneral );
   277                 break;
   535                 break;
   278             }
   536             }
   279         }
   537         }
   280 
   538     User::LeaveIfError( error );
   281     delete iSifUi;
   539 
   282     iSifUi = NULL;
   540     TestModuleIf().Printf( 0, KTestName, KExit );
   283 
   541     }
       
   542 
       
   543 // -----------------------------------------------------------------------------
       
   544 // CSifUiTest::ProgressDialogsTest()
       
   545 // -----------------------------------------------------------------------------
       
   546 //
       
   547 TInt CSifUiTest::ProgressDialogsTest( TTestResult& aResult )
       
   548     {
       
   549     TRAPD( result, DoProgressDialogsTestL( aResult ) );
   284     SetResult( aResult, result );
   550     SetResult( aResult, result );
   285 
       
   286     TestModuleIf().Printf( 0, KTestName, KExit );
       
   287     return KErrNone;
   551     return KErrNone;
   288     }
   552     }
   289 
   553 
   290 // -----------------------------------------------------------------------------
   554 // -----------------------------------------------------------------------------
   291 // CSifUiTest::PermanentNoteTest()
   555 // CSifUiTest::DoProgressDialogsTestL()
   292 // -----------------------------------------------------------------------------
   556 // -----------------------------------------------------------------------------
   293 //
   557 //
   294 TInt CSifUiTest::PermanentNoteTest( TTestResult& aResult )
   558 void CSifUiTest::DoProgressDialogsTestL( TTestResult& aResult )
   295     {
   559     {
   296     _LIT( KTestName, "PermanentNoteTest" );
   560     _LIT( KTestName, "ProgressDlgsTest" );
   297     TestModuleIf().Printf( 0, KTestName, KEnter );
   561     TestModuleIf().Printf( 0, KTestName, KEnter );
   298 
   562 
   299     enum TTestSteps
   563     enum TTestSteps
   300         {
   564         {
   301         EFirstStep,
   565         EFirstStep,
   302         EDisplayNote,
   566         EShowProgress,
   303         EChangeText,
   567         EUpdateProgress,
   304         ECloseNote,
   568         EShowComplete,
   305         EDisplayDelayedNote,
   569         ELastStep,
   306         EChangeDelayedNoteText,
       
   307         ECloseSecondNote,
       
   308         EAllDone
   570         EAllDone
   309         };
   571         };
   310 
   572 
   311     _LIT( KPermanentNoteText, "This is permanent note" );
   573     CSifUi* sifUi = NULL;
   312     _LIT( KChangedNoteText, "Changed permanent note text" );
   574 
   313     _LIT( KDelayedNoteText, "This is delayed permanent note" );
   575     _LIT( KAppName, "NoitaCilppa" );
   314     _LIT( KChangedDelayedNoteText, "Changed delayed permanent note text" );
   576     _LIT( KAppVendor, "Rodnev" );
   315 
   577     const TVersion KAppVersion( 3, 2, 1 );
   316     TInt result = CreateSifUi();
   578     const TInt KAppSize = 0x4321;
   317     for( TInt step = EFirstStep; step < EAllDone && result == KErrNone; ++step )
   579 
       
   580     const TInt KMaxProgress = 150;
       
   581     const TInt KUpdateStarts = -10;
       
   582     const TInt KUpdateEnds = KMaxProgress + 10;
       
   583     const TInt KUpdateStep = 4;
       
   584 
       
   585     TInt error = KErrNone;
       
   586     for( TInt step = EFirstStep; step < EAllDone && !error; ++step )
   318         {
   587         {
   319         TestModuleIf().Printf( 1, KTestName, KStepFormat, step );
   588         TestModuleIf().Printf( 1, KTestName, KStepFormat, step );
   320         switch( step )
   589         switch( step )
   321             {
   590             {
   322             case EFirstStep:
   591             case EFirstStep:
   323                 TRAP( result, iSifUi->ClosePermanentNote() );
   592                 STIF_ASSERT_NULL( sifUi );
   324                 break;
   593                 TRAP( error, sifUi = CSifUi::NewL() );
   325             case EDisplayNote:
   594                 if( !error )
   326                 TRAP( result, iSifUi->DisplayPermanentNoteL( KPermanentNoteText ) );
   595                     {
   327                 break;
   596                     CleanupStack::PushL( sifUi );
   328             case EChangeText:
   597                     }
   329                 User::After( KThreeSeconds );
   598                 break;
   330                 TRAP( result, iSifUi->DisplayPermanentNoteL( KChangedNoteText ) );
   599 
   331                 break;
   600             case EShowProgress:
   332             case ECloseNote:
   601                 {
   333                 TRAP( result, iSifUi->ClosePermanentNote() );
   602                 STIF_ASSERT_NOT_NULL( sifUi );
   334                 break;
   603                 CSifUiAppInfo* appInfo = NULL;
   335             case EDisplayDelayedNote:
   604                 appInfo = CSifUiAppInfo::NewL( KAppName, KAppVendor, KAppVersion, KAppSize, NULL );
   336                 User::After( KThreeSeconds );
   605                 CleanupStack::PushL( appInfo );
   337                 TRAP( result, iSifUi->DisplayPermanentNoteL( KDelayedNoteText ) );
   606                 TRAP( error, sifUi->ShowProgressL( *appInfo, KMaxProgress ) );
   338                 break;
   607                 CleanupStack::PopAndDestroy( appInfo );
   339             case EChangeDelayedNoteText:
   608                 }
   340                 User::After( KFiveSeconds );
   609                 break;
   341                 TRAP( result, iSifUi->DisplayPermanentNoteL( KChangedDelayedNoteText ) );
   610 
   342                 break;
   611             case EUpdateProgress:
   343             case ECloseSecondNote:
   612                 {
   344                 User::After( KOneSecond );
   613                 STIF_ASSERT_NOT_NULL( sifUi );
   345                 TRAP( result, iSifUi->ClosePermanentNote() );
   614                 for( TInt i = KUpdateStarts; i < KUpdateEnds; i += KUpdateStep )
   346                 break;
   615                     {
       
   616                     TRAP( error, sifUi->IncreaseProgressBarValueL( KUpdateStep ) );
       
   617                     }
       
   618                 }
       
   619                 break;
       
   620 
       
   621             case EShowComplete:
       
   622                 STIF_ASSERT_NOT_NULL( sifUi );
       
   623                 TRAP( error, sifUi->ShowCompleteL() );
       
   624                 break;
       
   625 
       
   626             case ELastStep:
       
   627                 STIF_ASSERT_NOT_NULL( sifUi );
       
   628                 CleanupStack::PopAndDestroy( sifUi );
       
   629                 sifUi = NULL;
       
   630                 break;
       
   631 
   347             default:
   632             default:
   348                 User::Leave( KErrGeneral );
   633                 User::Leave( KErrGeneral );
   349                 break;
   634                 break;
   350             }
   635             }
   351         }
   636         }
   352 
   637     User::LeaveIfError( error );
   353     delete iSifUi;
       
   354     iSifUi = NULL;
       
   355 
       
   356     SetResult( aResult, result );
       
   357 
   638 
   358     TestModuleIf().Printf( 0, KTestName, KExit );
   639     TestModuleIf().Printf( 0, KTestName, KExit );
   359     return KErrNone;
   640     }
   360     }
   641 
   361 
       
   362 // -----------------------------------------------------------------------------
       
   363 // CSifUiTest::ProgressNoteTest()
       
   364 // -----------------------------------------------------------------------------
       
   365 //
       
   366 TInt CSifUiTest::ProgressNoteTest( TTestResult& aResult )
       
   367     {
       
   368     _LIT( KTestName, "ProgressNoteTest" );
       
   369     TestModuleIf().Printf( 0, KTestName, KEnter );
       
   370 
       
   371     enum TTestSteps
       
   372         {
       
   373         EDisplayProgressNote,
       
   374         EIncreaseBar1,
       
   375         EIncreaseBar2,
       
   376         EChangeProgressText,
       
   377         EIncreaseBar3,
       
   378         EIncreaseBar4,
       
   379         EIncreaseBar5,
       
   380         ECloseProgressNote,
       
   381         EDelayedProgressNote,
       
   382         EAllDone
       
   383         };
       
   384     _LIT( KProgressNoteText, "This is progress note" );
       
   385     _LIT( KChangedProgressNoteText, "Changed progress note text" );
       
   386 
       
   387     const TInt KProgressBarFinalValue = 6;
       
   388     TInt progressBarValue = -1;
       
   389     TRequestStatus reqStatus;       // ignored now, not monitoring if user cancels the note
       
   390     TRequestStatus reqUpdate;
       
   391     TInt result = CreateSifUi();
       
   392     for( TInt step = EDisplayProgressNote; step < EAllDone && result == KErrNone; ++step )
       
   393         {
       
   394         TestModuleIf().Printf( 1, KTestName, KStepFormat, step );
       
   395         switch( step )
       
   396             {
       
   397             case EDisplayProgressNote:
       
   398                 TRAP( result, iSifUi->DisplayProgressNoteL( KProgressNoteText, reqStatus ) );
       
   399                 if( result == KErrNone )
       
   400                     {
       
   401                     TRAP( result, iSifUi->SetProgressNoteFinalValueL( KProgressBarFinalValue ) );
       
   402                     }
       
   403                 break;
       
   404 
       
   405             case EIncreaseBar1:
       
   406             case EIncreaseBar2:
       
   407             case EIncreaseBar3:
       
   408             case EIncreaseBar4:
       
   409             case EIncreaseBar5:
       
   410                 User::After( KOneSecond );
       
   411                 TRAP( result, iSifUi->UpdateProgressNoteValueL( progressBarValue ) );
       
   412                 progressBarValue += 2;
       
   413                 break;
       
   414 
       
   415             case EChangeProgressText:
       
   416                 User::After( KOneSecond );
       
   417                 TRAP( result, iSifUi->DisplayProgressNoteL( KChangedProgressNoteText, reqUpdate ) );
       
   418                 if( result == KErrNone )
       
   419                     {
       
   420                     User::WaitForRequest( reqUpdate );
       
   421                     result = reqUpdate.Int();
       
   422                     }
       
   423                 break;
       
   424 
       
   425             case ECloseProgressNote:
       
   426                 User::After( KOneSecond );
       
   427                 TRAP( result, iSifUi->CloseProgressNoteL() );
       
   428                 if( result == KErrNone )
       
   429                     {
       
   430                     User::WaitForRequest( reqStatus );
       
   431                     result = reqStatus.Int();
       
   432                     }
       
   433                 break;
       
   434 
       
   435             case EDelayedProgressNote:
       
   436                 TRAP( result, iSifUi->DisplayProgressNoteL( KProgressNoteText, reqStatus ) );
       
   437                 if( result == KErrNone )
       
   438                     {
       
   439                     User::After( KHalfSecond );
       
   440                     TRAP( result, iSifUi->CloseProgressNoteL() );
       
   441                     }
       
   442                 break;
       
   443 
       
   444             default:
       
   445                 User::Leave( KErrGeneral );
       
   446                 break;
       
   447             }
       
   448         }
       
   449 
       
   450     delete iSifUi;
       
   451     iSifUi = NULL;
       
   452 
       
   453     SetResult( aResult, result );
       
   454 
       
   455     TestModuleIf().Printf( 0, KTestName, KExit );
       
   456     return KErrNone;
       
   457     }
       
   458 
       
   459 // -----------------------------------------------------------------------------
       
   460 // CSifUiTest::WaitNoteTest()
       
   461 // -----------------------------------------------------------------------------
       
   462 //
       
   463 TInt CSifUiTest::WaitNoteTest( TTestResult& aResult )
       
   464     {
       
   465     _LIT( KTestName, "WaitNoteTest" );
       
   466     TestModuleIf().Printf( 0, KTestName, KEnter );
       
   467 
       
   468     enum TTestSteps
       
   469         {
       
   470         ECloseWaitNoteBeforeItsOpened,
       
   471         EDisplayWaitNote,
       
   472         EChangeDisplayedText,
       
   473         ECloseFirstWaitNote,
       
   474         EDisplayDelayedWaitNote,
       
   475         EChangeDelayedWaitNoteText,
       
   476         ECloseWaitNote,
       
   477         EAllDone
       
   478         };
       
   479     _LIT( KWaitNoteText, "This is wait note" );
       
   480     _LIT( KChangedWaitNoteText, "Changed wait note text" );
       
   481     _LIT( KDelayedWaitNoteText, "This is delayed wait note" );
       
   482     _LIT( KChangedDelayedWaitNoteText, "Changed delayed wait note text" );
       
   483 
       
   484     TInt result = CreateSifUi();
       
   485     TRequestStatus reqStatus;       // ignored now, not monitoring if user cancels the note
       
   486     for( TInt step = EDisplayWaitNote; step < EAllDone && result == KErrNone; ++step )
       
   487         {
       
   488         TestModuleIf().Printf( 1, KTestName, KStepFormat, step );
       
   489         switch( step )
       
   490             {
       
   491             case ECloseWaitNoteBeforeItsOpened:
       
   492                 TRAP( result, iSifUi->CloseWaitNote() );
       
   493                 break;
       
   494             case EDisplayWaitNote:
       
   495                 TRAP( result, iSifUi->DisplayWaitNoteL( KWaitNoteText, reqStatus ) );
       
   496                 if( result == KErrNone && reqStatus != KRequestPending )
       
   497                     {
       
   498                     User::WaitForRequest( reqStatus );
       
   499                     result = reqStatus.Int();
       
   500                     }
       
   501                 break;
       
   502             case EChangeDisplayedText:
       
   503                 User::After( KThreeSeconds );
       
   504                 TRAP( result, iSifUi->DisplayWaitNoteL( KChangedWaitNoteText, reqStatus ) );
       
   505                 if( result == KErrNone && reqStatus != KRequestPending )
       
   506                     {
       
   507                     User::WaitForRequest( reqStatus );
       
   508                     result = reqStatus.Int();
       
   509                     }
       
   510                 break;
       
   511             case ECloseFirstWaitNote:
       
   512                 TRAP( result, iSifUi->CloseWaitNote() );
       
   513                 if( result == KErrNone )
       
   514                     {
       
   515                     User::WaitForRequest( reqStatus );
       
   516                     result = reqStatus.Int();
       
   517                     }
       
   518                 break;
       
   519             case EDisplayDelayedWaitNote:
       
   520                 User::After( KOneSecond );
       
   521                 TRAP( result, iSifUi->DisplayWaitNoteL( KDelayedWaitNoteText, reqStatus ) );
       
   522                 if( result == KErrNone && reqStatus != KRequestPending )
       
   523                     {
       
   524                     User::WaitForRequest( reqStatus );
       
   525                     result = reqStatus.Int();
       
   526                     }
       
   527                 break;
       
   528             case EChangeDelayedWaitNoteText:
       
   529                 User::After( KThreeSeconds );
       
   530                 TRAP( result, iSifUi->DisplayWaitNoteL( KChangedDelayedWaitNoteText, reqStatus ) );
       
   531                 if( result == KErrNone && reqStatus != KRequestPending )
       
   532                     {
       
   533                     User::WaitForRequest( reqStatus );
       
   534                     result = reqStatus.Int();
       
   535                     }
       
   536                 break;
       
   537             case ECloseWaitNote:
       
   538                 User::After( KOneSecond );
       
   539                 TRAP( result, iSifUi->CloseWaitNote() );
       
   540                 if( result == KErrNone )
       
   541                     {
       
   542                     User::WaitForRequest( reqStatus );
       
   543                     result = reqStatus.Int();
       
   544                     }
       
   545                 break;
       
   546             default:
       
   547                 User::Leave( KErrGeneral );
       
   548                 break;
       
   549             }
       
   550         }
       
   551 
       
   552     delete iSifUi;
       
   553     iSifUi = NULL;
       
   554 
       
   555     SetResult( aResult, result );
       
   556 
       
   557     TestModuleIf().Printf( 0, KTestName, KExit );
       
   558     return KErrNone;
       
   559     }
       
   560 
       
   561 // -----------------------------------------------------------------------------
       
   562 // CSifUiTest::LaunchHelpTest()
       
   563 // -----------------------------------------------------------------------------
       
   564 //
       
   565 TInt CSifUiTest::LaunchHelpTest( TTestResult& aResult )
       
   566     {
       
   567     _LIT( KTestName, "LaunchHelpTest" );
       
   568     TestModuleIf().Printf( 0, KTestName, KEnter );
       
   569 
       
   570     TInt result = CreateSifUi();
       
   571     if( result == KErrNone )
       
   572         {
       
   573         AsyncWaitAndSendKeyEventL( KFiveSeconds, KRightSoftkey );
       
   574 
       
   575         _LIT( KAM_HLP_INSTALL_CAPAB, "AM_HLP_INSTALL_CAPAB" );
       
   576         TRAP( result, iSifUi->LaunchHelpL( KAM_HLP_INSTALL_CAPAB ) );
       
   577 
       
   578         delete iSifUi;
       
   579         iSifUi = NULL;
       
   580         }
       
   581     SetResult( aResult, result );
       
   582 
       
   583     TestModuleIf().Printf( 0, KTestName, KExit );
       
   584     return KErrNone;
       
   585     }
       
   586