--- a/appinstall_plat/sifui_api/tsrc/src/sifuitestcases.cpp Tue Aug 31 15:21:33 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,641 +0,0 @@
-/*
-* 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, StifUnitMacros.h needs this
-#include <StifUnitMacros.h> // STIF_ASSERT_NULL, STIF_ASSERT_NOT_NULL
-#include <sifui.h> // CSifUi
-#include <sifuiappinfo.h> // CSifUiAppInfo
-#include <sifuicertificateinfo.h> // CSifUiCertificateInfo
-#include <s32file.h> // RFileReadStream
-#include <s32mem.h> // RDesReadStream
-#include <apgcli.h> // RApaLsSession
-#include <swi/msisuihandlers.h> // Swi::CCertificateInfo
-#include "sifuitest.h" // CSifUiTest
-#include "sifuitestcleanuputils.h" // CleanupResetAndDestroyPushL
-
-_LIT( KX509TestCertFile, "\\testing\\data\\test_x509_cert.cer" );
-
-_LIT( KEnter, "Enter" );
-_LIT( KStepFormat, "Step %d" );
-_LIT( KExit, "Exit" );
-
-const TInt KBufferGranularity = 1024;
-
-
-// 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;
- };
-
-
-// ======== 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( "MemorySelectionTest", CSifUiTest::MemorySelectionTest ),
- ENTRY( "CertificateInfoTest", CSifUiTest::CertificateInfoTest ),
- ENTRY( "AppInfoTest", CSifUiTest::AppInfoTest ),
- ENTRY( "ProgressDialogsTest", CSifUiTest::ProgressDialogsTest )
- };
-
- 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::ReadCertificateL()
-// -----------------------------------------------------------------------------
-//
-CX509Certificate* CSifUiTest::ReadCertificateL( const TDesC& aFileName )
- {
- TFindFile findFile( iFs );
- User::LeaveIfError( findFile.FindByDir( aFileName, KNullDesC ) );
-
- RFile file;
- User::LeaveIfError( file.Open( iFs, findFile.File(), EFileRead ) );
- CleanupClosePushL( file );
-
- TInt fileSize = 0;
- User::LeaveIfError( file.Size( fileSize ) );
-
- HBufC8* buffer = HBufC8::NewLC( fileSize );
- TPtr8 ptr( buffer->Des() );
- User::LeaveIfError( file.Read( ptr ) );
-
- CX509Certificate* x509cert = CX509Certificate::NewL( *buffer );
-
- CleanupStack::PopAndDestroy( buffer );
- CleanupStack::PopAndDestroy( &file );
- return x509cert;
- }
-
-// -----------------------------------------------------------------------------
-// CSifUiTest::CreateTest()
-// -----------------------------------------------------------------------------
-//
-TInt CSifUiTest::CreateLowMemTest( TTestResult& aResult )
- {
- _LIT( KTestName, "CreateLowMemTest" );
- TestModuleIf().Printf( 0, KTestName, KEnter );
-
- TInt count = 0;
- TInt error = KErrNoMemory;
- CSifUi* sifUi = NULL;
- while( error == KErrNoMemory )
- {
- User::__DbgSetAllocFail( EFalse, RHeap::EDeterministic, ++count );
- TRAP( error, sifUi = CSifUi::NewL() );
- User::__DbgSetAllocFail( EFalse, RHeap::ENone, count );
- if( !error )
- {
- delete sifUi;
- sifUi = NULL;
- }
- }
- TestModuleIf().Printf( 1, KTestName, _L("count %d, last error %d"), count, error );
- SetResult( aResult, error );
-
- TestModuleIf().Printf( 0, KTestName, KExit );
- return KErrNone;
- }
-
-// -----------------------------------------------------------------------------
-// CSifUiTest::MemorySelectionTest()
-// -----------------------------------------------------------------------------
-//
-TInt CSifUiTest::MemorySelectionTest( TTestResult& aResult )
- {
- TRAPD( result, DoMemorySelectionTestL( aResult ) );
- SetResult( aResult, result );
- return KErrNone;
- }
-
-// -----------------------------------------------------------------------------
-// CSifUiTest::DoMemorySelectionTestL()
-// -----------------------------------------------------------------------------
-//
-void CSifUiTest::DoMemorySelectionTestL( TTestResult& aResult )
- {
- _LIT( KTestName, "MemorySelectionTest" );
- TestModuleIf().Printf( 0, KTestName, KEnter );
-
- enum TTestSteps
- {
- EFirstStep,
- EGetSelectedWhenNotSet,
- ESetNoDrivesStep,
- ESetThreeDriveStep,
- ESetOneDriveStep,
- EGetSelectedWhenSetButNotAskedStep,
- ELastStep,
- EAllDone
- };
-
- CSifUi* sifUi = NULL;
- RArray<TInt> driveNumbers;
- CleanupClosePushL( driveNumbers );
- TInt drive = 0;
- TInt errorCode = KErrNone;
-
- TInt error = KErrNone;
- for( TInt step = EFirstStep; step < EAllDone && !error; ++step )
- {
- TestModuleIf().Printf( 1, KTestName, KStepFormat, step );
- switch( step )
- {
- case EFirstStep:
- STIF_ASSERT_NULL( sifUi );
- TRAP( error, sifUi = CSifUi::NewL() );
- if( !error )
- {
- CleanupStack::PushL( sifUi );
- }
- break;
-
- case EGetSelectedWhenNotSet:
- STIF_ASSERT_NOT_NULL( sifUi );
- TRAP( error, errorCode = sifUi->SelectedDrive( drive ) );
- if( error == KErrNone && errorCode == KErrNotFound )
- {
- error = KErrNone;
- }
- else
- {
- error = KErrGeneral;
- }
- break;
-
- case ESetNoDrivesStep:
- STIF_ASSERT_NOT_NULL( sifUi );
- TRAP( error, sifUi->SetMemorySelectionL( driveNumbers ) );
- break;
-
- case ESetThreeDriveStep:
- STIF_ASSERT_NOT_NULL( sifUi );
- driveNumbers.Append( EDriveC );
- driveNumbers.Append( EDriveE );
- driveNumbers.Append( EDriveF );
- TRAP( error, sifUi->SetMemorySelectionL( driveNumbers ) );
- break;
-
- case ESetOneDriveStep:
- STIF_ASSERT_NOT_NULL( sifUi );
- driveNumbers.Append( EDriveC );
- TRAP( error, sifUi->SetMemorySelectionL( driveNumbers ) );
- break;
-
- case EGetSelectedWhenSetButNotAskedStep:
- STIF_ASSERT_NOT_NULL( sifUi );
- TRAP( error, errorCode = sifUi->SelectedDrive( drive ) );
- if( error == KErrNone && errorCode == KErrNotFound )
- {
- error = KErrNone;
- }
- else
- {
- error = KErrGeneral;
- }
- break;
-
- case ELastStep:
- STIF_ASSERT_NOT_NULL( sifUi );
- CleanupStack::PopAndDestroy( sifUi );
- sifUi = NULL;
- break;
-
- default:
- User::Leave( KErrGeneral );
- break;
- }
- }
- User::LeaveIfError( error );
-
- CleanupStack::PopAndDestroy( &driveNumbers );
- TestModuleIf().Printf( 0, KTestName, KExit );
- }
-
-// -----------------------------------------------------------------------------
-// CSifUiTest::CertificateInfoTest()
-// -----------------------------------------------------------------------------
-//
-TInt CSifUiTest::CertificateInfoTest( TTestResult& aResult )
- {
- TRAPD( result, DoCertificateInfoTestL( aResult ) );
- SetResult( aResult, result );
- return KErrNone;
- }
-
-// -----------------------------------------------------------------------------
-// CSifUiTest::DoCertificateInfoTestL()
-// -----------------------------------------------------------------------------
-//
-void CSifUiTest::DoCertificateInfoTestL( TTestResult& aResult )
- {
- _LIT( KTestName, "CertificateInfoTest" );
- TestModuleIf().Printf( 0, KTestName, KEnter );
-
- enum TTestSteps
- {
- EFirstStep,
- ESetNoCertificates,
- EReadAndSetCertificate,
- ELastStep,
- EAllDone
- };
-
- CSifUi* sifUi = NULL;
- RPointerArray<CSifUiCertificateInfo> certificates;
- CleanupResetAndDestroyPushL( certificates );
-
- TInt error = KErrNone;
- for( TInt step = EFirstStep; step < EAllDone && !error; ++step )
- {
- TestModuleIf().Printf( 1, KTestName, KStepFormat, step );
- switch( step )
- {
- case EFirstStep:
- STIF_ASSERT_NULL( sifUi );
- TRAP( error, sifUi = CSifUi::NewL() );
- if( !error )
- {
- CleanupStack::PushL( sifUi );
- }
- break;
-
- case ESetNoCertificates:
- STIF_ASSERT_NOT_NULL( sifUi );
- TRAP( error, sifUi->SetCertificateInfoL( certificates ) );
- break;
-
- case EReadAndSetCertificate:
- {
- STIF_ASSERT_NOT_NULL( sifUi );
- CX509Certificate* x509cert = ReadCertificateL( KX509TestCertFile );
- CleanupStack::PushL( x509cert );
-
- Swi::CCertificateInfo* swiCert = Swi::CCertificateInfo::NewLC( *x509cert );
- CSifUiCertificateInfo* testCert = CSifUiCertificateInfo::NewLC( *swiCert );
-
- CBufBase* buf = CBufFlat::NewL( KBufferGranularity );
- CleanupStack::PushL( buf );
- RBufWriteStream writeStream( *buf );
- CleanupClosePushL( writeStream );
- STIF_ASSERT_TRUE( buf->Size() == 0 );
- testCert->ExternalizeL( writeStream );
- STIF_ASSERT_TRUE( buf->Size() > 0 );
- CleanupStack::PopAndDestroy( 2, buf ); // writeStream, buf
-
- CleanupStack::PopAndDestroy( testCert );
- testCert = NULL;
-
- testCert = CSifUiCertificateInfo::NewL( *swiCert );
- CleanupStack::PushL( testCert );
- certificates.AppendL( testCert );
- CleanupStack::Pop( testCert );
- TRAP( error, sifUi->SetCertificateInfoL( certificates ) );
-
- CleanupStack::PopAndDestroy( 2, x509cert ); // swiCert, x509cert
- }
- break;
-
- case ELastStep:
- STIF_ASSERT_NOT_NULL( sifUi );
- CleanupStack::PopAndDestroy( sifUi );
- sifUi = NULL;
- break;
-
- default:
- User::Leave( KErrGeneral );
- break;
- }
- }
- User::LeaveIfError( error );
-
- CleanupStack::PopAndDestroy( &certificates );
- TestModuleIf().Printf( 0, KTestName, KExit );
- }
-
-// -----------------------------------------------------------------------------
-// CSifUiTest::AppInfoTest()
-// -----------------------------------------------------------------------------
-//
-TInt CSifUiTest::AppInfoTest( TTestResult& aResult )
- {
- TRAPD( result, DoAppInfoTestL( aResult ) );
- SetResult( aResult, result );
- return KErrNone;
- }
-
-// -----------------------------------------------------------------------------
-// CSifUiTest::DoAppInfoTestL()
-// -----------------------------------------------------------------------------
-//
-void CSifUiTest::DoAppInfoTestL( TTestResult& aResult )
- {
- _LIT( KTestName, "AppInfoTest" );
- TestModuleIf().Printf( 0, KTestName, KEnter );
-
- enum TTestSteps
- {
- EFirstStep,
- EAppInfoTests,
- EAppInfoIconTest,
- EShowConfirmation,
- EShowError,
- ELastStep,
- EAllDone
- };
-
- CSifUi* sifUi = NULL;
-
- _LIT( KAppName, "TestApplication" );
- _LIT( KAppVendor, "TestSupplier" );
- const TVersion KAppVersion( 1, 2, 3 );
- const TInt KAppSize = 0x1234;
-
- TInt error = KErrNone;
- for( TInt step = EFirstStep; step < EAllDone && !error; ++step )
- {
- TestModuleIf().Printf( 1, KTestName, KStepFormat, step );
- switch( step )
- {
- case EFirstStep:
- STIF_ASSERT_NULL( sifUi );
- TRAP( error, sifUi = CSifUi::NewL() );
- if( !error )
- {
- CleanupStack::PushL( sifUi );
- }
- break;
-
- case EAppInfoTests:
- {
- STIF_ASSERT_NOT_NULL( sifUi );
- CSifUiAppInfo* appInfo = NULL;
- appInfo = CSifUiAppInfo::NewLC( KAppName, KAppVendor, KAppVersion, KAppSize, NULL );
-
- STIF_ASSERT_TRUE( appInfo->Name().Compare( KAppName ) == 0 );
- STIF_ASSERT_TRUE( appInfo->Vendor().Compare( KAppVendor ) == 0 );
-
- STIF_ASSERT_TRUE( appInfo->Version().iMajor == KAppVersion.iMajor );
- STIF_ASSERT_TRUE( appInfo->Version().iMinor == KAppVersion.iMinor );
- STIF_ASSERT_TRUE( appInfo->Version().iBuild == KAppVersion.iBuild );
-
- STIF_ASSERT_TRUE( appInfo->Size() == KAppSize );
- STIF_ASSERT_TRUE( appInfo->Bitmaps() == NULL );
-
- CBufBase* buf = CBufFlat::NewL( KBufferGranularity );
- CleanupStack::PushL( buf );
- RBufWriteStream writeStream( *buf );
- CleanupClosePushL( writeStream );
- STIF_ASSERT_TRUE( buf->Size() == 0 );
- appInfo->ExternalizeL( writeStream );
- STIF_ASSERT_TRUE( buf->Size() > 0 );
- CleanupStack::PopAndDestroy( &writeStream );
- CleanupStack::PopAndDestroy( buf );
-
- CleanupStack::PopAndDestroy( appInfo );
- }
- break;
-
- case EAppInfoIconTest:
- {
- STIF_ASSERT_NOT_NULL( sifUi );
- CSifUiAppInfo* appInfo = NULL;
-
- // TODO: proper icon test needed
- CApaMaskedBitmap* appBitmap = NULL;
- appInfo = CSifUiAppInfo::NewLC( KAppName, KAppVendor, KAppVersion, KAppSize, appBitmap );
-
- CBufBase* buf = CBufFlat::NewL( KBufferGranularity );
- CleanupStack::PushL( buf );
- RBufWriteStream writeStream( *buf );
- CleanupClosePushL( writeStream );
- STIF_ASSERT_TRUE( buf->Size() == 0 );
- appInfo->ExternalizeL( writeStream );
- STIF_ASSERT_TRUE( buf->Size() > 0 );
- CleanupStack::PopAndDestroy( &writeStream );
- CleanupStack::PopAndDestroy( buf );
-
- CleanupStack::PopAndDestroy( appInfo );
- }
- break;
-
- case EShowConfirmation:
- {
- STIF_ASSERT_NOT_NULL( sifUi );
- CSifUiAppInfo* appInfo = NULL;
- appInfo = CSifUiAppInfo::NewL( KAppName, KAppVendor, KAppVersion, KAppSize, NULL );
- CleanupStack::PushL( appInfo );
-
- CBufBase* buf = CBufFlat::NewL( KBufferGranularity );
- CleanupStack::PushL( buf );
- RBufWriteStream writeStream( *buf );
- CleanupClosePushL( writeStream );
- STIF_ASSERT_TRUE( buf->Size() == 0 );
- appInfo->ExternalizeL( writeStream );
- STIF_ASSERT_TRUE( buf->Size() > 0 );
- CleanupStack::PopAndDestroy( &writeStream );
- CleanupStack::PopAndDestroy( buf );
-
- TBool result = EFalse;
- // TODO: how to close opened dialog automatically?
- TRAP( error, result = sifUi->ShowConfirmationL( *appInfo ) );
- if( result )
- {
- _LIT( KAccepted, "Accepted" );
- TestModuleIf().Printf( 1, KTestName, KAccepted );
- }
- else
- {
- _LIT( KCancelled, "Cancelled" );
- TestModuleIf().Printf( 1, KTestName, KCancelled );
- }
- CleanupStack::PopAndDestroy( appInfo );
- }
- break;
-
- case EShowError:
- {
- STIF_ASSERT_NOT_NULL( sifUi );
- _LIT( KErrorMessage, "Test error" );
- _LIT( KErrorDetails, "Test error details" );
- // TODO: how to close opened dialog automatically?
- TRAP( error, sifUi->ShowFailedL( KErrNotFound, KErrorMessage, KErrorDetails ) );
- }
- break;
-
- case ELastStep:
- STIF_ASSERT_NOT_NULL( sifUi );
- CleanupStack::PopAndDestroy( sifUi );
- sifUi = NULL;
- break;
-
- default:
- User::Leave( KErrGeneral );
- break;
- }
- }
- User::LeaveIfError( error );
-
- TestModuleIf().Printf( 0, KTestName, KExit );
- }
-
-// -----------------------------------------------------------------------------
-// CSifUiTest::ProgressDialogsTest()
-// -----------------------------------------------------------------------------
-//
-TInt CSifUiTest::ProgressDialogsTest( TTestResult& aResult )
- {
- TRAPD( result, DoProgressDialogsTestL( aResult ) );
- SetResult( aResult, result );
- return KErrNone;
- }
-
-// -----------------------------------------------------------------------------
-// CSifUiTest::DoProgressDialogsTestL()
-// -----------------------------------------------------------------------------
-//
-void CSifUiTest::DoProgressDialogsTestL( TTestResult& aResult )
- {
- _LIT( KTestName, "ProgressDlgsTest" );
- TestModuleIf().Printf( 0, KTestName, KEnter );
-
- enum TTestSteps
- {
- EFirstStep,
- EShowProgress,
- EUpdateProgress,
- EShowComplete,
- ELastStep,
- EAllDone
- };
-
- CSifUi* sifUi = NULL;
-
- _LIT( KAppName, "NoitaCilppa" );
- _LIT( KAppVendor, "Rodnev" );
- const TVersion KAppVersion( 3, 2, 1 );
- const TInt KAppSize = 0x4321;
-
- const TInt KMaxProgress = 150;
- const TInt KUpdateStarts = -10;
- const TInt KUpdateEnds = KMaxProgress + 10;
- const TInt KUpdateStep = 4;
-
- TInt error = KErrNone;
- for( TInt step = EFirstStep; step < EAllDone && !error; ++step )
- {
- TestModuleIf().Printf( 1, KTestName, KStepFormat, step );
- switch( step )
- {
- case EFirstStep:
- STIF_ASSERT_NULL( sifUi );
- TRAP( error, sifUi = CSifUi::NewL() );
- if( !error )
- {
- CleanupStack::PushL( sifUi );
- }
- break;
-
- case EShowProgress:
- {
- STIF_ASSERT_NOT_NULL( sifUi );
- CSifUiAppInfo* appInfo = NULL;
- appInfo = CSifUiAppInfo::NewL( KAppName, KAppVendor, KAppVersion, KAppSize, NULL );
- CleanupStack::PushL( appInfo );
- TRAP( error, sifUi->ShowProgressL( *appInfo, KMaxProgress ) );
- CleanupStack::PopAndDestroy( appInfo );
- }
- break;
-
- case EUpdateProgress:
- {
- STIF_ASSERT_NOT_NULL( sifUi );
- for( TInt i = KUpdateStarts; i < KUpdateEnds; i += KUpdateStep )
- {
- TRAP( error, sifUi->IncreaseProgressBarValueL( KUpdateStep ) );
- }
- }
- break;
-
- case EShowComplete:
- STIF_ASSERT_NOT_NULL( sifUi );
- TRAP( error, sifUi->ShowCompleteL() );
- break;
-
- case ELastStep:
- STIF_ASSERT_NOT_NULL( sifUi );
- CleanupStack::PopAndDestroy( sifUi );
- sifUi = NULL;
- break;
-
- default:
- User::Leave( KErrGeneral );
- break;
- }
- }
- User::LeaveIfError( error );
-
- TestModuleIf().Printf( 0, KTestName, KExit );
- }
-