diff -r 000000000000 -r b8ed18f6c07b mmlibs/mmfw/tsrc/mmfunittest/MidiClnt/TSU_MMFMIDICLNT.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mmlibs/mmfw/tsrc/mmfunittest/MidiClnt/TSU_MMFMIDICLNT.h Thu Oct 07 22:34:12 2010 +0100 @@ -0,0 +1,215 @@ + +// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// TSI_MMFMIDICLNT.h +// Header file: Basic tests. +// +// + +/** + @file TSI_MMFVCLNT.h +*/ + +#ifndef TSU_MMFMIDICLNT_H__ +#define TSU_MMFMIDICLNT_H__ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include + +// Uncomment this line for Jet-stream project +//#define JETSTREAM_TESTS 1 + +class CTestSuite ; + +// Flags for test step differentiation +enum TTestStepType +{ + ETestValid = 0, + ETestNegative, + ETestNullMessage, + ETestInvalidMessage, + ETestInvalidId, + ETestInvalidIndex, + ETestInvalidChannel, + ETestAlreadyLoaded, + ETestNotLoaded, + ETestNotUnloadable, + ETestOutOfRangeHigh, + ETestOutOfRangeLow, + ETestTimeOutOfRangeHigh, + ETestTimeOutOfRangeLow, + ETestUnsupported, + ETestCorrupt, + ETestOverflow, + ETestNoPlugin, + ETestInvalidState, + ETestNoResource, + ETestZeroDurationOutOfRange, + ETestInvalidChannelOutOfRange, + ETestNoteHighOutOfRange, + ETestNoteLowOutOfRange, + ETestAttackHighOutOfRange, + ETestAttackLowOutOfRange, + ETestReleaseHighOutOfRange, + ETestReleaseLowOutOfRange, + ETestNoNoteAvailable, + ETestDifferentNoteVelocity, + ETestVelocityHighOutOfRange, + ETestVelocityLowOutOfRange, + ETestBeatsHighOutOfRange, + ETestBeatsLowOutOfRange, + ETestInvalidTrack, + ETestNoResourcePlaying, + ETestMicrosecondsHighOutOfRange, + ETestMicrosecondsLowOutOfRange, + ETestMicrobeatsHighOutOfRange, + ETestMicrobeatsLowOutOfRange, + ETestMicrosecondsMicrobeatsZero, + ETestVolumeHighOutOfRange, + ETestVolumeLowOutOfRange, + ETestRampDurationHighOutOfRange, + ETestRampDurationLowOutOfRange, + ETestBalanceHighOutOfRange, + ETestBalanceLowOutOfRange, + ETestPreferenceConflictsCannotBeResolved, + ETestMetaDataIndexInvalid, + ETestOutOfRange, + ETestNoStandardBanks, + ETestNoCustomBanks, + ETestCheckInterface +}; + +/** + * @ MCallbackHandlerObserver, provides an Observer + * @ for monitoring callbacks. + */ +class MCallbackHandlerObserver + { +public: + virtual void MchoComplete(TInt aID, TInt aError)=0; + }; + +/** + * + * CActiveListener provides the asynchronous operation + * of an active object + * + * @class CActiveListener + * + */ +class CActiveListener : public CActive + { +public: + CActiveListener() : CActive(CActive::EPriorityIdle) { CActiveScheduler::Add(this); } + void InitialiseActiveListener() { iStatus = KRequestPending; SetActive(); } + // From CActive, From Base Class + void RunL() { CActiveScheduler::Stop(); } + void DoCancel() {}; + }; + +/** + * Global Data used within tests + * + */ + +const TInt KTwelfthOfSec = 83333; +const TInt KTenthOfSec = 100000 ; +const TInt KOneSecond = 1000000; // Used in a time out function, 1 second (in microSeconds) +const TInt KTenSeconds = 10000000; // Used in a time out function, 10 seconds (in microSeconds) +const TInt KFiveSeconds = 5000000; // 5 seconds (in microSeconds) +const TInt KFifteenSeconds = 15000000; // 15 seconds (in microSeconds) +const TInt KExpectedDeviation = 1500000; // 1.5 second tolerance for timed tests +const TInt KNameBufSize = 25; + +const TInt KMaxBalance = 100; +const TInt KMinBalance = -100; + +const TInt KMaxVolume = 100; + + +enum TDevMidiByPass + { + EDevMidiOff = 0, + EDevMidiOn = 1 + }; + +/** + * It's a base class for all test steps. + * + * @class CTestMmfVclntStep + * @brief Test class that enables tests. + * + */ +class CTestMmfMidiClntStep : public CTestStep, public MMidiClientUtilityObserver + { +public: + CTestMmfMidiClntStep(const TDesC& aTestName, const TTestStepType aTestType); + CTestMmfMidiClntStep(); + ~CTestMmfMidiClntStep(); + //void Close(); + static void CleanUp(TAny *aPtr) ; + void SetTestSuite(const CTestSuite* aTestSuite ) { iTestSuite = aTestSuite; } + + // MMidiClientUtilityObserver + virtual void MmcuoStateChanged(TMidiState aOldState,TMidiState aNewState,const TTimeIntervalMicroSeconds& aTime,TInt aError); + virtual void MmcuoTempoChanged(TInt aMicroBeatsPerMinute); + virtual void MmcuoVolumeChanged(TInt aChannel,TReal32 aVolumeInDecibels); + virtual void MmcuoMuteChanged(TInt aChannel,TBool aMuted); + virtual void MmcuoSyncUpdate(const TTimeIntervalMicroSeconds& aMicroSeconds,TInt64 aMicroBeats); + virtual void MmcuoMetaDataEntryFound(const TInt aMetaDataEntryId,const TTimeIntervalMicroSeconds& aPosition); + virtual void MmcuoMipMessageReceived(const RArray& aEntry); + virtual void MmcuoPolyphonyChanged(TInt aNewPolyphony); + virtual void MmcuoInstrumentChanged(TInt aChannel,TInt aBankId,TInt aInstrumentId); + +protected: + void WaitWithTimeout(TRequestStatus& aStatus, TInt aNumberOfMicroSeconds); + TBool TimeComparison(const TUint aActual, const TUint aExpected, const TUint aDivation); + // tests may optionally implement pre- and post-ambles, From Base Class + virtual TVerdict DoTestStepPreambleL(); + virtual TVerdict DoTestStepPostambleL(); + virtual TVerdict DoTestStepL(); + virtual TVerdict DoTestL(CMidiClientUtility* aMidi); + void InitWservL(); + +protected: + const CTestSuite* iTestSuite ; + CActiveScheduler* iActiveScheduler; + TInt iError; + + TInt iTestType; + + CWsScreenDevice* iScreen; + RWindow* iWindow; + RWsSession iWs; + TMidiState iCurrentState; + }; + +#endif + + + +