diff -r 25fce757be94 -r e02eb84a14d2 usbengines/usbwatcher/tsrc/UsbWatcherTest/src/UsbWatcherTestBlocks.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usbengines/usbwatcher/tsrc/UsbWatcherTest/src/UsbWatcherTestBlocks.cpp Wed Sep 01 12:20:49 2010 +0100 @@ -0,0 +1,1126 @@ +/* +* 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: +* +*/ + +// [INCLUDE FILES] - do not remove +#include +#include +#include +#include "UsbWatcherTest.h" +#include "testdebug.h" + +// EXTERNAL DATA STRUCTURES + +// EXTERNAL FUNCTION PROTOTYPES + +// CONSTANTS + +// MACROS + +// LOCAL CONSTANTS AND MACROS + +// MODULE DATA STRUCTURES + +// LOCAL FUNCTION PROTOTYPES + +// FORWARD DECLARATIONS + +// ============================= LOCAL FUNCTIONS =============================== + +// ----------------------------------------------------------------------------- +// ----------------------------------------------------------------------------- + +// ============================ MEMBER FUNCTIONS =============================== + +// ----------------------------------------------------------------------------- +// CUsbWatcherTest::TestConstructL +// Construct here all test resources for test methods. +// Called from ConstructL. +// ----------------------------------------------------------------------------- + +void CUsbWatcherTest::TestConstructL() + { + TRACE_FUNC_ENTRY + + iStubber = CStubber::NewL(); + + iWatcher = new ( ELeave ) RUsbWatcher(); + iCenRep = CRepository::NewL( KCRUidUsbWatcher ); + STIF_LOG( "Usb man initialization" ); + iUsbMan = new ( ELeave ) RUsb(); + User::LeaveIfError( iUsbMan -> Connect() ); + User::LeaveIfError( BackupPersonalitySetting() ); + + TRACE_FUNC_EXIT + } + +// ----------------------------------------------------------------------------- +// CUsbWatcherTest::TestDelete +// Delete here all resources allocated and opened from test methods. +// Called from destructor. +// ----------------------------------------------------------------------------- + +void CUsbWatcherTest::TestDelete() + { + TRACE_FUNC_ENTRY + + if ( RestorePersonalitySetting() != KErrNone ) + STIF_LOG( "Warning: personality restore failed" ); + + delete iWatcher; + iWatcher = NULL; + + delete iCenRep; + iCenRep = NULL; + + iUsbMan -> Close(); + delete iUsbMan; + iUsbMan = NULL; + + delete iStubber; + iStubber = NULL; + + TRACE_FUNC_EXIT + } + +// ----------------------------------------------------------------------------- +// CUsbWatcherTest::TestBlocksInfoL +// Add new test block parameter entries below +// ----------------------------------------------------------------------------- + +void CUsbWatcherTest::TestBlocksInfoL() + { + + TESTENTRY( "ExampleTestL", CUsbWatcherTest::ExampleTestL ) + { + TESTPARAM( eGetString, eTestOption1 ) + TESTPARAM( eGetString, eTestOption2 ) + TESTPARAM( eGetInt, eTestIntOption1 ) + TESTPARAM( eGetChar, eTestCharOption1 ) + } + + TESTENTRY( "InitializationTest", CUsbWatcherTest::InitializationTestL ) + { + TESTPARAM( eGetString, eTestOption1 ) + } + + TESTENTRY( "PersonalityManagementTest", CUsbWatcherTest::PersonalityManagementTestL ) + { + TESTPARAM( eGetString, eTestOption1 ) + TESTPARAM( eGetString, eTestOption2 ) + } + + TESTENTRY( "PersonalitySwitchTest", CUsbWatcherTest::PersonalitySwitchTestL ) + { + TESTPARAM( eGetString, eTestOption1 ) + } + + TESTENTRY( "BranchTest", CUsbWatcherTest::BranchTestL ) + { + TESTPARAM( eGetString, eTestOption1 ) + } + } + +// Add test block methods implementation here +// ----------------------------------------------------------------------------- +// CUsbWatcherTest::ExampleTestL +// ----------------------------------------------------------------------------- + +void CUsbWatcherTest::ExampleTestL( TUsbWatcherTestBlockParams& aParams, TUsbWatcherTestResult& aTestResult ) + { + TRACE_FUNC_ENTRY + + //iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, ETryStartAsync, 0, 0, _L8( "stub" ) ) ); + + if ( !aParams.iTestOption1.Compare( _L( "API" ) ) ) + { + TRACE_INFO( "Api test option: %S", &aParams.iTestOption1 ) + TRACE_INFO( "Api test sub-option: %S", &aParams.iTestOption2 ) + TRACE_INFO( "Api test int option: %d", aParams.iTestIntOption1 ) + TRACE_INFO( "Api test char option: %c", TText( aParams.iTestCharOption1 ) ) + } + else if ( !aParams.iTestOption1.Compare( _L( "MODULE" ) ) ) + { + TRACE_INFO( "Module test option: %S", &aParams.iTestOption1 ) + TRACE_INFO( "Module test sub-option: %S", &aParams.iTestOption2 ) + TRACE_INFO( "Module test int option: %d", aParams.iTestIntOption1 ) + TRACE_INFO( "Module test char option: %c", TText( aParams.iTestCharOption1 ) ) + } + else if ( !aParams.iTestOption1.Compare( _L( "BRANCH" ) ) ) + { + TRACE_INFO( "Branch test option: %S", &aParams.iTestOption1 ) + TRACE_INFO( "Branch test sub-option: %S", &aParams.iTestOption2 ) + TRACE_INFO( "Branch test int option: %d", aParams.iTestIntOption1 ) + TRACE_INFO( "Branch test char option: %c", TText( aParams.iTestCharOption1 ) ) + } + else + { + TRACE( "Invalid test parameter" ) + TRACE_FUNC_EXIT + User::Leave( KErrNotFound ); + } + + aTestResult = ETestCasePassed; + TRACE_FUNC_EXIT + } + + +// Add other member functions implementation here + +// ----------------------------------------------------------------------------- +// CUSBWatcherApiTest::InitializationTest +// ----------------------------------------------------------------------------- + +void CUsbWatcherTest::InitializationTestL( TUsbWatcherTestBlockParams& aParams, + TUsbWatcherTestResult& aTestResult ) + { + TInt res; + TPtrC testOptionName( aParams.iTestOption1 ); + + if ( !testOptionName.Compare( _L( "VERSION" ) ) ) + { + TRACE( "Test option: VERSION" ); + TVersion returnedVersion; + TVersion expectedVersion( KUsbWatcherSrvMajorVersionNumber, + KUsbWatcherSrvMinorVersionNumber, + KUsbWatcherSrvBuildVersionNumber ); + TRACE( " >Version" ); + returnedVersion = iWatcher -> Version(); + TRACE( " Connect" ); + res = iWatcher -> Connect(); + TRACE( " EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, EGetPersonalityProperty, 0, 0, _L8( "stub" ) ) ); + + res = iUsbMan -> GetCurrentPersonalityId( currentPersonalityId ); + if ( res != KErrNone ) + { + TRACE_INFO( "GetCurrentPersonalityId failed with value: %d", res ); + User::Leave(res); + } + + res = GetPersonalityIdFromString( usbPersonalityName, newPersonalityId ); + if ( res != KErrNone ) + { + TRACE_INFO( "GetPersonalityIdFromString failed with value: %d", res ); + User::Leave(res); + } + + TRACE( " >Connect" ); + res = iWatcher -> Connect(); + TRACE( " EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, EGetDeviceState, 0, 0, _L8( "EUsbDeviceStateConfigured" ) ) ); + iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, EDeviceStateNotification, 0, 0, _L8( "EUsbDeviceStateConfigured" ) ) ); + iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, ETryStopAsync, 0, 0, _L8( "stub" ) ) ); + iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, ETryStartAsync, 0, 0, _L8( "stub" ) ) ); + iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, EDeviceStateNotification, 0, 0, _L8( "EUsbDeviceStateConfigured" ) ) ); + iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, EDeviceStateNotification, 0, 0, _L8( "EUsbDeviceStateConfigured" ) ) ); + } + + res = iUsbMan -> GetCurrentPersonalityId( currentPersonalityId ); + + TRACE( " >SetPersonality" ); + iWatcher -> SetPersonality( status, KUsbPersonalityIdMS, EFalse, EFalse ); + User::WaitForRequest( status ); + TRACE( " Get( KUsbWatcherPersonality, setPersonalityId ); + TRACE_INFO( "Set initial test personality value: %d, personality ID: %d", status.Int(), setPersonalityId ); + User::LeaveIfError( status.Int() ); + if( KUsbPersonalityIdMS != setPersonalityId ) + User::Leave(KErrNotFound); + } + else + { + TRequestStatus status; + TInt setPersonalityId; + + if ( currentPersonalityId != newPersonalityId ) + { + iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, EGetDeviceState, 0, 0, _L8( "EUsbDeviceStateConfigured" ) ) ); + iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, EDeviceStateNotification, 0, 0, _L8( "EUsbDeviceStateConfigured" ) ) ); + iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, ETryStopAsync, 0, 0, _L8( "stub" ) ) ); + iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, ETryStartAsync, 0, 0, _L8( "stub" ) ) ); + } + + TRACE( " >SetPersonality" ); + iWatcher -> SetPersonality( status, KUsbPersonalityIdPCSuiteMTP, EFalse, EFalse ); + User::WaitForRequest( status ); + TRACE( " Get( KUsbWatcherPersonality, setPersonalityId ); + TRACE_INFO( "Set initial test personality value: %d, personality ID: %d", status.Int(), setPersonalityId ); + User::LeaveIfError( status.Int() ); + if( KUsbPersonalityIdPCSuiteMTP != setPersonalityId ) + User::Leave(KErrNotFound); + } + + if ( !testOptionName.Compare( _L( "SET_PERSONALITY" ) ) ) + { + TRACE( "Test option: SET_PERSONALITY" ); + aTestResult = SetPersonalityTest( newPersonalityId, ETrue ); + } + else if ( !testOptionName.Compare( _L( "CANCEL_SET_PERSONALITY" ) ) ) + { + TRACE( "Test option: CANCEL_SET_PERSONALITY" ); + aTestResult = CancelSetPersonalityTest( newPersonalityId, ETrue ); + } + else if ( !testOptionName.Compare( _L( "SET_PREVIOUS_PERSONALITY" ) ) ) + { + TRACE( "Test option: SET_PREVIOUS_PERSONALITY" ); + aTestResult = SetPreviousPersonalityTest( newPersonalityId, ETrue ); + } + else if ( !testOptionName.Compare( _L( "SET_PREVIOUS_PERSONALITY_ON_DISC" ) ) ) + { + TRACE( "Test option: SET_PREVIOUS_PERSONALITY_ON_DISC" ); + aTestResult = SetPreviousPersonalityOnDiscTest( newPersonalityId, ETrue ); + } + else if ( !testOptionName.Compare( _L( "SET_PREVIOUS_PERSONALITY_SYNC" ) ) ) + { + TRACE( "Test option: SET_PREVIOUS_PERSONALITY_SYNC" ); + aTestResult = SetPreviousPersonalitySyncTest( newPersonalityId, ETrue ); + } + else if ( !testOptionName.Compare( _L( "CANCEL_SET_PREVIOUS_PERSONALITY" ) ) ) + { + TRACE( "Test option: CANCEL_SET_PREVIOUS_PERSONALITY" ); + aTestResult = CancelSetPreviousPersonalityTest( newPersonalityId, ETrue ); + } + else if ( !testOptionName.Compare( _L( "SET_PERSONALITY_DISC" ) ) ) + { + TRACE( "Test option: SET_PERSONALITY_DISC" ); + aTestResult = SetPersonalityTest( newPersonalityId, EFalse ); + } + else if ( !testOptionName.Compare( _L( "CANCEL_SET_PERSONALITY_DISC" ) ) ) + { + TRACE( "Test option: CANCEL_SET_PERSONALITY_DISC" ); + aTestResult = CancelSetPersonalityTest( newPersonalityId, EFalse ); + } + else if ( !testOptionName.Compare( _L( "SET_PREVIOUS_PERSONALITY_DISC" ) ) ) + { + TRACE( "Test option: SET_PREVIOUS_PERSONALITY_DISC" ); + aTestResult = SetPreviousPersonalityTest( newPersonalityId, EFalse ); + } + else if ( !testOptionName.Compare( _L( "SET_PREVIOUS_PERSONALITY_ON_DISC_DISC" ) ) ) + { + TRACE( "Test option: SET_PREVIOUS_PERSONALITY_ON_DISC_DISC" ); + aTestResult = SetPreviousPersonalityOnDiscTest( newPersonalityId, EFalse ); + } + else if ( !testOptionName.Compare( _L( "SET_PREVIOUS_PERSONALITY_SYNC_DISC" ) ) ) + { + TRACE( "Test option: SET_PREVIOUS_PERSONALITY_SYNC_DISC" ); + aTestResult = SetPreviousPersonalitySyncTest( newPersonalityId, EFalse ); + } + else if ( !testOptionName.Compare( _L( "CANCEL_SET_PREVIOUS_PERSONALITY_DISC" ) ) ) + { + TRACE( "Test option: CANCEL_SET_PREVIOUS_PERSONALITY_DISC" ); + aTestResult = CancelSetPreviousPersonalityTest( newPersonalityId, EFalse ); + } + else if ( !testOptionName.Compare( _L( "SET_UNKNOWN_PERSONALITY" ) ) ) + { + TRACE( "Test option: SET_UNKNOWN_PERSONALITY" ); + aTestResult = SetUnknownPersonalityTest(); + } + else if ( !testOptionName.Compare( _L( "INTERRUPT_PERSONALITY_SET" ) ) ) + { + TRACE( "Test option: INTERRUPT_PERSONALITY_SET" ); + aTestResult = InterruptPersonalitySetTest( newPersonalityId ); + } + else + { + TRACE( "Test option: not supported" ); + User::Leave(KErrNotFound); + } + } + +TUsbWatcherTestResult CUsbWatcherTest::SetPersonalityTest( TInt aNewPersonalityId, TBool aCableConnected ) + { + TRequestStatus stat; + TInt currentPersonalityId; + TInt res; + + TRACE( "Checking test results:" ); + + if ( aCableConnected ) + { + iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, EGetDeviceState, 0, 0, _L8( "EUsbDeviceStateConfigured" ) ) ); + iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, ETryStopAsync, 0, 0, _L8( "stub" ) ) ); + iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, ETryStartAsync, 0, 0, _L8( "stub" ) ) ); + } + + TRACE( " >SetPersonality" ); + iWatcher -> SetPersonality( stat, aNewPersonalityId, EFalse, EFalse ); + User::WaitForRequest( stat ); + TRACE( " Get( KUsbWatcherPersonality, currentPersonalityId ); + TRACE_INFO("GetCurrentPersonalityId value: %d, expected %d", res, KErrNone ); + TRACE_INFO("Current personality ID: %d, expected: %d", currentPersonalityId, aNewPersonalityId ); + + if ( stat.Int() != KErrNone || res != KErrNone || currentPersonalityId != aNewPersonalityId ) + return ETestCaseFailed; + + return ETestCasePassed; + } + +TUsbWatcherTestResult CUsbWatcherTest::CancelSetPersonalityTest( TInt aNewPersonalityId, TBool aCableConnected ) + { + TRequestStatus stat; + TInt previousPersonalityId; + TInt currentPersonalityId; + TInt res; + + res = iCenRep -> Get( KUsbWatcherPersonality, previousPersonalityId ); + TRACE_INFO("GetCurrentPersonalityId value: %d, expected %d", res, KErrNone ); + TRACE_INFO("Original personality ID: %d", previousPersonalityId ); + if ( res != KErrNone ) + return ETestCaseFailed; + + TRACE( "Checking test results:" ); + + if ( aCableConnected ) + { + iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, EGetDeviceState, 0, 0, _L8( "EUsbDeviceStateConfigured" ) ) ); + iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, EGetDeviceState, 0, 0, _L8( "EUsbDeviceStateConfigured" ) ) ); + iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, EDeviceStateNotification, 0, 0, _L8( "EUsbDeviceStateConfigured" ) ) ); + iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, EDeviceStateNotification, 0, 0, _L8( "EUsbDeviceStateConfigured" ) ) ); + iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, ETryStopAsync, 0, 0, _L8( "stub" ) ) ); + iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, ETryStartAsync, 0, 0, _L8( "stub" ) ) ); + iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, EGetPersonalityProperty, 0, 0, _L8( "stub" ) ) ); + } + + + TRACE( " >SetPersonality" ); + iWatcher -> SetPersonality( stat, aNewPersonalityId, EFalse, EFalse ); + TRACE( " >CancelSetPersonality" ); + iWatcher -> CancelSetPersonality(); + User::WaitForRequest( stat ); + TRACE( " Get( KUsbWatcherPersonality, currentPersonalityId ); + TRACE_INFO("GetCurrentPersonalityId value: %d, expected %d", res, KErrNone ); + TRACE_INFO("Current personality ID: %d", currentPersonalityId ); + + if ( aCableConnected ) + { + if ( stat.Int() != KErrCancel || res != KErrNone || currentPersonalityId != previousPersonalityId ) + return ETestCaseFailed; + } + else + { + if ( stat.Int() != KErrNone || res != KErrNone || currentPersonalityId != aNewPersonalityId ) + return ETestCaseFailed; + } + + return ETestCasePassed; + } + +TUsbWatcherTestResult CUsbWatcherTest::SetPreviousPersonalityTest( TInt aNewPersonalityId, TBool aCableConnected ) + { + TRequestStatus stat; + TInt previousPersonalityId; + TInt currentPersonalityId; + TInt res; + + res = iCenRep -> Get( KUsbWatcherPersonality, previousPersonalityId ); + TRACE_INFO("GetCurrentPersonalityId value: %d, expected %d", res, KErrNone ); + TRACE_INFO("Original personality ID: %d", previousPersonalityId ); + if ( res != KErrNone ) + return ETestCaseFailed; + + TRACE( " >SetPersonality" ); + + iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, EGetDeviceState, 0, 0, _L8( "EUsbDeviceStateConfigured" ) ) ); + iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, EDeviceStateNotification, 0, 0, _L8( "EUsbDeviceStateConfigured" ) ) ); + iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, ETryStopAsync, 0, 0, _L8( "stub" ) ) ); + iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, ETryStartAsync, 0, 0, _L8( "stub" ) ) ); + + iWatcher -> SetPersonality( stat, aNewPersonalityId, EFalse, EFalse ); + User::WaitForRequest( stat ); + TRACE( " Get( KUsbWatcherPersonality, currentPersonalityId ); + TRACE_INFO("GetCurrentPersonalityId value: %d, expected %d", res, KErrNone ); + TRACE_INFO("Current personality ID: %d, expected: %d", currentPersonalityId, aNewPersonalityId ); + + if ( stat.Int() != KErrNone || res != KErrNone || currentPersonalityId != aNewPersonalityId ) + return ETestCaseFailed; + + TRACE( "Checking test results:" ); + + if ( aCableConnected ) + { + iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, EGetDeviceState, 0, 0, _L8( "EUsbDeviceStateConfigured" ) ) ); + iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, EDeviceStateNotification, 0, 0, _L8( "EUsbDeviceStateConfigured" ) ) ); + iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, ETryStopAsync, 0, 0, _L8( "stub" ) ) ); + iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, ETryStartAsync, 0, 0, _L8( "stub" ) ) ); + } + + TRACE( " >SetPreviousPersonality" ); + iWatcher -> SetPreviousPersonality( stat ); + User::WaitForRequest( stat ); + TRACE( " Get( KUsbWatcherPersonality, currentPersonalityId ); + TRACE_INFO("GetCurrentPersonalityId value: %d, expected %d", res, KErrNone ); + TRACE_INFO("Current personality ID: %d, expected: %d", currentPersonalityId, previousPersonalityId ); + + if ( stat.Int() != KErrNone || res != KErrNone || currentPersonalityId != previousPersonalityId ) + return ETestCaseFailed; + + return ETestCasePassed; + } + +TUsbWatcherTestResult CUsbWatcherTest::SetPreviousPersonalityOnDiscTest( TInt aNewPersonalityId, TBool aCableConnected ) + { + TRequestStatus stat; + TInt previousPersonalityId; + TInt currentPersonalityId; + TInt res; + + res = iCenRep -> Get( KUsbWatcherPersonality, previousPersonalityId ); + TRACE_INFO("GetCurrentPersonalityId value: %d, expected %d", res, KErrNone ); + TRACE_INFO("Original personality ID: %d", previousPersonalityId ); + if ( res != KErrNone ) + return ETestCaseFailed; + + iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, EGetDeviceState, 0, 0, _L8( "EUsbDeviceStateConfigured" ) ) ); + iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, EDeviceStateNotification, 0, 0, _L8( "EUsbDeviceStateConfigured" ) ) ); + iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, ETryStopAsync, 0, 0, _L8( "stub" ) ) ); + iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, ETryStartAsync, 0, 0, _L8( "stub" ) ) ); + + TRACE( " >SetPersonality" ); + iWatcher -> SetPersonality( stat, aNewPersonalityId, EFalse, EFalse ); + User::WaitForRequest( stat ); + TRACE( " EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, EGetDeviceState, 0, 0, _L8( "EUsbDeviceStateConfigured" ) ) ); + + TRACE( " >SetPreviousPersonalityOnDisconnect" ); + iWatcher -> SetPreviousPersonalityOnDisconnect(); + TRACE( " Get( KUsbWatcherPersonality, currentPersonalityId ); + TRACE_INFO("GetCurrentPersonalityId value: %d, expected %d", res, KErrNone ); + TRACE_INFO("Current personality ID: %d, expected: %d", currentPersonalityId, aNewPersonalityId ); + + if ( stat.Int() != KErrNone || res != KErrNone || currentPersonalityId != aNewPersonalityId ) + return ETestCaseFailed; + + return ETestCasePassed; + } + +TUsbWatcherTestResult CUsbWatcherTest::SetPreviousPersonalitySyncTest( TInt aNewPersonalityId, TBool aCableConnected ) + { + TRequestStatus stat; + TInt previousPersonalityId; + TInt currentPersonalityId; + TInt res; + + res = iCenRep -> Get( KUsbWatcherPersonality, previousPersonalityId ); + TRACE_INFO("GetCurrentPersonalityId value: %d, expected %d", res, KErrNone ); + TRACE_INFO("Original personality ID: %d", previousPersonalityId ); + if ( res != KErrNone ) + return ETestCaseFailed; + + iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, EGetDeviceState, 0, 0, _L8( "EUsbDeviceStateConfigured" ) ) ); + iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, ETryStopAsync, 0, 0, _L8( "stub" ) ) ); + iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, ETryStartAsync, 0, 0, _L8( "stub" ) ) ); + + TRACE( " >SetPersonality" ); + iWatcher -> SetPersonality( stat, aNewPersonalityId, EFalse, EFalse ); + User::WaitForRequest( stat ); + TRACE( " Get( KUsbWatcherPersonality, currentPersonalityId ); + TRACE_INFO("GetCurrentPersonalityId value: %d, expected %d", res, KErrNone ); + TRACE_INFO("Current personality ID: %d, expected: %d", currentPersonalityId, aNewPersonalityId ); + + if ( stat.Int() != KErrNone || res != KErrNone || currentPersonalityId != aNewPersonalityId ) + return ETestCaseFailed; + + TRACE( "Checking test results:" ); + + if ( aCableConnected ) + { + iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, EGetDeviceState, 0, 0, _L8( "EUsbDeviceStateConfigured" ) ) ); + iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, ETryStopAsync, 0, 0, _L8( "stub" ) ) ); + iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, ETryStartAsync, 0, 0, _L8( "stub" ) ) ); + } + + TRACE( " >SetPreviousPersonality" ); + iWatcher -> SetPreviousPersonality(); + TRACE( " Get( KUsbWatcherPersonality, currentPersonalityId ); + TRACE_INFO("GetCurrentPersonalityId value: %d, expected %d", res, KErrNone ); + TRACE_INFO("Current personality ID: %d, expected: %d", currentPersonalityId, previousPersonalityId ); + + if ( res != KErrNone || currentPersonalityId != previousPersonalityId ) + return ETestCaseFailed; + + return ETestCasePassed; + } + +TUsbWatcherTestResult CUsbWatcherTest::CancelSetPreviousPersonalityTest( TInt aNewPersonalityId, TBool aCableConnected ) + { + TRequestStatus stat; + TInt previousPersonalityId; + TInt currentPersonalityId; + TInt res; + + res = iCenRep -> Get( KUsbWatcherPersonality, previousPersonalityId ); + TRACE_INFO("GetCurrentPersonalityId value: %d, expected %d", res, KErrNone ); + TRACE_INFO("Original personality ID: %d", previousPersonalityId ); + if ( res != KErrNone ) + return ETestCaseFailed; + + iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, EGetDeviceState, 0, 0, _L8( "EUsbDeviceStateConfigured" ) ) ); + iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, ETryStopAsync, 0, 0, _L8( "stub" ) ) ); + iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, ETryStartAsync, 0, 0, _L8( "stub" ) ) ); + + TRACE( " >SetPersonality" ); + iWatcher -> SetPersonality( stat, aNewPersonalityId, EFalse, EFalse ); + User::WaitForRequest( stat ); + TRACE( " Get( KUsbWatcherPersonality, currentPersonalityId ); + TRACE_INFO("GetCurrentPersonalityId value: %d, expected %d", res, KErrNone ); + TRACE_INFO("Current personality ID: %d, expected: %d", currentPersonalityId, aNewPersonalityId ); + + if ( stat.Int() != KErrNone || res != KErrNone || currentPersonalityId != aNewPersonalityId ) + return ETestCaseFailed; + + TRACE( "Checking test results:" ); + + if ( aCableConnected ) + { + iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, EGetDeviceState, 0, 0, _L8( "EUsbDeviceStateConfigured" ) ) ); + iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, EGetDeviceState, 0, 0, _L8( "EUsbDeviceStateConfigured" ) ) ); + iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, ETryStopAsync, 0, 0, _L8( "stub" ) ) ); + iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, ETryStartAsync, 0, 0, _L8( "stub" ) ) ); + } + + TRACE( " >SetPreviousPersonality" ); + iWatcher -> SetPreviousPersonality( stat ); + TRACE( " >CancelSetPreviousPersonality" ); + iWatcher -> CancelSetPreviousPersonality(); + User::WaitForRequest( stat ); + TRACE( " Get( KUsbWatcherPersonality, currentPersonalityId ); + TRACE_INFO("GetCurrentPersonalityId value: %d, expected %d", res, KErrNone ); + TRACE_INFO("Current personality ID: %d", currentPersonalityId ); + + if ( aCableConnected ) + { + if ( stat.Int() != KErrCancel || res != KErrNone || currentPersonalityId != aNewPersonalityId ) + return ETestCaseFailed; + } + else + { + if ( stat.Int() != KErrNone || res != KErrNone || currentPersonalityId != previousPersonalityId ) + return ETestCaseFailed; + } + + + return ETestCasePassed; + } + +TUsbWatcherTestResult CUsbWatcherTest::SetUnknownPersonalityTest() + { + TRequestStatus stat; + TInt unknownPersonalityId = 0xFFFF; + + TRACE( "Checking test results:" ); + + iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, EGetDeviceState, 0, 0, _L8( "EUsbDeviceStateConfigured" ) ) ); + iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, ETryStopAsync, 0, 0, _L8( "stub" ) ) ); + iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, ETryStartAsync, 0, 0, _L8( "stub" ) ) ); + + TRACE( " >SetPersonality" ); + iWatcher -> SetPersonality( stat, unknownPersonalityId, EFalse, EFalse ); + User::WaitForRequest( stat ); + TRACE( " Get( KUsbWatcherPersonality, previousPersonalityId ); + TRACE_INFO("GetCurrentPersonalityId value: %d, expected %d", res, KErrNone ); + TRACE_INFO("Original personality ID: %d", previousPersonalityId ); + if ( res != KErrNone ) + return ETestCaseFailed; + + TRACE( "Checking test results:" ); + + iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, EGetDeviceState, 0, 0, _L8( "EUsbDeviceStateConfigured" ) ) ); + iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, ETryStopAsync, 0, 0, _L8( "stub" ) ) ); + + TRACE( " >SetPersonality" ); + iWatcher -> SetPersonality( stat, aNewPersonalityId, EFalse, EFalse ); + TRACE( " >SetPersonality" ); + iWatcher -> SetPersonality( secondStat, previousPersonalityId, EFalse, EFalse ); + User::WaitForRequest( stat ); + TRACE( " Get( KUsbWatcherPersonality, currentPersonalityId ); + TRACE_INFO("GetCurrentPersonalityId value: %d, expected %d", res, KErrNone ); + TRACE_INFO("Current personality ID: %d, expected: %d", currentPersonalityId, previousPersonalityId ); + + if ( stat.Int() != KErrNone || secondStat.Int() != KErrNone || res != KErrNone || currentPersonalityId != previousPersonalityId ) + return ETestCaseFailed; + + return ETestCasePassed; + } + +TInt CUsbWatcherTest::GetPersonalityIdFromString( TPtrC& aUsbPersonalityName, TInt& aUsbPersonalityId ) + { + if ( !aUsbPersonalityName.Compare( _L( "PCSUITE" ) ) ) + { + TRACE( "Test personality ID setting: PCSUITE" ); + aUsbPersonalityId = KUsbPersonalityIdPCSuiteMTP; + } + else if ( !aUsbPersonalityName.Compare( _L( "MS" ) ) ) + { + TRACE( "Test personality ID setting: MS" ); + aUsbPersonalityId = KUsbPersonalityIdMS; + } + else if ( !aUsbPersonalityName.Compare( _L( "PTP" ) ) ) + { + TRACE( "Test personality ID setting: PTP" ); + aUsbPersonalityId = KUsbPersonalityIdPTP; + } + else if ( !aUsbPersonalityName.Compare( _L( "MTP" ) ) ) + { + TRACE( "Test personality ID setting: MTP" ); + aUsbPersonalityId = KUsbPersonalityIdMTP; + } + else if ( !aUsbPersonalityName.Compare( _L( "Modem" ) ) ) + { + TRACE( "Test personality ID setting: Modem" ); + aUsbPersonalityId = KUsbPersonalityIdModemInst; + } + else + { + TRACE( "Test personality ID setting: not supported" ); + return KErrNotFound; + } + + return KErrNone; + } + +// ----------------------------------------------------------------------------- +// CUSBWatcherTest::PersonalitySwitchTest +// ----------------------------------------------------------------------------- + +void CUsbWatcherTest::PersonalitySwitchTestL( TUsbWatcherTestBlockParams& aParams, + TUsbWatcherTestResult& aTestResult ) + { + TInt res; + TRequestStatus stat; + TPtrC testOptionName( aParams.iTestOption1 ); + TInt currentPersonalityId; + + res = iUsbMan -> GetCurrentPersonalityId( currentPersonalityId ); + if ( res != KErrNone ) + { + TRACE_INFO( "GetCurrentPersonalityId failed with value: %d" , res ); + User::Leave( res ); + } + + TRACE( " >Connect" ); + res = iWatcher -> Connect(); + TRACE( " EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, EGetDeviceState, 0, 0, _L8( "EUsbDeviceStateConfigured" ) ) ); + iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, ETryStopAsync, 0, 0, _L8( "stub" ) ) ); + iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, ETryStartAsync, 0, 0, _L8( "stub" ) ) ); + } + + TRACE( " >SetPersonality" ); + iWatcher -> SetPersonality( stat, KUsbPersonalityIdPCSuiteMTP, EFalse, EFalse ); + User::WaitForRequest( stat ); + TRACE( " EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, EGetDeviceState, 0, 0, _L8( "EUsbDeviceStateConfigured" ) ) ); + iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, ETryStopAsync, 0, 0, _L8( "stub" ) ) ); + iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, ETryStartAsync, 0, 0, _L8( "stub" ) ) ); + + TRACE( " >SetPersonality" ); + iWatcher -> SetPersonality( stat, currentPersonalityId, EFalse, EFalse ); + User::WaitForRequest( stat ); + TRACE( " Get( KUsbWatcherPersonality, setPersonalityId ); + TRACE_INFO("Set personality request status: %d, expected %d", stat.Int(), KErrNone ); + TRACE_INFO("GetCurrentPersonalityId value: %d, expected %d", res, KErrNone ); + TRACE_INFO("Current personality ID: %d, expected: %d", currentPersonalityId, setPersonalityId ); + if ( stat.Int() != KErrNone || res != KErrNone || currentPersonalityId != setPersonalityId ) + return ETestCaseFailed; + currentPersonalityId++; + } + } + return ETestCasePassed; + } + +TUsbWatcherTestResult CUsbWatcherTest::DelayedPersonalitySwitchTest() + { + TInt res; + TInt numberOfPersonalities = 4; + TInt currentPersonalityId; + TInt setPersonalityId; + TRequestStatus stat; + + TRACE( "Checking test results:" ); + currentPersonalityId = KUsbPersonalityIdMS; + + for ( int j = 0; j< numberOfPersonalities; j++ ) + { + iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, EGetDeviceState, 0, 0, _L8( "EUsbDeviceStateConfigured" ) ) ); + iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, ETryStopAsync, 0, 0, _L8( "stub" ) ) ); + iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, ETryStartAsync, 0, 0, _L8( "stub" ) ) ); + + TRACE( " >SetPersonality" ); + iWatcher -> SetPersonality( stat, currentPersonalityId, EFalse, EFalse ); + User::WaitForRequest( stat ); + TRACE( " Get( KUsbWatcherPersonality, setPersonalityId ); + TRACE_INFO("Set personality request status: %d, expected %d", stat.Int(), KErrNone ); + TRACE_INFO("GetCurrentPersonalityId value: %d, expected %d", res, KErrNone ); + TRACE_INFO("Current personality ID: %d, expected: %d", currentPersonalityId, setPersonalityId ); + if ( stat.Int() != KErrNone || res != KErrNone || currentPersonalityId != setPersonalityId ) + return ETestCaseFailed; + currentPersonalityId++; + User::After( 7000*1000 ); + } + return ETestCasePassed; + } + +// ----------------------------------------------------------------------------- +// CUSBWatcherTest::BranchTest +// ----------------------------------------------------------------------------- + +void CUsbWatcherTest::BranchTestL( TUsbWatcherTestBlockParams& aParams, + TUsbWatcherTestResult& aTestResult ) + { + TInt res; + TRequestStatus stat; + TPtrC testOptionName( aParams.iTestOption1 ); + TInt currentPersonalityId; + + res = iUsbMan -> GetCurrentPersonalityId( currentPersonalityId ); + if ( res != KErrNone ) + { + TRACE_INFO( "GetCurrentPersonalityId failed with value: %d", res ); + User::Leave( res ); + } + + TRACE( " >Connect" ); + res = iWatcher -> Connect(); + TRACE( " EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, EGetDeviceState, 0, 0, _L8( "EUsbDeviceStateConfigured" ) ) ); + iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, ETryStopAsync, 0, 0, _L8( "stub" ) ) ); + iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, ETryStartAsync, 0, 0, _L8( "stub" ) ) ); + } + + TRACE( "Initial SetPersonality" ); + + TRACE( " >SetPersonality" ); + iWatcher -> SetPersonality( stat, KUsbPersonalityIdPCSuiteMTP, EFalse, EFalse ); + User::WaitForRequest( stat ); + TRACE( " SetPersonality" ); + iWatcher -> SetPersonality( stat, KUsbPersonalityIdPCSuiteMTP, EFalse, EFalse ); + User::WaitForRequest( stat ); + TRACE( " Get( KUsbWatcherPersonality, currentPersonalityId ); + TRACE_INFO("GetCurrentPersonalityId value: %d, expected %d", res, KErrNone ); + TRACE_INFO("Current personality ID: %d, expected: %d", currentPersonalityId, KUsbPersonalityIdPCSuiteMTP ); + + if ( stat.Int() != KErrNone || res != KErrNone || currentPersonalityId != KUsbPersonalityIdPCSuiteMTP ) + return ETestCaseFailed; + + return ETestCasePassed; + } + +TUsbWatcherTestResult CUsbWatcherTest::SetPersonalityBlockingOn() + { + TRequestStatus stat; + TInt currentPersonalityId; + TInt res; + + TRACE( "Checking test results:" ); + + iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, EGetDeviceState, 0, 0, _L8( "EUsbDeviceStateConfigured" ) ) ); + iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, ETryStopAsync, 0, 0, _L8( "stub" ) ) ); + iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, ETryStartAsync, 0, 0, _L8( "stub" ) ) ); + + TRACE( " >SetPersonality" ); + iWatcher -> SetPersonality( stat, KUsbPersonalityIdMS, EFalse, ETrue ); + User::WaitForRequest( stat ); + TRACE( " Get( KUsbWatcherPersonality, currentPersonalityId ); + TRACE_INFO("GetCurrentPersonalityId value: %d, expected %d", res, KErrNone ); + TRACE_INFO("Current personality ID: %d, expected: %d", currentPersonalityId, KUsbPersonalityIdMS ); + + if ( stat.Int() != KErrNone || res != KErrNone || currentPersonalityId != KUsbPersonalityIdMS ) + return ETestCaseFailed; + + return ETestCasePassed; + } + +TUsbWatcherTestResult CUsbWatcherTest::SetPersonalityAskOnConnectionOff() + { + TRequestStatus stat; + TInt currentPersonalityId; + TInt res; + + TRACE( "Checking test results:" ); + + iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, EGetDeviceState, 0, 0, _L8( "EUsbDeviceStateConfigured" ) ) ); + iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, ETryStopAsync, 0, 0, _L8( "stub" ) ) ); + iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, ETryStartAsync, 0, 0, _L8( "stub" ) ) ); + + TRACE( " >SetPersonality" ); + iWatcher -> SetPersonality( stat, KUsbPersonalityIdMS, ETrue, EFalse ); + User::WaitForRequest( stat ); + TRACE( " Get( KUsbWatcherPersonality, currentPersonalityId ); + TRACE_INFO("GetCurrentPersonalityId value: %d, expected %d", res, KErrNone ); + TRACE_INFO("Current personality ID: %d, expected: %d", currentPersonalityId, KUsbPersonalityIdMS ); + + if ( stat.Int() != KErrNone || res != KErrNone || currentPersonalityId != KUsbPersonalityIdMS ) + return ETestCaseFailed; + + return ETestCasePassed; + } + +// ----------------------------------------------------------------------------- +// CUSBWatcherTest:: Other functions +// ----------------------------------------------------------------------------- + +TInt CUsbWatcherTest::BackupPersonalitySetting() + { + TRACE( "> GetCurrentPersonalityId( iPersonalityIdBackup ); + } + +TInt CUsbWatcherTest::RestorePersonalitySetting() + { + TRequestStatus stat; + TInt currentPersonalityId; + + TRACE( ">Restore personality setting" ) + TRACE( " >Close" ); + iWatcher -> Close(); + TRACE( " GetCurrentPersonalityId( currentPersonalityId ); + if ( currentPersonalityId != iPersonalityIdBackup ) + { + TRACE( " >Connect" ); + iWatcher -> Connect(); + TRACE( " EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, EGetDeviceState, 0, 0, _L8( "EUsbDeviceStateConfigured" ) ) ); + iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, ETryStopAsync, 0, 0, _L8( "stub" ) ) ); + iStubber -> EnqueBehavior( TApiBehavior( KUsbManStubAgentDll, ETryStartAsync, 0, 0, _L8( "stub" ) ) ); + + TRACE( " >SetPersonality" ); + iWatcher -> SetPersonality( stat, iPersonalityIdBackup, EFalse, EFalse ); + User::WaitForRequest( stat ); + TRACE( " Close" ); + iWatcher -> Close(); + TRACE( "