mmlibs/mmfw/tsrc/mmfunittest/MidiClnt/TSU_MMFMIDICLNT.h
changeset 0 40261b775718
child 31 ae0addfe117e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmlibs/mmfw/tsrc/mmfunittest/MidiClnt/TSU_MMFMIDICLNT.h	Tue Feb 02 01:56:55 2010 +0200
@@ -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 <e32base.h>
+#include <badesca.h>
+#include <e32test.h>
+#include <e32keys.h>
+#include <c32comm.h>
+#include <f32file.h>
+#include <etel.h>
+#include <etelmm.h>
+#include <testframework.h>
+
+#include <fbs.h>
+#include <w32std.h>
+#include <mmf/common/mmfstandardcustomcommands.h>
+#include <midiclientutility.h>
+#include <mmf/common/mmfcontrollerframework.h>
+
+// Uncomment this line for Jetstream 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<TMipMessageEntry>& 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
+
+
+
+