diff -r 7333d7932ef7 -r 8b7f4e561641 appinstall_plat/sifui_api/tsrc/src/sifuitestcases.cpp --- 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 // CDesCArray, StifUnitMacros.h needs this -#include // STIF_ASSERT_NULL, STIF_ASSERT_NOT_NULL -#include // CSifUi -#include // CSifUiAppInfo -#include // CSifUiCertificateInfo -#include // RFileReadStream -#include // RDesReadStream -#include // RApaLsSession -#include // 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( 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 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 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 ); - } -