sl@0: // Copyright (c) 2004-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: // Header file: Declaration for Various Classes used for Audio Resource Notification tests. sl@0: // sl@0: // sl@0: sl@0: /** sl@0: @file TestAudioClientUtilitiesARN.h sl@0: */ sl@0: sl@0: #ifndef TESTAUDIOCLIENTUTILITIESARN_H sl@0: #define TESTAUDIOCLIENTUTILITIESARN_H sl@0: sl@0: #include "mdaaudiosampleplayer.h" sl@0: #include "mdaaudiosampleeditor.h" sl@0: #include "mdaaudiooutputstream.h" sl@0: #include "TestPlayerUtils.h" sl@0: #include "TestRecorder.h" sl@0: #include "TSI_MMFACLNT.h" sl@0: #include sl@0: sl@0: //------------------------------------------------------------------------------ sl@0: //********************PREQ 797 - Audio Resource Notification******************** sl@0: //------------------------------------------------------------------------------ sl@0: sl@0: /** sl@0: * stopActiveScheduler sl@0: */ sl@0: static TInt stopActiveScheduler(TAny*) sl@0: { sl@0: CActiveScheduler::Stop(); sl@0: return KErrNone; sl@0: } sl@0: sl@0: // sl@0: //Declarations// sl@0: // sl@0: sl@0: // sl@0: //Custom Error Codes & CONST Declarations. sl@0: // sl@0: const TInt KErrUser = -1000; sl@0: const TInt KErrBadResult = (KErrUser - 1); sl@0: const TInt KMicroSecsInOneSec = 1000000; sl@0: const TUint KSampleRate8000Hz = 8000; sl@0: sl@0: // sl@0: //Forward class declarations sl@0: // sl@0: class CCallbackTimer; sl@0: class CTestMdaAudioPlayerCallbackSupport; sl@0: class CTestMdaAudioRecorderCallbackSupport; sl@0: class CTestMdaAudioOutputStreamCallbackSupport; sl@0: class CTestMdaAudioMultiClientCallbackSupport; sl@0: sl@0: //------------------------------------------------------------------------------ sl@0: //******************PREQ 797 - Audio Player Test Declarations******************* sl@0: //------------------------------------------------------------------------------ sl@0: class CMultiEventChecker: public CBase sl@0: { sl@0: public: sl@0: // MultiEvent checker utility enums sl@0: enum TClientUtilityType sl@0: { sl@0: EAudioPlayer = 0, sl@0: EAudioRecorder, sl@0: EAudioStream sl@0: }; sl@0: public: sl@0: static CMultiEventChecker* NewL(); sl@0: TBool CheckFsm(TInt aClientNumber, TClientUtilityType aClientType,TInt aEventCode, TInt aError=KErrNone,CMdaAudioClipUtility::TState aRecorderState=CMdaAudioClipUtility::ENotReady); sl@0: void StopTest(); sl@0: void SetExpectedState(TInt aState); sl@0: void SetExpectedEvent(TInt aClientNumber, TInt aEvent,TInt aError,CMdaAudioClipUtility::TState aRecorderState=CMdaAudioClipUtility::ENotReady); sl@0: void RegisterClientEventToMonitor(TInt aClientNumber, TInt aEventCode, TInt aError, TInt aState,CMdaAudioClipUtility::TState aRecorderState=CMdaAudioClipUtility::ENotReady); sl@0: void EnableMultipleEventMonitor() sl@0: { sl@0: iMonitorMultipleEvents = ETrue; sl@0: } sl@0: void DisableMultipleEventMonitor() sl@0: { sl@0: iMonitorMultipleEvents = EFalse; sl@0: } sl@0: TBool IsMutipleEventMonitorEnabled() sl@0: { sl@0: return iMonitorMultipleEvents; sl@0: } sl@0: TInt NextState() sl@0: { sl@0: return iNextState; sl@0: } sl@0: TBool IsMonitoringFinished(); sl@0: protected: sl@0: void ConstructL(); sl@0: CMultiEventChecker(); sl@0: //Register client events to monitor sl@0: TInt iExpectedEvent; sl@0: TInt iExpectedError; sl@0: CMdaAudioClipUtility::TState iExpectedRecorderState; sl@0: TInt iNextState; sl@0: TFixedArray iClientEventsToMonitor; sl@0: TFixedArray iClientError; sl@0: TFixedArray iFsmStateforClient; sl@0: TInt iClientsRegistered; sl@0: TBool iMonitorMultipleEvents; sl@0: }; sl@0: sl@0: // sl@0: //BASE CLASS DECLARATIONS// sl@0: // sl@0: sl@0: /** sl@0: * Observer class to identify and pass events to the test step class sl@0: * sl@0: * @class MTestAudioPlayerCallback sl@0: * sl@0: */ sl@0: class MTestAudioPlayerCallback sl@0: { sl@0: public : sl@0: virtual void MapcInitCompleteTest(TInt aError, const TTimeIntervalMicroSeconds& aDuration, CTestMdaAudioPlayerCallbackSupport& aMdaAudioPlayerCallbackSupport) = 0; sl@0: virtual void MarncResourceAvailableTest(TUid aNotificationEventId, const TDesC8& aNotificationData, CTestMdaAudioPlayerCallbackSupport& aMdaAudioPlayerCallbackSupport) = 0; sl@0: virtual void MapcPlayCompleteTest(TInt aError, CTestMdaAudioPlayerCallbackSupport& aMdaAudioPlayerCallbackSupport) = 0; sl@0: }; sl@0: sl@0: /** sl@0: * Support class to pass the events to the test step class using the MTestAudioPlayerCallback sl@0: * sl@0: * @class CTestMdaAudioPlayerCallbackSupport sl@0: * sl@0: */ sl@0: class CTestMdaAudioPlayerCallbackSupport : public CBase, public MMdaAudioPlayerCallback, public MMMFAudioResourceNotificationCallback sl@0: { sl@0: public : sl@0: static CTestMdaAudioPlayerCallbackSupport* NewL(MTestAudioPlayerCallback& aCallback); sl@0: virtual void MapcInitComplete(TInt aError, const TTimeIntervalMicroSeconds& aDuration); sl@0: virtual void MapcPlayComplete(TInt aError); sl@0: virtual void MarncResourceAvailable(TUid aNotificationEventId, const TDesC8& aNotificationData); sl@0: protected: sl@0: CTestMdaAudioPlayerCallbackSupport(MTestAudioPlayerCallback& aCallback); sl@0: void ConstructL(); sl@0: private : sl@0: MTestAudioPlayerCallback& iCallback; sl@0: }; sl@0: sl@0: sl@0: /** sl@0: * Base Class for ARN functionality for most ARN audio player tests sl@0: * sl@0: * @class CTestMmfAclntAudioPlayerARN sl@0: * sl@0: */ sl@0: class CTestMmfAclntAudioPlayerARN : public CTestMmfAclntStep, public MTestAudioPlayerCallback sl@0: { sl@0: public: sl@0: // Enum to describe the current state. sl@0: enum TMmfAudioPlayerState sl@0: { sl@0: EStateBegin = 0, sl@0: EStateOpenPlayer1, sl@0: EStateOpenPlayer2, sl@0: EStateOpenPlayer3, sl@0: EStatePlaying1, sl@0: EStatePlaying2, sl@0: EStatePlaying3, sl@0: EStateEndPlay1, sl@0: EStateEndPlay2, sl@0: EStateEndPlay3, sl@0: EStateErrInUsePlayer1, sl@0: EStateErrInUsePlayer2, sl@0: EStateErrInUsePlayer3, sl@0: EStateNotifiedPlayer1, sl@0: EStateNotifiedPlayer2, sl@0: EStateNotifiedPlayer3, sl@0: EStateErrInUsePlayer1A, sl@0: EStateNotifiedPlayer1A, sl@0: EStatePlaying2A, sl@0: EStateEndPlay2A sl@0: }; sl@0: sl@0: // Enum to decide which Event has occured. sl@0: enum TMmfAudioPlayerEvents sl@0: { sl@0: EIdlePlayer = 0, sl@0: EMapcInitComplete1, sl@0: EMapcInitComplete2, sl@0: EMapcInitComplete3, sl@0: EMapcPlayComplete1, sl@0: EMapcPlayComplete2, sl@0: EMapcPlayComplete3, sl@0: EMarncResourceAvailable1, sl@0: EMarncResourceAvailable2, sl@0: EMarncResourceAvailable3 sl@0: }; sl@0: public : sl@0: // Constructor sl@0: CTestMmfAclntAudioPlayerARN(const TDesC& aTestName, const TDesC& aSectName); sl@0: // Virtual methods for Preamble and Postamble. sl@0: virtual TVerdict DoTestStepPreambleL(); sl@0: virtual TVerdict DoTestStepPostambleL(); sl@0: // Virtual function to access test specific methods sl@0: virtual TVerdict DoTestStepL(); sl@0: // Pure function to access test specific methods sl@0: virtual TVerdict DoTestL()=0; sl@0: // from MTestAudioPlayerCallback sl@0: virtual void MapcInitCompleteTest(TInt aError, const TTimeIntervalMicroSeconds& aDuration, CTestMdaAudioPlayerCallbackSupport& aMdaAudioPlayerCallbackSupport); sl@0: virtual void MarncResourceAvailableTest(TUid aNotificationEventId, const TDesC8& aNotificationData, CTestMdaAudioPlayerCallbackSupport& aMdaAudioPlayerCallbackSupport); sl@0: virtual void MapcPlayCompleteTest(TInt aError, CTestMdaAudioPlayerCallbackSupport& aMdaAudioPlayerCallbackSupport); sl@0: // Centralised State Handler sl@0: virtual void FsmL(TMmfAudioPlayerEvents aEventCode, TInt aError)=0; sl@0: virtual TBool FsmCheck(TMmfAudioPlayerEvents aEventCode, TInt aError); sl@0: protected : sl@0: // StateInit Function sl@0: void StateInit(); sl@0: // StateChange Function sl@0: void StateChange(TMmfAudioPlayerState aState, TMmfAudioPlayerEvents aExpectedEvent, TInt aExpectedError=KErrNone); sl@0: protected : sl@0: // CMdaAudioPlayerUtility instances sl@0: CMdaAudioPlayerUtility* iTestAudioPlayer1; sl@0: CMdaAudioPlayerUtility* iTestAudioPlayer2; sl@0: CMdaAudioPlayerUtility* iTestAudioPlayer3; sl@0: // CTestMdaAudioPlayerCallbackSupport instances sl@0: CTestMdaAudioPlayerCallbackSupport* iMdaAudioPlayerCallbackSupport1; sl@0: CTestMdaAudioPlayerCallbackSupport* iMdaAudioPlayerCallbackSupport2; sl@0: CTestMdaAudioPlayerCallbackSupport* iMdaAudioPlayerCallbackSupport3; sl@0: // Other class variable declarations sl@0: TBuf iFilename1; sl@0: TBuf iFilename2; sl@0: TBuf iFilename3; sl@0: TTimeIntervalMicroSeconds iPosition; sl@0: TTimeIntervalMicroSeconds iDuration; sl@0: TInt iError; sl@0: TMmfAudioPlayerState iState; sl@0: TRequestStatus iRequestStatus; sl@0: CCallBackTimer* iCallBackTimer; sl@0: TMmfAudioPlayerEvents iExpectedEvent; sl@0: TInt iExpectedError; sl@0: TMmfAudioPlayerEvents iEventOccured; sl@0: TBuf iSectName; // Section name for retrieving filename sl@0: CMultiEventChecker* iEventChecker; sl@0: }; sl@0: sl@0: // sl@0: //POSITIVE TESTS// sl@0: // sl@0: sl@0: /** sl@0: * Register for notification, but make no request to play audio. sl@0: * sl@0: * @class CTestMmfAclntARN8101 sl@0: * sl@0: */ sl@0: class CTestMmfAclntARN8101 : public CTestMmfAclntAudioPlayerARN sl@0: { sl@0: public: sl@0: static CTestMmfAclntARN8101* NewL( const TDesC& aTestName, const TDesC& aSectName ); sl@0: virtual TVerdict DoTestL(); sl@0: virtual void FsmL(TMmfAudioPlayerEvents aEventCode, TInt aError); sl@0: sl@0: protected: sl@0: CTestMmfAclntARN8101( const TDesC& aTestName, const TDesC& aSectName ); sl@0: TVerdict PerformTestL(); sl@0: }; sl@0: sl@0: /** sl@0: * Register (b4 play, after Open) and Receive Notification of a Resource Available Event. sl@0: * (when audio resource is currently unavailable and then available) sl@0: * sl@0: * @class CTestMmfAclntARN8102 sl@0: * sl@0: */ sl@0: class CTestMmfAclntARN8102 : public CTestMmfAclntAudioPlayerARN sl@0: { sl@0: public: sl@0: static CTestMmfAclntARN8102* NewL( const TDesC& aTestName, const TDesC& aSectName ); sl@0: virtual TVerdict DoTestL(); sl@0: virtual void FsmL(TMmfAudioPlayerEvents aEventCode, TInt aError); sl@0: sl@0: protected: sl@0: CTestMmfAclntARN8102( const TDesC& aTestName, const TDesC& aSectName ); sl@0: TVerdict PerformTestL(); sl@0: }; sl@0: sl@0: /** sl@0: * Register (at the time of Play) and Receive Notification of a Resource Available Event. sl@0: * (when audio resource is currently available and subsequently unavailable, and then available) sl@0: sl@0: * sl@0: * @class CTestMmfAclntARN8103 sl@0: * sl@0: */ sl@0: class CTestMmfAclntARN8103 : public CTestMmfAclntAudioPlayerARN sl@0: { sl@0: public: sl@0: static CTestMmfAclntARN8103* NewL( const TDesC& aTestName, const TDesC& aSectName ); sl@0: virtual TVerdict DoTestL(); sl@0: virtual void FsmL(TMmfAudioPlayerEvents aEventCode, TInt aError); sl@0: virtual TBool FsmCheck(TMmfAudioPlayerEvents aEventCode, TInt aError); sl@0: sl@0: protected: sl@0: CTestMmfAclntARN8103( const TDesC& aTestName, const TDesC& aSectName ); sl@0: TVerdict PerformTestL(); sl@0: }; sl@0: sl@0: /** sl@0: * Registration (b4 File Open) and Cancellation of the notification request sl@0: * sl@0: * @class CTestMmfAclntARN8104 sl@0: * sl@0: */ sl@0: class CTestMmfAclntARN8104 : public CTestMmfAclntAudioPlayerARN sl@0: { sl@0: public: sl@0: static CTestMmfAclntARN8104* NewL( const TDesC& aTestName, const TDesC& aSectName ); sl@0: virtual TVerdict DoTestL(); sl@0: virtual void FsmL(TMmfAudioPlayerEvents aEventCode, TInt aError); sl@0: sl@0: protected: sl@0: CTestMmfAclntARN8104( const TDesC& aTestName, const TDesC& aSectName ); sl@0: TVerdict PerformTestL(); sl@0: }; sl@0: sl@0: /** sl@0: * Register (after Play Error) and Get the actual position from where the paused audio can be resumed. sl@0: * Low priority client is played first. sl@0: * sl@0: * @class CTestMmfAclntARN8105 sl@0: * sl@0: */ sl@0: class CTestMmfAclntARN8105 : public CTestMmfAclntAudioPlayerARN sl@0: { sl@0: public: sl@0: static CTestMmfAclntARN8105* NewL( const TDesC& aTestName, const TDesC& aSectName ); sl@0: virtual TVerdict DoTestL(); sl@0: virtual void FsmL(TMmfAudioPlayerEvents aEventCode, TInt aError); sl@0: virtual TBool FsmCheck(TMmfAudioPlayerEvents aEventCode, TInt aError); sl@0: sl@0: protected: sl@0: CTestMmfAclntARN8105( const TDesC& aTestName, const TDesC& aSectName ); sl@0: TVerdict PerformTestL(); sl@0: sl@0: private: sl@0: TTimeIntervalMicroSeconds iPositionStop; sl@0: TTimeIntervalMicroSeconds iPositionResume; sl@0: }; sl@0: sl@0: /** sl@0: * Register (after Play Error) and Get the actual position from where the paused audio can be resumed. sl@0: * High priority client is played first. sl@0: * sl@0: * @class CTestMmfAclntARN8106 sl@0: * sl@0: */ sl@0: class CTestMmfAclntARN8106 : public CTestMmfAclntAudioPlayerARN sl@0: { sl@0: public: sl@0: static CTestMmfAclntARN8106* NewL( const TDesC& aTestName, const TDesC& aSectName ); sl@0: virtual TVerdict DoTestL(); sl@0: virtual void FsmL(TMmfAudioPlayerEvents aEventCode, TInt aError); sl@0: virtual TBool FsmCheck(TMmfAudioPlayerEvents aEventCode, TInt aError); sl@0: sl@0: protected: sl@0: CTestMmfAclntARN8106( const TDesC& aTestName, const TDesC& aSectName ); sl@0: TVerdict PerformTestL(); sl@0: sl@0: private: sl@0: TTimeIntervalMicroSeconds iPositionStop; sl@0: TTimeIntervalMicroSeconds iPositionResume; sl@0: }; sl@0: sl@0: /** sl@0: * Client does not need to Re-register for the same event when the event is received sl@0: * i.e API is not one shot. sl@0: * sl@0: * @class CTestMmfAclntARN8107 sl@0: * sl@0: */ sl@0: class CTestMmfAclntARN8107 : public CTestMmfAclntAudioPlayerARN sl@0: { sl@0: public: sl@0: static CTestMmfAclntARN8107* NewL( const TDesC& aTestName, const TDesC& aSectName ); sl@0: virtual TVerdict DoTestL(); sl@0: virtual void FsmL(TMmfAudioPlayerEvents aEventCode, TInt aError); sl@0: virtual TBool FsmCheck(TMmfAudioPlayerEvents aEventCode, TInt aError); sl@0: sl@0: protected: sl@0: CTestMmfAclntARN8107( const TDesC& aTestName, const TDesC& aSectName ); sl@0: TVerdict PerformTestL(); sl@0: }; sl@0: sl@0: /** sl@0: * High priority client plays with repeats and low priority client doesn't get resources sl@0: * sl@0: * @class CTestMmfAclntARN8109 sl@0: * sl@0: */ sl@0: class CTestMmfAclntARN8109 : public CTestMmfAclntAudioPlayerARN sl@0: { sl@0: public: sl@0: static CTestMmfAclntARN8109* NewL( const TDesC& aTestName, const TDesC& aSectName ); sl@0: virtual TVerdict DoTestL(); sl@0: virtual void FsmL(TMmfAudioPlayerEvents aEventCode, TInt aError); sl@0: virtual TBool FsmCheck(TMmfAudioPlayerEvents aEventCode, TInt aError); sl@0: sl@0: // from MTestAudioPlayerCallback sl@0: virtual void MarncResourceAvailableTest(TUid aNotificationEventId, const TDesC8& aNotificationData, CTestMdaAudioPlayerCallbackSupport& aMdaAudioPlayerCallbackSupport); sl@0: virtual void MapcPlayCompleteTest(TInt aError, CTestMdaAudioPlayerCallbackSupport& aMdaAudioPlayerCallbackSupport); sl@0: sl@0: protected: sl@0: CTestMmfAclntARN8109( const TDesC& aTestName, const TDesC& aSectName ); sl@0: TVerdict PerformTestL(); sl@0: TBool TimeComparison(const TUint aActual, const TUint aExpected, const TUint aDeviation); sl@0: private: sl@0: TTime iStart; sl@0: TTime iStop; sl@0: TInt iDuration; sl@0: TUint iActualDuration; sl@0: TBool iPlayComplete2; sl@0: TBool iResourceAvailable1; sl@0: }; sl@0: sl@0: sl@0: sl@0: /** sl@0: * Call WillResumePlay() sl@0: * sl@0: * @class CTestMmfAclntARN8108 sl@0: * sl@0: */ sl@0: class CTestMmfAclntARN8108 : public CTestMmfAclntAudioPlayerARN sl@0: { sl@0: public: sl@0: static CTestMmfAclntARN8108* NewL( const TDesC& aTestName, const TDesC& aSectName ); sl@0: virtual TVerdict DoTestL(); sl@0: virtual void FsmL(TMmfAudioPlayerEvents aEventCode, TInt aError); sl@0: virtual void DecideFsmState(TInt aClientNumber,CMultiEventChecker::TClientUtilityType aClientType, TInt aEventCode, TInt aError=KErrNone); sl@0: protected: sl@0: TVerdict HandleStateOpenPlayer1(); sl@0: TVerdict HandleStateOpenPlayer3(); sl@0: TVerdict HandleStateOpenPlayer2(); sl@0: TVerdict HandleStateErrInUsePlayer1(); sl@0: TVerdict HandleStateErrInUsePlayer3(); sl@0: TVerdict HandleStateNotifiedPlayer1(); sl@0: TVerdict HandleStateNotifiedPlayer3(); sl@0: TVerdict HandleStatePlaying1(); sl@0: CTestMmfAclntARN8108( const TDesC& aTestName, const TDesC& aSectName ); sl@0: void InitTest(); sl@0: void StartTestL(); sl@0: TVerdict PerformTestL(); sl@0: typedef TVerdict (CTestMmfAclntARN8108::*fp)(); sl@0: TFixedArray iStateHandlers; sl@0: }; sl@0: sl@0: /** sl@0: * Dont register for ARN, get pre-empted and then resume from same position. sl@0: * Test case for DevCR KEVN-7T5EHA sl@0: * @class CTestMmfAclntARN8110 sl@0: * sl@0: */ sl@0: class CTestMmfAclntARN8110 : public CTestMmfAclntAudioPlayerARN sl@0: { sl@0: public: sl@0: static CTestMmfAclntARN8110* NewL( const TDesC& aTestName, const TDesC& aSectName ); sl@0: virtual TVerdict DoTestL(); sl@0: virtual void FsmL(TMmfAudioPlayerEvents aEventCode, TInt aError); sl@0: sl@0: protected: sl@0: CTestMmfAclntARN8110( const TDesC& aTestName, const TDesC& aSectName ); sl@0: TVerdict PerformTestL(); sl@0: TTimeIntervalMicroSeconds iPlayer1Pos; sl@0: }; sl@0: sl@0: /** sl@0: * Dont register for ARN, get pre-empted, stop and chk if position is reset, start play again. sl@0: * Test case for DevCR KEVN-7T5EHA sl@0: * @class CTestMmfAclntARN8111 sl@0: * sl@0: */ sl@0: class CTestMmfAclntARN8111 : public CTestMmfAclntAudioPlayerARN sl@0: { sl@0: public: sl@0: static CTestMmfAclntARN8111* NewL( const TDesC& aTestName, const TDesC& aSectName ); sl@0: virtual TVerdict DoTestL(); sl@0: virtual void FsmL(TMmfAudioPlayerEvents aEventCode, TInt aError); sl@0: sl@0: protected: sl@0: CTestMmfAclntARN8111( const TDesC& aTestName, const TDesC& aSectName ); sl@0: TVerdict PerformTestL(); sl@0: TTimeIntervalMicroSeconds iPlayer1Pos; sl@0: }; sl@0: sl@0: /** sl@0: * Play higher priority first, then start playing low priority sl@0: * Test case for DevCR KEVN-7T5EHA sl@0: * @class CTestMmfAclntARN8112 sl@0: * sl@0: */ sl@0: class CTestMmfAclntARN8112 : public CTestMmfAclntAudioPlayerARN sl@0: { sl@0: public: sl@0: static CTestMmfAclntARN8112* NewL( const TDesC& aTestName, const TDesC& aSectName ); sl@0: virtual TVerdict DoTestL(); sl@0: virtual void FsmL(TMmfAudioPlayerEvents aEventCode, TInt aError); sl@0: sl@0: protected: sl@0: CTestMmfAclntARN8112( const TDesC& aTestName, const TDesC& aSectName ); sl@0: TVerdict PerformTestL(); sl@0: TTimeIntervalMicroSeconds iPlayer1Pos; sl@0: }; sl@0: // sl@0: //NEGATIVE TESTS// sl@0: // sl@0: sl@0: /** sl@0: * Register for notification with an unsupported event type. sl@0: * sl@0: * @class CTestMmfAclntARN1301 sl@0: * sl@0: */ sl@0: class CTestMmfAclntARN1301 : public CTestMmfAclntAudioPlayerARN sl@0: { sl@0: public: sl@0: static CTestMmfAclntARN1301* NewL( const TDesC& aTestName, const TDesC& aSectName ); sl@0: virtual TVerdict DoTestL(); sl@0: virtual void FsmL(TMmfAudioPlayerEvents aEventCode, TInt aError); sl@0: sl@0: protected: sl@0: CTestMmfAclntARN1301( const TDesC& aTestName, const TDesC& aSectName ); sl@0: TVerdict PerformTestL(); sl@0: }; sl@0: sl@0: /** sl@0: * Cancel the request for notification with an unsupported event type. sl@0: * sl@0: * @class CTestMmfAclntARN1302 sl@0: * sl@0: */ sl@0: class CTestMmfAclntARN1302 : public CTestMmfAclntAudioPlayerARN sl@0: { sl@0: public: sl@0: static CTestMmfAclntARN1302* NewL( const TDesC& aTestName, const TDesC& aSectName ); sl@0: virtual TVerdict DoTestL(); sl@0: virtual void FsmL(TMmfAudioPlayerEvents aEventCode, TInt aError); sl@0: sl@0: protected: sl@0: CTestMmfAclntARN1302( const TDesC& aTestName, const TDesC& aSectName ); sl@0: TVerdict PerformTestL(); sl@0: }; sl@0: sl@0: /** sl@0: * Cancel when no resource Notification is requested. sl@0: * sl@0: * @class CTestMmfAclntARN1303 sl@0: * sl@0: */ sl@0: class CTestMmfAclntARN1303 : public CTestMmfAclntAudioPlayerARN sl@0: { sl@0: public: sl@0: static CTestMmfAclntARN1303* NewL( const TDesC& aTestName, const TDesC& aSectName ); sl@0: virtual TVerdict DoTestL(); sl@0: virtual void FsmL(TMmfAudioPlayerEvents aEventCode, TInt aError); sl@0: sl@0: protected: sl@0: CTestMmfAclntARN1303( const TDesC& aTestName, const TDesC& aSectName ); sl@0: TVerdict PerformTestL(); sl@0: }; sl@0: sl@0: /** sl@0: * Multiple Registration for notification for the same event type. sl@0: * sl@0: * @class CTestMmfAclntARN1304 sl@0: * sl@0: */ sl@0: class CTestMmfAclntARN1304 : public CTestMmfAclntAudioPlayerARN sl@0: { sl@0: public: sl@0: static CTestMmfAclntARN1304* NewL( const TDesC& aTestName, const TDesC& aSectName ); sl@0: virtual TVerdict DoTestL(); sl@0: virtual void FsmL(TMmfAudioPlayerEvents aEventCode, TInt aError); sl@0: sl@0: protected: sl@0: CTestMmfAclntARN1304( const TDesC& aTestName, const TDesC& aSectName ); sl@0: TVerdict PerformTestL(); sl@0: }; sl@0: sl@0: //------------------------------------------------------------------------------ sl@0: //*****************PREQ 797 - Audio Recorder Test Declarations****************** sl@0: //------------------------------------------------------------------------------ sl@0: sl@0: // sl@0: //ENUM DECLARATIONS// sl@0: // sl@0: sl@0: // Enum to decide which Event has occured. sl@0: enum TMmfAudioRecorderEvents sl@0: { sl@0: EIdleRecorder = 0, sl@0: EMoscoStateChange1, sl@0: EMoscoStateChange2, sl@0: EMoscoStateChange3, sl@0: EMarncResourceAvailableRec1, sl@0: EMarncResourceAvailableRec2, sl@0: EMarncResourceAvailableRec3 sl@0: }; sl@0: sl@0: // sl@0: //BASE CLASS DECLARATIONS// sl@0: // sl@0: sl@0: /** sl@0: * Observer class to identify and pass events to the test step class sl@0: * sl@0: * @class MTestAudioRecorderCallback sl@0: * sl@0: */ sl@0: class MTestAudioRecorderCallback sl@0: { sl@0: public : sl@0: virtual void MoscoStateChangeEventTest(CBase* aObject,TInt aPreviousState,TInt aCurrentState, TInt aErrorCode, CTestMdaAudioRecorderCallbackSupport& aMdaAudioRecorderCallbackSupport) = 0; sl@0: virtual void MarncResourceAvailableTest(TUid aNotificationEventId, const TDesC8& aNotificationData, CTestMdaAudioRecorderCallbackSupport& aMdaAudioRecorderCallbackSupport) = 0; sl@0: }; sl@0: sl@0: /** sl@0: * Support class to pass the events to the test step class using the MTestAudioRecorderCallback sl@0: * sl@0: * @class CTestMdaAudioRecorderCallbackSupport sl@0: * sl@0: */ sl@0: class CTestMdaAudioRecorderCallbackSupport : public CBase, public MMdaObjectStateChangeObserver, public MMMFAudioResourceNotificationCallback sl@0: { sl@0: public : sl@0: static CTestMdaAudioRecorderCallbackSupport* NewL(MTestAudioRecorderCallback& aCallback); sl@0: virtual void MoscoStateChangeEvent(CBase* aObject,TInt aPreviousState,TInt aCurrentState, TInt aErrorCode); sl@0: virtual void MarncResourceAvailable(TUid aNotificationEventId, const TDesC8& aNotificationData); sl@0: protected: sl@0: CTestMdaAudioRecorderCallbackSupport(MTestAudioRecorderCallback& aCallback); sl@0: void ConstructL(); sl@0: private : sl@0: MTestAudioRecorderCallback& iCallback; sl@0: }; sl@0: sl@0: /** sl@0: * Base Class for ARN functionality for most ARN audio recorder tests sl@0: * sl@0: * @class CTestMmfAclntRecordARN sl@0: * sl@0: */ sl@0: class CTestMmfAclntRecordARN : public CTestMmfAclntStep, public MTestAudioRecorderCallback sl@0: { sl@0: public: sl@0: // Constructor sl@0: CTestMmfAclntRecordARN(const TDesC& aTestName, const TDesC& aSectName); sl@0: // Virtual methods for Preamble and Postamble. sl@0: virtual TVerdict DoTestStepPreambleL(); sl@0: virtual TVerdict DoTestStepPostambleL(); sl@0: // Virtual function to access test specific methods sl@0: virtual TVerdict DoTestStepL(); sl@0: // Pure function to access test specific methods sl@0: virtual TVerdict DoTestL()=0; sl@0: // from MTestAudioRecorderCallback sl@0: void MoscoStateChangeEventTest(CBase* aObject,TInt aPreviousState,TInt aCurrentState, TInt aErrorCode, CTestMdaAudioRecorderCallbackSupport& aMdaAudioRecorderCallbackSupport); sl@0: void MarncResourceAvailableTest(TUid aNotificationEventId, const TDesC8& aNotificationData, CTestMdaAudioRecorderCallbackSupport& aMdaAudioRecorderCallbackSupport); sl@0: // Centralised State Handler sl@0: virtual void FsmL(TMmfAudioRecorderEvents aEventCode, CMdaAudioClipUtility::TState aRecorderState, TInt aError=KErrNone)=0; sl@0: virtual TBool FsmCheck(TMmfAudioRecorderEvents aEventCode, CMdaAudioClipUtility::TState aRecorderState, TInt aError=KErrNone); sl@0: protected: sl@0: // StateInit Function sl@0: void StateInit(); sl@0: // StateChange Function sl@0: void StateChange(TMmfAudioRecorderEvents aExpectedEvent, CMdaAudioClipUtility::TState aExpectedRecorderState, TInt aExpectedError=KErrNone); sl@0: protected : sl@0: // CMdaAudioRecorderUtility instances sl@0: CMdaAudioRecorderUtility* iTestAudioRecorder1; sl@0: CMdaAudioRecorderUtility* iTestAudioRecorder2; sl@0: CMdaAudioRecorderUtility* iTestAudioRecorder3; sl@0: // CTestMdaAudioRecorderCallbackSupport instances sl@0: CTestMdaAudioRecorderCallbackSupport* iMdaAudioRecorderCallbackSupport1; sl@0: CTestMdaAudioRecorderCallbackSupport* iMdaAudioRecorderCallbackSupport2; sl@0: CTestMdaAudioRecorderCallbackSupport* iMdaAudioRecorderCallbackSupport3; sl@0: // Other class variable declarations sl@0: TBuf iFilename1; sl@0: TBuf iFilename2; sl@0: TBuf iFilename3; sl@0: TInt iError; sl@0: TInt iState; sl@0: TRequestStatus iRequestStatus; sl@0: CCallBackTimer* iCallBackTimer; sl@0: TMmfAudioRecorderEvents iExpectedEvent; sl@0: CMdaAudioClipUtility::TState iExpectedRecorderState; sl@0: TInt iExpectedError; sl@0: TTimeIntervalMicroSeconds iDuration; sl@0: TTimeIntervalMicroSeconds iPosition; sl@0: TMmfAudioRecorderEvents iEventOccured; sl@0: TBuf iSectName; // Section name for retrieving filename sl@0: }; sl@0: sl@0: // sl@0: //POSITIVE TESTS// sl@0: // sl@0: sl@0: /** sl@0: * Register for notification, but make no request to play audio. sl@0: * sl@0: * @class CTestMmfAclntARN8011 sl@0: * sl@0: */ sl@0: class CTestMmfAclntARN8011 : public CTestMmfAclntRecordARN sl@0: { sl@0: public: sl@0: static CTestMmfAclntARN8011* NewL( const TDesC& aTestName, const TDesC& aSectName ); sl@0: virtual TVerdict DoTestL(); sl@0: virtual void FsmL(TMmfAudioRecorderEvents aEventCode, CMdaAudioClipUtility::TState aRecorderState, TInt aError=KErrNone); sl@0: sl@0: protected: sl@0: CTestMmfAclntARN8011( const TDesC& aTestName, const TDesC& aSectName ); sl@0: TVerdict PerformTestL(); sl@0: }; sl@0: sl@0: sl@0: /** sl@0: * Register (b4 play, after Open) and Receive Notification of a Resource Available Event. sl@0: * (when audio resource is currently unavailable and then available) sl@0: * sl@0: * @class CTestMmfAclntARN8012 sl@0: * sl@0: */ sl@0: class CTestMmfAclntARN8012 : public CTestMmfAclntRecordARN sl@0: { sl@0: public: sl@0: static CTestMmfAclntARN8012* NewL( const TDesC& aTestName, const TDesC& aSectName ); sl@0: virtual TVerdict DoTestL(); sl@0: virtual void FsmL(TMmfAudioRecorderEvents aEventCode, CMdaAudioClipUtility::TState aRecorderState, TInt aError=KErrNone); sl@0: sl@0: protected: sl@0: CTestMmfAclntARN8012( const TDesC& aTestName, const TDesC& aSectName ); sl@0: TVerdict PerformTestL(); sl@0: }; sl@0: sl@0: /** sl@0: * Register (at the time of Play) and Receive Notification of a Resource Available Event. sl@0: * (when audio resource is currently available and subsequently unavailable, and then available) sl@0: * sl@0: * @class CTestMmfAclntARN8013 sl@0: * sl@0: */ sl@0: class CTestMmfAclntARN8013 : public CTestMmfAclntRecordARN sl@0: { sl@0: public: sl@0: static CTestMmfAclntARN8013* NewL( const TDesC& aTestName, const TDesC& aSectName ); sl@0: virtual TVerdict DoTestL(); sl@0: virtual void FsmL(TMmfAudioRecorderEvents aEventCode, CMdaAudioClipUtility::TState aRecorderState, TInt aError=KErrNone); sl@0: sl@0: protected: sl@0: CTestMmfAclntARN8013( const TDesC& aTestName, const TDesC& aSectName ); sl@0: TVerdict PerformTestL(); sl@0: }; sl@0: sl@0: /** sl@0: * Registration (b4 File Open) and Cancellation of the notification request sl@0: * sl@0: * @class CTestMmfAclntARN8014 sl@0: * sl@0: */ sl@0: class CTestMmfAclntARN8014 : public CTestMmfAclntRecordARN sl@0: { sl@0: public: sl@0: static CTestMmfAclntARN8014* NewL( const TDesC& aTestName, const TDesC& aSectName ); sl@0: virtual TVerdict DoTestL(); sl@0: virtual void FsmL(TMmfAudioRecorderEvents aEventCode, CMdaAudioClipUtility::TState aRecorderState, TInt aError=KErrNone); sl@0: sl@0: protected: sl@0: CTestMmfAclntARN8014( const TDesC& aTestName, const TDesC& aSectName ); sl@0: TVerdict PerformTestL(); sl@0: }; sl@0: sl@0: /** sl@0: * Get the actual position from where the paused audio can be resumed. sl@0: * sl@0: * @class CTestMmfAclntARN8015 sl@0: * sl@0: */ sl@0: class CTestMmfAclntARN8015 : public CTestMmfAclntRecordARN sl@0: { sl@0: public: sl@0: static CTestMmfAclntARN8015* NewL( const TDesC& aTestName, const TDesC& aSectName ); sl@0: virtual TVerdict DoTestL(); sl@0: virtual void FsmL(TMmfAudioRecorderEvents aEventCode, CMdaAudioClipUtility::TState aRecorderState, TInt aError=KErrNone); sl@0: virtual TBool FsmCheck(TMmfAudioRecorderEvents aEventCode, CMdaAudioClipUtility::TState aRecorderState, TInt aError=KErrNone); sl@0: sl@0: protected: sl@0: CTestMmfAclntARN8015( const TDesC& aTestName, const TDesC& aSectName ); sl@0: TVerdict PerformTestL(); sl@0: sl@0: private: sl@0: TTimeIntervalMicroSeconds iPositionStop; sl@0: TTimeIntervalMicroSeconds iPositionResume; sl@0: }; sl@0: sl@0: /** sl@0: * Call WillResumePlay() sl@0: * sl@0: * @class CTestMmfAclntARN8016 sl@0: * sl@0: */ sl@0: class CTestMmfAclntARN8016 : public CTestMmfAclntRecordARN sl@0: { sl@0: public: sl@0: static CTestMmfAclntARN8016* NewL( const TDesC& aTestName, const TDesC& aSectName ); sl@0: virtual TVerdict DoTestL(); sl@0: virtual void FsmL(TMmfAudioRecorderEvents aEventCode, CMdaAudioClipUtility::TState aRecorderState, TInt aError=KErrNone); sl@0: virtual TBool FsmCheck(TMmfAudioRecorderEvents aEventCode, CMdaAudioClipUtility::TState aRecorderState, TInt aError=KErrNone); sl@0: sl@0: protected: sl@0: CTestMmfAclntARN8016( const TDesC& aTestName, const TDesC& aSectName ); sl@0: TVerdict PerformTestL(); sl@0: sl@0: private: sl@0: TTimeIntervalMicroSeconds iPositionStop; sl@0: TTimeIntervalMicroSeconds iPositionResume; sl@0: }; sl@0: sl@0: sl@0: // sl@0: //NEGATIVE TESTS// sl@0: // sl@0: sl@0: /** sl@0: * Register for notification with an unsupported event type. sl@0: * sl@0: * @class CTestMmfAclntARN1311 sl@0: * sl@0: */ sl@0: class CTestMmfAclntARN1311 : public CTestMmfAclntRecordARN sl@0: { sl@0: public: sl@0: static CTestMmfAclntARN1311* NewL( const TDesC& aTestName, const TDesC& aSectName ); sl@0: virtual TVerdict DoTestL(); sl@0: virtual void FsmL(TMmfAudioRecorderEvents aEventCode, CMdaAudioClipUtility::TState aRecorderState, TInt aError=KErrNone); sl@0: sl@0: protected: sl@0: CTestMmfAclntARN1311( const TDesC& aTestName, const TDesC& aSectName ); sl@0: TVerdict PerformTestL(); sl@0: }; sl@0: sl@0: /** sl@0: * Cancel the request for notification with an unsupported event type. sl@0: * sl@0: * @class CTestMmfAclntARN1312 sl@0: * sl@0: */ sl@0: class CTestMmfAclntARN1312 : public CTestMmfAclntRecordARN sl@0: { sl@0: public: sl@0: static CTestMmfAclntARN1312* NewL( const TDesC& aTestName, const TDesC& aSectName ); sl@0: virtual TVerdict DoTestL(); sl@0: virtual void FsmL(TMmfAudioRecorderEvents aEventCode, CMdaAudioClipUtility::TState aRecorderState, TInt aError=KErrNone); sl@0: sl@0: protected: sl@0: CTestMmfAclntARN1312( const TDesC& aTestName, const TDesC& aSectName ); sl@0: TVerdict PerformTestL(); sl@0: }; sl@0: sl@0: /** sl@0: * Cancel when no resource Notification is requested. sl@0: * sl@0: * @class CTestMmfAclntARN1313 sl@0: * sl@0: */ sl@0: class CTestMmfAclntARN1313 : public CTestMmfAclntRecordARN sl@0: { sl@0: public: sl@0: static CTestMmfAclntARN1313* NewL( const TDesC& aTestName, const TDesC& aSectName ); sl@0: virtual TVerdict DoTestL(); sl@0: virtual void FsmL(TMmfAudioRecorderEvents aEventCode, CMdaAudioClipUtility::TState aRecorderState, TInt aError=KErrNone); sl@0: sl@0: protected: sl@0: CTestMmfAclntARN1313( const TDesC& aTestName, const TDesC& aSectName ); sl@0: TVerdict PerformTestL(); sl@0: }; sl@0: sl@0: /** sl@0: * Multiple Registration for notification for the same event type. sl@0: * sl@0: * @class CTestMmfAclntARN1314 sl@0: * sl@0: */ sl@0: class CTestMmfAclntARN1314 : public CTestMmfAclntRecordARN sl@0: { sl@0: public: sl@0: static CTestMmfAclntARN1314* NewL( const TDesC& aTestName, const TDesC& aSectName ); sl@0: virtual TVerdict DoTestL(); sl@0: virtual void FsmL(TMmfAudioRecorderEvents aEventCode, CMdaAudioClipUtility::TState aRecorderState, TInt aError=KErrNone); sl@0: sl@0: protected: sl@0: CTestMmfAclntARN1314( const TDesC& aTestName, const TDesC& aSectName ); sl@0: TVerdict PerformTestL(); sl@0: }; sl@0: sl@0: sl@0: //------------------------------------------------------------------------------ sl@0: //***************PREQ 797 - Audio OutputStream Test Declarations**************** sl@0: //------------------------------------------------------------------------------ sl@0: sl@0: // sl@0: //ENUM DECLARATIONS// sl@0: // sl@0: sl@0: _LIT(KStreamRawFile1,"c:\\AclntITestData\\test.raw"); sl@0: _LIT(KStreamRawFile2,"c:\\AclntITestData\\test2.raw"); sl@0: _LIT(KStreamRawFile3,"c:\\AclntITestData\\test3.raw"); sl@0: sl@0: // Enum to decide which Event has occured. sl@0: enum TMmfAudioOutputStreamEvents sl@0: { sl@0: EIdleOutputStream = 0, sl@0: EMaoscOpenComplete1, sl@0: EMaoscOpenComplete2, sl@0: EMaoscOpenComplete3, sl@0: EMaoscBufferCopied1, sl@0: EMaoscBufferCopied2, sl@0: EMaoscBufferCopied3, sl@0: EMaoscPlayComplete1, sl@0: EMaoscPlayComplete2, sl@0: EMaoscPlayComplete3, sl@0: EMarncResourceAvailableOS1, sl@0: EMarncResourceAvailableOS2, sl@0: EMarncResourceAvailableOS3, sl@0: }; sl@0: sl@0: enum TFsmOutputStreamState sl@0: { sl@0: EStateIdle = 0, sl@0: EStateOpening1, sl@0: EStateOpening2, sl@0: EStateOpening3, sl@0: EStateOpenComplete1, sl@0: EStateOpenComplete2, sl@0: EStateOpenComplete3, sl@0: EStateStreaming1, sl@0: EStateStreaming2, sl@0: EStateStreaming3, sl@0: EStateResumeStreaming1, sl@0: EStateResumeStreaming2, sl@0: EStateResumeStreaming3, sl@0: EStateBufferCopied1, sl@0: EStateBufferCopied2, sl@0: EStateBufferCopied3, sl@0: EStateStreamingComplete1, sl@0: EStateStreamingComplete1ErrInUse, sl@0: EStateStreamingComplete1ErrUnderflow, sl@0: EStateStreamingComplete2, sl@0: EStateStreamingComplete2ErrInUse, sl@0: EStateStreamingComplete2ErrUnderflow, sl@0: EStateStreamingComplete3, sl@0: EStateStreamingComplete3ErrInUse, sl@0: EStateStreamingComplete3ErrUnderflow, sl@0: EStateResourceAvailableOS1, sl@0: EStateResourceAvailableOS2, sl@0: EStateResourceAvailableOS3, sl@0: EStateMonitoringEvents, sl@0: EStateFinished sl@0: }; sl@0: sl@0: // sl@0: //BASE CLASS DECLARATIONS// sl@0: // sl@0: sl@0: /** sl@0: * Observer class to identify and pass events to the test step class sl@0: * sl@0: * @class MTestAudioOutputStreamCallback sl@0: * sl@0: */ sl@0: class MTestAudioOutputStreamCallback sl@0: { sl@0: public : sl@0: virtual void MaoscOpenCompleteTest(TInt aError, CTestMdaAudioOutputStreamCallbackSupport& aMdaAudioOutputStreamCallbackSupport) = 0; sl@0: virtual void MaoscBufferCopiedTest(TInt aError, const TDesC8& aBuffer, CTestMdaAudioOutputStreamCallbackSupport& aMdaAudioOutputStreamCallbackSupport) = 0; sl@0: virtual void MaoscPlayCompleteTest(TInt aError, CTestMdaAudioOutputStreamCallbackSupport& aMdaAudioOutputStreamCallbackSupport) = 0; sl@0: virtual void MarncResourceAvailableTest(TUid aNotificationEventId, const TDesC8& aNotificationData, CTestMdaAudioOutputStreamCallbackSupport& aMdaAudioOutputStreamCallbackSupport) = 0; sl@0: }; sl@0: sl@0: /** sl@0: * Support class to pass the events to the test step class using the MTestAudioOutputStreamCallback sl@0: * sl@0: * @class CTestMdaAudioOutputStreamCallbackSupport sl@0: * sl@0: */ sl@0: class CTestMdaAudioOutputStreamCallbackSupport : public CBase, public MMdaAudioOutputStreamCallback, public MMMFAudioResourceNotificationCallback sl@0: { sl@0: public : sl@0: static CTestMdaAudioOutputStreamCallbackSupport* NewL(MTestAudioOutputStreamCallback& aCallback); sl@0: virtual void MaoscOpenComplete(TInt aError); sl@0: virtual void MaoscBufferCopied(TInt aError, const TDesC8& aBuffer); sl@0: virtual void MaoscPlayComplete(TInt aError); sl@0: virtual void MarncResourceAvailable(TUid aNotificationEventId, const TDesC8& aNotificationData); sl@0: protected: sl@0: CTestMdaAudioOutputStreamCallbackSupport(MTestAudioOutputStreamCallback& aCallback); sl@0: void ConstructL(); sl@0: private : sl@0: MTestAudioOutputStreamCallback& iCallback; sl@0: }; sl@0: sl@0: sl@0: /** sl@0: * Base Class for ARN functionality for most ARN Audio Output Stream tests sl@0: * sl@0: * @class CTestStepAudioOutputStreamARN sl@0: * sl@0: */ sl@0: class CTestStepAudioOutputStreamARN : public CTestMmfAclntStep, public MTestAudioOutputStreamCallback sl@0: { sl@0: public: sl@0: // Virtual methods for Preamble and Postamble. sl@0: virtual enum TVerdict DoTestStepPreambleL(); sl@0: virtual enum TVerdict DoTestStepPostambleL(); sl@0: // Virtual function to access test specific methods sl@0: virtual TVerdict DoTestStepL(); sl@0: // Pure function to access test specific methods sl@0: virtual TVerdict DoTestL()=0; sl@0: // from MTestAudioOutputStreamCallback sl@0: virtual void MaoscOpenCompleteTest(TInt aError, CTestMdaAudioOutputStreamCallbackSupport& aMdaAudioOutputStreamCallbackSupport); sl@0: virtual void MaoscBufferCopiedTest(TInt aError, const TDesC8& aBuffer, CTestMdaAudioOutputStreamCallbackSupport& aMdaAudioOutputStreamCallbackSupport); sl@0: virtual void MaoscPlayCompleteTest(TInt aError, CTestMdaAudioOutputStreamCallbackSupport& aMdaAudioOutputStreamCallbackSupport); sl@0: virtual void MarncResourceAvailableTest(TUid aNotificationEventId, const TDesC8& aNotificationData, CTestMdaAudioOutputStreamCallbackSupport& aMdaAudioOutputStreamCallbackSupport); sl@0: // Centralised State Handler sl@0: virtual void FsmL(TMmfAudioOutputStreamEvents aEventCode, TInt aError=KErrNone)=0; sl@0: virtual TBool FsmCheck(TMmfAudioOutputStreamEvents aEventCode, TInt aError=KErrNone); sl@0: protected: sl@0: // Constructor sl@0: CTestStepAudioOutputStreamARN(const TDesC& aTestName); sl@0: // StateInit Function sl@0: void StateInit(); sl@0: // StateChange Function sl@0: void StateChange(TMmfAudioOutputStreamEvents aExpectedEvent, TInt aExpectedError=KErrNone); sl@0: // CMdaAudioOutputStream instances sl@0: CMdaAudioOutputStream* iTestAudioOutputStream1; sl@0: CMdaAudioOutputStream* iTestAudioOutputStream2; sl@0: CMdaAudioOutputStream* iTestAudioOutputStream3; sl@0: // CTestMdaAudioOutputStreamCallbackSupport instances sl@0: CTestMdaAudioOutputStreamCallbackSupport* iMdaAudioOutputStreamCallbackSupport1; sl@0: CTestMdaAudioOutputStreamCallbackSupport* iMdaAudioOutputStreamCallbackSupport2; sl@0: CTestMdaAudioOutputStreamCallbackSupport* iMdaAudioOutputStreamCallbackSupport3; sl@0: // Other class variable declarations sl@0: RFs iFs; sl@0: RFile iFile1; sl@0: RFile iFile2; sl@0: RFile iFile3; sl@0: TInt iFileSize1; sl@0: TInt iFileSize2; sl@0: TInt iFileSize3; sl@0: RBuf8 iBuf1; sl@0: RBuf8 iBuf2; sl@0: RBuf8 iBuf3; sl@0: TInt iError; sl@0: TTimeIntervalMicroSeconds iPosition; sl@0: TInt iState; sl@0: TRequestStatus iRequestStatus; sl@0: CCallBackTimer* iCallBackTimer; sl@0: TMmfAudioOutputStreamEvents iExpectedEvent; sl@0: TInt iExpectedError; sl@0: TMmfAudioOutputStreamEvents iEventOccured; sl@0: }; sl@0: sl@0: sl@0: class CFsmAudioOutputStreamClient; sl@0: /** sl@0: * Base Class for ARN functionality for most ARN Audio Output Stream tests sl@0: * sl@0: * @class CTestStepAudioOutputStreamARN2 sl@0: * sl@0: */ sl@0: class CTestStepAudioOutputStreamARN2 : public CTestMmfAclntStep sl@0: { sl@0: public: sl@0: enum TFsmAosState sl@0: { sl@0: EStateIdle = 0, sl@0: EStateOpenComplete1, sl@0: EStateOpenComplete2, sl@0: EStateOpenComplete3, sl@0: EStateStreaming1, sl@0: EStateStreaming2, sl@0: EStateStreaming3, sl@0: EStateResumeStreaming1, sl@0: EStateResumeStreaming2, sl@0: EStateResumeStreaming3, sl@0: EStateBufferCopied1, sl@0: EStateBufferCopied2, sl@0: EStateBufferCopied3, sl@0: EStateStreamingComplete1, sl@0: EStateStreamingComplete1ErrInUse, sl@0: EStateStreamingComplete1ErrUnderflow, sl@0: EStateStreamingComplete2, sl@0: EStateStreamingComplete2ErrInUse, sl@0: EStateStreamingComplete2ErrUnderflow, sl@0: EStateStreamingComplete3, sl@0: EStateStreamingComplete3ErrInUse, sl@0: EStateStreamingComplete3ErrUnderflow, sl@0: EStateResourceAvailableOS1, sl@0: EStateResourceAvailableOS2, sl@0: EStateResourceAvailableOS3, sl@0: EStateMonitoringEvents, sl@0: EStateFinished, sl@0: }; sl@0: public: sl@0: virtual enum TVerdict DoTestStepPreambleL(); sl@0: virtual enum TVerdict DoTestStepPostambleL(); sl@0: virtual TVerdict DoTestStepL(); sl@0: virtual TVerdict DoTestL()=0; sl@0: virtual void Fsm(TInt aClientNumber,TInt aEventCode, TInt aError=KErrNone)=0; sl@0: virtual TBool FsmCheck(TInt aClientNumber, TInt aEventCode, TInt aError); sl@0: void StopTest(); sl@0: protected: sl@0: CTestStepAudioOutputStreamARN2(const TDesC& aTestName); sl@0: void StateChange(TFsmAosState aState); sl@0: void SetExpectedEvent(TInt aClientNumber, TInt aEvent,TInt aError); sl@0: //Register client events to monitor sl@0: void RegisterClientEventToMonitor(TInt aClientnumber, TInt aEventCode, TInt aError, TFsmAosState aFsmState); sl@0: TBool IsMonitoringFinished(); sl@0: protected: sl@0: TInt iExpectedEvent; sl@0: TInt iExpectedError; sl@0: TFsmAosState iState; sl@0: TFixedArray iClientList; sl@0: TFixedArray iClientEventsToMonitor; sl@0: TFixedArray iClientError; sl@0: TFixedArray iFsmStateforClient; sl@0: TInt iClientsRegistered; sl@0: RFs iFs; sl@0: TFixedArray iFileHandle; sl@0: TFixedArray iFileSize; sl@0: TFixedArray iBuf; sl@0: TInt iError; sl@0: TTimeIntervalMicroSeconds iPosition; sl@0: TRequestStatus iRequestStatus; sl@0: CCallBackTimer* iCallBackTimer; sl@0: }; sl@0: sl@0: class CFsmAudioOutputStreamClient : public CBase,public MMdaAudioOutputStreamCallback, public MMMFAudioResourceNotificationCallback sl@0: { sl@0: public: sl@0: // Enum to decide which Event has occured. sl@0: enum TMmfAosStreamEvents sl@0: { sl@0: EIdleOutputStream = 0, sl@0: EAudioOuputStreamOpenComplete, sl@0: EAudioOutputStreamBufferCopied, sl@0: EAudioOutputStreamPlayComplete, sl@0: EAudioOutputStreamResourceAvailable, sl@0: }; sl@0: public: sl@0: CFsmAudioOutputStreamClient(TInt aClientNumber,TInt aPriority,TMdaPriorityPreference aPref,CTestStepAudioOutputStreamARN2* aParent ); sl@0: ~CFsmAudioOutputStreamClient(); sl@0: static CFsmAudioOutputStreamClient* NewL(TInt aClientNumber, TInt aPriority,TMdaPriorityPreference aPref, CTestStepAudioOutputStreamARN2* aParent); sl@0: //Callback handlers sl@0: void MaoscOpenComplete(TInt aError); sl@0: void MaoscPlayComplete(TInt aError); sl@0: void MaoscBufferCopied(TInt aError, const TDesC8& aBuffer); sl@0: void MarncResourceAvailable(TUid aNotificationEventId, const TDesC8& aNotificationData); sl@0: sl@0: void TestOpen(); sl@0: TInt TestRegisterAsClient(); sl@0: TInt TestWrite(const TDesC8 &aData); sl@0: const TTimeIntervalMicroSeconds& GetCurrentPosition(); sl@0: TTimeIntervalMicroSeconds& GetResumedPosition(); sl@0: TInt BytesPlayed(); sl@0: private: sl@0: void ConstructL(); sl@0: private: sl@0: TMmfAosStreamEvents iEvent; sl@0: TInt iError; sl@0: TInt iClientNumber; sl@0: TInt iPriority; sl@0: TMdaPriorityPreference iPref; sl@0: CMdaAudioOutputStream* iMmfAudioOutputStream; sl@0: CTestStepAudioOutputStreamARN2* iParent; sl@0: TTimeIntervalMicroSeconds iResumedPosition; sl@0: }; sl@0: // sl@0: //POSITIVE TESTS// sl@0: // sl@0: sl@0: /** sl@0: * Register for notification, but make no request to play audio. sl@0: * sl@0: * @class CTestMmfAclntARN8021 sl@0: * sl@0: */ sl@0: class CTestMmfAclntARN8021 : public CTestStepAudioOutputStreamARN sl@0: { sl@0: public: sl@0: static CTestMmfAclntARN8021* NewL( const TDesC& aTestName ); sl@0: virtual TVerdict DoTestL(); sl@0: virtual void FsmL(TMmfAudioOutputStreamEvents aEventCode, TInt aError=KErrNone); sl@0: sl@0: protected: sl@0: CTestMmfAclntARN8021( const TDesC& aTestName ); sl@0: TVerdict PerformTestL(); sl@0: }; sl@0: sl@0: sl@0: /** sl@0: * Register (b4 play, after Open) and Receive Notification of a Resource Available Event. sl@0: * (when audio resource is currently unavailable and then available) sl@0: * sl@0: * @class CTestMmfAclntARN8022 sl@0: * sl@0: */ sl@0: class CTestMmfAclntARN8022 : public CTestStepAudioOutputStreamARN2 sl@0: { sl@0: public: sl@0: static CTestMmfAclntARN8022* NewL( const TDesC& aTestName ); sl@0: virtual TVerdict DoTestL(); sl@0: void Fsm(TInt aClientNumber,TInt aEventCode, TInt aError=KErrNone); sl@0: sl@0: protected: sl@0: CTestMmfAclntARN8022( const TDesC& aTestName ); sl@0: TVerdict PerformTestL(); sl@0: private: sl@0: void InitTest(); sl@0: void StartTestL(); sl@0: TVerdict HandleStateStreaming2(); sl@0: TVerdict HandleStateStreamingComplete1ErrInUse(); sl@0: TVerdict HandleStateResourceAvailableOS1(); sl@0: TVerdict HandleStateStreamingComplete2ErrUnderflow(); sl@0: TVerdict HandleStateOpenComplete2(); sl@0: TVerdict HandleStateOpenComplete1(); sl@0: private: sl@0: typedef TVerdict (CTestMmfAclntARN8022::*fp)();//Function pointer for a StateHandler sl@0: TFixedArray iStateHandlers; sl@0: }; sl@0: sl@0: /** sl@0: * Register (at the time of Play) and Receive Notification of a Resource Available Event. sl@0: * (when audio resource is currently available and subsequently unavailable, and then available) sl@0: * sl@0: * @class CTestMmfAclntARN8023 sl@0: * sl@0: */ sl@0: class CTestMmfAclntARN8023 : public CTestStepAudioOutputStreamARN2 sl@0: { sl@0: public: sl@0: static CTestMmfAclntARN8023* NewL( const TDesC& aTestName ); sl@0: virtual TVerdict DoTestL(); sl@0: void Fsm(TInt aClientNumber,TInt aEventCode, TInt aError=KErrNone); sl@0: sl@0: protected: sl@0: CTestMmfAclntARN8023( const TDesC& aTestName ); sl@0: TVerdict PerformTestL(); sl@0: private: sl@0: void InitTest(); sl@0: void StartTestL(); sl@0: TVerdict HandleStateStreaming1(); sl@0: TVerdict HandleStateStreaming2(); sl@0: TVerdict HandleStateStreamingComplete1ErrInUse(); sl@0: TVerdict HandleStateResourceAvailableOS1(); sl@0: TVerdict HandleStateStreamingComplete2ErrUnderflow(); sl@0: TVerdict HandleStateOpenComplete2(); sl@0: TVerdict HandleStateOpenComplete1(); sl@0: private: sl@0: typedef TVerdict (CTestMmfAclntARN8023::*fp)(); sl@0: TFixedArray iStateHandlers; sl@0: }; sl@0: sl@0: /** sl@0: * Registration (b4 File Open) and Cancellation of the notification request sl@0: * sl@0: * @class CTestMmfAclntARN8024 sl@0: * sl@0: */ sl@0: class CTestMmfAclntARN8024 : public CTestStepAudioOutputStreamARN sl@0: { sl@0: public: sl@0: static CTestMmfAclntARN8024* NewL( const TDesC& aTestName ); sl@0: virtual TVerdict DoTestL(); sl@0: virtual void FsmL(TMmfAudioOutputStreamEvents aEventCode, TInt aError=KErrNone); sl@0: sl@0: protected: sl@0: CTestMmfAclntARN8024( const TDesC& aTestName ); sl@0: TVerdict PerformTestL(); sl@0: }; sl@0: sl@0: /** sl@0: * Get the actual position from where the paused audio can be resumed. sl@0: * sl@0: * @class CTestMmfAclntARN8025 sl@0: * sl@0: */ sl@0: class CTestMmfAclntARN8025 : public CTestStepAudioOutputStreamARN2 sl@0: { sl@0: public: sl@0: static CTestMmfAclntARN8025* NewL( const TDesC& aTestName ); sl@0: virtual TVerdict DoTestL(); sl@0: void Fsm(TInt aClientNumber,TInt aEventCode, TInt aError=KErrNone); sl@0: sl@0: protected: sl@0: CTestMmfAclntARN8025( const TDesC& aTestName ); sl@0: TVerdict PerformTestL(); sl@0: private: sl@0: void InitTest(); sl@0: void StartTestL(); sl@0: TVerdict HandleStateStreaming1(); sl@0: TVerdict HandleStateStreaming2(); sl@0: TVerdict HandleStateStreamingComplete1ErrInUse(); sl@0: TVerdict HandleStateResourceAvailableOS1(); sl@0: TVerdict HandleStateStreamingComplete2ErrUnderflow(); sl@0: TVerdict HandleStateOpenComplete2(); sl@0: TVerdict HandleStateOpenComplete1(); sl@0: private: sl@0: typedef TVerdict (CTestMmfAclntARN8025::*fp)(); sl@0: TFixedArray iStateHandlers; sl@0: TTimeIntervalMicroSeconds iPositionStop; sl@0: TTimeIntervalMicroSeconds iPositionResume; sl@0: }; sl@0: sl@0: /** sl@0: * Call WillResumePlay() sl@0: * sl@0: * @class CTestMmfAclntARN8026 sl@0: * sl@0: */ sl@0: class CTestMmfAclntARN8026 : public CTestStepAudioOutputStreamARN sl@0: { sl@0: public: sl@0: static CTestMmfAclntARN8026* NewL( const TDesC& aTestName ); sl@0: virtual TVerdict DoTestL(); sl@0: virtual void FsmL(TMmfAudioOutputStreamEvents aEventCode, TInt aError=KErrNone); sl@0: virtual TBool FsmCheck(TMmfAudioOutputStreamEvents aEventCode, TInt aError=KErrNone); sl@0: sl@0: protected: sl@0: CTestMmfAclntARN8026( const TDesC& aTestName ); sl@0: TVerdict PerformTestL(); sl@0: }; sl@0: sl@0: sl@0: // sl@0: //NEGATIVE TESTS// sl@0: // sl@0: sl@0: /** sl@0: * Register for notification with an unsupported event type. sl@0: * sl@0: * @class CTestMmfAclntARN1321 sl@0: * sl@0: */ sl@0: class CTestMmfAclntARN1321 : public CTestStepAudioOutputStreamARN sl@0: { sl@0: public: sl@0: static CTestMmfAclntARN1321* NewL( const TDesC& aTestName ); sl@0: virtual TVerdict DoTestL(); sl@0: virtual void FsmL(TMmfAudioOutputStreamEvents aEventCode, TInt aError=KErrNone); sl@0: sl@0: protected: sl@0: CTestMmfAclntARN1321( const TDesC& aTestName ); sl@0: TVerdict PerformTestL(); sl@0: }; sl@0: sl@0: /** sl@0: * Cancel the request for notification with an unsupported event type. sl@0: * sl@0: * @class CTestMmfAclntARN1322 sl@0: * sl@0: */ sl@0: class CTestMmfAclntARN1322 : public CTestStepAudioOutputStreamARN sl@0: { sl@0: public: sl@0: static CTestMmfAclntARN1322* NewL( const TDesC& aTestName ); sl@0: virtual TVerdict DoTestL(); sl@0: virtual void FsmL(TMmfAudioOutputStreamEvents aEventCode, TInt aError=KErrNone); sl@0: sl@0: protected: sl@0: CTestMmfAclntARN1322( const TDesC& aTestName ); sl@0: TVerdict PerformTestL(); sl@0: }; sl@0: sl@0: /** sl@0: * Cancel when no resource Notification is requested. sl@0: * sl@0: * @class CTestMmfAclntARN1323 sl@0: * sl@0: */ sl@0: class CTestMmfAclntARN1323 : public CTestStepAudioOutputStreamARN sl@0: { sl@0: public: sl@0: static CTestMmfAclntARN1323* NewL( const TDesC& aTestName ); sl@0: virtual TVerdict DoTestL(); sl@0: virtual void FsmL(TMmfAudioOutputStreamEvents aEventCode, TInt aError=KErrNone); sl@0: sl@0: protected: sl@0: CTestMmfAclntARN1323( const TDesC& aTestName ); sl@0: TVerdict PerformTestL(); sl@0: }; sl@0: sl@0: /** sl@0: * Multiple Registration for notification for the same event type. sl@0: * sl@0: * @class CTestMmfAclntARN1324 sl@0: * sl@0: */ sl@0: class CTestMmfAclntARN1324 : public CTestStepAudioOutputStreamARN sl@0: { sl@0: public: sl@0: static CTestMmfAclntARN1324* NewL( const TDesC& aTestName ); sl@0: virtual TVerdict DoTestL(); sl@0: virtual void FsmL(TMmfAudioOutputStreamEvents aEventCode, TInt aError=KErrNone); sl@0: sl@0: protected: sl@0: CTestMmfAclntARN1324( const TDesC& aTestName ); sl@0: TVerdict PerformTestL(); sl@0: }; sl@0: sl@0: sl@0: //------------------------------------------------------------------------------ sl@0: //**************PREQ 797 - Multiple Audio Client Test Declarations************** sl@0: //------------------------------------------------------------------------------ sl@0: sl@0: sl@0: // sl@0: //BASE CLASS DECLARATIONS// sl@0: // sl@0: sl@0: /** sl@0: * Observer class to identify and pass events to the test step class sl@0: * sl@0: * @class MTestAudioResourceNotificationCallback sl@0: * sl@0: */ sl@0: class MTestAudioResourceNotificationCallback sl@0: { sl@0: public : sl@0: virtual void MarncResourceAvailableTest(TUid aNotificationEventId, const TDesC8& aNotificationData, CTestMdaAudioMultiClientCallbackSupport& aMdaAudioMultiClientCallbackSupport) = 0; sl@0: }; sl@0: sl@0: /** sl@0: * Support class to pass the events to the test step class using the MTestAudioResourceNotificationCallback sl@0: * sl@0: * @class CTestMdaAudioMultiClientCallbackSupport sl@0: * sl@0: */ sl@0: class CTestMdaAudioMultiClientCallbackSupport : public CBase, public MMMFAudioResourceNotificationCallback sl@0: { sl@0: public : sl@0: static CTestMdaAudioMultiClientCallbackSupport* NewL(MTestAudioResourceNotificationCallback& aCallback); sl@0: virtual void MarncResourceAvailable(TUid aNotificationEventId, const TDesC8& aNotificationData); sl@0: protected: sl@0: CTestMdaAudioMultiClientCallbackSupport(MTestAudioResourceNotificationCallback& aCallback); sl@0: void ConstructL(); sl@0: private : sl@0: MTestAudioResourceNotificationCallback& iCallback; sl@0: }; sl@0: sl@0: /** sl@0: * Base Class for ARN functionality for most ARN multiple client tests sl@0: * sl@0: * @class CTestMmfAclntMultiClientARN sl@0: * sl@0: */ sl@0: class CTestMmfAclntMultiClientARN : public CTestMmfAclntStep, public MMdaAudioPlayerCallback, public MMdaObjectStateChangeObserver, public MMdaAudioOutputStreamCallback, public MTestAudioResourceNotificationCallback sl@0: { sl@0: public: sl@0: // Enum to decide which Event has occured. sl@0: enum TMmfAudioMultiClientEvents sl@0: { sl@0: EIdleMulti = 0, sl@0: EMapcInitComplete, sl@0: EMapcPlayComplete, sl@0: EMoscoStateChangeEvent, sl@0: EMaoscOpenComplete, sl@0: EMaoscBufferCopied, sl@0: EMaoscPlayComplete, sl@0: EMarncResourceAvailablePlayer, sl@0: EMarncResourceAvailableRecorder, sl@0: EMarncResourceAvailableOS, sl@0: EImproperEvent sl@0: }; sl@0: sl@0: // Enum to decide on state sl@0: enum TMmfAudioMultiClientStates sl@0: { sl@0: EStateApInitComplete, sl@0: EStateApPlayComplete, sl@0: EStateApPlayCompleteKErrInUse, sl@0: EStateApResourceAvailable, sl@0: EStateRecoderOpen, sl@0: EStateRecoderPlaying, sl@0: EStateRecorderResumePlay, sl@0: EStateRecorderPlayComplete, sl@0: EStateRecorderrelease, sl@0: EStateAosOpenComplete, sl@0: EStateAosBufferCopiedKErrInUse, sl@0: EStateAosPlayCompleteKErrInUse, sl@0: EStateAosResourceAvailable sl@0: }; sl@0: public: sl@0: // Constructor sl@0: CTestMmfAclntMultiClientARN(const TDesC& aTestName, const TDesC& aSectName); sl@0: // Virtual methods for Preamble and Postamble. sl@0: virtual TVerdict DoTestStepPreambleL(); sl@0: virtual TVerdict DoTestStepPostambleL(); sl@0: // Virtual function to access test specific methods sl@0: virtual TVerdict DoTestStepL(); sl@0: // Pure function to access test specific methods sl@0: virtual TVerdict DoTestL()=0; sl@0: // from MMdaAudioPlayerCallback sl@0: virtual void MapcInitComplete(TInt aError, const TTimeIntervalMicroSeconds& aDuration); sl@0: virtual void MapcPlayComplete(TInt aError); sl@0: // from MMdaObjectStateChangeObserver sl@0: virtual void MoscoStateChangeEvent(CBase* aObject,TInt aPreviousState,TInt aCurrentState, TInt aErrorCode); sl@0: // from MTestAudioOutputStreamCallback sl@0: virtual void MaoscOpenComplete(TInt aError); sl@0: virtual void MaoscBufferCopied(TInt aError, const TDesC8& aBuffer); sl@0: virtual void MaoscPlayComplete(TInt aError); sl@0: // from MTestAudioResourceNotificationCallback sl@0: virtual void MarncResourceAvailableTest(TUid aNotificationEventId, const TDesC8& aNotificationData, CTestMdaAudioMultiClientCallbackSupport& aMdaAudioMultiClientCallbackSupport); sl@0: // Centralised State Handler sl@0: virtual void FsmL(TMmfAudioMultiClientEvents aEventCode, TInt aError=KErrNone, CMdaAudioClipUtility::TState aRecorderState=CMdaAudioClipUtility::ENotReady)=0; sl@0: virtual TBool FsmCheck(TMmfAudioMultiClientEvents aEventCode, TInt aError=KErrNone, CMdaAudioClipUtility::TState aRecorderState=CMdaAudioClipUtility::ENotReady); sl@0: protected: sl@0: // StateInit Function sl@0: void StateInit(); sl@0: // StateChange Function sl@0: void StateChange(TMmfAudioMultiClientEvents aExpectedEvent, TInt aExpectedError=KErrNone, CMdaAudioClipUtility::TState aExpectedRecorderState=CMdaAudioClipUtility::ENotReady); sl@0: // Audio Client Utilities declaration sl@0: CMdaAudioPlayerUtility* iTestAudioPlayer; sl@0: CMdaAudioRecorderUtility* iTestAudioRecorder; sl@0: CMdaAudioOutputStream* iTestAudioOutputStream; sl@0: // CTestMdaAudioMultiClientCallbackSupport instances sl@0: CTestMdaAudioMultiClientCallbackSupport* iMdaAudioPlayerCallbackSupport; sl@0: CTestMdaAudioMultiClientCallbackSupport* iMdaAudioRecorderCallbackSupport; sl@0: CTestMdaAudioMultiClientCallbackSupport* iMdaAudioOutputStreamCallbackSupport; sl@0: // Variables to hold the file names sl@0: TBuf iFilenamePlayer; sl@0: TBuf iFilenameRecorder; sl@0: TBuf iFilenameOutputStream; sl@0: // Common Class Variables sl@0: TInt iError; sl@0: TInt iState; sl@0: TRequestStatus iRequestStatus; sl@0: CCallBackTimer* iCallBackTimer; sl@0: // for checking the expected states sl@0: TMmfAudioMultiClientEvents iExpectedEvent; sl@0: CMdaAudioClipUtility::TState iExpectedRecorderState; sl@0: TInt iExpectedError; sl@0: TMmfAudioMultiClientEvents iEventOccured; sl@0: // for Checking the duration sl@0: TTimeIntervalMicroSeconds iDuration; sl@0: TTimeIntervalMicroSeconds iPosition; sl@0: // for iAudioOutputStream sl@0: RFs iFs; sl@0: RFile iFile; sl@0: TInt iFileSize; sl@0: RBuf8 iBuf; sl@0: TBuf iSectName; // Section name for retrieving filename sl@0: CMultiEventChecker* iEventChecker; sl@0: }; sl@0: sl@0: // sl@0: //POSITIVE TESTS// sl@0: // sl@0: sl@0: /** sl@0: * Receipt of Notification (on deleting the Audio Play Client instance of a Notified Client) sl@0: * of a Resource Available Event. sl@0: * sl@0: * @class CTestMmfAclntARN9001 sl@0: * sl@0: */ sl@0: class CTestMmfAclntARN9001 : public CTestMmfAclntMultiClientARN sl@0: { sl@0: public: sl@0: static CTestMmfAclntARN9001* NewL( const TDesC& aTestName, const TDesC& aSectName ); sl@0: virtual TVerdict DoTestL(); sl@0: virtual void FsmL(TMmfAudioMultiClientEvents aEventCode, TInt aError=KErrNone, CMdaAudioClipUtility::TState aRecorderState=CMdaAudioClipUtility::ENotReady); sl@0: virtual TBool FsmCheck(TMmfAudioMultiClientEvents aEventCode, TInt aError=KErrNone, CMdaAudioClipUtility::TState aRecorderState=CMdaAudioClipUtility::ENotReady); sl@0: sl@0: protected: sl@0: CTestMmfAclntARN9001( const TDesC& aTestName, const TDesC& aSectName ); sl@0: TVerdict PerformTestL(); sl@0: }; sl@0: sl@0: sl@0: /** sl@0: * Receipt of Notification (on completion of play of a Notifed Client) of a Resource Available Event. sl@0: * sl@0: * @class CTestMmfAclntARN9002 sl@0: * sl@0: */ sl@0: class CTestMmfAclntARN9002 : public CTestMmfAclntMultiClientARN sl@0: { sl@0: public: sl@0: static CTestMmfAclntARN9002* NewL( const TDesC& aTestName, const TDesC& aSectName ); sl@0: virtual TVerdict DoTestL(); sl@0: virtual void FsmL(TMmfAudioMultiClientEvents aEventCode, TInt aError=KErrNone, CMdaAudioClipUtility::TState aRecorderState=CMdaAudioClipUtility::ENotReady); sl@0: virtual void DecideFsmState(TInt aClientNumber,CMultiEventChecker::TClientUtilityType aClientType, TInt aEventCode, TInt aError=KErrNone,CMdaAudioClipUtility::TState aRecorderState=CMdaAudioClipUtility::ENotReady); sl@0: sl@0: protected: sl@0: CTestMmfAclntARN9002( const TDesC& aTestName, const TDesC& aSectName ); sl@0: TVerdict PerformTestL(); sl@0: private: sl@0: void InitTest(); sl@0: void StartTestL(); sl@0: TVerdict HandleStateApInitComplete(); sl@0: TVerdict HandleStateRecorderOpen(); sl@0: TVerdict HandleStateRecorderPlaying(); sl@0: TVerdict HandleApPlayCompleteKErrInUse(); sl@0: TVerdict HandleStateAosOpenComplete(); sl@0: TVerdict HandleStateAosBufferCopiedKErrInUse(); sl@0: TVerdict HandleStateAosPlayCompleteKErrInUse(); sl@0: TVerdict HandleStateRecorderrelease(); sl@0: TVerdict HandleStateApResourceAvailable(); sl@0: TVerdict HandleStateApPlayComplete(); sl@0: TVerdict HandleStateAosResourceAvailable(); sl@0: typedef TVerdict (CTestMmfAclntARN9002::*fp)();//Function pointer for a StateHandler sl@0: TFixedArray iStateHandlers; sl@0: }; sl@0: sl@0: /** sl@0: * Receipt of Notification (on stopping play of a Notitifed Client) of a Resource Available Event. sl@0: * sl@0: * @class CTestMmfAclntARN9003 sl@0: * sl@0: */ sl@0: class CTestMmfAclntARN9003 : public CTestMmfAclntMultiClientARN sl@0: { sl@0: public: sl@0: static CTestMmfAclntARN9003* NewL( const TDesC& aTestName, const TDesC& aSectName ); sl@0: virtual TVerdict DoTestL(); sl@0: virtual void FsmL(TMmfAudioMultiClientEvents aEventCode, TInt aError=KErrNone, CMdaAudioClipUtility::TState aRecorderState=CMdaAudioClipUtility::ENotReady); sl@0: protected: sl@0: CTestMmfAclntARN9003( const TDesC& aTestName, const TDesC& aSectName ); sl@0: TVerdict PerformTestL(); sl@0: }; sl@0: sl@0: /** sl@0: * Receipt of Notification (chronological order for equal priority clients) of a Resource Available Event. sl@0: * sl@0: * @class CTestMmfAclntARN9004 sl@0: * sl@0: */ sl@0: class CTestMmfAclntARN9004 : public CTestMmfAclntMultiClientARN sl@0: { sl@0: public: sl@0: static CTestMmfAclntARN9004* NewL( const TDesC& aTestName, const TDesC& aSectName ); sl@0: virtual TVerdict DoTestL(); sl@0: virtual void FsmL(TMmfAudioMultiClientEvents aEventCode, TInt aError=KErrNone, CMdaAudioClipUtility::TState aRecorderState=CMdaAudioClipUtility::ENotReady); sl@0: virtual TBool FsmCheck(TMmfAudioMultiClientEvents aEventCode, TInt aError=KErrNone, CMdaAudioClipUtility::TState aRecorderState=CMdaAudioClipUtility::ENotReady); sl@0: sl@0: protected: sl@0: CTestMmfAclntARN9004( const TDesC& aTestName, const TDesC& aSectName ); sl@0: TVerdict PerformTestL(); sl@0: }; sl@0: sl@0: /** sl@0: * Non Receipt of Notification (on calling WillResumePlay() of a notified client) sl@0: * of a Resource Available Event. sl@0: * sl@0: * @class CTestMmfAclntARN9005 sl@0: * sl@0: */ sl@0: class CTestMmfAclntARN9005 : public CTestMmfAclntMultiClientARN sl@0: { sl@0: public: sl@0: static CTestMmfAclntARN9005* NewL( const TDesC& aTestName, const TDesC& aSectName ); sl@0: virtual TVerdict DoTestL(); sl@0: virtual void FsmL(TMmfAudioMultiClientEvents aEventCode, TInt aError=KErrNone, CMdaAudioClipUtility::TState aRecorderState=CMdaAudioClipUtility::ENotReady); sl@0: virtual void DecideFsmState(TInt aClientNumber,CMultiEventChecker::TClientUtilityType aClientType, TInt aEventCode, TInt aError=KErrNone,CMdaAudioClipUtility::TState aRecorderState=CMdaAudioClipUtility::ENotReady); sl@0: protected: sl@0: CTestMmfAclntARN9005( const TDesC& aTestName, const TDesC& aSectName ); sl@0: TVerdict PerformTestL(); sl@0: private: sl@0: void InitTest(); sl@0: void StartTestL(); sl@0: TVerdict HandleStateApInitComplete(); sl@0: TVerdict HandleStateRecorderOpen(); sl@0: TVerdict HandleStateRecorderPlaying(); sl@0: TVerdict HandleApPlayCompleteKErrInUse(); sl@0: TVerdict HandleStateAosOpenComplete(); sl@0: TVerdict HandleStateAosBufferCopiedKErrInUse(); sl@0: TVerdict HandleStateAosPlayCompleteKErrInUse(); sl@0: TVerdict HandleStateRecorderrelease(); sl@0: TVerdict HandleStateApResourceAvailable(); sl@0: TVerdict HandleStateApPlayComplete(); sl@0: TVerdict HandleStateAosResourceAvailable(); sl@0: typedef TVerdict (CTestMmfAclntARN9005::*fp)();//Function pointer for a StateHandler sl@0: TFixedArray iStateHandlers; sl@0: }; sl@0: sl@0: /** sl@0: * Receipt of Notification (on timeout of a notified client, 1 sec assumed, call sl@0: * WillResumePlay() after 1 second) of a Resource Available Event. sl@0: * sl@0: * @class CTestMmfAclntARN9006 sl@0: * sl@0: */ sl@0: class CTestMmfAclntARN9006 : public CTestMmfAclntMultiClientARN sl@0: { sl@0: public: sl@0: static CTestMmfAclntARN9006* NewL( const TDesC& aTestName, const TDesC& aSectName ); sl@0: virtual TVerdict DoTestL(); sl@0: virtual void FsmL(TMmfAudioMultiClientEvents aEventCode, TInt aError=KErrNone, CMdaAudioClipUtility::TState aRecorderState=CMdaAudioClipUtility::ENotReady); sl@0: virtual void DecideFsmState(TInt aClientNumber,CMultiEventChecker::TClientUtilityType aClientType, TInt aEventCode, TInt aError=KErrNone,CMdaAudioClipUtility::TState aRecorderState=CMdaAudioClipUtility::ENotReady); sl@0: protected: sl@0: CTestMmfAclntARN9006( const TDesC& aTestName, const TDesC& aSectName ); sl@0: TVerdict PerformTestL(); sl@0: private: sl@0: void InitTest(); sl@0: void StartTestL(); sl@0: TVerdict HandleStateApInitComplete(); sl@0: TVerdict HandleStateRecorderOpen(); sl@0: TVerdict HandleStateRecorderPlaying(); sl@0: TVerdict HandleApPlayCompleteKErrInUse(); sl@0: TVerdict HandleStateAosOpenComplete(); sl@0: TVerdict HandleStateAosBufferCopiedKErrInUse(); sl@0: TVerdict HandleStateAosPlayCompleteKErrInUse(); sl@0: TVerdict HandleStateRecorderrelease(); sl@0: TVerdict HandleStateApResourceAvailable(); sl@0: TVerdict HandleStateAosResourceAvailable(); sl@0: typedef TVerdict (CTestMmfAclntARN9006::*fp)();//Function pointer for a StateHandler sl@0: TFixedArray iStateHandlers; sl@0: }; sl@0: sl@0: /** sl@0: * Receipt of Notification (on cancellation of the notification of a client that has sl@0: * requested for notification) of a Resource Available Event. [Cancel before receipt of Notification] sl@0: * sl@0: * @class CTestMmfAclntARN9007 sl@0: * sl@0: */ sl@0: class CTestMmfAclntARN9007 : public CTestMmfAclntMultiClientARN sl@0: { sl@0: public: sl@0: static CTestMmfAclntARN9007* NewL( const TDesC& aTestName, const TDesC& aSectName ); sl@0: virtual TVerdict DoTestL(); sl@0: virtual void FsmL(TMmfAudioMultiClientEvents aEventCode, TInt aError=KErrNone, CMdaAudioClipUtility::TState aRecorderState=CMdaAudioClipUtility::ENotReady); sl@0: virtual TBool FsmCheck(TMmfAudioMultiClientEvents aEventCode, TInt aError=KErrNone, CMdaAudioClipUtility::TState aRecorderState=CMdaAudioClipUtility::ENotReady); sl@0: sl@0: protected: sl@0: CTestMmfAclntARN9007( const TDesC& aTestName, const TDesC& aSectName ); sl@0: TVerdict PerformTestL(); sl@0: }; sl@0: sl@0: /** sl@0: * Receipt of Notification (on cancellation of notification of a client that has just sl@0: * received notification) of a Resource Available Event. [Cancel after receipt of Notification] sl@0: * sl@0: * @class CTestMmfAclntARN9008 sl@0: * sl@0: */ sl@0: class CTestMmfAclntARN9008 : public CTestMmfAclntMultiClientARN sl@0: { sl@0: public: sl@0: static CTestMmfAclntARN9008* NewL( const TDesC& aTestName, const TDesC& aSectName ); sl@0: virtual TVerdict DoTestL(); sl@0: virtual void FsmL(TMmfAudioMultiClientEvents aEventCode, TInt aError=KErrNone, CMdaAudioClipUtility::TState aRecorderState=CMdaAudioClipUtility::ENotReady); sl@0: virtual void DecideFsmState(TInt aClientNumber,CMultiEventChecker::TClientUtilityType aClientType, TInt aEventCode, TInt aError=KErrNone,CMdaAudioClipUtility::TState aRecorderState=CMdaAudioClipUtility::ENotReady); sl@0: sl@0: protected: sl@0: CTestMmfAclntARN9008( const TDesC& aTestName, const TDesC& aSectName ); sl@0: TVerdict PerformTestL(); sl@0: private: sl@0: void InitTest(); sl@0: void StartTestL(); sl@0: TVerdict HandleStateApInitComplete(); sl@0: TVerdict HandleStateApPlayComplete(); sl@0: TVerdict HandleStateRecorderOpen(); sl@0: TVerdict HandleStateRecorderPlaying(); sl@0: TVerdict HandleStateRecorderResumePlay(); sl@0: TVerdict HandleApPlayCompleteKErrInUse(); sl@0: TVerdict HandleStateAosOpenComplete(); sl@0: TVerdict HandleStateAosBufferCopiedKErrInUse(); sl@0: TVerdict HandleStateAosPlayCompleteKErrInUse(); sl@0: TVerdict HandleStateRecorderrelease(); sl@0: TVerdict HandleStateApResourceAvailable(); sl@0: TVerdict HandleStateAosResourceAvailable(); sl@0: TVerdict HandleStateRecorderPlayComplete(); sl@0: typedef TVerdict (CTestMmfAclntARN9008::*fp)();//Function pointer for a StateHandler sl@0: TFixedArray iStateHandlers; sl@0: }; sl@0: sl@0: #endif