sl@0: // Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies). sl@0: // All rights reserved. sl@0: // This component and the accompanying materials are made available sl@0: // under the terms of "Eclipse Public License v1.0" sl@0: // which accompanies this distribution, and is available sl@0: // at the URL "http://www.eclipse.org/legal/epl-v10.html". sl@0: // sl@0: // Initial Contributors: sl@0: // Nokia Corporation - initial contribution. sl@0: // sl@0: // Contributors: sl@0: // sl@0: // Description: sl@0: // CPP file: Audio Resource Notification tests for Audio Player. sl@0: // sl@0: // sl@0: sl@0: /** sl@0: @file TestPlayerUtilsARN.cpp sl@0: */ sl@0: sl@0: #include "TestAudioClientUtilitiesARN.h" sl@0: sl@0: //------------------------------------------------------------------------------ sl@0: //********************PREQ 797 - Audio Resource Notification******************** sl@0: //------------------------------------------------------------------------------ sl@0: sl@0: // sl@0: //CTestMdaAudioPlayerCallbackSupport sl@0: // sl@0: sl@0: /** sl@0: * NewL sl@0: */ sl@0: CTestMdaAudioPlayerCallbackSupport* CTestMdaAudioPlayerCallbackSupport::NewL(MTestAudioPlayerCallback& aCallback) sl@0: { sl@0: return new(ELeave) CTestMdaAudioPlayerCallbackSupport(aCallback); sl@0: } sl@0: sl@0: /** sl@0: * MapcInitComplete sl@0: */ sl@0: void CTestMdaAudioPlayerCallbackSupport::MapcInitComplete(TInt aError, const TTimeIntervalMicroSeconds& aDuration) sl@0: { sl@0: iCallback.MapcInitCompleteTest(aError, aDuration, *this); sl@0: } sl@0: sl@0: /** sl@0: * MapcPlayComplete sl@0: */ sl@0: void CTestMdaAudioPlayerCallbackSupport::MapcPlayComplete(TInt aError) sl@0: { sl@0: iCallback.MapcPlayCompleteTest(aError, *this); sl@0: } sl@0: sl@0: /** sl@0: * MarncResourceAvailable sl@0: */ sl@0: void CTestMdaAudioPlayerCallbackSupport::MarncResourceAvailable(TUid aNotificationEventId, const TDesC8& aNotificationData) sl@0: { sl@0: iCallback.MarncResourceAvailableTest(aNotificationEventId, aNotificationData, *this); sl@0: } sl@0: sl@0: /** sl@0: * Constructor sl@0: */ sl@0: CTestMdaAudioPlayerCallbackSupport::CTestMdaAudioPlayerCallbackSupport(MTestAudioPlayerCallback& aCallback):iCallback(aCallback) sl@0: { sl@0: sl@0: } sl@0: sl@0: // sl@0: //CTestMmfAclntAudioPlayerARN sl@0: // sl@0: sl@0: /** sl@0: * Constructor sl@0: */ sl@0: CTestMmfAclntAudioPlayerARN::CTestMmfAclntAudioPlayerARN(const TDesC& aTestName, const TDesC& aSectName) sl@0: { sl@0: // store the name of this test case sl@0: iTestStepName=aTestName; sl@0: iHeapSize = 3600000; sl@0: iSectName = aSectName; sl@0: } sl@0: sl@0: sl@0: /** sl@0: * MapcInitCompleteTest sl@0: */ sl@0: void CTestMmfAclntAudioPlayerARN::MapcInitCompleteTest(TInt aError, const TTimeIntervalMicroSeconds& aDuration, CTestMdaAudioPlayerCallbackSupport& aMdaAudioPlayerCallbackSupport) sl@0: { sl@0: iDuration = aDuration; sl@0: if (&aMdaAudioPlayerCallbackSupport == iMdaAudioPlayerCallbackSupport1) sl@0: { sl@0: INFO_PRINTF2(_L("iAudioPlayer1 -> MMdaAudioPlayerCallback InitComplete (%d)"),aError); sl@0: TRAP(iError, FsmL(EMapcInitComplete1, aError)); sl@0: } sl@0: else if (&aMdaAudioPlayerCallbackSupport == iMdaAudioPlayerCallbackSupport2) sl@0: { sl@0: INFO_PRINTF2(_L("iAudioPlayer2 -> MMdaAudioPlayerCallback InitComplete (%d)"),aError); sl@0: TRAP(iError, FsmL(EMapcInitComplete2, aError)); sl@0: } sl@0: else if (&aMdaAudioPlayerCallbackSupport == iMdaAudioPlayerCallbackSupport3) sl@0: { sl@0: INFO_PRINTF2(_L("iAudioPlayer3 -> MMdaAudioPlayerCallback InitComplete (%d)"),aError); sl@0: TRAP(iError, FsmL(EMapcInitComplete3, aError)); sl@0: } sl@0: } sl@0: sl@0: sl@0: /** sl@0: * MapcPlayCompleteTest sl@0: */ sl@0: void CTestMmfAclntAudioPlayerARN::MapcPlayCompleteTest(TInt aError, CTestMdaAudioPlayerCallbackSupport& aMdaAudioPlayerCallbackSupport) sl@0: { sl@0: if (&aMdaAudioPlayerCallbackSupport == iMdaAudioPlayerCallbackSupport1) sl@0: { sl@0: INFO_PRINTF2(_L("iAudioPlayer1 -> MMdaAudioPlayerCallback PlayComplete (%d)"), aError); sl@0: TRAP(iError, FsmL(EMapcPlayComplete1, aError)); sl@0: } sl@0: else if (&aMdaAudioPlayerCallbackSupport == iMdaAudioPlayerCallbackSupport2) sl@0: { sl@0: INFO_PRINTF2(_L("iAudioPlayer2 -> MMdaAudioPlayerCallback PlayComplete (%d)"), aError); sl@0: TRAP(iError, FsmL(EMapcPlayComplete2, aError)); sl@0: } sl@0: else if (&aMdaAudioPlayerCallbackSupport == iMdaAudioPlayerCallbackSupport3) sl@0: { sl@0: INFO_PRINTF2(_L("iAudioPlayer3 -> MMdaAudioPlayerCallback PlayComplete (%d)"), aError); sl@0: TRAP(iError, FsmL(EMapcPlayComplete3, aError)); sl@0: } sl@0: } sl@0: sl@0: sl@0: /** sl@0: * MarncResourceAvailableTest sl@0: */ sl@0: void CTestMmfAclntAudioPlayerARN::MarncResourceAvailableTest(TUid aNotificationEventId, const TDesC8& aNotificationData, CTestMdaAudioPlayerCallbackSupport& aMdaAudioPlayerCallbackSupport) sl@0: { sl@0: if (aNotificationEventId == KMMFEventCategoryAudioResourceAvailable) sl@0: { sl@0: INFO_PRINTF1(_L("iAudioPlayer::MMMFAudioResourceNotificationCallback -> KMMFEventCategoryAudioResourceAvailable")); sl@0: sl@0: //Convert TDesc8 to TInt64 sl@0: TMMFTimeIntervalMicroSecondsPckg timeIntvbuf; sl@0: timeIntvbuf.Copy(aNotificationData); sl@0: TTimeIntervalMicroSeconds intPos = timeIntvbuf(); sl@0: iPosition = intPos; sl@0: if (&aMdaAudioPlayerCallbackSupport == iMdaAudioPlayerCallbackSupport1) sl@0: { sl@0: INFO_PRINTF1(_L("iAudioPlayer1 -> MMMFAudioResourceNotificationCallback : AudioResourceAvailable..waiting for playcomplete")); sl@0: TRAP(iError, FsmL(EMarncResourceAvailable1, KErrNone)); sl@0: } sl@0: else if (&aMdaAudioPlayerCallbackSupport == iMdaAudioPlayerCallbackSupport2) sl@0: { sl@0: INFO_PRINTF1(_L("iAudioPlayer2 -> MMMFAudioResourceNotificationCallback : AudioResourceAvailable")); sl@0: TRAP(iError, FsmL(EMarncResourceAvailable2, KErrNone)); sl@0: } sl@0: else if (&aMdaAudioPlayerCallbackSupport == iMdaAudioPlayerCallbackSupport3) sl@0: { sl@0: INFO_PRINTF1(_L("iAudioPlayer3 -> MMMFAudioResourceNotificationCallback : AudioResourceAvailable")); sl@0: TRAP(iError, FsmL(EMarncResourceAvailable3, KErrNone)); sl@0: } sl@0: } sl@0: else sl@0: { sl@0: INFO_PRINTF1(_L("MMMFAudioResourceNotificationCallback, but NOT KMMFEventCategoryAudioResourceAvailable")); sl@0: } sl@0: } sl@0: sl@0: /** sl@0: * DoTestStepPreambleL sl@0: */ sl@0: TVerdict CTestMmfAclntAudioPlayerARN::DoTestStepPreambleL() sl@0: { sl@0: TPtrC filename; sl@0: TVerdict ret = EPass; sl@0: sl@0: // Call base DoTestStepPreambleL() sl@0: ret = CTestMmfAclntStep::DoTestStepPreambleL(); sl@0: if (ret == EFail) sl@0: { sl@0: return ret; sl@0: } sl@0: sl@0: // Get 1st file name sl@0: if(!GetStringFromConfig(iSectName, _L("playerAudioFile1"), filename)) sl@0: { sl@0: return EInconclusive; sl@0: } sl@0: GetDriveName(iFilename1); sl@0: iFilename1.Append(filename); sl@0: sl@0: iEventChecker = CMultiEventChecker::NewL(); sl@0: // Initialise 1st Audio Player sl@0: INFO_PRINTF1(_L("Initialise CMdaAudioPlayerUtility1 : EMdaPriorityNormal")); sl@0: iMdaAudioPlayerCallbackSupport1 = CTestMdaAudioPlayerCallbackSupport::NewL(*this); sl@0: iTestAudioPlayer1 = CMdaAudioPlayerUtility::NewL(*iMdaAudioPlayerCallbackSupport1, EMdaPriorityNormal); sl@0: sl@0: // Get 2nd file name sl@0: if(!GetStringFromConfig(iSectName, _L("playerAudioFile2"), filename)) sl@0: { sl@0: return EInconclusive; sl@0: } sl@0: GetDriveName(iFilename2); sl@0: iFilename2.Append(filename); sl@0: sl@0: // Initialise 2nd Audio Player sl@0: INFO_PRINTF1(_L("Initialise CMdaAudioPlayerUtility2 : EMdaPriorityMax")); sl@0: iMdaAudioPlayerCallbackSupport2 = CTestMdaAudioPlayerCallbackSupport::NewL(*this); sl@0: iTestAudioPlayer2 = CMdaAudioPlayerUtility::NewL(*iMdaAudioPlayerCallbackSupport2, EMdaPriorityMax); sl@0: sl@0: // Get 3rd file name sl@0: if(!GetStringFromConfig(iSectName, _L("playerAudioFile3"), filename)) sl@0: { sl@0: return EInconclusive; sl@0: } sl@0: GetDriveName(iFilename3); sl@0: iFilename3.Append(filename); sl@0: sl@0: // Initialise 3rd Audio Player sl@0: INFO_PRINTF1(_L("Initialise CMdaAudioPlayerUtility3 : EMdaPriorityMin")); sl@0: iMdaAudioPlayerCallbackSupport3 = CTestMdaAudioPlayerCallbackSupport::NewL(*this); sl@0: iTestAudioPlayer3 = CMdaAudioPlayerUtility::NewL(*iMdaAudioPlayerCallbackSupport3, EMdaPriorityMin); sl@0: sl@0: // Initialise the CCallBackTimer. sl@0: iCallBackTimer = CCallBackTimer::NewL(TCallBack(stopActiveScheduler)); sl@0: sl@0: return ret; sl@0: } sl@0: sl@0: /** sl@0: * DoTestStepPostambleL sl@0: */ sl@0: TVerdict CTestMmfAclntAudioPlayerARN::DoTestStepPostambleL() sl@0: { sl@0: // Delete all the iTestAudioPlayer utilities. sl@0: iTestAudioPlayer1->Close(); sl@0: delete iTestAudioPlayer1; sl@0: iTestAudioPlayer1=NULL; sl@0: iTestAudioPlayer2->Close(); sl@0: delete iTestAudioPlayer2; sl@0: iTestAudioPlayer2=NULL; sl@0: iTestAudioPlayer3->Close(); sl@0: delete iTestAudioPlayer3; sl@0: iTestAudioPlayer3=NULL; sl@0: // Delete CTestMdaAudioPlayerCallbackSupport sl@0: delete iMdaAudioPlayerCallbackSupport1; sl@0: delete iMdaAudioPlayerCallbackSupport2; sl@0: delete iMdaAudioPlayerCallbackSupport3; sl@0: // Delete the CCallBackTimer. sl@0: delete iCallBackTimer; sl@0: iCallBackTimer=NULL; sl@0: delete iEventChecker; sl@0: // Base Postamble. sl@0: return CTestMmfAclntStep::DoTestStepPostambleL(); sl@0: } sl@0: sl@0: /** sl@0: * DoTestStepL sl@0: */ sl@0: TVerdict CTestMmfAclntAudioPlayerARN::DoTestStepL() sl@0: { sl@0: return( DoTestL() ); sl@0: } sl@0: sl@0: /** sl@0: * StateInit sl@0: */ sl@0: void CTestMmfAclntAudioPlayerARN::StateInit() sl@0: { sl@0: iExpectedEvent=EIdlePlayer; sl@0: iExpectedError=KErrNone; sl@0: iState=EStateBegin; sl@0: } sl@0: sl@0: /** sl@0: * StateChange sl@0: */ sl@0: void CTestMmfAclntAudioPlayerARN::StateChange(TMmfAudioPlayerState aState, TMmfAudioPlayerEvents aExpectedEvent, TInt aExpectedError) sl@0: { sl@0: iExpectedEvent=aExpectedEvent; sl@0: iExpectedError=aExpectedError; sl@0: iState=aState; sl@0: } sl@0: sl@0: /** sl@0: * FsmCheck sl@0: */ sl@0: TBool CTestMmfAclntAudioPlayerARN::FsmCheck(TMmfAudioPlayerEvents aEventCode, TInt aError) sl@0: { sl@0: TBool retFsmCheck = EFalse; sl@0: if (((aEventCode == EMapcPlayComplete1) || (aEventCode == EMapcPlayComplete2)) && (aError == KErrUnderflow)) sl@0: { sl@0: INFO_PRINTF1(_L("Underflow !")); sl@0: } sl@0: else if (iExpectedEvent != aEventCode) sl@0: { sl@0: ERR_PRINTF3(_L("ExpectedEvent : %d, ActualEvent : %d"), iExpectedEvent, aEventCode); sl@0: iTestStepResult = EFail; sl@0: CActiveScheduler::Stop(); sl@0: } sl@0: else if (iExpectedError != aError) sl@0: { sl@0: ERR_PRINTF3(_L("ExpectedError : %d, ActualError : %d"), iExpectedError, aError); sl@0: iTestStepResult = EFail; sl@0: CActiveScheduler::Stop(); sl@0: } sl@0: else sl@0: { sl@0: retFsmCheck = ETrue; sl@0: } sl@0: return retFsmCheck; sl@0: } sl@0: sl@0: // sl@0: //POSITIVE TESTS// sl@0: // sl@0: sl@0: // sl@0: //CTestMmfAclntARN8101 sl@0: // sl@0: sl@0: /** sl@0: * Constructor sl@0: */ sl@0: CTestMmfAclntARN8101::CTestMmfAclntARN8101(const TDesC& aTestName, const TDesC& aSectName) sl@0: : CTestMmfAclntAudioPlayerARN(aTestName, aSectName) sl@0: {} sl@0: sl@0: /** sl@0: * NewL sl@0: */ sl@0: CTestMmfAclntARN8101* CTestMmfAclntARN8101::NewL(const TDesC& aTestName, const TDesC& aSectName) sl@0: { sl@0: CTestMmfAclntARN8101* self = new (ELeave) CTestMmfAclntARN8101(aTestName, aSectName); sl@0: return self; sl@0: } sl@0: sl@0: /** sl@0: * DoTestL sl@0: */ sl@0: TVerdict CTestMmfAclntARN8101::DoTestL() sl@0: { sl@0: return( PerformTestL() ); sl@0: } sl@0: sl@0: /** sl@0: * FsmL sl@0: */ sl@0: void CTestMmfAclntARN8101::FsmL(TMmfAudioPlayerEvents aEventCode, TInt aError) sl@0: { sl@0: if (FsmCheck(aEventCode, aError)) sl@0: { sl@0: TInt retErr = KErrNone; sl@0: switch (iState) sl@0: { sl@0: case EStateBegin: sl@0: // Open iTestAudioPlayer#1 sl@0: iTestAudioPlayer1->OpenFileL(iFilename1); sl@0: INFO_PRINTF1(_L("iTestAudioPlayer1->OpenFileL()")); sl@0: // Set ExpectedEvent and change the State sl@0: StateChange(EStateOpenPlayer2, EMapcInitComplete1); sl@0: break; sl@0: case EStateOpenPlayer2: sl@0: // Register iTestAudioPlayer#1 for Notification sl@0: retErr = iTestAudioPlayer1->RegisterAudioResourceNotification(*iMdaAudioPlayerCallbackSupport1, KMMFEventCategoryAudioResourceAvailable); sl@0: INFO_PRINTF1(_L("iTestAudioPlayer1->RegisterAudioResourceNotification()")); sl@0: if( retErr != KErrNone ) sl@0: { sl@0: ERR_PRINTF2(_L("iTestAudioPlayer1->RegisterAudioResourceNotification - Failed with Error : %d"), retErr); sl@0: iTestStepResult = EFail; sl@0: CActiveScheduler::Stop(); sl@0: break; sl@0: } sl@0: // Open iTestAudioPlayer#2 sl@0: iTestAudioPlayer2->OpenFileL(iFilename2); sl@0: INFO_PRINTF1(_L("iTestAudioPlayer2->OpenFileL()")); sl@0: // Set ExpectedEvent and change the State sl@0: StateChange(EStatePlaying2, EMapcInitComplete2); sl@0: break; sl@0: case EStatePlaying2: sl@0: // Play iTestAudioPlayer#2 sl@0: iTestAudioPlayer2->Play(); sl@0: INFO_PRINTF1(_L("iTestAudioPlayer2->Play()")); sl@0: // Set ExpectedEvent and change the State sl@0: StateChange(EStateEndPlay2, EMapcPlayComplete2); sl@0: break; sl@0: case EStateEndPlay2: sl@0: // Timer to check if Notification Event Occurs. sl@0: iCallBackTimer->After(2000000); sl@0: iTestStepResult = EPass; sl@0: // Set ExpectedEvent and change the State sl@0: StateChange(EStateNotifiedPlayer1, EMarncResourceAvailable1); sl@0: break; sl@0: case EStateNotifiedPlayer1: sl@0: iCallBackTimer->Cancel(); // in case something else stopped the AS sl@0: INFO_PRINTF1(_L("iTestAudioPlayer1->NotificationReceived")); sl@0: iTestStepResult = EFail; sl@0: CActiveScheduler::Stop(); sl@0: break; sl@0: } sl@0: } sl@0: } sl@0: sl@0: /** sl@0: * PerformTestL sl@0: */ sl@0: TVerdict CTestMmfAclntARN8101::PerformTestL() sl@0: { sl@0: INFO_PRINTF1(_L("Register for notification, but make no request to play audio")); sl@0: iTestStepResult = EFail; sl@0: sl@0: // Initialise the state variables sl@0: StateInit(); sl@0: sl@0: // Begin the process sl@0: FsmL(EIdlePlayer, KErrNone); sl@0: sl@0: // Start the scheduler - Done only once ! sl@0: CActiveScheduler::Start(); sl@0: sl@0: return iTestStepResult; sl@0: } sl@0: sl@0: // sl@0: //CTestMmfAclntARN8102 sl@0: // sl@0: sl@0: /** sl@0: * Constructor sl@0: */ sl@0: CTestMmfAclntARN8102::CTestMmfAclntARN8102(const TDesC& aTestName, const TDesC& aSectName) sl@0: : CTestMmfAclntAudioPlayerARN(aTestName, aSectName) sl@0: {} sl@0: sl@0: /** sl@0: * NewL sl@0: */ sl@0: CTestMmfAclntARN8102* CTestMmfAclntARN8102::NewL(const TDesC& aTestName, const TDesC& aSectName) sl@0: { sl@0: CTestMmfAclntARN8102* self = new (ELeave) CTestMmfAclntARN8102(aTestName, aSectName); sl@0: return self; sl@0: } sl@0: sl@0: /** sl@0: * DoTestL sl@0: */ sl@0: TVerdict CTestMmfAclntARN8102::DoTestL() sl@0: { sl@0: return( PerformTestL() ); sl@0: } sl@0: sl@0: /** sl@0: * FsmL sl@0: */ sl@0: void CTestMmfAclntARN8102::FsmL(TMmfAudioPlayerEvents aEventCode, TInt aError) sl@0: { sl@0: if (FsmCheck(aEventCode, aError)) sl@0: { sl@0: TInt retErr = KErrNone; sl@0: switch (iState) sl@0: { sl@0: case EStateBegin: sl@0: // Open iTestAudioPlayer#1 sl@0: iTestAudioPlayer1->OpenFileL(iFilename1); sl@0: INFO_PRINTF1(_L("iTestAudioPlayer1->OpenFileL()")); sl@0: // Set ExpectedEvent and change the State sl@0: StateChange(EStateOpenPlayer2, EMapcInitComplete1); sl@0: break; sl@0: case EStateOpenPlayer2: sl@0: // Register iTestAudioPlayer#1 for Notification sl@0: retErr = iTestAudioPlayer1->RegisterAudioResourceNotification(*iMdaAudioPlayerCallbackSupport1, KMMFEventCategoryAudioResourceAvailable); sl@0: INFO_PRINTF1(_L("iTestAudioPlayer1->RegisterAudioResourceNotification()")); sl@0: if( retErr != KErrNone ) sl@0: { sl@0: ERR_PRINTF2(_L("iTestAudioPlayer1->RegisterAudioResourceNotification - Failed with Error : %d"), retErr); sl@0: iTestStepResult = EFail; sl@0: CActiveScheduler::Stop(); sl@0: break; sl@0: } sl@0: // Open iTestAudioPlayer#2 sl@0: iTestAudioPlayer2->OpenFileL(iFilename2); sl@0: INFO_PRINTF1(_L("iTestAudioPlayer2->OpenFileL()")); sl@0: // Set ExpectedEvent and change the State sl@0: StateChange(EStatePlaying2, EMapcInitComplete2); sl@0: break; sl@0: case EStatePlaying2: sl@0: // Play iTestAudioPlayer#2 sl@0: iTestAudioPlayer2->Play(); sl@0: INFO_PRINTF1(_L("iTestAudioPlayer2->Play()")); sl@0: // Play iTestAudioPlayer#1 sl@0: iTestAudioPlayer1->Play(); sl@0: INFO_PRINTF1(_L("iTestAudioPlayer1->Play()")); sl@0: // Set ExpectedEvent and change the State sl@0: StateChange(EStateErrInUsePlayer1, EMapcPlayComplete1, KErrInUse); sl@0: break; sl@0: case EStateErrInUsePlayer1: sl@0: // Close iTestAudioPlayer#2 sl@0: WaitWithTimeout(iRequestStatus,1000000); sl@0: iTestAudioPlayer2->Stop(); sl@0: INFO_PRINTF1(_L("iTestAudioPlayer2->Stop()")); sl@0: iTestAudioPlayer2->Close(); sl@0: INFO_PRINTF1(_L("iTestAudioPlayer2->Close()")); sl@0: // Timer to check if Notification Event Occurs. sl@0: iCallBackTimer->After(2000000); sl@0: // Set ExpectedEvent and change the State sl@0: StateChange(EStateNotifiedPlayer1, EMarncResourceAvailable1); sl@0: break; sl@0: case EStateNotifiedPlayer1: sl@0: iCallBackTimer->Cancel(); // in case something else stopped the AS sl@0: INFO_PRINTF1(_L("iTestAudioPlayer1->NotificationReceived")); sl@0: iTestStepResult = EPass; sl@0: CActiveScheduler::Stop(); sl@0: break; sl@0: } sl@0: } sl@0: } sl@0: sl@0: /** sl@0: * PerformTestL sl@0: */ sl@0: TVerdict CTestMmfAclntARN8102::PerformTestL() sl@0: { sl@0: INFO_PRINTF1(_L("Register (b4 play, after Open) and Receive Notification of a Resource Available Event.")); sl@0: INFO_PRINTF1(_L("(when audio resource is currently unavailable and then available)")); sl@0: iTestStepResult = EFail; sl@0: sl@0: // Initialise the state variables sl@0: StateInit(); sl@0: sl@0: // Begin the process sl@0: FsmL(EIdlePlayer, KErrNone); sl@0: sl@0: // Start the scheduler - Done only once ! sl@0: CActiveScheduler::Start(); sl@0: sl@0: return iTestStepResult; sl@0: } sl@0: sl@0: // sl@0: //CTestMmfAclntARN8103 sl@0: // sl@0: sl@0: /** sl@0: * Constructor sl@0: */ sl@0: CTestMmfAclntARN8103::CTestMmfAclntARN8103(const TDesC& aTestName, const TDesC& aSectName) sl@0: : CTestMmfAclntAudioPlayerARN(aTestName, aSectName) sl@0: {} sl@0: sl@0: /** sl@0: * NewL sl@0: */ sl@0: CTestMmfAclntARN8103* CTestMmfAclntARN8103::NewL(const TDesC& aTestName, const TDesC& aSectName) sl@0: { sl@0: CTestMmfAclntARN8103* self = new (ELeave) CTestMmfAclntARN8103(aTestName, aSectName); sl@0: return self; sl@0: } sl@0: sl@0: /** sl@0: * DoTestL sl@0: */ sl@0: TVerdict CTestMmfAclntARN8103::DoTestL() sl@0: { sl@0: return( PerformTestL() ); sl@0: } sl@0: sl@0: /** sl@0: * FsmCheck sl@0: */ sl@0: TBool CTestMmfAclntARN8103::FsmCheck(TMmfAudioPlayerEvents aEventCode, TInt aError) sl@0: { sl@0: TBool retFsmCheck = EFalse; sl@0: if (((aEventCode == EMapcPlayComplete1) || (aEventCode == EMapcPlayComplete2)) && (aError == KErrUnderflow)) sl@0: { sl@0: INFO_PRINTF1(_L("Underflow !")); sl@0: } sl@0: else if (iExpectedEvent != aEventCode) sl@0: { sl@0: if ((aEventCode == EMapcPlayComplete2)) sl@0: { sl@0: retFsmCheck = ETrue; sl@0: if (iEventOccured == EMarncResourceAvailable1) sl@0: { sl@0: return retFsmCheck; sl@0: } sl@0: else sl@0: { sl@0: iEventOccured = EMapcPlayComplete2; sl@0: } sl@0: } sl@0: else if (aEventCode == EMarncResourceAvailable1) sl@0: { sl@0: retFsmCheck = ETrue; sl@0: if (iEventOccured == EMapcPlayComplete2) sl@0: { sl@0: return retFsmCheck; sl@0: } sl@0: else sl@0: { sl@0: iEventOccured = EMarncResourceAvailable1; sl@0: } sl@0: } sl@0: else sl@0: { sl@0: ERR_PRINTF3(_L("ExpectedEvent : %d, ActualEvent : %d"), iExpectedEvent, aEventCode); sl@0: iTestStepResult = EFail; sl@0: CActiveScheduler::Stop(); sl@0: } sl@0: } sl@0: else if (iExpectedError != aError) sl@0: { sl@0: ERR_PRINTF3(_L("ExpectedError : %d, ActualError : %d"), iExpectedError, aError); sl@0: iTestStepResult = EFail; sl@0: CActiveScheduler::Stop(); sl@0: } sl@0: else sl@0: { sl@0: retFsmCheck = ETrue; sl@0: } sl@0: return retFsmCheck; sl@0: } sl@0: sl@0: /** sl@0: * FsmL sl@0: */ sl@0: void CTestMmfAclntARN8103::FsmL(TMmfAudioPlayerEvents aEventCode, TInt aError) sl@0: { sl@0: if (FsmCheck(aEventCode, aError)) sl@0: { sl@0: TInt retErr = KErrNone; sl@0: switch (iState) sl@0: { sl@0: case EStateBegin: sl@0: // Open iTestAudioPlayer#1 sl@0: iTestAudioPlayer1->OpenFileL(iFilename1); sl@0: INFO_PRINTF1(_L("iTestAudioPlayer1->OpenFileL()")); sl@0: // Set ExpectedEvent and change the State sl@0: StateChange(EStatePlaying1, EMapcInitComplete1); sl@0: break; sl@0: case EStatePlaying1: sl@0: // Play iTestAudioPlayer#1 sl@0: iTestAudioPlayer1->Play(); sl@0: INFO_PRINTF1(_L("iTestAudioPlayer1->Play()")); sl@0: // Register iTestAudioPlayer#1 for Notification sl@0: retErr = iTestAudioPlayer1->RegisterAudioResourceNotification(*iMdaAudioPlayerCallbackSupport1, KMMFEventCategoryAudioResourceAvailable); sl@0: INFO_PRINTF1(_L("iTestAudioPlayer1->RegisterAudioResourceNotification()")); sl@0: if( retErr != KErrNone ) sl@0: { sl@0: ERR_PRINTF2(_L("iTestAudioPlayer1->RegisterAudioResourceNotification - Failed with Error : %d"), retErr); sl@0: iTestStepResult = EFail; sl@0: CActiveScheduler::Stop(); sl@0: break; sl@0: } sl@0: // Open iTestAudioPlayer#2 sl@0: iTestAudioPlayer2->OpenFileL(iFilename2); sl@0: INFO_PRINTF1(_L("iTestAudioPlayer2->OpenFileL()")); sl@0: // Set ExpectedEvent and change the State sl@0: StateChange(EStatePlaying2, EMapcInitComplete2); sl@0: break; sl@0: case EStatePlaying2: sl@0: // Play iTestAudioPlayer#2 sl@0: iTestAudioPlayer2->Play(); sl@0: INFO_PRINTF1(_L("iTestAudioPlayer2->Play()")); sl@0: // Set ExpectedEvent and change the State sl@0: StateChange(EStateErrInUsePlayer1, EMapcPlayComplete1, KErrInUse); sl@0: break; sl@0: case EStateErrInUsePlayer1: sl@0: // Set ExpectedEvent and change the State sl@0: StateChange(EStateEndPlay2, EMapcPlayComplete2); sl@0: break; sl@0: case EStateEndPlay2: sl@0: // Timer to check if Notification Event Occurs. sl@0: iCallBackTimer->After(2000000); sl@0: // Set ExpectedEvent and change the State sl@0: StateChange(EStateNotifiedPlayer1, EMarncResourceAvailable1); sl@0: break; sl@0: case EStateNotifiedPlayer1: sl@0: iCallBackTimer->Cancel(); // in case something else stopped the AS sl@0: INFO_PRINTF1(_L("iTestAudioPlayer1->NotificationReceived")); sl@0: iTestStepResult = EPass; sl@0: CActiveScheduler::Stop(); sl@0: break; sl@0: } sl@0: } sl@0: } sl@0: sl@0: /** sl@0: * PerformTestL sl@0: */ sl@0: TVerdict CTestMmfAclntARN8103::PerformTestL() sl@0: { sl@0: INFO_PRINTF1(_L("Register (at the time of Play) and Receive Notification of a Resource Available Event.")); sl@0: INFO_PRINTF1(_L("(when audio resource is currently available and subsequently unavailable, and then available)")); sl@0: iTestStepResult = EFail; sl@0: sl@0: // Initialise the state variables sl@0: StateInit(); sl@0: sl@0: // Begin the process sl@0: FsmL(EIdlePlayer, KErrNone); sl@0: sl@0: // Start the scheduler - Done only once ! sl@0: CActiveScheduler::Start(); sl@0: sl@0: return iTestStepResult; sl@0: } sl@0: sl@0: // sl@0: //CTestMmfAclntARN8104 sl@0: // sl@0: sl@0: /** sl@0: * Constructor sl@0: */ sl@0: CTestMmfAclntARN8104::CTestMmfAclntARN8104(const TDesC& aTestName, const TDesC& aSectName) sl@0: : CTestMmfAclntAudioPlayerARN(aTestName, aSectName) sl@0: {} sl@0: sl@0: /** sl@0: * NewL sl@0: */ sl@0: CTestMmfAclntARN8104* CTestMmfAclntARN8104::NewL(const TDesC& aTestName, const TDesC& aSectName) sl@0: { sl@0: CTestMmfAclntARN8104* self = new (ELeave) CTestMmfAclntARN8104(aTestName, aSectName); sl@0: return self; sl@0: } sl@0: sl@0: /** sl@0: * DoTestL sl@0: */ sl@0: TVerdict CTestMmfAclntARN8104::DoTestL() sl@0: { sl@0: return( PerformTestL() ); sl@0: } sl@0: sl@0: /** sl@0: * FsmL sl@0: */ sl@0: void CTestMmfAclntARN8104::FsmL(TMmfAudioPlayerEvents aEventCode, TInt aError) sl@0: { sl@0: if (FsmCheck(aEventCode, aError)) sl@0: { sl@0: TInt canErr = KErrNone; sl@0: switch (iState) sl@0: { sl@0: case EStateBegin: sl@0: // Open iTestAudioPlayer#1 sl@0: iTestAudioPlayer1->OpenFileL(iFilename1); sl@0: INFO_PRINTF1(_L("iTestAudioPlayer1->OpenFileL()")); sl@0: // Set ExpectedEvent and change the State sl@0: StateChange(EStatePlaying1, EMapcInitComplete1); sl@0: break; sl@0: case EStatePlaying1: sl@0: // Play iTestAudioPlayer#1 sl@0: iTestAudioPlayer1->Play(); sl@0: INFO_PRINTF1(_L("iTestAudioPlayer1->Play()")); sl@0: // Open iTestAudioPlayer#2 sl@0: iTestAudioPlayer2->OpenFileL(iFilename2); sl@0: INFO_PRINTF1(_L("iTestAudioPlayer2->OpenFileL()")); sl@0: // Set ExpectedEvent and change the State sl@0: StateChange(EStatePlaying2, EMapcInitComplete2); sl@0: break; sl@0: case EStatePlaying2: sl@0: // Play iTestAudioPlayer#2 sl@0: iTestAudioPlayer2->Play(); sl@0: INFO_PRINTF1(_L("iTestAudioPlayer2->Play()")); sl@0: // Set ExpectedEvent and change the State sl@0: StateChange(EStateErrInUsePlayer1, EMapcPlayComplete1, KErrInUse); sl@0: break; sl@0: case EStateErrInUsePlayer1: sl@0: // Cancel notification for iTestAudioPlayer#1 sl@0: canErr = iTestAudioPlayer1->CancelRegisterAudioResourceNotification(KMMFEventCategoryAudioResourceAvailable); sl@0: INFO_PRINTF1(_L("iTestAudioPlayer1->CancelRegisterAudioResourceNotification()")); sl@0: if( canErr != KErrNone ) sl@0: { sl@0: ERR_PRINTF2(_L("iTestAudioPlayer1->CancelRegisterAudioResourceNotification - Failed with Error : %d"), canErr); sl@0: iTestStepResult = EFail; sl@0: CActiveScheduler::Stop(); sl@0: break; sl@0: } sl@0: // Close iTestAudioPlayer#2 sl@0: WaitWithTimeout(iRequestStatus,1000000); sl@0: iTestAudioPlayer2->Stop(); sl@0: INFO_PRINTF1(_L("iTestAudioPlayer2->Stop()")); sl@0: iTestAudioPlayer2->Close(); sl@0: INFO_PRINTF1(_L("iTestAudioPlayer2->Close()")); sl@0: // Timer to check if Notification Event Occurs. sl@0: iCallBackTimer->After(2000000); sl@0: iTestStepResult = EPass; sl@0: // Set ExpectedEvent and change the State sl@0: StateChange(EStateNotifiedPlayer1, EMarncResourceAvailable1); sl@0: break; sl@0: case EStateNotifiedPlayer1: sl@0: iCallBackTimer->Cancel(); // in case something else stopped the AS sl@0: INFO_PRINTF1(_L("iTestAudioPlayer1->NotificationReceived")); sl@0: iTestStepResult = EFail; sl@0: CActiveScheduler::Stop(); sl@0: break; sl@0: } sl@0: } sl@0: } sl@0: sl@0: /** sl@0: * PerformTestL sl@0: */ sl@0: TVerdict CTestMmfAclntARN8104::PerformTestL() sl@0: { sl@0: INFO_PRINTF1(_L("Registration (b4 File Open) and Cancellation of the notification request")); sl@0: iTestStepResult = EFail; sl@0: sl@0: // Initialise the state variables sl@0: StateInit(); sl@0: sl@0: // Register iTestAudioPlayer#1 for Notification sl@0: TInt retErr = iTestAudioPlayer1->RegisterAudioResourceNotification(*iMdaAudioPlayerCallbackSupport1, KMMFEventCategoryAudioResourceAvailable); sl@0: INFO_PRINTF1(_L("iTestAudioPlayer1->RegisterAudioResourceNotification()")); sl@0: if( retErr != KErrNone ) sl@0: { sl@0: ERR_PRINTF2(_L("iTestAudioPlayer1->RegisterAudioResourceNotification - Failed with Error : %d"), retErr); sl@0: return EFail; sl@0: } sl@0: sl@0: // Begin the process sl@0: FsmL(EIdlePlayer, KErrNone); sl@0: sl@0: // Start the scheduler - Done only once ! sl@0: CActiveScheduler::Start(); sl@0: sl@0: return iTestStepResult; sl@0: } sl@0: sl@0: // sl@0: //CTestMmfAclntARN8105 sl@0: // sl@0: sl@0: /** sl@0: * Constructor sl@0: */ sl@0: CTestMmfAclntARN8105::CTestMmfAclntARN8105(const TDesC& aTestName, const TDesC& aSectName) sl@0: : CTestMmfAclntAudioPlayerARN(aTestName, aSectName) sl@0: {} sl@0: sl@0: /** sl@0: * NewL sl@0: */ sl@0: CTestMmfAclntARN8105* CTestMmfAclntARN8105::NewL(const TDesC& aTestName, const TDesC& aSectName) sl@0: { sl@0: CTestMmfAclntARN8105* self = new (ELeave) CTestMmfAclntARN8105(aTestName, aSectName); sl@0: return self; sl@0: } sl@0: sl@0: /** sl@0: * DoTestL sl@0: */ sl@0: TVerdict CTestMmfAclntARN8105::DoTestL() sl@0: { sl@0: return( PerformTestL() ); sl@0: } sl@0: sl@0: /** sl@0: * FsmCheck sl@0: */ sl@0: TBool CTestMmfAclntARN8105::FsmCheck(TMmfAudioPlayerEvents aEventCode, TInt aError) sl@0: { sl@0: TBool retFsmCheck = EFalse; sl@0: if (((aEventCode == EMapcPlayComplete1) || (aEventCode == EMapcPlayComplete2)) && (aError == KErrUnderflow)) sl@0: { sl@0: INFO_PRINTF1(_L("Underflow !")); sl@0: } sl@0: else if (iExpectedEvent != aEventCode) sl@0: { sl@0: if ((aEventCode == EMapcPlayComplete2)) sl@0: { sl@0: retFsmCheck = ETrue; sl@0: if (iEventOccured == EMarncResourceAvailable1) sl@0: { sl@0: return retFsmCheck; sl@0: } sl@0: else sl@0: { sl@0: iEventOccured = EMapcPlayComplete2; sl@0: } sl@0: } sl@0: else if (aEventCode == EMarncResourceAvailable1) sl@0: { sl@0: retFsmCheck = ETrue; sl@0: if (iEventOccured == EMapcPlayComplete2) sl@0: { sl@0: return retFsmCheck; sl@0: } sl@0: else sl@0: { sl@0: iEventOccured = EMarncResourceAvailable1; sl@0: } sl@0: } sl@0: else sl@0: { sl@0: ERR_PRINTF3(_L("ExpectedEvent : %d, ActualEvent : %d"), iExpectedEvent, aEventCode); sl@0: iTestStepResult = EFail; sl@0: CActiveScheduler::Stop(); sl@0: } sl@0: } sl@0: else if (iExpectedError != aError) sl@0: { sl@0: ERR_PRINTF3(_L("ExpectedError : %d, ActualError : %d"), iExpectedError, aError); sl@0: iTestStepResult = EFail; sl@0: CActiveScheduler::Stop(); sl@0: } sl@0: else sl@0: { sl@0: retFsmCheck = ETrue; sl@0: } sl@0: return retFsmCheck; sl@0: } sl@0: sl@0: /** sl@0: * FsmL sl@0: */ sl@0: void CTestMmfAclntARN8105::FsmL(TMmfAudioPlayerEvents aEventCode, TInt aError) sl@0: { sl@0: if (FsmCheck(aEventCode, aError)) sl@0: { sl@0: TInt retErr = KErrNone; sl@0: switch (iState) sl@0: { sl@0: case EStateBegin: sl@0: // Open iTestAudioPlayer#1 sl@0: iTestAudioPlayer1->OpenFileL(iFilename1); sl@0: INFO_PRINTF1(_L("iTestAudioPlayer1->OpenFileL()")); sl@0: // Set ExpectedEvent and change the State sl@0: StateChange(EStatePlaying1, EMapcInitComplete1); sl@0: break; sl@0: case EStatePlaying1: sl@0: // Play iTestAudioPlayer#1 sl@0: iTestAudioPlayer1->Play(); sl@0: INFO_PRINTF1(_L("iTestAudioPlayer1->Play()")); sl@0: // Open iTestAudioPlayer#2 sl@0: iTestAudioPlayer2->OpenFileL(iFilename2); sl@0: INFO_PRINTF1(_L("iTestAudioPlayer2->OpenFileL()")); sl@0: // Set ExpectedEvent and change the State sl@0: StateChange(EStatePlaying2, EMapcInitComplete2); sl@0: break; sl@0: case EStatePlaying2: sl@0: // Play iTestAudioPlayer#2 sl@0: iTestAudioPlayer2->Play(); sl@0: INFO_PRINTF1(_L("iTestAudioPlayer2->Play()")); sl@0: // Set ExpectedEvent and change the State sl@0: StateChange(EStateErrInUsePlayer1, EMapcPlayComplete1, KErrInUse); sl@0: break; sl@0: case EStateErrInUsePlayer1: sl@0: //Get Position of iTestAudioPlayer#1 sl@0: retErr = iTestAudioPlayer1->GetPosition(iPositionStop); sl@0: INFO_PRINTF1(_L("iTestAudioPlayer1->GetPosition()")); sl@0: if( retErr != KErrNone ) sl@0: { sl@0: ERR_PRINTF2(_L("iTestAudioPlayer1->GetPosition - Failed with Error : %d"), retErr); sl@0: iTestStepResult = EFail; sl@0: CActiveScheduler::Stop(); sl@0: break; sl@0: } sl@0: INFO_PRINTF2(_L("value of iPositionStop = %d"),iPositionStop.Int64());//Statement Changed under DEF105143 sl@0: sl@0: // Register iTestAudioPlayer#1 for Notification sl@0: retErr = iTestAudioPlayer1->RegisterAudioResourceNotification(*iMdaAudioPlayerCallbackSupport1, KMMFEventCategoryAudioResourceAvailable); sl@0: INFO_PRINTF1(_L("iTestAudioPlayer1->RegisterAudioResourceNotification()")); sl@0: if( retErr != KErrNone ) sl@0: { sl@0: ERR_PRINTF2(_L("iTestAudioPlayer1->RegisterAudioResourceNotification - Failed with Error : %d"), retErr); sl@0: iTestStepResult = EFail; sl@0: CActiveScheduler::Stop(); sl@0: break; sl@0: } sl@0: // Set ExpectedEvent and change the State sl@0: StateChange(EStateEndPlay2, EMapcPlayComplete2); sl@0: break; sl@0: case EStateEndPlay2: sl@0: // Timer to check if Notification Event Occurs. sl@0: iCallBackTimer->After(2000000); sl@0: // Set ExpectedEvent and change the State sl@0: StateChange(EStateNotifiedPlayer1, EMarncResourceAvailable1); sl@0: break; sl@0: case EStateNotifiedPlayer1: sl@0: iCallBackTimer->Cancel(); // in case something else stopped the AS sl@0: INFO_PRINTF1(_L("iTestAudioPlayer1->NotificationReceived")); sl@0: iPositionResume = iPosition; sl@0: CActiveScheduler::Stop(); sl@0: // Check for the Position. sl@0: if (iPositionResume >= iPositionStop) sl@0: { sl@0: INFO_PRINTF3(_L("iTestAudioPlayer1->Audio Resource iPositionResume >= iPositionStop, Expected=%Ld, Actual=%Ld"), iPositionStop.Int64(), iPositionResume.Int64()); sl@0: iTestStepResult=EPass; sl@0: } sl@0: else sl@0: { sl@0: ERR_PRINTF3(_L("iTestAudioPlayer1->Audio Resource Position is NOT iPositionResume >= iPositionStop, Expected=%Ld, Actual=%Ld"), iPositionStop.Int64(), iPositionResume.Int64()); sl@0: iTestStepResult=EFail; sl@0: } sl@0: break; sl@0: } sl@0: } sl@0: } sl@0: sl@0: /** sl@0: * PerformTestL sl@0: */ sl@0: TVerdict CTestMmfAclntARN8105::PerformTestL() sl@0: { sl@0: INFO_PRINTF1(_L("Register (after Play Error) and Get the actual position from where the paused audio can be resumed. Low priority client is played first.")); sl@0: iTestStepResult = EFail; sl@0: sl@0: // Initialise the state variables sl@0: StateInit(); sl@0: sl@0: // Begin the process sl@0: FsmL(EIdlePlayer, KErrNone); sl@0: sl@0: // Start the scheduler - Done only once ! sl@0: CActiveScheduler::Start(); sl@0: sl@0: return iTestStepResult; sl@0: } sl@0: sl@0: // sl@0: //CTestMmfAclntARN8106 sl@0: // sl@0: sl@0: /** sl@0: * Constructor sl@0: */ sl@0: CTestMmfAclntARN8106::CTestMmfAclntARN8106(const TDesC& aTestName, const TDesC& aSectName) sl@0: : CTestMmfAclntAudioPlayerARN(aTestName, aSectName) sl@0: {} sl@0: sl@0: /** sl@0: * NewL sl@0: */ sl@0: CTestMmfAclntARN8106* CTestMmfAclntARN8106::NewL(const TDesC& aTestName, const TDesC& aSectName) sl@0: { sl@0: CTestMmfAclntARN8106* self = new (ELeave) CTestMmfAclntARN8106(aTestName, aSectName); sl@0: return self; sl@0: } sl@0: sl@0: /** sl@0: * DoTestL sl@0: */ sl@0: TVerdict CTestMmfAclntARN8106::DoTestL() sl@0: { sl@0: return( PerformTestL() ); sl@0: } sl@0: sl@0: /** sl@0: * FsmCheck sl@0: */ sl@0: TBool CTestMmfAclntARN8106::FsmCheck(TMmfAudioPlayerEvents aEventCode, TInt aError) sl@0: { sl@0: TBool retFsmCheck = EFalse; sl@0: if (((aEventCode == EMapcPlayComplete1) || (aEventCode == EMapcPlayComplete2)) && (aError == KErrUnderflow)) sl@0: { sl@0: INFO_PRINTF1(_L("Underflow !")); sl@0: } sl@0: else if (iExpectedEvent != aEventCode) sl@0: { sl@0: if ((aEventCode == EMapcPlayComplete2)) sl@0: { sl@0: retFsmCheck = ETrue; sl@0: if (iEventOccured == EMarncResourceAvailable1) sl@0: { sl@0: return retFsmCheck; sl@0: } sl@0: else sl@0: { sl@0: iEventOccured = EMapcPlayComplete2; sl@0: } sl@0: } sl@0: else if (aEventCode == EMarncResourceAvailable1) sl@0: { sl@0: retFsmCheck = ETrue; sl@0: if (iEventOccured == EMapcPlayComplete2) sl@0: { sl@0: return retFsmCheck; sl@0: } sl@0: else sl@0: { sl@0: iEventOccured = EMarncResourceAvailable1; sl@0: } sl@0: } sl@0: else sl@0: { sl@0: ERR_PRINTF3(_L("ExpectedEvent : %d, ActualEvent : %d"), iExpectedEvent, aEventCode); sl@0: iTestStepResult = EFail; sl@0: CActiveScheduler::Stop(); sl@0: } sl@0: } sl@0: else if (iExpectedError != aError) sl@0: { sl@0: ERR_PRINTF3(_L("ExpectedError : %d, ActualError : %d"), iExpectedError, aError); sl@0: iTestStepResult = EFail; sl@0: CActiveScheduler::Stop(); sl@0: } sl@0: else sl@0: { sl@0: retFsmCheck = ETrue; sl@0: } sl@0: return retFsmCheck; sl@0: } sl@0: sl@0: /** sl@0: * FsmL sl@0: */ sl@0: void CTestMmfAclntARN8106::FsmL(TMmfAudioPlayerEvents aEventCode, TInt aError) sl@0: { sl@0: if (FsmCheck(aEventCode, aError)) sl@0: { sl@0: TInt retErr = KErrNone; sl@0: switch (iState) sl@0: { sl@0: case EStateBegin: sl@0: // Open iTestAudioPlayer#2 sl@0: iTestAudioPlayer2->OpenFileL(iFilename2); sl@0: INFO_PRINTF1(_L("iTestAudioPlayer2->OpenFileL()")); sl@0: // Set ExpectedEvent and change the State sl@0: StateChange(EStatePlaying2, EMapcInitComplete2); sl@0: break; sl@0: case EStatePlaying2: sl@0: // Play iTestAudioPlayer#2 sl@0: iTestAudioPlayer2->Play(); sl@0: INFO_PRINTF1(_L("iTestAudioPlayer2->Play()")); sl@0: // Open iTestAudioPlayer#1 sl@0: iTestAudioPlayer1->OpenFileL(iFilename1); sl@0: INFO_PRINTF1(_L("iTestAudioPlayer1->OpenFileL()")); sl@0: // Set ExpectedEvent and change the State sl@0: StateChange(EStatePlaying1, EMapcInitComplete1); sl@0: break; sl@0: case EStatePlaying1: sl@0: // Play iTestAudioPlayer#1 sl@0: iTestAudioPlayer1->Play(); sl@0: INFO_PRINTF1(_L("iTestAudioPlayer1->Play()")); sl@0: // Set ExpectedEvent and change the State sl@0: StateChange(EStateErrInUsePlayer1, EMapcPlayComplete1, KErrInUse); sl@0: break; sl@0: case EStateErrInUsePlayer1: sl@0: //Get Position of iTestAudioPlayer#1 sl@0: retErr = iTestAudioPlayer1->GetPosition(iPositionStop); sl@0: INFO_PRINTF1(_L("iTestAudioPlayer1->GetPosition()")); sl@0: if( retErr != KErrNone ) sl@0: { sl@0: ERR_PRINTF2(_L("iTestAudioPlayer1->GetPosition - Failed with Error : %d"), retErr); sl@0: iTestStepResult = EFail; sl@0: CActiveScheduler::Stop(); sl@0: break; sl@0: } sl@0: // Register iTestAudioPlayer#1 for Notification sl@0: retErr = iTestAudioPlayer1->RegisterAudioResourceNotification(*iMdaAudioPlayerCallbackSupport1, KMMFEventCategoryAudioResourceAvailable); sl@0: INFO_PRINTF1(_L("iTestAudioPlayer1->RegisterAudioResourceNotification()")); sl@0: if( retErr != KErrNone ) sl@0: { sl@0: ERR_PRINTF2(_L("iTestAudioPlayer1->RegisterAudioResourceNotification - Failed with Error : %d"), retErr); sl@0: iTestStepResult = EFail; sl@0: CActiveScheduler::Stop(); sl@0: break; sl@0: } sl@0: // Set ExpectedEvent and change the State sl@0: StateChange(EStateEndPlay2, EMapcPlayComplete2); sl@0: break; sl@0: case EStateEndPlay2: sl@0: // Timer to check if Notification Event Occurs. sl@0: iCallBackTimer->After(2000000); sl@0: // Set ExpectedEvent and change the State sl@0: StateChange(EStateNotifiedPlayer1, EMarncResourceAvailable1); sl@0: break; sl@0: case EStateNotifiedPlayer1: sl@0: iCallBackTimer->Cancel(); // in case something else stopped the AS sl@0: INFO_PRINTF1(_L("iTestAudioPlayer1->NotificationReceived")); sl@0: iPositionResume = iPosition; sl@0: CActiveScheduler::Stop(); sl@0: // Check for the Position sl@0: if (iPositionResume >= iPositionStop) sl@0: { sl@0: INFO_PRINTF3(_L("iTestAudioPlayer1->Audio Resource Position Matches, Expected=%Ld, Actual=%Ld"), iPositionStop.Int64(), iPositionResume.Int64()); sl@0: iTestStepResult=EPass; sl@0: } sl@0: else sl@0: { sl@0: ERR_PRINTF3(_L("iTestAudioPlayer1->Audio Resource Position does NOT Match, Expected=%Ld, Actual=%Ld"), iPositionStop.Int64(), iPositionResume.Int64()); sl@0: iTestStepResult=EFail; sl@0: } sl@0: break; sl@0: } sl@0: } sl@0: } sl@0: sl@0: /** sl@0: * PerformTestL sl@0: */ sl@0: TVerdict CTestMmfAclntARN8106::PerformTestL() sl@0: { sl@0: INFO_PRINTF1(_L("Register (after Play Error) and Get the actual position from where the paused audio can be resumed. High priority client is played first.")); sl@0: iTestStepResult = EFail; sl@0: sl@0: // Initialise the state variables sl@0: StateInit(); sl@0: sl@0: // Begin the process sl@0: FsmL(EIdlePlayer, KErrNone); sl@0: sl@0: // Start the scheduler - Done only once ! sl@0: CActiveScheduler::Start(); sl@0: sl@0: return iTestStepResult; sl@0: } sl@0: sl@0: // sl@0: //CTestMmfAclntARN8107 sl@0: // sl@0: sl@0: /** sl@0: * Constructor sl@0: */ sl@0: CTestMmfAclntARN8107::CTestMmfAclntARN8107(const TDesC& aTestName, const TDesC& aSectName) sl@0: : CTestMmfAclntAudioPlayerARN(aTestName, aSectName) sl@0: {} sl@0: sl@0: /** sl@0: * NewL sl@0: */ sl@0: CTestMmfAclntARN8107* CTestMmfAclntARN8107::NewL(const TDesC& aTestName, const TDesC& aSectName) sl@0: { sl@0: CTestMmfAclntARN8107* self = new (ELeave) CTestMmfAclntARN8107(aTestName, aSectName); sl@0: return self; sl@0: } sl@0: sl@0: /** sl@0: * DoTestL sl@0: */ sl@0: TVerdict CTestMmfAclntARN8107::DoTestL() sl@0: { sl@0: return( PerformTestL() ); sl@0: } sl@0: sl@0: /** sl@0: * FsmCheck sl@0: */ sl@0: TBool CTestMmfAclntARN8107::FsmCheck(TMmfAudioPlayerEvents aEventCode, TInt aError) sl@0: { sl@0: TBool retFsmCheck = EFalse; sl@0: if (((aEventCode == EMapcPlayComplete1) || (aEventCode == EMapcPlayComplete2)) && (aError == KErrUnderflow)) sl@0: { sl@0: INFO_PRINTF1(_L("Underflow !")); sl@0: } sl@0: else if (iExpectedEvent != aEventCode) sl@0: { sl@0: if ((aEventCode == EMapcPlayComplete2)) sl@0: { sl@0: retFsmCheck = ETrue; sl@0: if (iEventOccured == EMarncResourceAvailable1) sl@0: { sl@0: return retFsmCheck; sl@0: } sl@0: else sl@0: { sl@0: iEventOccured = EMapcPlayComplete2; sl@0: } sl@0: } sl@0: else if (aEventCode == EMarncResourceAvailable1) sl@0: { sl@0: retFsmCheck = ETrue; sl@0: if (iEventOccured == EMapcPlayComplete2) sl@0: { sl@0: return retFsmCheck; sl@0: } sl@0: else sl@0: { sl@0: iEventOccured = EMarncResourceAvailable1; sl@0: } sl@0: } sl@0: else sl@0: { sl@0: ERR_PRINTF3(_L("ExpectedEvent : %d, ActualEvent : %d"), iExpectedEvent, aEventCode); sl@0: iTestStepResult = EFail; sl@0: CActiveScheduler::Stop(); sl@0: } sl@0: } sl@0: else if (iExpectedError != aError) sl@0: { sl@0: ERR_PRINTF3(_L("ExpectedError : %d, ActualError : %d"), iExpectedError, aError); sl@0: iTestStepResult = EFail; sl@0: CActiveScheduler::Stop(); sl@0: } sl@0: else sl@0: { sl@0: retFsmCheck = ETrue; sl@0: } sl@0: return retFsmCheck; sl@0: } sl@0: sl@0: /** sl@0: * FsmL sl@0: */ sl@0: void CTestMmfAclntARN8107::FsmL(TMmfAudioPlayerEvents aEventCode, TInt aError) sl@0: { sl@0: if (FsmCheck(aEventCode, aError)) sl@0: { sl@0: TInt retErr = KErrNone; sl@0: switch (iState) sl@0: { sl@0: case EStateBegin: sl@0: // Open iTestAudioPlayer#1 sl@0: iTestAudioPlayer1->OpenFileL(iFilename1); sl@0: INFO_PRINTF1(_L("iTestAudioPlayer1->OpenFileL()")); sl@0: // Set ExpectedEvent and change the State sl@0: StateChange(EStatePlaying1, EMapcInitComplete1); sl@0: break; sl@0: case EStatePlaying1: sl@0: // Play iTestAudioPlayer#1 sl@0: iTestAudioPlayer1->Play(); sl@0: INFO_PRINTF1(_L("iTestAudioPlayer1->Play()")); sl@0: // Register iTestAudioPlayer#1 for Notification sl@0: retErr = iTestAudioPlayer1->RegisterAudioResourceNotification(*iMdaAudioPlayerCallbackSupport1, KMMFEventCategoryAudioResourceAvailable); sl@0: INFO_PRINTF1(_L("iTestAudioPlayer1->RegisterAudioResourceNotification()")); sl@0: if( retErr != KErrNone ) sl@0: { sl@0: ERR_PRINTF2(_L("iTestAudioPlayer1->RegisterAudioResourceNotification - Failed with Error : %d"), retErr); sl@0: iTestStepResult = EFail; sl@0: CActiveScheduler::Stop(); sl@0: break; sl@0: } sl@0: // Open iTestAudioPlayer#2 sl@0: iTestAudioPlayer2->OpenFileL(iFilename2); sl@0: INFO_PRINTF1(_L("iTestAudioPlayer2->OpenFileL()")); sl@0: // Set ExpectedEvent and change the State sl@0: StateChange(EStatePlaying2, EMapcInitComplete2); sl@0: break; sl@0: case EStatePlaying2: sl@0: // Play iTestAudioPlayer#2 sl@0: iTestAudioPlayer2->Play(); sl@0: INFO_PRINTF1(_L("iTestAudioPlayer2->Play()")); sl@0: // Set ExpectedEvent and change the State sl@0: StateChange(EStateErrInUsePlayer1, EMapcPlayComplete1, KErrInUse); sl@0: break; sl@0: case EStateErrInUsePlayer1: sl@0: // Set ExpectedEvent and change the State sl@0: StateChange(EStateEndPlay2, EMapcPlayComplete2); sl@0: break; sl@0: case EStateEndPlay2: sl@0: // Timer to check if Notification Event Occurs. sl@0: iCallBackTimer->After(2000000); sl@0: // Set ExpectedEvent and change the State sl@0: StateChange(EStateNotifiedPlayer1, EMarncResourceAvailable1); sl@0: break; sl@0: case EStateNotifiedPlayer1: sl@0: iCallBackTimer->Cancel(); // in case something else stopped the AS sl@0: INFO_PRINTF1(_L("iTestAudioPlayer1->NotificationReceived => 1")); sl@0: retErr = iTestAudioPlayer1->WillResumePlay(); sl@0: INFO_PRINTF1(_L("iTestAudioPlayer1->WillResumePlay()")); sl@0: if( retErr != KErrNone ) sl@0: { sl@0: ERR_PRINTF2(_L("iTestAudioPlayer1->WillResumePlay() - Failed with Error : %d"), retErr); sl@0: iTestStepResult = EFail; sl@0: CActiveScheduler::Stop(); sl@0: break; sl@0: } sl@0: iTestAudioPlayer1->SetPosition(iPosition); sl@0: // Play iTestAudioPlayer#1 sl@0: iTestAudioPlayer1->Play(); sl@0: INFO_PRINTF1(_L("iTestAudioPlayer1->Play()")); sl@0: // Open iTestAudioPlayer#2 sl@0: iTestAudioPlayer2->OpenFileL(iFilename2); sl@0: INFO_PRINTF1(_L("iTestAudioPlayer2->OpenFileL()")); sl@0: // Set ExpectedEvent and change the State sl@0: StateChange(EStatePlaying2A, EMapcInitComplete2); sl@0: break; sl@0: case EStatePlaying2A: sl@0: // Play iTestAudioPlayer#2 sl@0: iTestAudioPlayer2->Play(); sl@0: INFO_PRINTF1(_L("iTestAudioPlayer2->Play()")); sl@0: // Set ExpectedEvent and change the State sl@0: StateChange(EStateErrInUsePlayer1A, EMapcPlayComplete1, KErrInUse); sl@0: break; sl@0: case EStateErrInUsePlayer1A: sl@0: // Set ExpectedEvent and change the State sl@0: StateChange(EStateEndPlay2A, EMapcPlayComplete2); sl@0: break; sl@0: case EStateEndPlay2A: sl@0: // Timer to check if Notification Event Occurs. sl@0: iCallBackTimer->After(2000000); sl@0: // Set ExpectedEvent and change the State sl@0: StateChange(EStateNotifiedPlayer1A, EMarncResourceAvailable1); sl@0: break; sl@0: case EStateNotifiedPlayer1A: sl@0: iCallBackTimer->Cancel(); // in case something else stopped the AS sl@0: INFO_PRINTF1(_L("iTestAudioPlayer1->NotificationReceived => 2")); sl@0: iTestStepResult = EPass; sl@0: CActiveScheduler::Stop(); sl@0: break; sl@0: } sl@0: } sl@0: } sl@0: sl@0: /** sl@0: * PerformTestL sl@0: */ sl@0: TVerdict CTestMmfAclntARN8107::PerformTestL() sl@0: { sl@0: INFO_PRINTF1(_L("Client does not need to Re-register for the same event when the event is received i.e API is not one shot.")); sl@0: iTestStepResult = EFail; sl@0: sl@0: // Initialise the state variables sl@0: StateInit(); sl@0: sl@0: // Begin the process sl@0: FsmL(EIdlePlayer, KErrNone); sl@0: sl@0: // Start the scheduler - Done only once ! sl@0: CActiveScheduler::Start(); sl@0: sl@0: return iTestStepResult; sl@0: } sl@0: sl@0: // sl@0: //CTestMmfAclntARN8108 sl@0: // sl@0: sl@0: /** sl@0: * NewL sl@0: */ sl@0: CTestMmfAclntARN8108* CTestMmfAclntARN8108::NewL(const TDesC& aTestName, const TDesC& aSectName) sl@0: { sl@0: CTestMmfAclntARN8108* self = new (ELeave) CTestMmfAclntARN8108(aTestName, aSectName); sl@0: return self; sl@0: } sl@0: sl@0: /** sl@0: * Constructor sl@0: */ sl@0: CTestMmfAclntARN8108::CTestMmfAclntARN8108(const TDesC& aTestName, const TDesC& aSectName) sl@0: : CTestMmfAclntAudioPlayerARN(aTestName, aSectName) sl@0: {} sl@0: sl@0: sl@0: /** sl@0: * DoTestL sl@0: */ sl@0: TVerdict CTestMmfAclntARN8108::DoTestL() sl@0: { sl@0: return( PerformTestL() ); sl@0: } sl@0: sl@0: void CTestMmfAclntARN8108::DecideFsmState(TInt aClientNumber,CMultiEventChecker::TClientUtilityType aClientType, TInt aEventCode, TInt aError) sl@0: { sl@0: if (iEventChecker->CheckFsm(aClientNumber, aClientType, aEventCode, aError)) sl@0: { sl@0: iTestStepResult = (this->*(iStateHandlers[iEventChecker->NextState()]))(); sl@0: if(iTestStepResult != EPass) sl@0: { sl@0: iEventChecker->StopTest(); sl@0: } sl@0: } sl@0: } sl@0: sl@0: void CTestMmfAclntARN8108::FsmL(TMmfAudioPlayerEvents aEventCode, TInt aError) sl@0: { sl@0: if (aEventCode == EMapcInitComplete1 || aEventCode == EMapcPlayComplete1 || aEventCode == EMarncResourceAvailable1) sl@0: { //Client 1 sl@0: DecideFsmState(1,CMultiEventChecker::EAudioPlayer,aEventCode,aError); sl@0: } sl@0: if (aEventCode == EMapcInitComplete2 || aEventCode == EMapcPlayComplete2 || aEventCode == EMarncResourceAvailable2) sl@0: { //Client 2 sl@0: DecideFsmState(2,CMultiEventChecker::EAudioPlayer,aEventCode,aError); sl@0: } sl@0: if (aEventCode == EMapcInitComplete3 || aEventCode == EMapcPlayComplete3 || aEventCode == EMarncResourceAvailable3) sl@0: { //Client 3 sl@0: DecideFsmState(3,CMultiEventChecker::EAudioPlayer,aEventCode,aError); sl@0: } sl@0: } sl@0: sl@0: sl@0: void CTestMmfAclntARN8108::InitTest() sl@0: { sl@0: iStateHandlers[EStateOpenPlayer1]=&CTestMmfAclntARN8108::HandleStateOpenPlayer1; sl@0: iStateHandlers[EStateOpenPlayer3]=&CTestMmfAclntARN8108::HandleStateOpenPlayer3; sl@0: iStateHandlers[EStateOpenPlayer2]=&CTestMmfAclntARN8108::HandleStateOpenPlayer2; sl@0: iStateHandlers[EStateErrInUsePlayer1]=&CTestMmfAclntARN8108::HandleStateErrInUsePlayer1; sl@0: iStateHandlers[EStateErrInUsePlayer3]=&CTestMmfAclntARN8108::HandleStateErrInUsePlayer3; sl@0: iStateHandlers[EStateNotifiedPlayer1]=&CTestMmfAclntARN8108::HandleStateNotifiedPlayer1; sl@0: iStateHandlers[EStateNotifiedPlayer3]=&CTestMmfAclntARN8108::HandleStateNotifiedPlayer3; sl@0: iStateHandlers[EStatePlaying1]=&CTestMmfAclntARN8108::HandleStatePlaying1; sl@0: } sl@0: sl@0: void CTestMmfAclntARN8108::StartTestL() sl@0: { sl@0: // Open iTestAudioPlayer#1 sl@0: iTestAudioPlayer1->OpenFileL(iFilename1); sl@0: INFO_PRINTF1(_L("iTestAudioPlayer1->OpenFileL()")); sl@0: iEventChecker->SetExpectedEvent(1,EMapcInitComplete1,KErrNone); sl@0: iEventChecker->SetExpectedState(EStateOpenPlayer1); sl@0: } sl@0: sl@0: TVerdict CTestMmfAclntARN8108::HandleStateOpenPlayer1() sl@0: { sl@0: TInt retErr; sl@0: // Play iTestAudioPlayer#1 sl@0: iTestAudioPlayer1->Play(); sl@0: INFO_PRINTF1(_L("iTestAudioPlayer1->Play()")); sl@0: // Register iTestAudioPlayer#1 for Notification sl@0: retErr = iTestAudioPlayer1->RegisterAudioResourceNotification(*iMdaAudioPlayerCallbackSupport1, KMMFEventCategoryAudioResourceAvailable); sl@0: INFO_PRINTF1(_L("iTestAudioPlayer1->RegisterAudioResourceNotification()")); sl@0: if( retErr != KErrNone ) sl@0: { sl@0: ERR_PRINTF2(_L("iTestAudioPlayer1->RegisterAudioResourceNotification - Failed with Error : %d"), retErr); sl@0: iTestStepResult = EFail; sl@0: CActiveScheduler::Stop(); sl@0: return EFail; sl@0: } sl@0: // Register iTestAudioPlayer#3 for Notification sl@0: retErr = iTestAudioPlayer3->RegisterAudioResourceNotification(*iMdaAudioPlayerCallbackSupport3, KMMFEventCategoryAudioResourceAvailable); sl@0: INFO_PRINTF1(_L("iTestAudioPlayer3->RegisterAudioResourceNotification()")); sl@0: if( retErr != KErrNone ) sl@0: { sl@0: ERR_PRINTF2(_L("iTestAudioPlayer3->RegisterAudioResourceNotification - Failed with Error : %d"), retErr); sl@0: iTestStepResult = EFail; sl@0: CActiveScheduler::Stop(); sl@0: return EFail; sl@0: } sl@0: // Open iTestAudioPlayer#3 sl@0: iTestAudioPlayer3->OpenFileL(iFilename3); sl@0: INFO_PRINTF1(_L("iTestAudioPlayer3->OpenFileL()")); sl@0: // Set ExpectedEvent and change the State sl@0: iEventChecker->SetExpectedEvent(3,EMapcInitComplete3,KErrNone); sl@0: iEventChecker->SetExpectedState(EStateOpenPlayer3); sl@0: return EPass; sl@0: } sl@0: sl@0: TVerdict CTestMmfAclntARN8108::HandleStateOpenPlayer3() sl@0: { sl@0: iTestAudioPlayer2->OpenFileL(iFilename2); sl@0: INFO_PRINTF1(_L("iTestAudioPlayer2->OpenFileL()")); sl@0: // Set ExpectedEvent and change the State sl@0: iEventChecker->SetExpectedEvent(2,EMapcInitComplete2,KErrNone); sl@0: iEventChecker->SetExpectedState(EStateOpenPlayer2); sl@0: return EPass; sl@0: } sl@0: sl@0: TVerdict CTestMmfAclntARN8108::HandleStateOpenPlayer2() sl@0: { sl@0: // Play iTestAudioPlayer#2 sl@0: iTestAudioPlayer2->Play(); sl@0: INFO_PRINTF1(_L("iTestAudioPlayer2->Play()")); sl@0: // Set ExpectedEvent and change the State sl@0: iEventChecker->SetExpectedEvent(1,EMapcPlayComplete1,KErrInUse); sl@0: iEventChecker->SetExpectedState(EStateErrInUsePlayer1); sl@0: return EPass; sl@0: } sl@0: TVerdict CTestMmfAclntARN8108::HandleStateErrInUsePlayer1() sl@0: { sl@0: // Play iTestAudioPlayer#3 sl@0: iTestAudioPlayer3->Play(); sl@0: INFO_PRINTF1(_L("iTestAudioPlayer3->Play()")); sl@0: // Set ExpectedEvent and change the State sl@0: iEventChecker->SetExpectedEvent(3,EMapcPlayComplete3,KErrInUse); sl@0: iEventChecker->SetExpectedState(EStateErrInUsePlayer3); sl@0: return EPass; sl@0: } sl@0: sl@0: TVerdict CTestMmfAclntARN8108::HandleStateErrInUsePlayer3() sl@0: { sl@0: // Close iTestAudioPlayer#2 sl@0: WaitWithTimeout(iRequestStatus,1000000); sl@0: iTestAudioPlayer2->Stop(); sl@0: INFO_PRINTF1(_L("iTestAudioPlayer2->Stop()")); sl@0: iTestAudioPlayer2->Close(); sl@0: INFO_PRINTF1(_L("iTestAudioPlayer2->Close()")); sl@0: // Timer to check if Notification Event Occurs. sl@0: iCallBackTimer->After(2000000); sl@0: // Set ExpectedEvent and change the State sl@0: iEventChecker->SetExpectedEvent(1,EMarncResourceAvailable1,KErrNone); sl@0: iEventChecker->SetExpectedState(EStateNotifiedPlayer1); sl@0: return EPass; sl@0: } sl@0: sl@0: TVerdict CTestMmfAclntARN8108::HandleStateNotifiedPlayer1() sl@0: { sl@0: iCallBackTimer->Cancel(); // in case something else stopped the AS sl@0: INFO_PRINTF1(_L("iTestAudioPlayer1->NotificationReceived")); sl@0: TInt retErr = iTestAudioPlayer1->WillResumePlay(); sl@0: INFO_PRINTF1(_L("iTestAudioPlayer1->WillResumePlay()")); sl@0: if( retErr != KErrNone ) sl@0: { sl@0: ERR_PRINTF2(_L("iTestAudioPlayer1->WillResumePlay() - Failed with Error : %d"), retErr); sl@0: iTestStepResult = EFail; sl@0: CActiveScheduler::Stop(); sl@0: return EFail; sl@0: } sl@0: iTestAudioPlayer1->SetPosition(iPosition); sl@0: // Play iTestAudioPlayer#1 sl@0: iTestAudioPlayer1->Play(); sl@0: INFO_PRINTF1(_L("iTestAudioPlayer1->Play()")); sl@0: // Set ExpectedEvent and change the State sl@0: iEventChecker->RegisterClientEventToMonitor(1,EMapcPlayComplete1,KErrNone,EStateNotifiedPlayer3); sl@0: iEventChecker->RegisterClientEventToMonitor(3,EMarncResourceAvailable3,KErrNone,EStatePlaying1); sl@0: iEventChecker->EnableMultipleEventMonitor(); sl@0: return EPass; sl@0: } sl@0: sl@0: TVerdict CTestMmfAclntARN8108::HandleStateNotifiedPlayer3() sl@0: { sl@0: INFO_PRINTF1(_L("iTestAudioPlayer3->NotificationReceived")); sl@0: if(iEventChecker->IsMonitoringFinished()) sl@0: { sl@0: iTestStepResult = EPass; sl@0: iCallBackTimer->Cancel(); sl@0: iEventChecker->StopTest(); sl@0: } sl@0: else sl@0: { sl@0: iEventChecker->EnableMultipleEventMonitor(); sl@0: } sl@0: return EPass; sl@0: } sl@0: sl@0: TVerdict CTestMmfAclntARN8108::HandleStatePlaying1() sl@0: { sl@0: INFO_PRINTF1(_L("iTestAudioPlayer1->AudioPlayerComplete")); sl@0: iCallBackTimer->After(2000000); sl@0: if(iEventChecker->IsMonitoringFinished()) sl@0: { sl@0: iTestStepResult = EPass; sl@0: iCallBackTimer->Cancel(); sl@0: iEventChecker->StopTest(); sl@0: } sl@0: else sl@0: { sl@0: iEventChecker->EnableMultipleEventMonitor(); sl@0: } sl@0: return EPass; sl@0: } sl@0: sl@0: TVerdict CTestMmfAclntARN8108::PerformTestL() sl@0: { sl@0: INFO_PRINTF1(_L("Call WillResumePlay().")); sl@0: iTestStepResult = EFail; sl@0: sl@0: // Initialise the handler functions sl@0: InitTest(); sl@0: sl@0: // Initiate the process sl@0: StartTestL(); sl@0: sl@0: // Start the scheduler - Done only once ! sl@0: CActiveScheduler::Start(); sl@0: sl@0: return iTestStepResult; sl@0: } sl@0: sl@0: sl@0: // sl@0: //CTestMmfAclntARN8109 sl@0: // sl@0: sl@0: /** sl@0: * NewL sl@0: */ sl@0: CTestMmfAclntARN8109* CTestMmfAclntARN8109::NewL(const TDesC& aTestName, const TDesC& aSectName) sl@0: { sl@0: CTestMmfAclntARN8109* self = new (ELeave) CTestMmfAclntARN8109(aTestName, aSectName); sl@0: return self; sl@0: } sl@0: sl@0: /** sl@0: * Constructor sl@0: */ sl@0: CTestMmfAclntARN8109::CTestMmfAclntARN8109(const TDesC& aTestName, const TDesC& aSectName) sl@0: : CTestMmfAclntAudioPlayerARN(aTestName, aSectName), iPlayComplete2(EFalse), iResourceAvailable1(EFalse) sl@0: {} sl@0: sl@0: sl@0: /** sl@0: * DoTestL sl@0: */ sl@0: TVerdict CTestMmfAclntARN8109::DoTestL() sl@0: { sl@0: return( PerformTestL() ); sl@0: } sl@0: /** sl@0: * MapcPlayCompleteTest sl@0: */ sl@0: void CTestMmfAclntARN8109::MapcPlayCompleteTest(TInt aError, CTestMdaAudioPlayerCallbackSupport& aMdaAudioPlayerCallbackSupport) sl@0: { sl@0: if (&aMdaAudioPlayerCallbackSupport == iMdaAudioPlayerCallbackSupport1) sl@0: { sl@0: INFO_PRINTF2(_L("iAudioPlayer1 -> MMdaAudioPlayerCallback PlayComplete (%d)"), aError); sl@0: TRAP(iError, FsmL(EMapcPlayComplete1, aError)); sl@0: } sl@0: else if (&aMdaAudioPlayerCallbackSupport == iMdaAudioPlayerCallbackSupport2) sl@0: { sl@0: INFO_PRINTF2(_L("iAudioPlayer2 -> MMdaAudioPlayerCallback PlayComplete (%d)"), aError); sl@0: iPlayComplete2= ETrue; sl@0: TRAP(iError, FsmL(EMapcPlayComplete2, aError)); sl@0: } sl@0: else if (&aMdaAudioPlayerCallbackSupport == iMdaAudioPlayerCallbackSupport3) sl@0: { sl@0: INFO_PRINTF2(_L("iAudioPlayer3 -> MMdaAudioPlayerCallback PlayComplete (%d)"), aError); sl@0: TRAP(iError, FsmL(EMapcPlayComplete3, aError)); sl@0: } sl@0: } sl@0: sl@0: sl@0: /** sl@0: * MarncResourceAvailableTest sl@0: */ sl@0: void CTestMmfAclntARN8109::MarncResourceAvailableTest(TUid aNotificationEventId, const TDesC8& aNotificationData, CTestMdaAudioPlayerCallbackSupport& aMdaAudioPlayerCallbackSupport) sl@0: { sl@0: if (aNotificationEventId == KMMFEventCategoryAudioResourceAvailable) sl@0: { sl@0: INFO_PRINTF1(_L("iAudioPlayer::MMMFAudioResourceNotificationCallback -> KMMFEventCategoryAudioResourceAvailable")); sl@0: sl@0: //Convert TDesc8 to TInt64 sl@0: TMMFTimeIntervalMicroSecondsPckg timeIntvbuf; sl@0: timeIntvbuf.Copy(aNotificationData); sl@0: TTimeIntervalMicroSeconds intPos = timeIntvbuf(); sl@0: iPosition = intPos; sl@0: if (&aMdaAudioPlayerCallbackSupport == iMdaAudioPlayerCallbackSupport1) sl@0: { sl@0: INFO_PRINTF1(_L("iAudioPlayer1 -> MMMFAudioResourceNotificationCallback : AudioResourceAvailable..waiting for playcomplete")); sl@0: iResourceAvailable1 = ETrue; sl@0: TRAP(iError, FsmL(EMarncResourceAvailable1, KErrNone)); sl@0: } sl@0: else if (&aMdaAudioPlayerCallbackSupport == iMdaAudioPlayerCallbackSupport2) sl@0: { sl@0: INFO_PRINTF1(_L("iAudioPlayer2 -> MMMFAudioResourceNotificationCallback : AudioResourceAvailable")); sl@0: TRAP(iError, FsmL(EMarncResourceAvailable2, KErrNone)); sl@0: } sl@0: else if (&aMdaAudioPlayerCallbackSupport == iMdaAudioPlayerCallbackSupport3) sl@0: { sl@0: INFO_PRINTF1(_L("iAudioPlayer3 -> MMMFAudioResourceNotificationCallback : AudioResourceAvailable")); sl@0: TRAP(iError, FsmL(EMarncResourceAvailable3, KErrNone)); sl@0: } sl@0: } sl@0: else sl@0: { sl@0: INFO_PRINTF1(_L("MMMFAudioResourceNotificationCallback, but NOT KMMFEventCategoryAudioResourceAvailable")); sl@0: } sl@0: } sl@0: sl@0: /** sl@0: * FsmCheck sl@0: */ sl@0: TBool CTestMmfAclntARN8109::FsmCheck(TMmfAudioPlayerEvents aEventCode, TInt aError) sl@0: { sl@0: TBool retFsmCheck = EFalse; sl@0: if (((aEventCode == EMapcPlayComplete1) || (aEventCode == EMapcPlayComplete2)) && (aError == KErrUnderflow)) sl@0: { sl@0: INFO_PRINTF1(_L("Underflow !")); sl@0: } sl@0: else if (iExpectedEvent != aEventCode) sl@0: { sl@0: if(aEventCode == EMarncResourceAvailable1) sl@0: { sl@0: retFsmCheck = EFalse; sl@0: } sl@0: else sl@0: { sl@0: ERR_PRINTF3(_L("ExpectedEvent : %d, ActualEvent : %d"), iExpectedEvent, aEventCode); sl@0: iTestStepResult = EFail; sl@0: CActiveScheduler::Stop(); sl@0: } sl@0: } sl@0: else if (iExpectedError != aError) sl@0: { sl@0: ERR_PRINTF3(_L("ExpectedError : %d, ActualError : %d"), iExpectedError, aError); sl@0: iTestStepResult = EFail; sl@0: CActiveScheduler::Stop(); sl@0: } sl@0: else sl@0: { sl@0: retFsmCheck = ETrue; sl@0: } sl@0: return retFsmCheck; sl@0: } sl@0: /** sl@0: * FsmL sl@0: */ sl@0: void CTestMmfAclntARN8109::FsmL(TMmfAudioPlayerEvents aEventCode, TInt aError) sl@0: { sl@0: if (FsmCheck(aEventCode, aError)) sl@0: { sl@0: TTimeIntervalMicroSeconds silence(0); // 3 sec of silence sl@0: TInt retErr = KErrNone; sl@0: switch (iState) sl@0: { sl@0: sl@0: case EStateBegin: sl@0: // Open iTestAudioPlayer#1 sl@0: iTestAudioPlayer1->OpenFileL(iFilename1); sl@0: INFO_PRINTF1(_L("iTestAudioPlayer1->OpenFileL()")); sl@0: // Set ExpectedEvent and change the State sl@0: StateChange(EStatePlaying1, EMapcInitComplete1); sl@0: break; sl@0: case EStatePlaying1: sl@0: // Play iTestAudioPlayer#1 sl@0: iTestAudioPlayer1->Play(); sl@0: INFO_PRINTF1(_L("iTestAudioPlayer1->Play()")); sl@0: // Register iTestAudioPlayer#1 for Notification sl@0: retErr = iTestAudioPlayer1->RegisterAudioResourceNotification(*iMdaAudioPlayerCallbackSupport1, KMMFEventCategoryAudioResourceAvailable); sl@0: INFO_PRINTF1(_L("iTestAudioPlayer1->RegisterAudioResourceNotification()")); sl@0: if( retErr != KErrNone ) sl@0: { sl@0: ERR_PRINTF2(_L("iTestAudioPlayer1->RegisterAudioResourceNotification - Failed with Error : %d"), retErr); sl@0: iTestStepResult = EFail; sl@0: CActiveScheduler::Stop(); sl@0: break; sl@0: } sl@0: // Open iTestAudioPlayer#2 sl@0: iTestAudioPlayer2->OpenFileL(iFilename2); sl@0: INFO_PRINTF1(_L("iTestAudioPlayer2->OpenFileL()")); sl@0: // Set ExpectedEvent and change the State sl@0: StateChange(EStatePlaying2, EMapcInitComplete2); sl@0: break; sl@0: case EStatePlaying2: sl@0: // Play iTestAudioPlayer#2 sl@0: iDuration = I64INT(iTestAudioPlayer2->Duration().Int64()); sl@0: INFO_PRINTF1( _L("SetRepeats CMdaAudioPlayerUtility")); sl@0: INFO_PRINTF2( _L("Repeats = %d\n"),NUMBER_OF_REPEATS); sl@0: iTestAudioPlayer2->SetRepeats(NUMBER_OF_REPEATS,silence); sl@0: INFO_PRINTF1(_L("iTestAudioPlayer2->Play()")); sl@0: sl@0: iTestAudioPlayer2->Play(); sl@0: iStart.HomeTime(); sl@0: INFO_PRINTF1(_L("iTestAudioPlayer2->Play()")); sl@0: // Set ExpectedEvent and change the State sl@0: StateChange(EStateErrInUsePlayer1, EMapcPlayComplete1, KErrInUse); sl@0: break; sl@0: case EStateErrInUsePlayer1: sl@0: // Set ExpectedEvent and change the State sl@0: StateChange(EStateEndPlay2, EMapcPlayComplete2); sl@0: break; sl@0: case EStateEndPlay2: sl@0: iStop.HomeTime(); sl@0: iActualDuration = I64INT(iStop.MicroSecondsFrom(iStart).Int64()); sl@0: INFO_PRINTF2( _L("Clip Duration = %d "),iDuration); sl@0: INFO_PRINTF2( _L("Actual Duration = %u "),iActualDuration); sl@0: INFO_PRINTF2( _L("Expected Duration = %d "),iDuration *(NUMBER_OF_REPEATS)); sl@0: if(iPlayComplete2 && iResourceAvailable1) sl@0: { sl@0: #ifdef SYMBIAN_MULTIMEDIA_A3FDEVSOUND sl@0: if(TimeComparison(iActualDuration, iDuration * (NUMBER_OF_REPEATS + 1), sl@0: KExpectedDeviation)) sl@0: { sl@0: iCallBackTimer->Cancel(); // in case something else stopped the AS sl@0: INFO_PRINTF1(_L("iTestAudioPlayer1->NotificationReceived")); sl@0: iTestStepResult = EPass; sl@0: CActiveScheduler::Stop(); sl@0: } sl@0: else sl@0: { sl@0: iTestStepResult = EFail; sl@0: CActiveScheduler::Stop(); sl@0: } sl@0: #else sl@0: if(TimeComparison(iActualDuration, iDuration * (NUMBER_OF_REPEATS + 1), sl@0: KExpectedDeviation*NUMBER_OF_REPEATS)) sl@0: { sl@0: iCallBackTimer->Cancel(); // in case something else stopped the AS sl@0: INFO_PRINTF1(_L("iTestAudioPlayer1->NotificationReceived")); sl@0: iTestStepResult = EPass; sl@0: CActiveScheduler::Stop(); sl@0: // Timer to check if Notification Event Occurs. sl@0: } sl@0: else sl@0: { sl@0: iTestStepResult = EFail; sl@0: CActiveScheduler::Stop(); sl@0: } sl@0: #endif sl@0: } sl@0: else if(iPlayComplete2 && ! iResourceAvailable1) sl@0: { sl@0: #ifdef SYMBIAN_MULTIMEDIA_A3FDEVSOUND sl@0: if(TimeComparison(iActualDuration, iDuration * (NUMBER_OF_REPEATS + 1), sl@0: KExpectedDeviation)) sl@0: { sl@0: // Timer to check if Notification Event Occurs. sl@0: iCallBackTimer->After(2000000); sl@0: // Set ExpectedEvent and change the State sl@0: StateChange(EStateNotifiedPlayer1, EMarncResourceAvailable1); sl@0: } sl@0: else sl@0: { sl@0: iTestStepResult = EFail; sl@0: CActiveScheduler::Stop(); sl@0: } sl@0: #else sl@0: if(TimeComparison(iActualDuration, iDuration * (NUMBER_OF_REPEATS + 1), sl@0: KExpectedDeviation*NUMBER_OF_REPEATS)) sl@0: { sl@0: // Timer to check if Notification Event Occurs. sl@0: iCallBackTimer->After(2000000); sl@0: // Set ExpectedEvent and change the State sl@0: StateChange(EStateNotifiedPlayer1, EMarncResourceAvailable1); sl@0: // Timer to check if Notification Event Occurs. sl@0: } sl@0: else sl@0: { sl@0: iTestStepResult = EFail; sl@0: CActiveScheduler::Stop(); sl@0: } sl@0: #endif sl@0: } sl@0: break; sl@0: case EStateNotifiedPlayer1: sl@0: iCallBackTimer->Cancel(); // in case something else stopped the AS sl@0: INFO_PRINTF1(_L("iTestAudioPlayer1->NotificationReceived")); sl@0: iTestStepResult = EPass; sl@0: CActiveScheduler::Stop(); sl@0: break; sl@0: } sl@0: } sl@0: } sl@0: TBool CTestMmfAclntARN8109::TimeComparison(const TUint aActual, const TUint aExpected, const TUint aDeviation) sl@0: { sl@0: // save unnessary conditions sl@0: if(aActual == aExpected) sl@0: return ETrue; sl@0: sl@0: // Prevent unsigned wrapping errors sl@0: TUint difference; sl@0: if(aActual > aExpected) sl@0: difference = aActual - aExpected; sl@0: else sl@0: difference = aExpected - aActual; sl@0: sl@0: // comapare sl@0: if(difference < aDeviation) sl@0: return ETrue; sl@0: return EFalse; sl@0: } sl@0: /** sl@0: * PerformTestL sl@0: */ sl@0: TVerdict CTestMmfAclntARN8109::PerformTestL() sl@0: { sl@0: INFO_PRINTF1(_L("High priority client plays with repeats and low priority client doesn't get resources.")); sl@0: iTestStepResult = EFail; sl@0: sl@0: // Initialise the state variables sl@0: StateInit(); sl@0: sl@0: // Begin the process sl@0: FsmL(EIdlePlayer, KErrNone); sl@0: sl@0: // Start the scheduler - Done only once ! sl@0: CActiveScheduler::Start(); sl@0: sl@0: return iTestStepResult; sl@0: } sl@0: sl@0: sl@0: // sl@0: //CTestMmfAclntARN8110 //test to cover CR id: sl@0: // sl@0: sl@0: /** sl@0: * Constructor sl@0: */ sl@0: CTestMmfAclntARN8110::CTestMmfAclntARN8110(const TDesC& aTestName, const TDesC& aSectName) sl@0: : CTestMmfAclntAudioPlayerARN(aTestName, aSectName) sl@0: {} sl@0: sl@0: /** sl@0: * NewL sl@0: */ sl@0: CTestMmfAclntARN8110* CTestMmfAclntARN8110::NewL(const TDesC& aTestName, const TDesC& aSectName) sl@0: { sl@0: CTestMmfAclntARN8110* self = new (ELeave) CTestMmfAclntARN8110(aTestName, aSectName); sl@0: return self; sl@0: } sl@0: sl@0: /** sl@0: * DoTestL sl@0: */ sl@0: TVerdict CTestMmfAclntARN8110::DoTestL() sl@0: { sl@0: return( PerformTestL() ); sl@0: } sl@0: sl@0: /** sl@0: * FsmL sl@0: */ sl@0: void CTestMmfAclntARN8110::FsmL(TMmfAudioPlayerEvents aEventCode, TInt aError) sl@0: { sl@0: if (FsmCheck(aEventCode, aError)) sl@0: { sl@0: TTimeIntervalMicroSeconds32 wait2secs(2000000); sl@0: TTimeIntervalMicroSeconds oneNhalf(MAKE_TINT64(0,1500000)); sl@0: TInt retErr = KErrNone; sl@0: switch (iState) sl@0: { sl@0: case EStateBegin: sl@0: // Open iTestAudioPlayer#1 // next event to play iTestAudioPlayer#1 sl@0: iTestAudioPlayer1->OpenFileL(iFilename1); sl@0: INFO_PRINTF1(_L("iTestAudioPlayer1->OpenFileL()")); sl@0: // Set ExpectedEvent and change the State sl@0: StateChange(EStatePlaying1, EMapcInitComplete1); sl@0: break; sl@0: case EStatePlaying1: sl@0: // Play iTestAudioPlayer#1 sl@0: iTestAudioPlayer1->Play(); sl@0: INFO_PRINTF1(_L("iTestAudioPlayer1->Play()")); sl@0: // Open iTestAudioPlayer#2 sl@0: iTestAudioPlayer2->OpenFileL(iFilename2); sl@0: INFO_PRINTF1(_L("iTestAudioPlayer2->OpenFileL()")); sl@0: // Set ExpectedEvent and change the State sl@0: StateChange(EStatePlaying2, EMapcInitComplete2); sl@0: break; sl@0: case EStatePlaying2: sl@0: // Play iTestAudioPlayer#2 sl@0: User::After(wait2secs); sl@0: iTestAudioPlayer2->Play(); sl@0: INFO_PRINTF1(_L("iTestAudioPlayer2->Play()")); sl@0: // Set ExpectedEvent and change the State sl@0: StateChange(EStateErrInUsePlayer1, EMapcPlayComplete1, KErrInUse); sl@0: break; sl@0: case EStateErrInUsePlayer1: sl@0: retErr = iTestAudioPlayer1->GetPosition(iPlayer1Pos); sl@0: if(retErr != KErrNone) sl@0: { sl@0: ERR_PRINTF2(_L("iTestAudioPlayer1->Position() - Failed with Error : %d"), retErr); sl@0: iTestStepResult = EFail; sl@0: CActiveScheduler::Stop(); sl@0: break; sl@0: } sl@0: INFO_PRINTF1(_L("iTestAudioPlayer1->Position()")); sl@0: //using 1.5 sec for comparison as sometimes playback is slow. sl@0: if(iPlayer1Pos < oneNhalf) sl@0: { sl@0: iTestStepResult = EFail; sl@0: CActiveScheduler::Stop(); sl@0: break; sl@0: } sl@0: // Set ExpectedEvent and change the State sl@0: StateChange(EStateEndPlay2, EMapcPlayComplete2 ); sl@0: break; sl@0: case EStateEndPlay2: sl@0: iTestStepResult = EPass; sl@0: // Play iTestAudioPlayer#1 again sl@0: TTimeIntervalMicroSeconds pos; sl@0: INFO_PRINTF1(_L("iTestAudioPlayer1->Position()")); sl@0: retErr = iTestAudioPlayer1->GetPosition(pos); sl@0: if(retErr != KErrNone) sl@0: { sl@0: ERR_PRINTF2(_L("iTestAudioPlayer1->Position() - Failed with Error : %d"), retErr); sl@0: iTestStepResult = EFail; sl@0: CActiveScheduler::Stop(); sl@0: break; sl@0: } sl@0: if(pos == 0 || pos != iPlayer1Pos ) sl@0: { sl@0: iTestStepResult = EFail; sl@0: CActiveScheduler::Stop(); sl@0: break; sl@0: } sl@0: iTestAudioPlayer1->Play(); sl@0: INFO_PRINTF1(_L("iTestAudioPlayer1->Play()")); sl@0: retErr = iTestAudioPlayer1->GetPosition(pos); sl@0: if(retErr != KErrNone) sl@0: { sl@0: ERR_PRINTF2(_L("iTestAudioPlayer1->Position() - Failed with Error : %d"), retErr); sl@0: iTestStepResult = EFail; sl@0: CActiveScheduler::Stop(); sl@0: break; sl@0: } sl@0: INFO_PRINTF1(_L("iTestAudioPlayer1->Position()")); sl@0: if(pos < iPlayer1Pos) sl@0: { sl@0: iTestStepResult = EFail; sl@0: CActiveScheduler::Stop(); sl@0: break; sl@0: } sl@0: iTestAudioPlayer1->Stop(); sl@0: INFO_PRINTF1(_L("iTestAudioPlayer1->Stop()")); sl@0: iTestStepResult = EPass; sl@0: CActiveScheduler::Stop(); sl@0: // Set ExpectedEvent and change the State sl@0: break; sl@0: } sl@0: } sl@0: } sl@0: sl@0: /** sl@0: * PerformTestL sl@0: */ sl@0: TVerdict CTestMmfAclntARN8110::PerformTestL() sl@0: { sl@0: INFO_PRINTF1(_L("Register for notification, but make no request to play audio")); sl@0: iTestStepResult = EFail; sl@0: sl@0: // Initialise the state variables sl@0: StateInit(); sl@0: sl@0: // Begin the process sl@0: FsmL(EIdlePlayer, KErrNone); sl@0: sl@0: // Start the scheduler - Done only once ! sl@0: CActiveScheduler::Start(); sl@0: sl@0: return iTestStepResult; sl@0: } sl@0: sl@0: sl@0: // sl@0: //CTestMmfAclntARN8111 //test to cover CR id: sl@0: // sl@0: sl@0: /** sl@0: * Constructor sl@0: */ sl@0: CTestMmfAclntARN8111::CTestMmfAclntARN8111(const TDesC& aTestName, const TDesC& aSectName) sl@0: : CTestMmfAclntAudioPlayerARN(aTestName, aSectName) sl@0: {} sl@0: sl@0: /** sl@0: * NewL sl@0: */ sl@0: CTestMmfAclntARN8111* CTestMmfAclntARN8111::NewL(const TDesC& aTestName, const TDesC& aSectName) sl@0: { sl@0: CTestMmfAclntARN8111* self = new (ELeave) CTestMmfAclntARN8111(aTestName, aSectName); sl@0: return self; sl@0: } sl@0: sl@0: /** sl@0: * DoTestL sl@0: */ sl@0: TVerdict CTestMmfAclntARN8111::DoTestL() sl@0: { sl@0: return( PerformTestL() ); sl@0: } sl@0: sl@0: /** sl@0: * FsmL sl@0: */ sl@0: void CTestMmfAclntARN8111::FsmL(TMmfAudioPlayerEvents aEventCode, TInt aError) sl@0: { sl@0: if (FsmCheck(aEventCode, aError)) sl@0: { sl@0: TTimeIntervalMicroSeconds32 wait2secs(2000000); sl@0: TTimeIntervalMicroSeconds oneNhalf(MAKE_TINT64(0,1500000)); sl@0: TTimeIntervalMicroSeconds zeroSecs(MAKE_TINT64(0,0)); sl@0: TInt retErr = KErrNone; sl@0: switch (iState) sl@0: { sl@0: case EStateBegin: sl@0: // Open iTestAudioPlayer#1 // next event to play iTestAudioPlayer#1 sl@0: iTestAudioPlayer1->OpenFileL(iFilename1); sl@0: INFO_PRINTF1(_L("iTestAudioPlayer1->OpenFileL()")); sl@0: // Set ExpectedEvent and change the State sl@0: StateChange(EStatePlaying1, EMapcInitComplete1); sl@0: break; sl@0: case EStatePlaying1: sl@0: // Play iTestAudioPlayer#1 sl@0: iTestAudioPlayer1->Play(); sl@0: INFO_PRINTF1(_L("iTestAudioPlayer1->Play()")); sl@0: // Open iTestAudioPlayer#2 sl@0: iTestAudioPlayer2->OpenFileL(iFilename2); sl@0: INFO_PRINTF1(_L("iTestAudioPlayer2->OpenFileL()")); sl@0: // Set ExpectedEvent and change the State sl@0: StateChange(EStatePlaying2, EMapcInitComplete2); sl@0: break; sl@0: case EStatePlaying2: sl@0: // Play iTestAudioPlayer#2 sl@0: User::After(wait2secs); sl@0: iTestAudioPlayer2->Play(); sl@0: INFO_PRINTF1(_L("iTestAudioPlayer2->Play()")); sl@0: // Set ExpectedEvent and change the State sl@0: StateChange(EStateErrInUsePlayer1, EMapcPlayComplete1, KErrInUse); sl@0: break; sl@0: case EStateErrInUsePlayer1: sl@0: retErr = iTestAudioPlayer1->GetPosition(iPlayer1Pos); sl@0: if(retErr != KErrNone) sl@0: { sl@0: ERR_PRINTF2(_L("iTestAudioPlayer1->Position() - Failed with Error : %d"), retErr); sl@0: iTestStepResult = EFail; sl@0: CActiveScheduler::Stop(); sl@0: break; sl@0: } sl@0: INFO_PRINTF1(_L("iTestAudioPlayer1->Position()")); sl@0: //using 1.5 sec for comparison as sometimes playback is slow. sl@0: if(iPlayer1Pos < oneNhalf) sl@0: { sl@0: iTestStepResult = EFail; sl@0: CActiveScheduler::Stop(); sl@0: break; sl@0: } sl@0: //stop the iTestAudioPlayer#1 after pre-emption and check if the position is reset. sl@0: iTestAudioPlayer1->Stop(); sl@0: INFO_PRINTF1(_L("iTestAudioPlayer1->Stop()")); sl@0: retErr = iTestAudioPlayer1->GetPosition(iPlayer1Pos); sl@0: if(retErr != KErrNone) sl@0: { sl@0: ERR_PRINTF2(_L("iTestAudioPlayer1->Position() - Failed with Error : %d"), retErr); sl@0: iTestStepResult = EFail; sl@0: CActiveScheduler::Stop(); sl@0: break; sl@0: } sl@0: INFO_PRINTF1(_L("iTestAudioPlayer1->Position()")); sl@0: if(iPlayer1Pos != zeroSecs) sl@0: { sl@0: iTestStepResult = EFail; sl@0: CActiveScheduler::Stop(); sl@0: break; sl@0: } sl@0: // Set ExpectedEvent and change the State sl@0: StateChange(EStateEndPlay2, EMapcPlayComplete2 ); sl@0: break; sl@0: case EStateEndPlay2: sl@0: iTestStepResult = EPass; sl@0: // Play iTestAudioPlayer#1 again sl@0: iTestAudioPlayer1->Play(); sl@0: INFO_PRINTF1(_L("iTestAudioPlayer1->Play()")); sl@0: User::After(wait2secs); sl@0: iTestAudioPlayer1->Stop(); sl@0: INFO_PRINTF1(_L("iTestAudioPlayer1->Stop()")); sl@0: CActiveScheduler::Stop(); sl@0: // Set ExpectedEvent and change the State sl@0: break; sl@0: } sl@0: } sl@0: } sl@0: sl@0: /** sl@0: * PerformTestL sl@0: */ sl@0: TVerdict CTestMmfAclntARN8111::PerformTestL() sl@0: { sl@0: INFO_PRINTF1(_L("Register for notification, but make no request to play audio")); sl@0: iTestStepResult = EFail; sl@0: sl@0: // Initialise the state variables sl@0: StateInit(); sl@0: sl@0: // Begin the process sl@0: FsmL(EIdlePlayer, KErrNone); sl@0: sl@0: // Start the scheduler - Done only once ! sl@0: CActiveScheduler::Start(); sl@0: sl@0: return iTestStepResult; sl@0: } sl@0: sl@0: // sl@0: //CTestMmfAclntARN8112 //test to cover CR id: sl@0: // sl@0: sl@0: /** sl@0: * Constructor sl@0: */ sl@0: CTestMmfAclntARN8112::CTestMmfAclntARN8112(const TDesC& aTestName, const TDesC& aSectName) sl@0: : CTestMmfAclntAudioPlayerARN(aTestName, aSectName) sl@0: {} sl@0: sl@0: /** sl@0: * NewL sl@0: */ sl@0: CTestMmfAclntARN8112* CTestMmfAclntARN8112::NewL(const TDesC& aTestName, const TDesC& aSectName) sl@0: { sl@0: CTestMmfAclntARN8112* self = new (ELeave) CTestMmfAclntARN8112(aTestName, aSectName); sl@0: return self; sl@0: } sl@0: sl@0: /** sl@0: * DoTestL sl@0: */ sl@0: TVerdict CTestMmfAclntARN8112::DoTestL() sl@0: { sl@0: return( PerformTestL() ); sl@0: } sl@0: sl@0: /** sl@0: * FsmL sl@0: */ sl@0: void CTestMmfAclntARN8112::FsmL(TMmfAudioPlayerEvents aEventCode, TInt aError) sl@0: { sl@0: if (FsmCheck(aEventCode, aError)) sl@0: { sl@0: TTimeIntervalMicroSeconds32 wait1secs(1000000); sl@0: TTimeIntervalMicroSeconds zeroSecs(MAKE_TINT64(0,0)); sl@0: TInt retErr = KErrNone; sl@0: switch (iState) sl@0: { sl@0: case EStateBegin: sl@0: // Open iTestAudioPlayer#2 // next event to play iTestAudioPlayer#2 sl@0: iTestAudioPlayer2->OpenFileL(iFilename2); sl@0: INFO_PRINTF1(_L("iTestAudioPlayer2->OpenFileL()")); sl@0: // Set ExpectedEvent and change the State sl@0: StateChange(EStatePlaying2, EMapcInitComplete2); sl@0: break; sl@0: case EStatePlaying2: sl@0: // Play iTestAudioPlayer#1 sl@0: iTestAudioPlayer2->Play(); sl@0: INFO_PRINTF1(_L("iTestAudioPlayer2->Play()")); sl@0: // Open iTestAudioPlayer#1 sl@0: iTestAudioPlayer1->OpenFileL(iFilename1); sl@0: INFO_PRINTF1(_L("iTestAudioPlayer1->OpenFileL()")); sl@0: // Set ExpectedEvent and change the State sl@0: StateChange(EStatePlaying1, EMapcInitComplete1); sl@0: break; sl@0: case EStatePlaying1: sl@0: // Play iTestAudioPlayer#1 sl@0: User::After(wait1secs); sl@0: iTestAudioPlayer1->Play(); sl@0: INFO_PRINTF1(_L("iTestAudioPlayer1->Play()")); sl@0: // Set ExpectedEvent and change the State sl@0: StateChange(EStateErrInUsePlayer1, EMapcPlayComplete1, KErrInUse); sl@0: break; sl@0: case EStateErrInUsePlayer1: sl@0: retErr = iTestAudioPlayer1->GetPosition(iPlayer1Pos); sl@0: if(retErr != KErrNone) sl@0: { sl@0: ERR_PRINTF2(_L("iTestAudioPlayer1->Position() - Failed with Error : %d"), retErr); sl@0: iTestStepResult = EFail; sl@0: CActiveScheduler::Stop(); sl@0: break; sl@0: } sl@0: INFO_PRINTF1(_L("iTestAudioPlayer1->Position()")); sl@0: if(iPlayer1Pos != zeroSecs) sl@0: { sl@0: iTestStepResult = EFail; sl@0: CActiveScheduler::Stop(); sl@0: break; sl@0: } sl@0: //stop the iTestAudioPlayer#1 after pre-emption and check if the position is reset. sl@0: iTestAudioPlayer2->Stop(); sl@0: INFO_PRINTF1(_L("iTestAudioPlayer2->Stop()")); sl@0: iTestAudioPlayer1->Play(); sl@0: INFO_PRINTF1(_L("iTestAudioPlayer1->Play()")); sl@0: sl@0: // Set ExpectedEvent and change the State sl@0: StateChange(EStateEndPlay1, EMapcPlayComplete1 ); sl@0: break; sl@0: case EStateEndPlay1: sl@0: iTestStepResult = EPass; sl@0: // Play iTestAudioPlayer#1 again sl@0: CActiveScheduler::Stop(); sl@0: // Set ExpectedEvent and change the State sl@0: break; sl@0: } sl@0: } sl@0: } sl@0: sl@0: /** sl@0: * PerformTestL sl@0: */ sl@0: TVerdict CTestMmfAclntARN8112::PerformTestL() sl@0: { sl@0: INFO_PRINTF1(_L("Register for notification, but make no request to play audio")); sl@0: iTestStepResult = EFail; sl@0: sl@0: // Initialise the state variables sl@0: StateInit(); sl@0: sl@0: // Begin the process sl@0: FsmL(EIdlePlayer, KErrNone); sl@0: sl@0: // Start the scheduler - Done only once ! sl@0: CActiveScheduler::Start(); sl@0: sl@0: return iTestStepResult; sl@0: } sl@0: sl@0: // sl@0: //NEGATIVE TESTS// sl@0: // sl@0: sl@0: // sl@0: //CTestMmfAclntARN1301 sl@0: // sl@0: sl@0: /** sl@0: * Constructor sl@0: */ sl@0: CTestMmfAclntARN1301::CTestMmfAclntARN1301(const TDesC& aTestName, const TDesC& aSectName) sl@0: : CTestMmfAclntAudioPlayerARN(aTestName, aSectName) sl@0: {} sl@0: sl@0: /** sl@0: * NewL sl@0: */ sl@0: CTestMmfAclntARN1301* CTestMmfAclntARN1301::NewL(const TDesC& aTestName, const TDesC& aSectName) sl@0: { sl@0: CTestMmfAclntARN1301* self = new (ELeave) CTestMmfAclntARN1301(aTestName, aSectName); sl@0: return self; sl@0: } sl@0: sl@0: /** sl@0: * DoTestL sl@0: */ sl@0: TVerdict CTestMmfAclntARN1301::DoTestL() sl@0: { sl@0: return( PerformTestL() ); sl@0: } sl@0: sl@0: /** sl@0: * FsmL sl@0: */ sl@0: void CTestMmfAclntARN1301::FsmL(TMmfAudioPlayerEvents aEventCode, TInt aError) sl@0: { sl@0: if (FsmCheck(aEventCode, aError)) sl@0: { sl@0: TInt retErr = KErrNone; sl@0: switch (iState) sl@0: { sl@0: case EStateBegin: sl@0: // Open iTestAudioPlayer#1 sl@0: iTestAudioPlayer1->OpenFileL(iFilename1); sl@0: INFO_PRINTF1(_L("iTestAudioPlayer1->OpenFileL()")); sl@0: // Set ExpectedEvent and change the State sl@0: StateChange(EStateOpenPlayer1, EMapcInitComplete1); sl@0: break; sl@0: case EStateOpenPlayer1: sl@0: // Register iTestAudioPlayer#1 for Notification sl@0: retErr = iTestAudioPlayer1->RegisterAudioResourceNotification(*iMdaAudioPlayerCallbackSupport1, KMMFEventCategoryPlaybackComplete); sl@0: INFO_PRINTF1(_L("iTestAudioPlayer1->RegisterAudioResourceNotification(KMMFEventCategoryPlaybackComplete)")); sl@0: if( retErr == KErrNotSupported ) sl@0: { sl@0: INFO_PRINTF1(_L("iTestAudioPlayer1->RegisterAudioResourceNotification - Returned KErrNotSupported ") ); sl@0: iTestStepResult = EPass; sl@0: } sl@0: else sl@0: { sl@0: ERR_PRINTF2(_L("iTestAudioPlayer1->RegisterAudioResourceNotification - Failed with Error : %d"), retErr); sl@0: iTestStepResult = EFail; sl@0: } sl@0: CActiveScheduler::Stop(); sl@0: break; sl@0: } sl@0: } sl@0: } sl@0: sl@0: /** sl@0: * PerformTestL sl@0: */ sl@0: TVerdict CTestMmfAclntARN1301::PerformTestL() sl@0: { sl@0: INFO_PRINTF1(_L("Register for notification with an unsupported event type.")); sl@0: iTestStepResult = EFail; sl@0: sl@0: // Initialise the state variables sl@0: StateInit(); sl@0: sl@0: // Begin the process sl@0: FsmL(EIdlePlayer, KErrNone); sl@0: sl@0: // Start the scheduler - Done only once ! sl@0: CActiveScheduler::Start(); sl@0: sl@0: return iTestStepResult; sl@0: } sl@0: sl@0: // sl@0: //CTestMmfAclntARN1302 sl@0: // sl@0: sl@0: /** sl@0: * Constructor sl@0: */ sl@0: CTestMmfAclntARN1302::CTestMmfAclntARN1302(const TDesC& aTestName, const TDesC& aSectName) sl@0: : CTestMmfAclntAudioPlayerARN(aTestName, aSectName) sl@0: {} sl@0: sl@0: /** sl@0: * NewL sl@0: */ sl@0: CTestMmfAclntARN1302* CTestMmfAclntARN1302::NewL(const TDesC& aTestName, const TDesC& aSectName) sl@0: { sl@0: CTestMmfAclntARN1302* self = new (ELeave) CTestMmfAclntARN1302(aTestName, aSectName); sl@0: return self; sl@0: } sl@0: sl@0: /** sl@0: * DoTestL sl@0: */ sl@0: TVerdict CTestMmfAclntARN1302::DoTestL() sl@0: { sl@0: return( PerformTestL() ); sl@0: } sl@0: sl@0: /** sl@0: * FsmL sl@0: */ sl@0: void CTestMmfAclntARN1302::FsmL(TMmfAudioPlayerEvents aEventCode, TInt aError) sl@0: { sl@0: if (FsmCheck(aEventCode, aError)) sl@0: { sl@0: TInt retErr = KErrNone; sl@0: switch (iState) sl@0: { sl@0: case EStateBegin: sl@0: // Open iTestAudioPlayer#1 sl@0: iTestAudioPlayer1->OpenFileL(iFilename1); sl@0: INFO_PRINTF1(_L("iTestAudioPlayer1->OpenFileL()")); sl@0: // Set ExpectedEvent and change the State sl@0: StateChange(EStateOpenPlayer1, EMapcInitComplete1); sl@0: break; sl@0: case EStateOpenPlayer1: sl@0: // Register iTestAudioPlayer#1 for Notification sl@0: retErr = iTestAudioPlayer1->RegisterAudioResourceNotification(*iMdaAudioPlayerCallbackSupport1, KMMFEventCategoryAudioResourceAvailable); sl@0: INFO_PRINTF1(_L("iTestAudioPlayer1->RegisterAudioResourceNotification()")); sl@0: if( retErr != KErrNone ) sl@0: { sl@0: ERR_PRINTF2(_L("iTestAudioPlayer1->RegisterAudioResourceNotification - Failed with Error : %d"), retErr); sl@0: iTestStepResult = EFail; sl@0: CActiveScheduler::Stop(); sl@0: break; sl@0: } sl@0: // Cancel notification for iTestAudioPlayer#1 sl@0: retErr = iTestAudioPlayer1->CancelRegisterAudioResourceNotification(KMMFEventCategoryPlaybackComplete); sl@0: INFO_PRINTF1(_L("iTestAudioPlayer1->CancelRegisterAudioResourceNotification(KMMFEventCategoryPlaybackComplete)")); sl@0: if( retErr == KErrNotSupported ) sl@0: { sl@0: ERR_PRINTF1(_L("iTestAudioPlayer1->CancelRegisterAudioResourceNotification - Returned KErrNotSupported ") ); sl@0: iTestStepResult = EPass; sl@0: } sl@0: else sl@0: { sl@0: ERR_PRINTF2(_L("iTestAudioPlayer1->CancelRegisterAudioResourceNotification - Failed with Error : %d"), retErr); sl@0: iTestStepResult = EFail; sl@0: } sl@0: CActiveScheduler::Stop(); sl@0: break; sl@0: } sl@0: } sl@0: } sl@0: sl@0: /** sl@0: * PerformTestL sl@0: */ sl@0: TVerdict CTestMmfAclntARN1302::PerformTestL() sl@0: { sl@0: INFO_PRINTF1(_L("Cancel the request for notification with an unsupported event type.")); sl@0: iTestStepResult = EFail; sl@0: sl@0: // Initialise the state variables sl@0: StateInit(); sl@0: sl@0: // Begin the process sl@0: FsmL(EIdlePlayer, KErrNone); sl@0: sl@0: // Start the scheduler - Done only once ! sl@0: CActiveScheduler::Start(); sl@0: sl@0: return iTestStepResult; sl@0: } sl@0: sl@0: // sl@0: //CTestMmfAclntARN1303 sl@0: // sl@0: sl@0: /** sl@0: * Constructor sl@0: */ sl@0: CTestMmfAclntARN1303::CTestMmfAclntARN1303(const TDesC& aTestName, const TDesC& aSectName) sl@0: : CTestMmfAclntAudioPlayerARN(aTestName, aSectName) sl@0: {} sl@0: sl@0: /** sl@0: * NewL sl@0: */ sl@0: CTestMmfAclntARN1303* CTestMmfAclntARN1303::NewL(const TDesC& aTestName, const TDesC& aSectName) sl@0: { sl@0: CTestMmfAclntARN1303* self = new (ELeave) CTestMmfAclntARN1303(aTestName, aSectName); sl@0: return self; sl@0: } sl@0: sl@0: /** sl@0: * DoTestL sl@0: */ sl@0: TVerdict CTestMmfAclntARN1303::DoTestL() sl@0: { sl@0: return( PerformTestL() ); sl@0: } sl@0: sl@0: /** sl@0: * FsmL sl@0: */ sl@0: void CTestMmfAclntARN1303::FsmL(TMmfAudioPlayerEvents aEventCode, TInt aError) sl@0: { sl@0: if (FsmCheck(aEventCode, aError)) sl@0: { sl@0: TInt retErr = KErrNone; sl@0: switch (iState) sl@0: { sl@0: case EStateBegin: sl@0: // Open iTestAudioPlayer#1 sl@0: iTestAudioPlayer1->OpenFileL(iFilename1); sl@0: INFO_PRINTF1(_L("iTestAudioPlayer1->OpenFileL()")); sl@0: // Set ExpectedEvent and change the State sl@0: StateChange(EStateOpenPlayer1, EMapcInitComplete1); sl@0: break; sl@0: case EStateOpenPlayer1: sl@0: // Cancel notification for iTestAudioPlayer#1 sl@0: retErr = iTestAudioPlayer1->CancelRegisterAudioResourceNotification(KMMFEventCategoryAudioResourceAvailable); sl@0: INFO_PRINTF1(_L("iTestAudioPlayer1->CancelRegisterAudioResourceNotification(KMMFEventCategoryAudioResourceAvailable)")); sl@0: if( retErr == KErrCancel ) sl@0: { sl@0: ERR_PRINTF1(_L("iTestAudioPlayer1->CancelRegisterAudioResourceNotification - Returned KErrCancel ") ); sl@0: iTestStepResult = EPass; sl@0: } sl@0: else sl@0: { sl@0: ERR_PRINTF2(_L("iTestAudioPlayer1->CancelRegisterAudioResourceNotification - Failed with Error : %d"), retErr); sl@0: iTestStepResult = EFail; sl@0: } sl@0: CActiveScheduler::Stop(); sl@0: break; sl@0: } sl@0: } sl@0: } sl@0: sl@0: /** sl@0: * PerformTestL sl@0: */ sl@0: TVerdict CTestMmfAclntARN1303::PerformTestL() sl@0: { sl@0: INFO_PRINTF1(_L("Cancel when no resource Notification is requested.")); sl@0: iTestStepResult = EFail; sl@0: sl@0: // Initialise the state variables sl@0: StateInit(); sl@0: sl@0: // Begin the process sl@0: FsmL(EIdlePlayer, KErrNone); sl@0: sl@0: // Start the scheduler - Done only once ! sl@0: CActiveScheduler::Start(); sl@0: sl@0: return iTestStepResult; sl@0: } sl@0: sl@0: // sl@0: //CTestMmfAclntARN1304 sl@0: // sl@0: sl@0: /** sl@0: * Constructor sl@0: */ sl@0: CTestMmfAclntARN1304::CTestMmfAclntARN1304(const TDesC& aTestName, const TDesC& aSectName) sl@0: : CTestMmfAclntAudioPlayerARN(aTestName, aSectName) sl@0: {} sl@0: sl@0: /** sl@0: * NewL sl@0: */ sl@0: CTestMmfAclntARN1304* CTestMmfAclntARN1304::NewL(const TDesC& aTestName, const TDesC& aSectName) sl@0: { sl@0: CTestMmfAclntARN1304* self = new (ELeave) CTestMmfAclntARN1304(aTestName, aSectName); sl@0: return self; sl@0: } sl@0: sl@0: /** sl@0: * DoTestL sl@0: */ sl@0: TVerdict CTestMmfAclntARN1304::DoTestL() sl@0: { sl@0: return( PerformTestL() ); sl@0: } sl@0: sl@0: /** sl@0: * FsmL sl@0: */ sl@0: void CTestMmfAclntARN1304::FsmL(TMmfAudioPlayerEvents aEventCode, TInt aError) sl@0: { sl@0: if (FsmCheck(aEventCode, aError)) sl@0: { sl@0: TInt retErr = KErrNone; sl@0: switch (iState) sl@0: { sl@0: case EStateBegin: sl@0: // Open iTestAudioPlayer#1 sl@0: iTestAudioPlayer1->OpenFileL(iFilename1); sl@0: INFO_PRINTF1(_L("iTestAudioPlayer1->OpenFileL()")); sl@0: // Set ExpectedEvent and change the State sl@0: StateChange(EStateOpenPlayer1, EMapcInitComplete1); sl@0: break; sl@0: case EStateOpenPlayer1: sl@0: // Register iTestAudioPlayer#1 for Notification sl@0: retErr = iTestAudioPlayer1->RegisterAudioResourceNotification(*iMdaAudioPlayerCallbackSupport1, KMMFEventCategoryAudioResourceAvailable); sl@0: INFO_PRINTF1(_L("iTestAudioPlayer1->RegisterAudioResourceNotification()#1")); sl@0: if( retErr != KErrNone ) sl@0: { sl@0: ERR_PRINTF2(_L("iTestAudioPlayer1->RegisterAudioResourceNotification #1 - Failed with Error : %d"), retErr); sl@0: iTestStepResult = EFail; sl@0: CActiveScheduler::Stop(); sl@0: break; sl@0: } sl@0: // Register iTestAudioPlayer#1 for Notification (AGAIN) sl@0: retErr = iTestAudioPlayer1->RegisterAudioResourceNotification(*iMdaAudioPlayerCallbackSupport1, KMMFEventCategoryAudioResourceAvailable); sl@0: INFO_PRINTF1(_L("iTestAudioPlayer1->RegisterAudioResourceNotification()#2")); sl@0: if( retErr == KErrAlreadyExists ) sl@0: { sl@0: INFO_PRINTF1(_L("iTestAudioPlayer1->RegisterAudioResourceNotification #2 - Returned KErrAlreadyExists ") ); sl@0: iTestStepResult = EPass; sl@0: } sl@0: else sl@0: { sl@0: ERR_PRINTF2(_L("iTestAudioPlayer1->RegisterAudioResourceNotification #2 - Failed with Error : %d"), retErr); sl@0: iTestStepResult = EFail; sl@0: } sl@0: CActiveScheduler::Stop(); sl@0: break; sl@0: } sl@0: } sl@0: } sl@0: sl@0: /** sl@0: * PerformTestL sl@0: */ sl@0: TVerdict CTestMmfAclntARN1304::PerformTestL() sl@0: { sl@0: INFO_PRINTF1(_L("Multiple Registration for notification for the same event type.")); sl@0: iTestStepResult = EFail; sl@0: sl@0: // Initialise the state variables sl@0: StateInit(); sl@0: sl@0: // Begin the process sl@0: FsmL(EIdlePlayer, KErrNone); sl@0: sl@0: // Start the scheduler - Done only once ! sl@0: CActiveScheduler::Start(); sl@0: sl@0: return iTestStepResult; sl@0: }