mmlibs/mmfw/tsrc/mmfunittest/MidiClnt/TS_MMFMIDICLNTsuite.cpp
changeset 0 b8ed18f6c07b
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmlibs/mmfw/tsrc/mmfunittest/MidiClnt/TS_MMFMIDICLNTsuite.cpp	Thu Oct 07 22:34:12 2010 +0100
@@ -0,0 +1,831 @@
+
+// Copyright (c) 2004-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:
+//
+
+
+// EPOC includes
+#include <e32base.h>
+
+// Test system includes
+#include <testframework.h>
+
+#include "TSU_MMFMIDICLNT.h"
+#include "TS_MMFMIDICLNTsuite.h"
+#include "TestMidiClientUtility.h"
+#include "TestStepMidiClntAllocFailNew.h"
+#include "TestStepMidiClntAllocFailOpen.h"
+#include "TestMidiClientSharedHeap.h"
+
+
+#define KFileNameKey _S("MidiDrmContent")
+#define KUnlimitPlayContent _S("midiIdPlayUnlim")
+
+const TDrmTestParams KDrm0321 =
+	{
+	KFileNameKey, 		//iFileNameKey
+	KUnlimitPlayContent,		//iUniqueId;
+	ContentAccess::EUnknown,	//iIntent;
+	KErrCANoPermission,			//iExpectedError;	
+	TDrmTestParams::EFileName					// iSourceType;
+	};
+	
+const TDrmTestParams KDrm0322 =
+	{
+	KFileNameKey,				//iFileNameKey
+	_S("midiIdNoRights"),		//iUniqueId;
+	ContentAccess::EPlay,		//iIntent;
+	KErrCANoRights,			//iExpectedError;	
+	TDrmTestParams::EFileName					// iSourceType;
+	};
+	
+const TDrmTestParams KDrm0323 =
+	{
+	KFileNameKey,		//iFileNameKey
+	_S("midiIdPlay01"),		//iUniqueId;
+	ContentAccess::EPlay,		//iIntent;
+	KErrCANoPermission,			//iExpectedError;	
+	TDrmTestParams::EFileName,	// iSourceType;
+	2							// iNumPlayLoops
+	};
+		
+const TDrmTestParams KDrm0324 =
+	{
+	KFileNameKey,	//iFileNameKey
+	_S("Wrong Id"),				//iUniqueId;
+	ContentAccess::EPlay,		//iIntent;
+	KErrNotFound,			//iExpectedError;	
+	TDrmTestParams::EFileName					// iSourceType;
+	};
+
+const TDrmTestParams KDrm1011 =
+	{
+	KFileNameKey,		//iFileNameKey
+	KUnlimitPlayContent,		//iUniqueId;
+	ContentAccess::EPlay,		//iIntent;
+	KErrNone,			//iExpectedError;	
+	TDrmTestParams::EFileName					// iSourceType;
+	};
+
+const TDrmTestParams KDrm1012 =
+	{
+	KFileNameKey,		//iFileNameKey
+	KUnlimitPlayContent,		//iUniqueId;
+	ContentAccess::EPlay,		//iIntent;
+	KErrNone,			//iExpectedError;	
+	TDrmTestParams::EFileHandle					// iSourceType;
+	};
+	
+const TDrmTestParams KDrm1013 =
+	{
+	KFileNameKey,		//iFileNameKey
+	KUnlimitPlayContent,		//iUniqueId;
+	ContentAccess::EPlay,		//iIntent;
+	KErrNone,			//iExpectedError;	
+	TDrmTestParams::EFileName					// iSourceType;
+	};
+	
+const TDrmTestParams KDrm1014 =
+	{
+	KFileNameKey,		//iFileNameKey
+	KUnlimitPlayContent,		//iUniqueId;
+	ContentAccess::EPlay,		//iIntent;
+	KErrNone,			//iExpectedError;	
+	TDrmTestParams::EFileName,	// iSourceType;
+	1,							// iNumPlayLoops
+	TDrmTestParams::EAlloc			// iTestMode
+	};
+	
+const TDrmTestParams KDrm1015 =
+	{
+	KFileNameKey,		//iFileNameKey
+	KUnlimitPlayContent,		//iUniqueId;
+	ContentAccess::EPlay,		//iIntent;
+	KErrNone,					//iExpectedError;	
+	TDrmTestParams::EFileHandle,// iSourceType;
+	1,							// iNumPlayLoops							
+	TDrmTestParams::EAlloc		// iTestMode
+	};
+	
+const TDrmTestParams KDrm1016 =
+	{
+	KFileNameKey,		//iFileNameKey
+	KUnlimitPlayContent,		//iUniqueId;
+	ContentAccess::EPlay,		//iIntent;
+	KErrNone,					//iExpectedError;	
+	TDrmTestParams::EFileHandle,// iSourceType;
+	1							// iNumPlayLoops							
+	};	
+
+
+/**
+ * NewTestSuite is exported at ordinal 1
+ * this provides the interface to allow schedule test
+ * to create instances of this test suite
+ */
+EXPORT_C CTestSuite* NewTestSuiteL()
+    {
+	CTestMmfMidiClntSuite* result = new (ELeave) CTestMmfMidiClntSuite;
+	CleanupStack::PushL(result);
+	result->ConstructL();
+	CleanupStack::Pop(); // result
+	return result;
+    }
+
+/**
+ * destructor
+ */
+CTestMmfMidiClntSuite::~CTestMmfMidiClntSuite()
+	{
+	}
+
+/**
+ * make a version string available for test system
+ * @return version string
+ */
+TPtrC CTestMmfMidiClntSuite::GetVersion()
+	{
+	_LIT(KTxtVersion,"1.0");
+	return KTxtVersion();
+	}
+
+/**
+ * Constructor for test suite
+ * this creates all the test steps and 
+ * stores them inside CTestMmfMidiClntSuite 
+ */
+void CTestMmfMidiClntSuite::InitialiseL()
+	{
+	// store the name of this test suite 
+	iSuiteName = _L("MMF_MIDICLNT");
+
+	//TTimeIntervalMicroSeconds position = TInt64(0);
+
+	_LIT(KSectionOne, "SectionOne");
+	_LIT(KSectionTwo, "SectionTwo");
+	_LIT(KFilename, "filename");
+
+// POSITIVE TEST
+	
+	//Return the state
+	AddTestStepL( CTestMidiClntGetState::NewL( _L("MM-MMF-MIDICLNT-U-0016"), KSectionOne, KFilename, ETestValid, ETrue));
+
+	//Open 'maintest.wav'
+	AddTestStepL( CTestMidiClntOpenFile::NewL( _L("MM-MMF-MIDICLNT-U-0018"), KSectionOne, KFilename, ETrue) );
+	
+	//Open Descriptor
+	AddTestStepL( CTestMidiClntOpenDes::NewL( _L("MM-MMF-MIDICLNT-U-0020"), KSectionOne, KFilename, ETrue) );
+
+	//Open valid URL - www.yahoo.co.uk
+	AddTestStepL( CTestMidiClntOpenUrl::NewL( _L("MM-MMF-MIDICLNT-U-0023"), KSectionOne, KFilename, ETrue) );
+
+	//Closes any currently open resource and deletes any plugins in use
+	AddTestStepL( CTestMidiClntClose::NewL( _L("MM-MMF-MIDICLNT-U-0027")));
+
+	//Initialize or resume playback
+	AddTestStepL( CTestMidiClntPlay::NewL( _L("MM-MMF-MIDICLNT-U-0029"),  ETestValid));
+
+	//Stops playback of a resource
+	AddTestStepL( CTestMidiClntStop::NewL( _L("MM-MMF-MIDICLNT-U-0035"), ETestValid));
+
+	//Play a single note
+	AddTestStepL( CTestMidiClntPlayNote::NewL( _L("MM-MMF-MIDICLNT-U-0038"), ETestValid));
+
+	//Stop all notes
+	AddTestStepL( CTestMidiClntStopNotes::NewL( _L("MM-MMF-MIDICLNT-U-0047"), ETestValid));
+
+	//Commence playback of a note
+	AddTestStepL( CTestMidiClntNoteOn::NewL( _L("MM-MMF-MIDICLNT-U-0050"), ETestValid));
+
+	//Terminate playback of a note
+	AddTestStepL( CTestMidiClntNoteOff::NewL( _L("MM-MMF-MIDICLNT-U-0056"), ETestValid));
+
+	//Returns the current tempo
+	AddTestStepL( CTestMidiClntTempoMicroBeatsPerMinute::NewL( _L("MM-MMF-MIDICLNT-U-0060"), ETestValid));
+
+	//Sets the tempo
+	AddTestStepL( CTestMidiClntSetTempo::NewL( _L("MM-MMF-MIDICLNT-U-0062"), ETestValid));
+
+	//Returns the pitch shift
+	AddTestStepL( CTestMidiClntGetPitchTranspositionCents::NewL( _L("MM-MMF-MIDICLNT-U-0066"),ETestValid));
+
+	//Set the pitch shift
+	AddTestStepL( CTestMidiClntSetPitchTransposition::NewL( _L("MM-MMF-MIDICLNT-U-0072"),ETestValid));
+
+	//Returns the length of midi resource
+	AddTestStepL( CTestMidiClntDurationMicroSeconds::NewL( _L("MM-MMF-MIDICLNT-U-0076"), ETestValid));
+
+	//The length of midi resource by Beats
+	AddTestStepL( CTestMidiClntDurationMicroBeats::NewL( _L("MM-MMF-MIDICLNT-U-0078"), ETestValid));
+
+	//Number of tracks
+	AddTestStepL( CTestMidiClntNumTracks::NewL( _L("MM-MMF-MIDICLNT-U-0080"), ETestValid));
+
+	//Mutes a particular track
+	AddTestStepL( CTestMidiClntSetTrackMute::NewL( _L("MM-MMF-MIDICLNT-U-0082"), ETestValid));
+
+	//Channels Supported
+	AddTestStepL( CTestChannelsSupported::NewL( _L("MM-MMF-MIDICLNT-U-0085"), ETestValid));
+
+	//Queries the type
+	AddTestStepL( CTestMidiClntMimeType::NewL( _L("MM-MMF-MIDICLNT-U-0087"), ETestValid));
+
+	//Current temporal position
+	AddTestStepL( CTestMidiClntReturnPositionMicroSeconds::NewL( _L("MM-MMF-MIDICLNT-U-0092"), ETestValid));
+	
+	//Change the position
+	AddTestStepL( CTestMidiClntSetPositionMicroSeconds::NewL( _L("MM-MMF-MIDICLNT-U-0095"), ETestValid));
+
+	//Current metrical position
+	AddTestStepL( CTestMidiClntReturnsPositionMicroBeats::NewL( _L("MM-MMF-MIDICLNT-U-0099"), ETestValid));
+
+	//Change the metrical position
+	AddTestStepL( CTestMidiClntSetPositionMicroBeats::NewL( _L("MM-MMF-MIDICLNT-U-0102"), ETestValid));
+
+	//Sets the frequency
+	AddTestStepL( CTestSetSyncUpdateCallbackInterval::NewL( _L("MM-MMF-MIDICLNT-U-0106"), ETestValid));
+
+	//Sends a midi message 
+	AddTestStepL( CTestSendMessage::NewL( _L("MM-MMF-MIDICLNT-U-0111"), ETestValid, _L8("MIDI Message")) );
+
+	//Sends a mip message 
+	AddTestStepL( CTestSendMipMessage::NewL( _L("MM-MMF-MIDICLNT-U-0115"), ETestValid) );
+	
+	//The number of sound banks
+	AddTestStepL( CTestNumberOfBanks::NewL( _L("MM-MMF-MIDICLNT-U-0121"),ETestValid));
+
+	//The identifier of a sound bank
+	AddTestStepL( CTestGetBankId::NewL( _L("MM-MMF-MIDICLNT-U-0124"),ETestValid));
+
+	//Loads a custom sound bank
+	AddTestStepL( CTestLoadCustomBank::NewL( _L("MM-MMF-MIDICLNT-U-0129"),ETestValid));
+
+	//Removes a custom sound bank
+//	AddTestStepL( CTestUnloadCustomBank::NewL( _L("MM-MMF-MIDICLNT-U-0133"),ETestValid));
+
+	//Unload all custom banks  -- DEFERED (No suitable Midi Controller)
+//	AddTestStepL( CTestUnloadAllCustomBanks::NewL( _L("MM-MMF-MIDICLNT-U-0135"),ETestValid));
+
+	//Gets the number of instruments
+	AddTestStepL( CTestNumberOfInstruments::NewL( _L("MM-MMF-MIDICLNT-U-0137"),ETestValid));
+
+	//Gets the identifier of a instrument
+	AddTestStepL( CTestGetInstrumentId::NewL( _L("MM-MMF-MIDICLNT-U-0141"),ETestValid));
+
+	//Gets the name of a instrument
+	AddTestStepL( CTestReturnsInstrumentName::NewL( _L("MM-MMF-MIDICLNT-U-0146"),ETestValid));
+
+	//Sets a channel to use the instrument
+	AddTestStepL( CTestSetInstrument::NewL( _L("MM-MMF-MIDICLNT-U-0148"),ETestValid));
+
+	//Loads a custom Instrument
+	AddTestStepL( CTestLoadCustomInstrument::NewL( _L("MM-MMF-MIDICLNT-U-0151"),ETestValid));
+
+	//Removes a instrument
+	AddTestStepL( CTestUnloadCustomInstrument::NewL( _L("MM-MMF-MIDICLNT-U-0155"),ETestValid ));
+
+	//Queries the name of a particular percussion key
+	AddTestStepL( CTestPercussionKeyName::NewL( _L("MM-MMF-MIDICLNT-U-0159"),ETestValid));
+	
+	//Stop Time
+	AddTestStepL( CTestStopTime::NewL( _L("MM-MMF-MIDICLNT-U-0161"),ETestValid));
+
+	//Set Stop Time
+	AddTestStepL( CTestSetStopTime::NewL( _L("MM-MMF-MIDICLNT-U-0163"),ETestValid));
+
+	//Set the number of times to repeat
+	AddTestStepL( CTestSetRepeats::NewL( _L("MM-MMF-MIDICLNT-U-0168"),ETestValid));
+
+	//Gets the polyphony
+	AddTestStepL( CTestPolyphony::NewL( _L("MM-MMF-MIDICLNT-U-0173"),ETestValid));
+
+	//volume setting of a channel
+	AddTestStepL( CTestReturnChannelVolume::NewL( _L("MM-MMF-MIDICLNT-U-0174"), ETestValid));
+
+	//Set the volume of a channel
+	AddTestStepL( CTestSetChannelVolume::NewL( _L("MM-MMF-MIDICLNT-U-0177"), ETestValid));
+
+	//Set the muting state of a channel 
+	AddTestStepL( CTestSetChannelMute::NewL( _L("MM-MMF-MIDICLNT-U-0181"), ETestValid));
+
+	//Get the overall volume of the midi client
+	AddTestStepL( CTestReturnVolume::NewL( _L("MM-MMF-MIDICLNT-U-0183"), ETestValid));
+
+	//Maximum volume setting
+	AddTestStepL( CTestReturnMaxVolume::NewL( _L("MM-MMF-MIDICLNT-U-0184"), ETestValid));
+
+	//Set the overall volume
+	AddTestStepL( CTestSetVolume::NewL( _L("MM-MMF-MIDICLNT-U-0185"), ETestValid));
+
+	//Length of time over which the volume is faded up
+	AddTestStepL( CTestSetVolumeRamp::NewL( _L("MM-MMF-MIDICLNT-U-0188"), ETestValid));
+
+	//Get the stereo balance value
+	AddTestStepL( CTestGetBalance::NewL( _L("MM-MMF-MIDICLNT-U-0191"), ETestValid));
+
+	//Set the stereo balance value
+	AddTestStepL( CTestSetBalance::NewL( _L("MM-MMF-MIDICLNT-U-0193"), ETestValid));
+
+	//Set the priority 
+	AddTestStepL( CTestSetPriority::NewL( _L("MM-MMF-MIDICLNT-U-0197"), ETestValid));
+
+	//Get the number of meta data entries
+	AddTestStepL( CTestNumberOfXmfMetaDataEntries::NewL( _L("MM-MMF-MIDICLNT-U-0199"), ETestValid));
+
+	//Retrieve the specified meta data entry
+//	AddTestStepL( CTestGetXmfMetaDataEntry::NewL( _L("MM-MMF-MIDICLNT-U-0201"), ETestValid));
+
+	//Returns the current playback rate
+	AddTestStepL( CTestMidiClntReturnPlaybackRate::NewL( _L("MM-MMF-MIDICLNT-U-0210"), ETestValid));
+
+	//Sets the playback rate
+	AddTestStepL( CTestMidiClntSetPlaybackRate::NewL( _L("MM-MMF-MIDICLNT-U-0211"), ETestValid));
+
+	//Sets the playback rate [No Resource]	- DEFERRED
+	//AddTestStepL( CTestMidiClntSetPlaybackRate::NewL( _L("MM-MMF-MIDICLNT-U-0226"), ETestNoResource));
+	
+	//Sets the playback rate [Out of range high] - DEFERRED
+	//AddTestStepL( CTestMidiClntSetPlaybackRate::NewL( _L("MM-MMF-MIDICLNT-U-0227"), ETestOutOfRangeHigh));
+
+	//Sets the playback rate [Out of range low] - DEFERRED
+	//AddTestStepL( CTestMidiClntSetPlaybackRate::NewL( _L("MM-MMF-MIDICLNT-U-0228"), ETestOutOfRangeLow));
+
+	//Query the maximum playback rate
+	AddTestStepL( CTestMidiClntReturnMaxPlayRate::NewL( _L("MM-MMF-MIDICLNT-U-0213"), ETestValid));
+
+	//Query the minimum playback rate
+	AddTestStepL( CTestMidiClntReturnMinPlayRate::NewL( _L("MM-MMF-MIDICLNT-U-0214"), ETestValid));
+
+	//Plugin required to do negative tests//
+	//Query the instrument assigned to a specified channel.
+	AddTestStepL( CTestGetInstrument::NewL( _L("MM-MMF-MIDICLNT-U-0215"), ETestValid));
+
+	//Loads an individual instrument from descriptor
+	AddTestStepL( CTestLoadCustomInstrumentData::NewL( _L("MM-MMF-MIDICLNT-U-0219"), ETestValid));
+
+	// Returns the maximum volume setting
+	AddTestStepL( CTestMaxChannelVolume::NewL( _L("MM-MMF-MIDICLNT-U-0225"), ETestValid));
+	
+	// Checks that the client can hold more than 10 events in its queue
+	AddTestStepL( CTestMidiClntThirteenMidiEvents::NewL( _L("MM-MMF-MIDICLNT-U-0301"), ETestValid));
+	
+	// Checks that the transtion from EMidiStateClosedDisengaged to EMidiStateClosedEngaged is made without any problems.
+	AddTestStepL( CTestTrasitionFromEClosedToEClosedEngaged::NewL( _L("MM-MMF-MIDICLNT-U-0302"), ETestValid));
+
+	// Checks that the transtion from EMidiStateClosedDisengaged to ECOpenEngaged is made without any problems.
+	AddTestStepL( CTestTrasitionFromEClosedToEOpenEngaged::NewL( _L("MM-MMF-MIDICLNT-U-0303"), ETestValid));
+
+	// Checks that the transtion from EMidiStateOpenEngaged to EMidiStateClosedEngaged is made without any problems.
+	AddTestStepL( CTestTrasitionFromEOpenEngagedToEClosedEngaged::NewL( _L("MM-MMF-MIDICLNT-U-0304"), ETestValid));
+	
+	// Checks that the transtion from EMidiStateClosedEngaged to EMidiStateClosedDisengaged is made without any problems (using Stop()).
+	AddTestStepL( CTestTrasitionFromEClosedEngagedToEClosed::NewL( _L("MM-MMF-MIDICLNT-U-0305"), ETestValid));
+
+	AddTestStepL( CTestMidiOpenFileHandleRepeat::NewL( _L("MM-MMF-MIDICLNT-U-0306"), KSectionOne, KFilename, ETrue) );
+
+// NEGATIVE TEST
+
+	//Return the state before any initialisation has been done
+//	AddTestStepL( CTestMidiClntGetState::NewL( _L("MM-MMF-MIDICLNT-U-0017"), KSectionOne, KFilename, ETestNegative, ETrue));
+
+	//Open 'Invalid File Name'
+	AddTestStepL( CTestMidiClntOpenFile::NewL( _L("MM-MMF-MIDICLNT-U-0019"), KSectionOne, KFilename, ETrue) );
+
+	//Open NULL Descriptor
+	AddTestStepL( CTestMidiClntOpenDes::NewL( _L("MM-MMF-MIDICLNT-U-0021"), KSectionOne, KFilename, ETrue) );
+
+	//Open Invalid Data Descriptor
+	AddTestStepL( CTestMidiClntOpenDes::NewL( _L("MM-MMF-MIDICLNT-U-0022"), KSectionOne, KFilename, ETrue) );
+
+	//Open invalid URL - www.yahoo.coo.uuk
+	AddTestStepL( CTestMidiClntOpenUrl::NewL( _L("MM-MMF-MIDICLNT-U-0024"), KSectionOne, KFilename, ETrue) );
+
+	//Open invalid IAP - TInt aIapId = KUseInvalidIap
+	AddTestStepL( CTestMidiClntOpenUrl::NewL( _L("MM-MMF-MIDICLNT-U-0025"), KSectionOne, KFilename, ETrue) );
+
+	//Open invalid MIME type - TDesC8& = Invalid MIME Type
+	AddTestStepL( CTestMidiClntOpenUrl::NewL( _L("MM-MMF-MIDICLNT-U-0026"), KSectionOne, KFilename, ETrue) );
+
+	//Closes any currently open resource and deletes any plugins in use (No plugin available)
+	AddTestStepL( CTestMidiClntClose::NewL( _L("MM-MMF-MIDICLNT-U-0028")));
+
+	//Initiate or resume playback (No plugin available)
+//	AddTestStepL( CTestMidiClntPlay::NewL( _L("MM-MMF-MIDICLNT-U-0030"),  ETestNoPlugin));
+	
+	//Initiate or resume playback (Invalid System State)
+//	AddTestStepL( CTestMidiClntPlay::NewL( _L("MM-MMF-MIDICLNT-U-0031"), ETestInvalidState));
+
+	// Disabled until real MIDI controller available
+	//Stops playback of a resource (No Resource Is Playing)
+	//AddTestStepL( CTestMidiClntStop::NewL( _L("MM-MMF-MIDICLNT-U-0036"), ETestNoResource));
+
+	//Stops playback of a resource (No Plugin Available)
+	AddTestStepL( CTestMidiClntStop::NewL( _L("MM-MMF-MIDICLNT-U-0037"), ETestNoPlugin));
+
+	//Play a single note (Zero duration)
+//	AddTestStepL( CTestMidiClntPlayNote::NewL( _L("MM-MMF-MIDICLNT-U-0039"), ETestZeroDurationOutOfRange));
+
+	//Play a single note (Invalid Channel)
+	AddTestStepL( CTestMidiClntPlayNote::NewL( _L("MM-MMF-MIDICLNT-U-0040"), ETestInvalidChannelOutOfRange));
+
+	//Play a single note (Note out of range high)
+	AddTestStepL( CTestMidiClntPlayNote::NewL( _L("MM-MMF-MIDICLNT-U-0041"), ETestNoteHighOutOfRange));
+
+	//Play a single note (Note out of range low)
+	AddTestStepL( CTestMidiClntPlayNote::NewL( _L("MM-MMF-MIDICLNT-U-0042"), ETestNoteLowOutOfRange));
+
+	//Play a single note (Attack out of range high)
+	AddTestStepL( CTestMidiClntPlayNote::NewL( _L("MM-MMF-MIDICLNT-U-0043"), ETestAttackHighOutOfRange));
+
+	//Play a single note (Attack out of range low)
+	AddTestStepL( CTestMidiClntPlayNote::NewL( _L("MM-MMF-MIDICLNT-U-0044"), ETestAttackLowOutOfRange));
+
+	//Play a single note (Release out of range high)
+	AddTestStepL( CTestMidiClntPlayNote::NewL( _L("MM-MMF-MIDICLNT-U-0045"), ETestReleaseHighOutOfRange));
+
+	//Play a single note (Release out of range low)
+	AddTestStepL( CTestMidiClntPlayNote::NewL( _L("MM-MMF-MIDICLNT-U-0046"), ETestReleaseLowOutOfRange));
+
+	//Stop all notes (Invalid Channel Number)
+	AddTestStepL( CTestMidiClntStopNotes::NewL( _L("MM-MMF-MIDICLNT-U-0048"), ETestInvalidChannelOutOfRange));
+
+	//Stop all notes (No Note Available)
+	AddTestStepL( CTestMidiClntStopNotes::NewL( _L("MM-MMF-MIDICLNT-U-0049"), ETestNoNoteAvailable));
+
+	//Commence playback of a note (Invalid Channel Number)
+	AddTestStepL( CTestMidiClntNoteOn::NewL( _L("MM-MMF-MIDICLNT-U-0051"), ETestInvalidChannelOutOfRange));
+
+	//Commence playback of a note (Out of Range Low Note)
+	AddTestStepL( CTestMidiClntNoteOn::NewL( _L("MM-MMF-MIDICLNT-U-0052"), ETestNoteLowOutOfRange));
+
+	//Commence playback of a note (Out of Range High Note)
+	AddTestStepL( CTestMidiClntNoteOn::NewL( _L("MM-MMF-MIDICLNT-U-0053"), ETestNoteHighOutOfRange));
+
+	//Commence playback of a note (Out of Range Low Velocity)
+	AddTestStepL( CTestMidiClntNoteOn::NewL( _L("MM-MMF-MIDICLNT-U-0054"), ETestVelocityLowOutOfRange));
+
+	//Commence playback of a note (Out of Range High Velocity)
+	AddTestStepL( CTestMidiClntNoteOn::NewL( _L("MM-MMF-MIDICLNT-U-0055"), ETestVelocityHighOutOfRange));
+
+	//Terminate playback of a note (Invalid Channel Number)
+	AddTestStepL( CTestMidiClntNoteOff::NewL( _L("MM-MMF-MIDICLNT-U-0057"), ETestInvalidChannelOutOfRange));
+
+	//Terminate playback of a note (No Note Currently Playing)
+	AddTestStepL( CTestMidiClntNoteOff::NewL( _L("MM-MMF-MIDICLNT-U-0058"), ETestNoNoteAvailable));
+
+	//Terminate playback of a note (Selected Note / Velocity Set is different to those playing)
+//	AddTestStepL( CTestMidiClntNoteOff::NewL( _L("MM-MMF-MIDICLNT-U-0059"), ETestDifferentNoteVelocity));
+
+	//Returns the current tempo (No Resource is Open)
+//	AddTestStepL( CTestMidiClntTempoMicroBeatsPerMinute::NewL( _L("MM-MMF-MIDICLNT-U-0061"), ETestNoResource ));
+
+	//Sets the tempo (Beats Out of Range Low)
+	AddTestStepL( CTestMidiClntSetTempo::NewL( _L("MM-MMF-MIDICLNT-U-0063"), ETestBeatsLowOutOfRange));
+
+// Does not calculate errors on out of range values, all values above 0 are a pass, Invalid test
+	//Sets the tempo (Beats Out of Range High)
+//	AddTestStepL( CTestMidiClntSetTempo::NewL( _L("MM-MMF-MIDICLNT-U-0064"), ETestBeatsHighOutOfRange));
+
+	//Sets the tempo (No Resource is Open)
+//	AddTestStepL( CTestMidiClntSetTempo::NewL( _L("MM-MMF-MIDICLNT-U-0065"), ETestNoResource));
+
+	//Returns the pitch shift (No Resource is Open)
+	//AddTestStepL( CTestMidiClntGetPitchTranspositionCents::NewL( _L("MM-MMF-MIDICLNT-U-0067"),ETestNoResource ));
+
+	//Set the pitch shift (No Resource is Open)
+	//AddTestStepL( CTestMidiClntSetPitchTransposition::NewL( _L("MM-MMF-MIDICLNT-U-0073"),ETestNoResource ));
+
+	//Set the pitch shift (Out of Range Value High)
+	AddTestStepL( CTestMidiClntSetPitchTransposition::NewL( _L("MM-MMF-MIDICLNT-U-0074"),ETestOutOfRangeHigh ));
+
+	//Set the pitch shift (Out of Range Value Low)
+//	AddTestStepL( CTestMidiClntSetPitchTransposition::NewL( _L("MM-MMF-MIDICLNT-U-0075"),ETestOutOfRangeLow ));
+
+	//Returns the length of midi resource (No Resource is Open)
+//	AddTestStepL( CTestMidiClntDurationMicroSeconds::NewL( _L("MM-MMF-MIDICLNT-U-0077"), ETestNoResource));
+
+	//The length of midi resource by Beats (No Resource is Open)
+//	AddTestStepL( CTestMidiClntDurationMicroBeats::NewL( _L("MM-MMF-MIDICLNT-U-0079"), ETestNoResource));
+
+	// Disabled until real MIDI controller available
+	//Number of tracks (No Resource is Open)
+	//AddTestStepL( CTestMidiClntNumTracks::NewL( _L("MM-MMF-MIDICLNT-U-0081"),ETestNoResource));
+
+	//Mutes a particular track (Invalid Track)
+	AddTestStepL( CTestMidiClntSetTrackMute::NewL( _L("MM-MMF-MIDICLNT-U-0083"), ETestInvalidTrack));
+
+	//Mutes a particular track (No Resource is Open)
+//	AddTestStepL( CTestMidiClntSetTrackMute::NewL( _L("MM-MMF-MIDICLNT-U-0084"), ETestNoResource));
+
+	// Disabled until real MIDI controller available
+	//Number of channels (No Resource is Open)
+	//AddTestStepL( CTestChannelsSupported::NewL( _L("MM-MMF-MIDICLNT-U-0086"),ETestNoResource));
+
+	//Queries the type (No Resource is Open)
+//	AddTestStepL( CTestMidiClntMimeType::NewL( _L("MM-MMF-MIDICLNT-U-0088"), ETestNoResource));
+
+	//Current temporal position (No Resource is Open)
+//	AddTestStepL( CTestMidiClntReturnPositionMicroSeconds::NewL( _L("MM-MMF-MIDICLNT-U-0093"), ETestNoResource));
+
+	//Current temporal position (Resource is not Playing)
+//	AddTestStepL( CTestMidiClntReturnPositionMicroSeconds::NewL( _L("MM-MMF-MIDICLNT-U-0094"), ETestNoResourcePlaying));
+
+	//Change the position (No Resource is Open)
+//	AddTestStepL( CTestMidiClntSetPositionMicroSeconds::NewL( _L("MM-MMF-MIDICLNT-U-0096"), ETestNoResource));
+
+//Taken out as controller does not check values
+	//Change the position (Out of Range Value Low)
+//	AddTestStepL( CTestMidiClntSetPositionMicroSeconds::NewL( _L("MM-MMF-MIDICLNT-U-0097"), ETestMicrosecondsLowOutOfRange));
+
+//Taken out as controller does not check values
+	//Change the position (Out of Range Value High)
+//	AddTestStepL( CTestMidiClntSetPositionMicroSeconds::NewL( _L("MM-MMF-MIDICLNT-U-0098"), ETestMicrosecondsHighOutOfRange));
+
+	//Current metrical position (No Resource is Open)
+//	AddTestStepL( CTestMidiClntReturnsPositionMicroBeats::NewL( _L("MM-MMF-MIDICLNT-U-0100"), ETestNoResource));
+
+	//Current metrical position (Resource is not Playing)
+//	AddTestStepL( CTestMidiClntReturnsPositionMicroBeats::NewL( _L("MM-MMF-MIDICLNT-U-0101"), ETestNoResourcePlaying));
+
+	//Change the metrical position (No Resource is Open)
+//	AddTestStepL( CTestMidiClntSetPositionMicroBeats::NewL( _L("MM-MMF-MIDICLNT-U-0103"), ETestNoResource));
+
+//Taken out as controller does not check values
+	//Change the metrical position (Out of Range Value Low)
+//	AddTestStepL( CTestMidiClntSetPositionMicroBeats::NewL( _L("MM-MMF-MIDICLNT-U-0104"), ETestMicrobeatsLowOutOfRange));
+
+//Taken out as controller does not check values
+	//Change the metrical position (Out of Range Value High)
+//	AddTestStepL( CTestMidiClntSetPositionMicroBeats::NewL( _L("MM-MMF-MIDICLNT-U-0105"), ETestMicrobeatsHighOutOfRange ));
+
+	//Sets the frequency (Both Arguments are Set to Zero)
+//	AddTestStepL( CTestSetSyncUpdateCallbackInterval::NewL( _L("MM-MMF-MIDICLNT-U-0107"), ETestMicrosecondsMicrobeatsZero));
+
+	//Sets the frequency (Microseconds Value is Out of Range)
+	AddTestStepL( CTestSetSyncUpdateCallbackInterval::NewL( _L("MM-MMF-MIDICLNT-U-0108"), ETestMicrosecondsLowOutOfRange));
+
+	//Sets the frequency (Out of Range Interval Low)
+	AddTestStepL( CTestSetSyncUpdateCallbackInterval::NewL( _L("MM-MMF-MIDICLNT-U-0109"), ETestMicrobeatsLowOutOfRange));
+
+// Does not calculate errors on out of range values, all values above 0 are a pass, Invalid test
+	//Sets the frequency (Out of Range Interval High)
+//	AddTestStepL( CTestSetSyncUpdateCallbackInterval::NewL( _L("MM-MMF-MIDICLNT-U-0110"), ETestMicrobeatsHighOutOfRange));
+
+	//Sends a midi message (Call With NULL Message)
+//	AddTestStepL( CTestSendMessage::NewL( _L("MM-MMF-MIDICLNT-U-0112"), ETestNullMessage, KNullDesC8) );
+
+	//Sends a midi message (Call With Unsupported Message)
+//	AddTestStepL( CTestSendMessage::NewL( _L("MM-MMF-MIDICLNT-U-0113"), ETestUnsupported, _L8("Unsupported MIDI Message")) );
+
+	//Sends a midi message (Call With Corrupt Message)
+//	AddTestStepL( CTestSendMessage::NewL( _L("MM-MMF-MIDICLNT-U-0114"), ETestCorrupt, _L8("Corrupt MIDI Message")) );
+
+	//Sends a mip message (Invalid Device ID)
+//	AddTestStepL( CTestSendMipMessage::NewL( _L("MM-MMF-MIDICLNT-U-0116"), ETestInvalidId ));
+
+	//Sends a mip message  (NULL Message)
+//	AddTestStepL( CTestSendMipMessage::NewL( _L("MM-MMF-MIDICLNT-U-0117"), ETestNullMessage) );
+
+	//Sends a mip message (Unsupported Message)
+//	AddTestStepL( CTestSendMipMessage::NewL( _L("MM-MMF-MIDICLNT-U-0118"), ETestUnsupported) );
+
+	// Duplicate requirement
+	//Sends a mip message (Unsupported Message)
+//	AddTestStepL( CTestSendMipMessage::NewL( _L("MM-MMF-MIDICLNT-U-0119"), ETestUnsupported ));
+
+	//Sends a mip message (Corrupt Message)
+//	AddTestStepL( CTestSendMipMessage::NewL( _L("MM-MMF-MIDICLNT-U-0120"), ETestCorrupt) );
+
+	//The number of sound banks (No Custom banks Exist)
+//	AddTestStepL( CTestNumberOfBanks::NewL( _L("MM-MMF-MIDICLNT-U-0122"), ETestNoCustomBanks) );
+
+	//The number of sound banks (No Standard bank Exist)
+//	AddTestStepL( CTestNumberOfBanks::NewL( _L("MM-MMF-MIDICLNT-U-0123"), ETestNoStandardBanks ));
+
+	//The identifier of a sound bank (Invalid Bank Index)
+//	AddTestStepL( CTestGetBankId::NewL( _L("MM-MMF-MIDICLNT-U-0125"), ETestInvalidIndex) );
+
+	//The identifier of a sound bank (No Custom Banks Exist)
+//	AddTestStepL( CTestGetBankId::NewL( _L("MM-MMF-MIDICLNT-U-0126"), ETestNoCustomBanks) );
+
+	//The identifier of a sound bank  (No Standard Banks Exist)
+//	AddTestStepL( CTestGetBankId::NewL( _L("MM-MMF-MIDICLNT-U-0127"), ETestNoStandardBanks ));
+
+	//Loads a custom sound bank (Null Filename)
+//	AddTestStepL( CTestLoadCustomBank::NewL( _L("MM-MMF-MIDICLNT-U-0130"), ETestNullMessage) );
+
+	//Loads a custom sound bank (lnvalid Filename)
+//	AddTestStepL( CTestLoadCustomBank::NewL( _L("MM-MMF-MIDICLNT-U-0131"), ETestInvalidMessage) );
+
+	//Loads a custom sound bank (Unsupported File)
+//	AddTestStepL( CTestLoadCustomBank::NewL( _L("MM-MMF-MIDICLNT-U-0132"), ETestUnsupported) );
+
+	//Removes a custom sound bank (ID of Bank Not Loaded)
+//	AddTestStepL( CTestUnloadCustomBank::NewL( _L("MM-MMF-MIDICLNT-U-0134"), ETestNotLoaded ));
+
+	//Gets the number of instruments  (Invalid Bank Index)
+//	AddTestStepL( CTestNumberOfInstruments::NewL( _L("MM-MMF-MIDICLNT-U-0138"), ETestInvalidIndex ));
+
+	//Gets the number of instruments  (No Custome Banks Exist)
+//	AddTestStepL( CTestNumberOfInstruments::NewL( _L("MM-MMF-MIDICLNT-U-0139"), ETestNoCustomBanks ));
+
+	//Gets the number of instruments  (No Standard Banks Exist)
+//	AddTestStepL( CTestNumberOfInstruments::NewL( _L("MM-MMF-MIDICLNT-U-0140"), ETestNoStandardBanks ));
+
+	//Gets the identifier of a instrument  (Invalid Bank ID)
+//	AddTestStepL( CTestGetInstrumentId::NewL( _L("MM-MMF-MIDICLNT-U-0142"), ETestInvalidId ));
+
+	//Gets the identifier of a instrument (No Custome Banks Exist)
+//	AddTestStepL( CTestGetInstrumentId::NewL( _L("MM-MMF-MIDICLNT-U-0143"), ETestNoCustomBanks ));
+
+	//Gets the identifier of a instrument (No Standard Banks Exist)
+//	AddTestStepL( CTestGetInstrumentId::NewL( _L("MM-MMF-MIDICLNT-U-0144"), ETestNoStandardBanks ));
+
+	//Gets the identifier of a instrument (Invalid Program/Instrument Index)
+//	AddTestStepL( CTestGetInstrumentId::NewL( _L("MM-MMF-MIDICLNT-U-0145"), ETestInvalidIndex ));
+
+//Check this//
+	//Change it to return EFail for failing negative test
+	//Gets the name of a instrument (Invalid Program/Instrument Information)
+	AddTestStepL( CTestReturnsInstrumentName::NewL( _L("MM-MMF-MIDICLNT-U-0147"), ETestNegative ));
+//
+
+	//Sets a channel to use the instrument  (Invalid Channel)
+//	AddTestStepL( CTestSetInstrument::NewL( _L("MM-MMF-MIDICLNT-U-0149"), ETestInvalidChannel ));
+
+	//Sets a channel to use the instrument (Invalid Program/Instrument ID)
+//	AddTestStepL( CTestSetInstrument::NewL( _L("MM-MMF-MIDICLNT-U-0150"), ETestInvalidId ));
+
+	//Loads a custom Instrument (Invalid Bank ID)
+//	AddTestStepL( CTestLoadCustomInstrument::NewL( _L("MM-MMF-MIDICLNT-U-0152"), ETestInvalidId ));
+
+	//Loads a custom Instrument (Load Program/Instrument Already Loaded)
+//	AddTestStepL( CTestLoadCustomInstrument::NewL( _L("MM-MMF-MIDICLNT-U-0153"), ETestAlreadyLoaded ));
+
+	//Loads a custom Instrument (Load Unsupported Program/Instrument)
+//	AddTestStepL( CTestLoadCustomInstrument::NewL( _L("MM-MMF-MIDICLNT-U-0154"), ETestUnsupported ));
+
+	//Removes a instrument (Invalid Bank ID)
+//	AddTestStepL( CTestUnloadCustomInstrument::NewL( _L("MM-MMF-MIDICLNT-U-0156"), ETestInvalidId ));
+
+	//Removes a instrument (ID of Program not Loaded)
+//	AddTestStepL( CTestUnloadCustomInstrument::NewL( _L("MM-MMF-MIDICLNT-U-0157"), ETestNotLoaded ));
+
+	//Removes a instrument (Non-unloadable Program/Instrument)
+//	AddTestStepL( CTestUnloadCustomInstrument::NewL( _L("MM-MMF-MIDICLNT-U-0158"), ETestNotUnloadable ));
+
+	//Queries the name of a particular percussion key (Invalid Note)
+//	AddTestStepL( CTestPercussionKeyName::NewL( _L("MM-MMF-MIDICLNT-U-0160"), ETestInvalidId ));
+
+	// Disabled until real MIDI controller available
+	//Stop Time (No Midi Resource is Open)
+	//AddTestStepL( CTestStopTime::NewL( _L("MM-MMF-MIDICLNT-U-0162"),ETestNoResource));
+
+	//Set Stop Time (Stop time out of range high)
+	AddTestStepL( CTestSetStopTime::NewL( _L("MM-MMF-MIDICLNT-U-0164"),ETestOutOfRangeHigh));
+
+	//Set Stop Time (Stop time out of range low)
+	AddTestStepL( CTestSetStopTime::NewL( _L("MM-MMF-MIDICLNT-U-0165"),ETestOutOfRangeLow));
+
+	//Set the number of times to repeat (Repeat: Out of Range High, Trailing Silence: Out of Range High)
+	AddTestStepL( CTestSetRepeats::NewL( _L("MM-MMF-MIDICLNT-U-0169"), ETestOutOfRange ));
+
+	//It gave no error even it is Channel16. So it should be because no plugin.
+	//volume setting of a channel (Invalid Channel)  -- DEFERED (No suitable Midi Controller)
+	AddTestStepL( CTestReturnChannelVolume::NewL( _L("MM-MMF-MIDICLNT-U-0175"), ETestInvalidChannel ));
+
+	//Set the volume of a channel (Invalid Channel Number)
+	AddTestStepL( CTestSetChannelVolume::NewL( _L("MM-MMF-MIDICLNT-U-0178"), ETestInvalidChannelOutOfRange));
+
+	//Set the volume of a channel (Volume out of Range High)
+	AddTestStepL( CTestSetChannelVolume::NewL( _L("MM-MMF-MIDICLNT-U-0179"), ETestVolumeHighOutOfRange));
+
+	//Set the volume of a channel (Volume out of Range Low)
+	AddTestStepL( CTestSetChannelVolume::NewL( _L("MM-MMF-MIDICLNT-U-0180"), ETestVolumeLowOutOfRange));
+
+//Check this
+//Is the error message 'NotSupported' corect??
+	//Set the muting state of a channel (Invalid Channel)
+	AddTestStepL( CTestSetChannelMute::NewL( _L("MM-MMF-MIDICLNT-U-0182"), ETestInvalidChannelOutOfRange));
+//
+
+//Taken out as controller does not check values
+	//Set the overall volume (Out of Range Volume Low) 
+//	AddTestStepL( CTestSetVolume::NewL( _L("MM-MMF-MIDICLNT-U-0186"), ETestVolumeLowOutOfRange));
+
+//Taken out as controller does not check values
+	//Set the overall volume (Out of Range Volume High) 
+//	AddTestStepL( CTestSetVolume::NewL( _L("MM-MMF-MIDICLNT-U-0187"), ETestVolumeHighOutOfRange));
+
+//Taken out as controller does not check values
+	//Length of time over which the volume is faded up (Out of Range Volume Low) 
+//	AddTestStepL( CTestSetVolumeRamp::NewL( _L("MM-MMF-MIDICLNT-U-0189"), ETestRampDurationLowOutOfRange));
+
+//Taken out as controller does not check values
+	//Length of time over which the volume is faded up (Out of Range Volume High) 
+//	AddTestStepL( CTestSetVolumeRamp::NewL( _L("MM-MMF-MIDICLNT-U-0190"), ETestRampDurationHighOutOfRange));
+
+	//Get the stereo balance value (Plugin Does Not Support Balance)
+//	AddTestStepL( CTestGetBalance::NewL( _L("MM-MMF-MIDICLNT-U-0192"), ETestUnsupported));
+
+	//Set the stereo balance value  (Plugin Does Not Support Balance)
+//	AddTestStepL( CTestSetBalance::NewL( _L("MM-MMF-MIDICLNT-U-0194"), ETestUnsupported));
+
+//Taken out as controller does not check values
+	//Set the stereo balance value (Out of Range Volume Low)
+//	AddTestStepL( CTestSetBalance::NewL( _L("MM-MMF-MIDICLNT-U-0195"), ETestBalanceLowOutOfRange));
+
+//Taken out as controller does not check values
+	//Set the stereo balance value (Out of Range Volume High)
+//	AddTestStepL( CTestSetBalance::NewL( _L("MM-MMF-MIDICLNT-U-0196"), ETestBalanceHighOutOfRange));
+
+//  We need this to confict and cause PreferenceConflictsCannotBeResolved
+	//Set the priority (Preference Conflicts Cannot be Resolved)  -- DEFERED (Need another Midi Client)
+//	AddTestStepL( CTestSetPriority::NewL( _L("MM-MMF-MIDICLNT-U-0198"), ETestPreferenceConflictsCannotBeResolved));
+
+// Taken out we need plugin
+	//Get the number of meta data entries  (Plugin Does Not Support Metadata)
+//	AddTestStepL( CTestNumberOfXmfMetaDataEntries::NewL( _L("MM-MMF-MIDICLNT-U-0200"), ETestUnsupported));
+
+//Causes Access Violation
+	//Retrieve the specified meta data entry (Invalid Index)
+//	AddTestStepL( CTestGetXmfMetaDataEntry::NewL( _L("MM-MMF-MIDICLNT-U-0202"), ETestMetaDataIndexInvalid));
+
+//Causes Access Violation
+	//Retrieve the specified meta data entry (Plugin Does Not Support Metadata)
+//	AddTestStepL( CTestGetXmfMetaDataEntry::NewL( _L("MM-MMF-MIDICLNT-U-0203"), ETestUnsupported));
+	
+	//Query the instrument (Invalid channel) - DEFERRED
+	//AddTestStepL( CTestGetInstrument::NewL( _L("MM-MMF-MIDICLNT-U-0216"), ETestInvalidChannel));
+
+	//Query the instrument (Invalid Id) - DEFERRED
+	//AddTestStepL( CTestGetInstrument::NewL( _L("MM-MMF-MIDICLNT-U-0217"), ETestInvalidId));
+
+	//Loads an individual instrument from descriptor (Invalid ID) - DEFERRED
+	//AddTestStepL( CTestLoadCustomInstrumentData::NewL( _L("MM-MMF-MIDICLNT-U-0220"), ETestInvalidId));
+
+	//Loads an individual instrument from descriptor (Already loaded) - DEFERRED
+	//AddTestStepL( CTestLoadCustomInstrumentData::NewL( _L("MM-MMF-MIDICLNT-U-0221"), ETestAlreadyLoaded));
+
+	//Loads an individual instrument from descriptor (Unsupported / Bad instrument data) - DEFERRED
+	//AddTestStepL( CTestLoadCustomInstrumentData::NewL( _L("MM-MMF-MIDICLNT-U-0222"), ETestUnsupported));
+	
+	AddTestStepL( CTestCheckInterface::NewL( _L("MM-MMF-MIDICLNT-U-0300"), ETestValid));
+
+	AddTestStepL(CTestStepMidiClntAllocFailNew::NewL());
+	AddTestStepL(CTestStepMidiClntAllocFailOpenFile::NewL(_L("MM-MMF-MIDICLNT-U-0200-CP")));
+	AddTestStepL(CTestStepMidiClntAllocFailOpenDes::NewL());
+	AddTestStepL(CTestStepMidiClntAllocFailOpenUrl::NewL());
+
+	//MS 3.4 File Handles API
+	//NEGATIVE TESTS
+	//Open a MIDI File containing text data and try to perform initialisation ready for playback - (Invalid File).
+	AddTestStepL( CTestMidiClntOpenFileByHandle::NewL( _L("MM-MMF-MIDICLNT-U-0223"), KSectionTwo, KFilename, ETrue, ETestValid) );
+	
+	//POSITIVE TESTS
+	//Open a file containing midi data and perform initialisation ready for playback.
+	AddTestStepL( CTestMidiClntOpenFileByHandle::NewL( _L("MM-MMF-MIDICLNT-U-1001"), KSectionOne, KFilename, ETrue, ETestValid) );
+	//Initiate or resume playback of a previously opened resource.
+	AddTestStepL( CTestMidiClntPlayFileByHandle::NewL( _L("MM-MMF-MIDICLNT-U-1002")));
+	
+	//ALLOC TESTS
+	//Alloc test to Open a file containing midi data and perform initialisation ready for playback.
+	AddTestStepL(CTestStepMidiClntAllocFailOpenFile::NewL(_L("MM-MMF-MIDICLNT-U-1003")));
+	
+	AddTestStepL(CTestDrmNegative::NewL(_L("MM-MMF-MIDICLNT-U-0321-HP"),ETestNegative ,KDrm0321));
+	AddTestStepL(CTestDrmNegative::NewL(_L("MM-MMF-MIDICLNT-U-0322-HP"),ETestNegative ,KDrm0322));
+	AddTestStepL(CTestDrmPlay::NewL(_L("MM-MMF-MIDICLNT-U-0323-HP"),ETestValid ,KDrm0323));
+	AddTestStepL(CTestDrmNegative::NewL(_L("MM-MMF-MIDICLNT-U-0324-HP"),ETestNegative ,KDrm0324));
+	AddTestStepL(CTestDrmPlay::NewL(_L("MM-MMF-MIDICLNT-U-1011-HP"),ETestValid ,KDrm1011));
+	AddTestStepL(CTestDrmPlay::NewL(_L("MM-MMF-MIDICLNT-U-1012-HP"),ETestValid ,KDrm1012));
+	AddTestStepL(CTestDrmPlayStop::NewL(_L("MM-MMF-MIDICLNT-U-1013-HP"),ETestValid ,KDrm1013));
+	AddTestStepL(CTestDrmPlay::NewL(_L("MM-MMF-MIDICLNT-U-1014-HP"),ETestValid ,KDrm1014));
+	AddTestStepL(CTestDrmPlay::NewL(_L("MM-MMF-MIDICLNT-U-1015-HP"),ETestValid ,KDrm1015));
+	AddTestStepL(CTestDrmPlayWithUI::NewL(_L("MM-MMF-MIDICLNT-U-1016-HP"),ETestValid ,KDrm1016));
+	
+	//Play a midifile without opening it and check the status while playing and after it is been  stopped.
+	AddTestStepL(CTestMidiClntPlayWithoutFile::NewL(_L("MM-MMF-MIDICLNT-U-1020-HP")));
+	//Open and Play a midifile and check the status while playing and after it is been  stopped.
+	AddTestStepL(CTestMidiClntOpenAndPlayFile::NewL(_L("MM-MMF-MIDICLNT-U-1021-HP"),KSectionOne, KFilename));
+	
+	//Open and play multiple concurrent midi objects, using shared heap mode, to check we don't run out of heaps
+	AddTestStepL(CTestMidiClntMultiSharedHeap::NewL(_L("MM-MMF-MIDICLNT-U-2000-HP"),KSectionOne, KFilename, EFalse));
+	AddTestStepL(CTestMidiClntMultiSharedHeap::NewL(_L("MM-MMF-MIDICLNT-U-2001-HP"),KSectionOne, KFilename, ETrue));
+	
+	// repeatedly create and delete multiple concurrent midi objects, using shared heap mode, to check no chunks are leaked
+	AddTestStepL(CTestMidiClntRepeatMultiSharedHeap::NewL(_L("MM-MMF-MIDICLNT-U-2002-HP"),KSectionOne, KFilename, EFalse));
+	AddTestStepL(CTestMidiClntRepeatMultiSharedHeap::NewL(_L("MM-MMF-MIDICLNT-U-2003-HP"),KSectionOne, KFilename, ETrue));
+}
+
+