devsound/a3fcharacterisationtest/src/char_a3f_devsound_initializationtest.cpp
changeset 0 b8ed18f6c07b
child 2 5c1df44f2eed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/devsound/a3fcharacterisationtest/src/char_a3f_devsound_initializationtest.cpp	Thu Oct 07 22:34:12 2010 +0100
@@ -0,0 +1,2859 @@
+// Copyright (c) 2008-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:
+//
+
+// User includes
+#include "char_a3f_devsound_initializationtest.h"
+
+/*
+ *========================================================================================================
+ * MM-A3F-DEVSOUND-CHRTZ-INIT-0001
+ */
+RA3FDevSoundToneInitializationTest::RA3FDevSoundToneInitializationTest(const TDesC& aTestName) 
+	:	RA3FDevSoundTestBase(aTestName)
+	{
+	}
+
+RA3FDevSoundToneInitializationTest* RA3FDevSoundToneInitializationTest::NewL(const TDesC& aTestName)
+	{
+	RA3FDevSoundToneInitializationTest* self = new (ELeave) RA3FDevSoundToneInitializationTest(aTestName);
+	return self;
+	}
+
+void RA3FDevSoundToneInitializationTest::DoKickoffTestL()
+	{
+	}
+
+void RA3FDevSoundToneInitializationTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
+	{
+	switch(iDevSoundState)
+		{
+		case EStateCreated:
+			{
+			__ASSERT_ALWAYS((aError == KErrNone),Panic(_L("RA3FDevSoundToneInitializationTest"),EFsmIncorrectErrorPassed));
+			if(aDevSoundEvent == EEventInitialize)
+				{
+				INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
+				TRAPD(err, iMMFDevSound->InitializeL(*this, EMMFStateTonePlaying));
+				if(err != KErrNone)
+					{
+					ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
+					StopTest(err);
+					break;
+					}
+				INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
+				iDevSoundState = EStateInitializing;
+				}
+			else
+				{
+				ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
+				StopTest(aError, EFail);
+				}
+			break;
+			}
+		case EStateInitializing:
+			{
+			if(aDevSoundEvent == EEventInitComplete && aError == KErrNone)
+				{
+				INFO_PRINTF1(_L("========== Test Case Successfully Completed =========="));
+				StopTest();
+				}
+			else if(aDevSoundEvent == EEventInitComplete && aError != KErrNone)
+				{
+				ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error = %d"), aError);
+				StopTest(aError);		
+				}
+			else
+				{
+				ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
+				StopTest(aError, EFail);
+				}
+			break;
+			}	
+		default:
+			{
+			ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
+			StopTest(aError, EFail);
+			}
+		}
+	}
+
+/*
+ *========================================================================================================
+ * MM-A3F-DEVSOUND-CHRTZ-INIT-0002
+ */
+RA3FDevSoundToneCancelInitializeTest::RA3FDevSoundToneCancelInitializeTest(const TDesC& aTestName) 
+	:	RA3FDevSoundTestBase(aTestName),iInitCompleteReceived(EFalse),
+		iSampleRate(0), iChannels(0)
+	{
+	}
+
+RA3FDevSoundToneCancelInitializeTest* RA3FDevSoundToneCancelInitializeTest::NewL(const TDesC& aTestName)
+	{
+	RA3FDevSoundToneCancelInitializeTest* self = new (ELeave) RA3FDevSoundToneCancelInitializeTest(aTestName);
+	return self;
+	}
+
+void RA3FDevSoundToneCancelInitializeTest::DoKickoffTestL()
+	{
+	if (!GetIntFromConfig(iTestStepName, KSampleRate, iSampleRate))
+		{
+		ERR_PRINTF2(KMsgErrorGetParameter, &KSampleRate);
+		StopTest(KErrNotFound);
+		return;
+		}
+	if (!GetIntFromConfig(iTestStepName, KChannel, iChannels))
+		{
+		ERR_PRINTF2(KMsgErrorGetParameter, &KChannel);
+		StopTest(KErrNotFound);
+		return;
+		}
+	iTimer = CPeriodic::NewL(CActive::EPriorityHigh);
+	}
+
+void RA3FDevSoundToneCancelInitializeTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
+	{
+	switch(iDevSoundState)
+		{
+		case EStateCreated:
+			{
+			__ASSERT_ALWAYS((aError == KErrNone),Panic(_L("RA3FDevSoundToneCancelInitializeTest"),EFsmIncorrectErrorPassed));
+			if(aDevSoundEvent == EEventInitialize)
+				{
+				INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
+				TRAPD(err, iMMFDevSound->InitializeL(*this, EMMFStateTonePlaying));
+				if(err != KErrNone)
+					{
+					ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
+					StopTest(err);
+					break;
+					}		
+				StartTimer(KMicroSecsTwoSec);
+				INFO_PRINTF1(_L("Calling CMMFDevSound::CancelInitialize")); 
+				err = iMMFDevSound->CancelInitialize();
+				if(err != KErrNone)
+					{
+					ERR_PRINTF2(_L("Unexpected error on CancelInitialize = %d"), err);
+					StopTest(err);
+					}
+				INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
+				iDevSoundState = EStateInitializing;
+				}
+			else
+				{
+				ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
+				StopTest(aError, EFail);
+				}
+			break;
+			}
+		case EStateInitializing:
+			{
+			if(aDevSoundEvent == EEventInitComplete)
+				{
+				iInitCompleteReceived = ETrue;
+				}
+			break;
+			}	
+		default:
+			{
+			ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
+			StopTest(aError, EFail);
+			}
+		}
+	}
+void RA3FDevSoundToneCancelInitializeTest::DoTimerCallback()
+	{
+	if(!iInitCompleteReceived)
+		{
+		INFO_PRINTF1(_L("Waiting for InitializeComplete event"));
+		iInitCompleteReceived = ETrue;
+		}
+	else
+		{
+		iTimer->Cancel();
+		TMMFCapabilities capabilitiesSet;
+		TBuf<KMaxSampleRateStringLength> stringSampleRateSet;
+		TBuf<KMaxChannelsStringLength> stringChannelsSet;
+		SampleRateFromTIntToTMMFSampleRate (iSampleRate, iESampleRate);
+		capabilitiesSet.iRate = iESampleRate;
+		capabilitiesSet.iChannels = iChannels;
+		SampleRateFromTUintToString (capabilitiesSet.iRate,	stringSampleRateSet);
+		ChannelsFromTUintToString (capabilitiesSet.iChannels, stringChannelsSet);
+		INFO_PRINTF3(_L("Settings for Sample rate an channel mode. %S %S"), &stringSampleRateSet, &stringChannelsSet);
+		INFO_PRINTF1(_L("Calling CMMFDevSound::SetConfigL"));
+		TRAPD(err, iMMFDevSound->SetConfigL(capabilitiesSet));
+		if (err ==  KErrNotReady)
+			{
+			INFO_PRINTF2(_L("CMMFDevSound::SetConfigL left with the expected error = %d"), err);
+			StopTest();
+			}
+		else
+			{
+			INFO_PRINTF2(_L("CMMFDevSound::SetConfigL left with error = %d"), err);
+			ERR_PRINTF2(_L("Expected error value = %d"), KErrNotReady);
+			StopTest(err, EFail);
+			}
+		}
+	}
+
+void RA3FDevSoundToneCancelInitializeTest::InitializeComplete(TInt aError)
+	{
+	ERR_PRINTF1(_L("DevSound called InitializeComplete after calling CMMFDevSound::CancelInitialize"));
+	StopTest(aError, EFail);
+	}
+
+
+/*
+ *========================================================================================================
+ * MM-A3F-DEVSOUND-CHRTZ-INIT-0003
+ */
+RA3FDevSoundToneInitializeToPlayTonesTwiceTest::RA3FDevSoundToneInitializeToPlayTonesTwiceTest(const TDesC& aTestName) 
+	: 	RA3FDevSoundTestBase(aTestName), iReinitialized(EFalse)
+	{
+	}
+
+RA3FDevSoundToneInitializeToPlayTonesTwiceTest* RA3FDevSoundToneInitializeToPlayTonesTwiceTest::NewL(const TDesC& aTestName)
+	{
+	RA3FDevSoundToneInitializeToPlayTonesTwiceTest* self = new (ELeave) RA3FDevSoundToneInitializeToPlayTonesTwiceTest(aTestName);
+	return self;
+	}
+
+void RA3FDevSoundToneInitializeToPlayTonesTwiceTest::DoKickoffTestL()
+	{
+	}
+
+void RA3FDevSoundToneInitializeToPlayTonesTwiceTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
+	{
+	switch(iDevSoundState)
+		{
+		case EStateCreated:
+			{
+			__ASSERT_ALWAYS((aError == KErrNone),Panic(_L("RA3FDevSoundToneInitializeTwiceToPlayTonesTest"),EFsmIncorrectErrorPassed));
+			if(aDevSoundEvent == EEventInitialize)
+				{
+				INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
+				TRAPD(err, iMMFDevSound->InitializeL(*this, EMMFStateTonePlaying));
+				if(err != KErrNone)
+					{
+					ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
+					StopTest(err);
+					break;
+					}
+				INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
+				iDevSoundState = EStateInitializing;
+				}
+			else
+				{
+				ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
+				StopTest(aError, EFail);
+				}
+			break;
+			}
+		case EStateInitializing:
+			{
+			if(aDevSoundEvent == EEventInitComplete && aError == KErrNone)
+				{
+				if(!iReinitialized)
+					{
+					INFO_PRINTF1(_L("========== First initialization successfully completed =========="));
+					iReinitialized = ETrue;
+					INFO_PRINTF1(_L("Again calling CMMFDevSound::InitializeL"));
+					TRAPD(err, iMMFDevSound->InitializeL(*this,EMMFStateTonePlaying));
+					if(err != KErrNone)
+						{
+						StopTest(err);
+						break;
+						}
+					INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
+					iDevSoundState = EStateInitializing;
+					}
+				else
+					{
+					INFO_PRINTF1(_L("========== Second initialization successfully completed =========="));
+					StopTest();
+					}
+				}
+			else if(aDevSoundEvent == EEventInitComplete && aError != KErrNone)
+				{
+				ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error = %d"), aError);
+				StopTest(aError);		
+				}
+			else
+				{
+				ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
+				StopTest(aError, EFail);
+				}
+			break;
+			}	
+		default:
+			{
+			ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
+			StopTest(aError, EFail);
+			}
+		}
+	}
+
+/*
+ *========================================================================================================
+ * MM-A3F-DEVSOUND-CHRTZ-INIT-0004
+ */
+RA3FDevSoundToneInitializeToPlayTonesThenAudioTest::RA3FDevSoundToneInitializeToPlayTonesThenAudioTest(const TDesC& aTestName) 
+	: 	RA3FDevSoundTestBase(aTestName), iReinitialized(EFalse)
+	{
+	}
+
+RA3FDevSoundToneInitializeToPlayTonesThenAudioTest* RA3FDevSoundToneInitializeToPlayTonesThenAudioTest::NewL(const TDesC& aTestName)
+	{
+	RA3FDevSoundToneInitializeToPlayTonesThenAudioTest* self = new (ELeave) RA3FDevSoundToneInitializeToPlayTonesThenAudioTest(aTestName);
+	return self;
+	}
+
+void RA3FDevSoundToneInitializeToPlayTonesThenAudioTest::DoKickoffTestL()
+	{
+	}
+
+void RA3FDevSoundToneInitializeToPlayTonesThenAudioTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
+	{
+	switch(iDevSoundState)
+		{
+		case EStateCreated:
+			{
+			__ASSERT_ALWAYS((aError == KErrNone),Panic(_L("RA3FDevSoundToneInitializeToPlayTonesThenAudioTest"),EFsmIncorrectErrorPassed));
+			if(aDevSoundEvent == EEventInitialize)
+				{
+				INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
+				TRAPD(err, iMMFDevSound->InitializeL(*this, EMMFStateTonePlaying));
+				if(err != KErrNone)
+					{
+					ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
+					StopTest(err);
+					break;
+					}
+				INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
+				iDevSoundState = EStateInitializing;
+				}
+			else
+				{
+				ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
+				StopTest(aError, EFail);
+				}
+			break;
+			}
+		case EStateInitializing:
+			{
+			if(aDevSoundEvent == EEventInitComplete && aError == KErrNone)
+				{
+				if(!iReinitialized)
+					{
+					INFO_PRINTF1(_L("========== First initialization successfully completed =========="));
+					iReinitialized = ETrue;
+					INFO_PRINTF1(_L("Again calling CMMFDevSound::InitializeL"));
+					TRAPD(err, iMMFDevSound->InitializeL(*this, EMMFStatePlaying));
+					if(err != KErrNone)
+						{
+						StopTest(err);
+						break;
+						}
+					INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
+					iDevSoundState = EStateInitializing;
+					}
+				else
+					{
+					INFO_PRINTF1(_L("========== Second initialization successfully completed =========="));
+					StopTest();
+					}
+				}
+			else if(aDevSoundEvent == EEventInitComplete && aError != KErrNone)
+				{
+				ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error = %d"), aError);
+				StopTest(aError);		
+				}
+			else
+				{
+				ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
+				StopTest(aError, EFail);
+				}
+			break;
+			}	
+		default:
+			{
+			ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
+			StopTest(aError, EFail);
+			}
+		}
+	}
+
+/*
+ *========================================================================================================
+ * MM-A3F-DEVSOUND-CHRTZ-INIT-0005
+ */
+RA3FDevSoundToneInitializeToPlayTonesThenRecordAudioTest::RA3FDevSoundToneInitializeToPlayTonesThenRecordAudioTest(const TDesC& aTestName) 
+	: 	RA3FDevSoundTestBase(aTestName), iReinitialized(EFalse)
+	{
+	}
+
+RA3FDevSoundToneInitializeToPlayTonesThenRecordAudioTest* RA3FDevSoundToneInitializeToPlayTonesThenRecordAudioTest::NewL(const TDesC& aTestName)
+	{
+	RA3FDevSoundToneInitializeToPlayTonesThenRecordAudioTest* self = new (ELeave) RA3FDevSoundToneInitializeToPlayTonesThenRecordAudioTest(aTestName);
+	return self;
+	}
+
+void RA3FDevSoundToneInitializeToPlayTonesThenRecordAudioTest::DoKickoffTestL()
+	{
+	}
+
+void RA3FDevSoundToneInitializeToPlayTonesThenRecordAudioTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
+	{
+	switch(iDevSoundState)
+		{
+		case EStateCreated:
+			{
+			__ASSERT_ALWAYS((aError == KErrNone),Panic(_L("RA3FDevSoundToneInitializeToPlayTonesThenRecordAudioTest"),EFsmIncorrectErrorPassed));
+			if(aDevSoundEvent == EEventInitialize)
+				{
+				INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
+				TRAPD(err, iMMFDevSound->InitializeL(*this, EMMFStateTonePlaying));
+				if(err != KErrNone)
+					{
+					ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
+					StopTest(err);
+					break;
+					}
+				INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
+				iDevSoundState = EStateInitializing;
+				}
+			else
+				{
+				ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
+				StopTest(aError, EFail);
+				}
+			break;
+			}
+		case EStateInitializing:
+			{
+			if(aDevSoundEvent == EEventInitComplete && aError == KErrNone)
+				{
+				if(!iReinitialized)
+					{
+					INFO_PRINTF1(_L("========== First initialization successfully completed=========="));
+					iReinitialized = ETrue;
+					INFO_PRINTF1(_L("Again calling CMMFDevSound::InitializeL"));
+					TRAPD(err, iMMFDevSound->InitializeL(*this, EMMFStateRecording));
+					if(err != KErrNone)
+						{
+						StopTest(err);
+						break;
+						}
+					INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
+					iDevSoundState = EStateInitializing;
+					}
+				else
+					{
+					INFO_PRINTF1(_L("========== Second initialization successfully completed =========="));
+					StopTest();
+					}
+				}
+			else if(aDevSoundEvent == EEventInitComplete && aError != KErrNone)
+				{
+				ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error = %d"), aError);
+				StopTest(aError);		
+				}
+			else
+				{
+				ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
+				StopTest(aError, EFail);
+				}
+			break;
+			}	
+		default:
+			{
+			ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
+			StopTest(aError, EFail);
+			}
+		}
+	}
+
+/*
+ *========================================================================================================
+ * MM-A3F-DEVSOUND-CHRTZ-INIT-0006
+ */
+RA3FDevSoundToneInitializeTFourCCTest::RA3FDevSoundToneInitializeTFourCCTest(const TDesC& aTestName) 
+	: 	RA3FDevSoundTestBase(aTestName)
+	{
+	}
+
+RA3FDevSoundToneInitializeTFourCCTest* RA3FDevSoundToneInitializeTFourCCTest::NewL(const TDesC& aTestName)
+	{
+	RA3FDevSoundToneInitializeTFourCCTest* self = new (ELeave) RA3FDevSoundToneInitializeTFourCCTest(aTestName);
+	return self;
+	}
+
+void RA3FDevSoundToneInitializeTFourCCTest::DoKickoffTestL()
+	{
+	TPtrC fourccCode;
+	if(!GetStringFromConfig(iTestStepName, KFourccCode, fourccCode))
+		{
+		ERR_PRINTF2(KMsgErrorGetParameter, &KFourccCode);
+		StopTest(KErrNotFound);
+		return;
+		}
+	EncodingFromStringToTFourCC(fourccCode);
+	}
+
+void RA3FDevSoundToneInitializeTFourCCTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
+	{
+	switch(iDevSoundState)
+		{
+		case EStateCreated:
+			{
+			__ASSERT_ALWAYS((aError == KErrNone),Panic(_L("RA3FDevSoundToneInitializeTFourCCTest"),EFsmIncorrectErrorPassed));
+			if(aDevSoundEvent == EEventInitialize)
+				{
+				INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
+				TRAPD(err, iMMFDevSound->InitializeL(*this, iFourCCCode, EMMFStateTonePlaying));
+				if(err == KErrNotSupported)
+					{
+					ERR_PRINTF2(_L("Calling CMMFDevSound::InitializeL to play tones using a FourCC code left with expected error = %d"), err);
+					StopTest(err, EPass);
+					break;
+					}
+				else
+					{
+					ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
+					INFO_PRINTF2(_L("Expected error = %d"), KErrNotSupported);
+					StopTest(err, EFail);
+					}
+				}
+			}
+		default:
+			{
+			ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
+			StopTest(aError, EFail);
+			}
+		}
+	}
+
+/*
+ *========================================================================================================
+ * MM-A3F-DEVSOUND-CHRTZ-INIT-0007
+ */
+RA3FDevSoundInitializeInvalidModeTest::RA3FDevSoundInitializeInvalidModeTest(const TDesC& aTestName) 
+	: 	RA3FDevSoundTestBase(aTestName)
+	{
+	}
+
+RA3FDevSoundInitializeInvalidModeTest* RA3FDevSoundInitializeInvalidModeTest::NewL(const TDesC& aTestName)
+	{
+	RA3FDevSoundInitializeInvalidModeTest* self = new (ELeave) RA3FDevSoundInitializeInvalidModeTest(aTestName);
+	return self;
+	}
+
+void RA3FDevSoundInitializeInvalidModeTest::DoKickoffTestL()
+	{
+	}
+
+void RA3FDevSoundInitializeInvalidModeTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
+	{
+	switch(iDevSoundState)
+		{
+		case EStateCreated:
+			{
+			__ASSERT_ALWAYS((aError == KErrNone),Panic(_L("RA3FDevSoundInitializeInvalidModeTest"),EFsmIncorrectErrorPassed));
+			if(aDevSoundEvent == EEventInitialize)
+				{
+				INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
+				TRAPD(err, iMMFDevSound->InitializeL(*this, EMMFStateConverting));
+				if(err == KErrNotSupported)
+					{
+					ERR_PRINTF2(_L("Calling CMMFDevSound::InitializeL using an invalid TMMFState argument left with expected error code = %d"), err);
+					StopTest(err, EPass);
+					break;
+					}
+				else
+					{
+					INFO_PRINTF2(_L("Calling CMMFDevSound::InitializeL using an invalid TMMFState argument left with unexpected error code = %d"), err);
+					INFO_PRINTF2(_L("Expected error = %d"), KErrNotSupported);
+					StopTest(err, EFail);
+					}
+				}
+			}
+		default:
+			{
+			ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
+			StopTest(aError, EFail);
+			}
+		}
+	}
+	
+
+/*
+ *========================================================================================================
+ * MM-A3F-DEVSOUND-CHRTZ-INIT-0008
+ */
+RA3FDevSoundPlayInitializationTest::RA3FDevSoundPlayInitializationTest(const TDesC& aTestName) 
+	: 	RA3FDevSoundTestBase(aTestName)
+	{
+	}
+
+RA3FDevSoundPlayInitializationTest* RA3FDevSoundPlayInitializationTest::NewL(const TDesC& aTestName)
+	{
+	RA3FDevSoundPlayInitializationTest* self = new (ELeave) RA3FDevSoundPlayInitializationTest(aTestName);
+	return self;
+	}
+
+void RA3FDevSoundPlayInitializationTest::DoKickoffTestL()
+	{
+	TPtrC fourccCode;
+	if(!GetStringFromConfig(iTestStepName, KFourccCode, fourccCode))
+		{
+		ERR_PRINTF2(KMsgErrorGetParameter, &KFourccCode);
+		StopTest(KErrNotFound);
+		return;
+		}
+	EncodingFromStringToTFourCC(fourccCode);
+	}
+
+void RA3FDevSoundPlayInitializationTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
+	{
+	switch(iDevSoundState)
+		{
+		case EStateCreated:
+			{
+			__ASSERT_ALWAYS((aError == KErrNone),Panic(_L("RA3FDevSoundPlayInitializationTest"),EFsmIncorrectErrorPassed));
+			if(aDevSoundEvent == EEventInitialize)
+				{
+				INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
+				TRAPD(err, iMMFDevSound->InitializeL(*this, iFourCCCode, EMMFStatePlaying));
+				if(err != KErrNone)
+					{
+					ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
+					StopTest(err);
+					break;
+					}
+				INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
+				iDevSoundState = EStateInitializing;
+				}
+			else
+				{
+				ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
+				StopTest(aError, EFail);
+				}
+			break;
+			}
+		case EStateInitializing:
+			{
+			if(aDevSoundEvent == EEventInitComplete && aError == KErrNone)
+				{
+				INFO_PRINTF1(_L("CMMFDevSound::InitializeL succeeded"));
+				StopTest();
+				}
+			else if(aDevSoundEvent == EEventInitComplete && aError != KErrNone)
+				{
+				ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error = %d"), aError);
+				StopTest(aError);		
+				}
+			else
+				{
+				ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
+				StopTest(aError, EFail);
+				}
+			break;
+			}	
+		default:
+			{
+			ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
+			StopTest(aError, EFail);
+			}
+		}
+	}
+
+/*
+ *========================================================================================================
+ * MM-A3F-DEVSOUND-CHRTZ-INIT-0009
+ */
+RA3FDevSoundPlayCancelInitializeTest::RA3FDevSoundPlayCancelInitializeTest(const TDesC& aTestName) 
+	:	RA3FDevSoundTestBase(aTestName),iInitCompleteReceived(EFalse),
+		iSampleRate(0), iChannels(0)
+	{
+	}
+
+RA3FDevSoundPlayCancelInitializeTest* RA3FDevSoundPlayCancelInitializeTest::NewL(const TDesC& aTestName)
+	{
+	RA3FDevSoundPlayCancelInitializeTest* self = new (ELeave) RA3FDevSoundPlayCancelInitializeTest(aTestName);
+	return self;
+	}
+
+void RA3FDevSoundPlayCancelInitializeTest::DoKickoffTestL()
+	{
+	if (!GetIntFromConfig(iTestStepName, KSampleRate, iSampleRate))
+		{
+		ERR_PRINTF2(KMsgErrorGetParameter, &KSampleRate);
+		StopTest(KErrNotFound);
+		return;
+		}
+	if (!GetIntFromConfig(iTestStepName, KChannel, iChannels))
+		{
+		ERR_PRINTF2(KMsgErrorGetParameter, &KChannel);
+		StopTest(KErrNotFound);
+		return;
+		}
+	TPtrC fourccCode;
+	if(!GetStringFromConfig(iTestStepName, KFourccCode, fourccCode))
+		{
+		ERR_PRINTF2(KMsgErrorGetParameter, &KFourccCode);
+		StopTest(KErrNotFound);
+		return;
+		}
+	EncodingFromStringToTFourCC(fourccCode);
+	iTimer = CPeriodic::NewL(CActive::EPriorityHigh);
+	}
+
+void RA3FDevSoundPlayCancelInitializeTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
+	{
+	switch(iDevSoundState)
+		{
+		case EStateCreated:
+			{
+			__ASSERT_ALWAYS((aError == KErrNone),Panic(_L("RA3FDevSoundPlayCancelInitializeTest"),EFsmIncorrectErrorPassed));
+			if(aDevSoundEvent == EEventInitialize)
+				{
+				INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
+				TRAPD(err, iMMFDevSound->InitializeL(*this, iFourCCCode, EMMFStatePlaying));
+				if(err != KErrNone)
+					{
+					ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
+					StopTest(err);
+					break;
+					}		
+				StartTimer(KMicroSecsTwoSec);
+				INFO_PRINTF1(_L("Calling CMMFDevSound::CancelInitialize"));
+				err = iMMFDevSound->CancelInitialize();
+				if(err != KErrNone)
+					{
+					ERR_PRINTF2(_L("Unexpected error on CancelInitialize = %d"), err);
+					StopTest(err);
+					}
+				INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
+				iDevSoundState = EStateInitializing;
+				}
+			else
+				{
+				ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
+				StopTest(aError, EFail);
+				}
+			break;
+			}
+		case EStateInitializing:
+			{
+			if(aDevSoundEvent == EEventInitComplete)
+				{
+				iInitCompleteReceived = ETrue;
+				}
+			break;
+			}	
+		default:
+			{
+			ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
+			StopTest(aError, EFail);
+			}
+		}
+	}
+
+void RA3FDevSoundPlayCancelInitializeTest::DoTimerCallback()
+	{
+	if(!iInitCompleteReceived)
+		{
+		INFO_PRINTF1(_L("Waiting for InitializeComplete event"));
+		iInitCompleteReceived = ETrue;
+		}
+	else
+		{
+		iTimer->Cancel();
+		TMMFCapabilities capabilitiesSet;
+		TBuf<KMaxSampleRateStringLength> stringSampleRateSet;
+		TBuf<KMaxChannelsStringLength> stringChannelsSet;
+		SampleRateFromTIntToTMMFSampleRate (iSampleRate, iESampleRate);
+		capabilitiesSet.iRate = iESampleRate;
+		capabilitiesSet.iChannels = iChannels;
+		SampleRateFromTUintToString (capabilitiesSet.iRate,	stringSampleRateSet);
+		ChannelsFromTUintToString (capabilitiesSet.iChannels, stringChannelsSet);
+		INFO_PRINTF3(_L("Settings for Sample rate an channel mode. %S %S"), &stringSampleRateSet, &stringChannelsSet);
+		INFO_PRINTF1(_L("Calling CMMFDevSound::SetConfigL"));
+		TRAPD(err, iMMFDevSound->SetConfigL(capabilitiesSet));
+		if (err ==  KErrNotReady)
+			{
+			INFO_PRINTF2(_L("CMMFDevSound::SetConfigL left with the expected error = %d"), err);
+			StopTest();
+			}
+		else
+			{
+			INFO_PRINTF2(_L("CMMFDevSound::SetConfigL left with error = %d"), err);
+			ERR_PRINTF2(_L("Expected error value = %d"), KErrNotReady);
+			StopTest(err, EFail);
+			}
+		}
+	}
+
+void RA3FDevSoundPlayCancelInitializeTest::InitializeComplete(TInt aError)
+	{
+	ERR_PRINTF1(_L("DevSound called InitializeComplete after calling CMMFDevSound::CancelInitialize"));
+	StopTest(aError, EFail);
+	}
+
+
+/*
+ *========================================================================================================
+ * MM-A3F-DEVSOUND-CHRTZ-INIT-0010
+ */
+RA3FDevSoundPlayInitializeToPlayAudioThenTonesTest::RA3FDevSoundPlayInitializeToPlayAudioThenTonesTest(const TDesC& aTestName) 
+	: 	RA3FDevSoundTestBase(aTestName), iReinitialized(EFalse)
+	{
+	}
+
+RA3FDevSoundPlayInitializeToPlayAudioThenTonesTest* RA3FDevSoundPlayInitializeToPlayAudioThenTonesTest::NewL(const TDesC& aTestName)
+	{
+	RA3FDevSoundPlayInitializeToPlayAudioThenTonesTest* self = new (ELeave) RA3FDevSoundPlayInitializeToPlayAudioThenTonesTest(aTestName);
+	return self;
+	}
+
+void RA3FDevSoundPlayInitializeToPlayAudioThenTonesTest::DoKickoffTestL()
+	{
+	TPtrC fourccCode;
+	if(!GetStringFromConfig(iTestStepName, KFourccCode, fourccCode))
+		{
+		ERR_PRINTF2(KMsgErrorGetParameter, &KFourccCode);
+		StopTest(KErrNotFound);
+		return;
+		}
+	EncodingFromStringToTFourCC(fourccCode);
+	}
+
+void RA3FDevSoundPlayInitializeToPlayAudioThenTonesTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
+	{
+	switch(iDevSoundState)
+		{
+		case EStateCreated:
+			{
+			__ASSERT_ALWAYS((aError == KErrNone),Panic(_L("RA3FDevSoundPlayInitializeToPlayAudioThenTonesTest"),EFsmIncorrectErrorPassed));
+			if(aDevSoundEvent == EEventInitialize)
+				{
+				INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
+				TRAPD(err, iMMFDevSound->InitializeL(*this, iFourCCCode, EMMFStatePlaying));
+				if(err != KErrNone)
+					{
+					ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
+					StopTest(err);
+					break;
+					}
+				INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
+				iDevSoundState = EStateInitializing;
+				}
+			else
+				{
+				ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
+				StopTest(aError, EFail);
+				}
+			break;
+			}
+		case EStateInitializing:
+			{
+			if(aDevSoundEvent == EEventInitComplete && aError == KErrNone)
+				{
+				if(!iReinitialized)
+					{
+					INFO_PRINTF1(_L("========== First initialization successfully completed =========="));
+					iReinitialized = ETrue;
+					INFO_PRINTF1(_L("Again calling CMMFDevSound::InitializeL"));
+					TRAPD(err, iMMFDevSound->InitializeL(*this, EMMFStateTonePlaying));
+					if(err != KErrNone)
+						{
+						StopTest(err);
+						break;
+						}
+					INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
+					iDevSoundState = EStateInitializing;
+					}
+				else
+					{
+					INFO_PRINTF1(_L("========== Second initialization successfully completed =========="));
+					StopTest();
+					}
+				}
+			else if(aDevSoundEvent == EEventInitComplete && aError != KErrNone)
+				{
+				ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error = %d"), aError);
+				StopTest(aError);		
+				}
+			else
+				{
+				ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
+				StopTest(aError, EFail);
+				}
+			break;
+			}	
+		default:
+			{
+			ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
+			StopTest(aError, EFail);
+			}
+		}
+	}
+
+/*
+ *========================================================================================================
+ * MM-A3F-DEVSOUND-CHRTZ-INIT-0011
+ */
+RA3FDevSoundPlayInitializeToPlayAudioTwiceTest::RA3FDevSoundPlayInitializeToPlayAudioTwiceTest(const TDesC& aTestName) 
+	: 	RA3FDevSoundTestBase(aTestName), iReinitialized(EFalse)
+	{
+	}
+
+RA3FDevSoundPlayInitializeToPlayAudioTwiceTest* RA3FDevSoundPlayInitializeToPlayAudioTwiceTest::NewL(const TDesC& aTestName)
+	{
+	RA3FDevSoundPlayInitializeToPlayAudioTwiceTest* self = new (ELeave) RA3FDevSoundPlayInitializeToPlayAudioTwiceTest(aTestName);
+	return self;
+	}
+
+void RA3FDevSoundPlayInitializeToPlayAudioTwiceTest::DoKickoffTestL()
+	{
+	TPtrC fourccCode;
+	if(!GetStringFromConfig(iTestStepName, KFourccCode, fourccCode))
+		{
+		ERR_PRINTF2(KMsgErrorGetParameter, &KFourccCode);
+		StopTest(KErrNotFound);
+		return;
+		}
+	EncodingFromStringToTFourCC(fourccCode);
+	}
+
+void RA3FDevSoundPlayInitializeToPlayAudioTwiceTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
+	{
+	switch(iDevSoundState)
+		{
+		case EStateCreated:
+			{
+			__ASSERT_ALWAYS((aError == KErrNone),Panic(_L("RA3FDevSoundPlayInitializeTwiceToPlayAudioTest"),EFsmIncorrectErrorPassed));
+			if(aDevSoundEvent == EEventInitialize)
+				{
+				INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
+				TRAPD(err, iMMFDevSound->InitializeL(*this, iFourCCCode, EMMFStatePlaying));
+				if(err != KErrNone)
+					{
+					ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
+					StopTest(err);
+					break;
+					}
+				INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
+				iDevSoundState = EStateInitializing;
+				}
+			else
+				{
+				ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
+				StopTest(aError, EFail);
+				}
+			break;
+			}
+		case EStateInitializing:
+			{
+			if(aDevSoundEvent == EEventInitComplete && aError == KErrNone)
+				{
+				if(!iReinitialized)
+					{
+					INFO_PRINTF1(_L("========== First initialization successfully completed =========="));
+					iReinitialized = ETrue;
+					INFO_PRINTF1(_L("Again calling CMMFDevSound::InitializeL"));
+					TRAPD(err, iMMFDevSound->InitializeL(*this, iFourCCCode, EMMFStatePlaying));
+					if(err != KErrNone)
+						{
+						StopTest(err);
+						break;
+						}
+					INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
+					iDevSoundState = EStateInitializing;
+					}
+				else
+					{
+					INFO_PRINTF1(_L("========== Second initialization successfully completed =========="));
+					StopTest();
+					}
+				}
+			else if(aDevSoundEvent == EEventInitComplete && aError != KErrNone)
+				{
+				ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error = %d"), aError);
+				StopTest(aError);		
+				}
+			else
+				{
+				ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
+				StopTest(aError, EFail);
+				}
+			break;
+			}	
+		default:
+			{
+			ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
+			StopTest(aError, EFail);
+			}
+		}
+	}
+
+
+/*
+ *========================================================================================================
+ * MM-A3F-DEVSOUND-CHRTZ-INIT-0012
+ */
+RA3FDevSoundPlayInitializeToPlayAudioThenRecordTest::RA3FDevSoundPlayInitializeToPlayAudioThenRecordTest(const TDesC& aTestName) 
+	: 	RA3FDevSoundTestBase(aTestName), iReinitialized(EFalse)
+	{
+	}
+
+RA3FDevSoundPlayInitializeToPlayAudioThenRecordTest* RA3FDevSoundPlayInitializeToPlayAudioThenRecordTest::NewL(const TDesC& aTestName)
+	{
+	RA3FDevSoundPlayInitializeToPlayAudioThenRecordTest* self = new (ELeave) RA3FDevSoundPlayInitializeToPlayAudioThenRecordTest(aTestName);
+	return self;
+	}
+
+void RA3FDevSoundPlayInitializeToPlayAudioThenRecordTest::DoKickoffTestL()
+	{
+	TPtrC fourccCode;
+	if(!GetStringFromConfig(iTestStepName, KFourccCode, fourccCode))
+		{
+		ERR_PRINTF2(KMsgErrorGetParameter, &KFourccCode);
+		StopTest(KErrNotFound);
+		return;
+		}
+	EncodingFromStringToTFourCC(fourccCode);
+	}
+
+void RA3FDevSoundPlayInitializeToPlayAudioThenRecordTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
+	{
+	switch(iDevSoundState)
+		{
+		case EStateCreated:
+			{
+			__ASSERT_ALWAYS((aError == KErrNone),Panic(_L("RA3FDevSoundPlayInitializeToPlayAudioThenRecordTest"),EFsmIncorrectErrorPassed));
+			if(aDevSoundEvent == EEventInitialize)
+				{
+				INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
+				TRAPD(err, iMMFDevSound->InitializeL(*this, iFourCCCode, EMMFStatePlaying));
+				if(err != KErrNone)
+					{
+					ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
+					StopTest(err);
+					break;
+					}
+				INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
+				iDevSoundState = EStateInitializing;
+				}
+			else
+				{
+				ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
+				StopTest(aError, EFail);
+				}
+			break;
+			}
+		case EStateInitializing:
+			{
+			if(aDevSoundEvent == EEventInitComplete && aError == KErrNone)
+				{
+				if(!iReinitialized)
+					{
+					INFO_PRINTF1(_L("========== First initialization successfully completed =========="));
+					iReinitialized = ETrue;
+					INFO_PRINTF1(_L("Again calling CMMFDevSound::InitializeL"));
+					TRAPD(err, iMMFDevSound->InitializeL(*this, iFourCCCode, EMMFStateRecording));
+					if(err != KErrNone)
+						{
+						StopTest(err);
+						break;
+						}
+					INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
+					iDevSoundState = EStateInitializing;
+					}
+				else
+					{
+					INFO_PRINTF1(_L("========== Second initialization successfully completed =========="));
+					StopTest();
+					}
+				}
+			else if(aDevSoundEvent == EEventInitComplete && aError != KErrNone)
+				{
+				ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error = %d"), aError);
+				StopTest(aError);		
+				}
+			else
+				{
+				ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
+				StopTest(aError, EFail);
+				}
+			break;
+			}	
+		default:
+			{
+			ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
+			StopTest(aError, EFail);
+			}
+		}
+	}
+
+/*
+ *========================================================================================================
+ * MM-A3F-DEVSOUND-CHRTZ-INIT-0013
+ */
+RA3FDevSoundPlayInitializeInvalidTFourCCTest::RA3FDevSoundPlayInitializeInvalidTFourCCTest(const TDesC& aTestName) 
+	: 	RA3FDevSoundTestBase(aTestName)
+	{
+	}
+
+RA3FDevSoundPlayInitializeInvalidTFourCCTest* RA3FDevSoundPlayInitializeInvalidTFourCCTest::NewL(const TDesC& aTestName)
+	{
+	RA3FDevSoundPlayInitializeInvalidTFourCCTest* self = new (ELeave) RA3FDevSoundPlayInitializeInvalidTFourCCTest(aTestName);
+	return self;
+	}
+
+void RA3FDevSoundPlayInitializeInvalidTFourCCTest::DoKickoffTestL()
+	{
+	}
+
+void RA3FDevSoundPlayInitializeInvalidTFourCCTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
+	{
+	switch(iDevSoundState)
+		{
+		case EStateCreated:
+			{
+			__ASSERT_ALWAYS((aError == KErrNone),Panic(_L("RA3FDevSoundPlayInitializeInvalidTFourCCTest"),EFsmIncorrectErrorPassed));
+			if(aDevSoundEvent == EEventInitialize)
+				{
+				INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
+				TRAPD(err, iMMFDevSound->InitializeL(*this, 0x00000000, EMMFStatePlaying));
+				if(err == KErrNotSupported)
+					{
+					INFO_PRINTF2(_L("Calling CMMFDevSound::InitializeL using an invalid TFourCC argument left with expected error = %d"), err);
+					StopTest(err, EPass);
+					break;
+					}
+				else
+					{
+					ERR_PRINTF2(_L("Calling CMMFDevSound::InitializeL using an invalid TFourCC argument left with expected error = %d"), err);
+					ERR_PRINTF2(_L("Expected error = %d"), KErrNotSupported);
+					StopTest(err, EFail);
+					}
+				}
+			break;
+			}
+		default:
+			{
+			ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
+			StopTest(aError, EFail);
+			}
+		}
+	}
+
+/*
+ *========================================================================================================
+ * MM-A3F-DEVSOUND-CHRTZ-INIT-0014
+ */
+RA3FDevSoundRecordInitializationTest::RA3FDevSoundRecordInitializationTest(const TDesC& aTestName) 
+	: 	RA3FDevSoundTestBase(aTestName)
+	{
+	}
+
+RA3FDevSoundRecordInitializationTest* RA3FDevSoundRecordInitializationTest::NewL(const TDesC& aTestName)
+	{
+	RA3FDevSoundRecordInitializationTest* self = new (ELeave) RA3FDevSoundRecordInitializationTest(aTestName);
+	return self;
+	}
+
+void RA3FDevSoundRecordInitializationTest::DoKickoffTestL()
+	{
+	TPtrC fourccCode;
+	if(!GetStringFromConfig(iTestStepName, KFourccCode, fourccCode))
+		{
+		ERR_PRINTF2(KMsgErrorGetParameter, &KFourccCode);
+		StopTest(KErrNotFound);
+		return;
+		}
+	EncodingFromStringToTFourCC(fourccCode);
+	}
+
+void RA3FDevSoundRecordInitializationTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
+	{
+	switch(iDevSoundState)
+		{
+		case EStateCreated:
+			{
+			__ASSERT_ALWAYS((aError == KErrNone),Panic(_L("RA3FDevSoundRecordInitializationTest"),EFsmIncorrectErrorPassed));
+			if(aDevSoundEvent == EEventInitialize)
+				{
+				INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
+				TRAPD(err, iMMFDevSound->InitializeL(*this, iFourCCCode, EMMFStateRecording));
+				if(err != KErrNone)
+					{
+					ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
+					StopTest(err);
+					break;
+					}
+				INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
+				iDevSoundState = EStateInitializing;
+				}
+			else
+				{
+				ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
+				StopTest(aError, EFail);
+				}
+			break;
+			}
+		case EStateInitializing:
+			{
+			if(aDevSoundEvent == EEventInitComplete && aError == KErrNone)
+				{
+				INFO_PRINTF1(_L("========== Test Case Successfully Completed =========="));
+				StopTest();
+				}
+			else if(aDevSoundEvent == EEventInitComplete && aError != KErrNone)
+				{
+				ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error = %d"), aError);
+				StopTest(aError);		
+				}
+			else
+				{
+				ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
+				StopTest(aError, EFail);
+				}
+			break;
+			}	
+		default:
+			{
+			ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
+			StopTest(aError, EFail);
+			}
+		}
+	}
+
+/*
+ *========================================================================================================
+ * MM-A3F-DEVSOUND-CHRTZ-INIT-0015
+ */
+RA3FDevSoundRecordCancelInitializeTest::RA3FDevSoundRecordCancelInitializeTest(const TDesC& aTestName) 
+	:	RA3FDevSoundTestBase(aTestName),iInitCompleteReceived(EFalse),
+	iSampleRate(0), iChannels(0)
+	{
+	}
+
+RA3FDevSoundRecordCancelInitializeTest* RA3FDevSoundRecordCancelInitializeTest::NewL(const TDesC& aTestName)
+	{
+	RA3FDevSoundRecordCancelInitializeTest* self = new (ELeave) RA3FDevSoundRecordCancelInitializeTest(aTestName);
+	return self;
+	}
+
+void RA3FDevSoundRecordCancelInitializeTest::DoKickoffTestL()
+	{
+	if (!GetIntFromConfig(iTestStepName, KSampleRate, iSampleRate))
+		{
+		ERR_PRINTF2(KMsgErrorGetParameter, &KSampleRate);
+		StopTest(KErrNotFound);
+		return;
+		}
+	if (!GetIntFromConfig(iTestStepName, KChannel, iChannels))
+		{
+		ERR_PRINTF2(KMsgErrorGetParameter, &KChannel);
+		StopTest(KErrNotFound);
+		return;
+		}
+	TPtrC fourccCode;
+	if(!GetStringFromConfig(iTestStepName, KFourccCode, fourccCode))
+		{
+		ERR_PRINTF2(KMsgErrorGetParameter, &KFourccCode);
+		StopTest(KErrNotFound);
+		return;
+		}
+	EncodingFromStringToTFourCC(fourccCode);
+	iTimer = CPeriodic::NewL(CActive::EPriorityHigh);
+	}
+
+void RA3FDevSoundRecordCancelInitializeTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
+	{
+	switch(iDevSoundState)
+		{
+		case EStateCreated:
+			{
+			__ASSERT_ALWAYS((aError == KErrNone),Panic(_L("RA3FDevSoundRecordCancelInitializeTest"),EFsmIncorrectErrorPassed));
+			if(aDevSoundEvent == EEventInitialize)
+				{
+				INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
+				TRAPD(err, iMMFDevSound->InitializeL(*this, iFourCCCode, EMMFStateRecording));
+				if(err != KErrNone)
+					{
+					ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
+					StopTest(err);
+					break;
+					}		
+				StartTimer(KMicroSecsTwoSec);
+				INFO_PRINTF1(_L("Calling CMMFDevSound::CancelInitialize"));
+				err = iMMFDevSound->CancelInitialize();
+				if(err != KErrNone)
+					{
+					ERR_PRINTF2(_L("Unexpected error on CancelInitialize = %d"), err);
+					StopTest(err);
+					}
+				INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
+				iDevSoundState = EStateInitializing;
+				}
+			else
+				{
+				ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
+				StopTest(aError, EFail);
+				}
+			break;
+			}
+		case EStateInitializing:
+			{
+			if(aDevSoundEvent == EEventInitComplete)
+				{
+				iInitCompleteReceived = ETrue;
+				}
+			break;
+			}	
+		default:
+			{
+			ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
+			StopTest(aError, EFail);
+			}
+		}
+	}
+
+void RA3FDevSoundRecordCancelInitializeTest::DoTimerCallback()
+	{
+	if(!iInitCompleteReceived)
+		{
+		INFO_PRINTF1(_L("Waiting for InitializeComplete event"));
+		iInitCompleteReceived = ETrue;
+		}
+	else
+		{
+		iTimer->Cancel();
+		TMMFCapabilities capabilitiesSet;
+		TBuf<KMaxSampleRateStringLength> stringSampleRateSet;
+		TBuf<KMaxChannelsStringLength> stringChannelsSet;
+		SampleRateFromTIntToTMMFSampleRate (iSampleRate, iESampleRate);
+		capabilitiesSet.iRate = iESampleRate;
+		capabilitiesSet.iChannels = iChannels;
+		SampleRateFromTUintToString (capabilitiesSet.iRate,	stringSampleRateSet);
+		ChannelsFromTUintToString (capabilitiesSet.iChannels, stringChannelsSet);
+		INFO_PRINTF3(_L("Settings for Sample rate an channel mode. %S %S"), &stringSampleRateSet, &stringChannelsSet);
+		INFO_PRINTF1(_L("Calling CMMFDevSound::SetConfigL"));
+		TRAPD(err, iMMFDevSound->SetConfigL(capabilitiesSet));
+		if (err ==  KErrNotReady)
+			{
+			INFO_PRINTF2(_L("CMMFDevSound::SetConfigL left with the expected error = %d"), err);
+			StopTest();
+			}
+		else
+			{
+			INFO_PRINTF2(_L("CMMFDevSound::SetConfigL left with error = %d"), err);
+			ERR_PRINTF2(_L("Expected error value = %d"), KErrNotReady);
+			StopTest(err, EFail);
+			}
+		}
+	}
+
+void RA3FDevSoundRecordCancelInitializeTest::InitializeComplete(TInt aError)
+	{
+	ERR_PRINTF1(_L("DevSound called InitializeComplete after calling CMMFDevSound::CancelInitialize"));
+	StopTest(aError, EFail);
+	}
+
+
+/*
+ *========================================================================================================
+ * MM-A3F-DEVSOUND-CHRTZ-INIT-0016
+ */
+RA3FDevSoundRecordInitializeThenPlayToneInitializeTest::RA3FDevSoundRecordInitializeThenPlayToneInitializeTest(const TDesC& aTestName) 
+	: 	RA3FDevSoundTestBase(aTestName), iReinitialized(EFalse)
+	{
+	}
+
+RA3FDevSoundRecordInitializeThenPlayToneInitializeTest* RA3FDevSoundRecordInitializeThenPlayToneInitializeTest::NewL(const TDesC& aTestName)
+	{
+	RA3FDevSoundRecordInitializeThenPlayToneInitializeTest* self = new (ELeave) RA3FDevSoundRecordInitializeThenPlayToneInitializeTest(aTestName);
+	return self;
+	}
+
+void RA3FDevSoundRecordInitializeThenPlayToneInitializeTest::DoKickoffTestL()
+	{
+	TPtrC fourccCode;
+	if(!GetStringFromConfig(iTestStepName, KFourccCode, fourccCode))
+		{
+		ERR_PRINTF2(KMsgErrorGetParameter, &KFourccCode);
+		StopTest(KErrNotFound);
+		return;
+		}
+	EncodingFromStringToTFourCC(fourccCode);
+	}
+
+void RA3FDevSoundRecordInitializeThenPlayToneInitializeTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
+	{
+	switch(iDevSoundState)
+		{
+		case EStateCreated:
+			{
+			__ASSERT_ALWAYS((aError == KErrNone),Panic(_L("RA3FDevSoundRecordInitializeThenPlayToneInitializeTest"),EFsmIncorrectErrorPassed));
+			if(aDevSoundEvent == EEventInitialize)
+				{
+				INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
+				TRAPD(err, iMMFDevSound->InitializeL(*this, iFourCCCode, EMMFStateRecording));
+				if(err != KErrNone)
+					{
+					ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
+					StopTest(err);
+					break;
+					}
+				INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
+				iDevSoundState = EStateInitializing;
+				}
+			else
+				{
+				ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
+				StopTest(aError, EFail);
+				}
+			break;
+			}
+		case EStateInitializing:
+			{
+			if(aDevSoundEvent == EEventInitComplete && aError == KErrNone)
+				{
+				if(!iReinitialized)
+					{
+					INFO_PRINTF1(_L("========== First initialization successfully completed =========="));
+					iReinitialized = ETrue;
+					INFO_PRINTF1(_L("Again calling CMMFDevSound::InitializeL"));
+					TRAPD(err, iMMFDevSound->InitializeL(*this, EMMFStateTonePlaying));
+					if(err != KErrNone)
+						{
+						StopTest(err);
+						break;
+						}
+					INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
+					iDevSoundState = EStateInitializing;
+					}
+				else
+					{
+					INFO_PRINTF1(_L("========== Second initialization successfully completed =========="));
+					StopTest();
+					}
+				}
+			else if(aDevSoundEvent == EEventInitComplete && aError != KErrNone)
+				{
+				ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error = %d"), aError);
+				StopTest(aError);		
+				}
+			else
+				{
+				ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
+				StopTest(aError, EFail);
+				}
+			break;
+			}	
+		default:
+			{
+			ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
+			StopTest(aError, EFail);
+			}
+		}
+	}
+
+
+/*
+ *========================================================================================================
+ * MM-A3F-DEVSOUND-CHRTZ-INIT-0017
+ */
+RA3FDevSoundRecordInitializeThenPlayAudioInitializeTest::RA3FDevSoundRecordInitializeThenPlayAudioInitializeTest(const TDesC& aTestName) 
+	: 	RA3FDevSoundTestBase(aTestName), iReinitialized(EFalse)
+	{
+	}
+
+RA3FDevSoundRecordInitializeThenPlayAudioInitializeTest* RA3FDevSoundRecordInitializeThenPlayAudioInitializeTest::NewL(const TDesC& aTestName)
+	{
+	RA3FDevSoundRecordInitializeThenPlayAudioInitializeTest* self = new (ELeave) RA3FDevSoundRecordInitializeThenPlayAudioInitializeTest(aTestName);
+	return self;
+	}
+
+void RA3FDevSoundRecordInitializeThenPlayAudioInitializeTest::DoKickoffTestL()
+	{
+	TPtrC fourccCode;
+	if(!GetStringFromConfig(iTestStepName, KFourccCode, fourccCode))
+		{
+		ERR_PRINTF2(KMsgErrorGetParameter, &KFourccCode);
+		StopTest(KErrNotFound);
+		return;
+		}
+	EncodingFromStringToTFourCC(fourccCode);
+	}
+
+void RA3FDevSoundRecordInitializeThenPlayAudioInitializeTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
+	{
+	switch(iDevSoundState)
+		{
+		case EStateCreated:
+			{
+			__ASSERT_ALWAYS((aError == KErrNone),Panic(_L("RA3FDevSoundRecordInitializeThenPlayAudioInitializeTest"),EFsmIncorrectErrorPassed));
+			if(aDevSoundEvent == EEventInitialize)
+				{
+				INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
+				TRAPD(err, iMMFDevSound->InitializeL(*this, iFourCCCode, EMMFStateRecording));
+				if(err != KErrNone)
+					{
+					ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
+					StopTest(err);
+					break;
+					}
+				INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
+				iDevSoundState = EStateInitializing;
+				}
+			else
+				{
+				ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
+				StopTest(aError, EFail);
+				}
+			break;
+			}
+		case EStateInitializing:
+			{
+			if(aDevSoundEvent == EEventInitComplete && aError == KErrNone)
+				{
+				if(!iReinitialized)
+					{
+					INFO_PRINTF1(_L("========== First initialization successfully completed =========="));
+					iReinitialized = ETrue;
+					INFO_PRINTF1(_L("Again calling CMMFDevSound::InitializeL"));
+					TRAPD(err, iMMFDevSound->InitializeL(*this, iFourCCCode, EMMFStatePlaying));
+					if(err != KErrNone)
+						{
+						StopTest(err);
+						break;
+						}
+					INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
+					iDevSoundState = EStateInitializing;
+					}
+				else
+					{
+					INFO_PRINTF1(_L("========== Second initialization successfully completed =========="));
+					StopTest();
+					}
+				}
+			else if(aDevSoundEvent == EEventInitComplete && aError != KErrNone)
+				{
+				ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error = %d"), aError);
+				StopTest(aError);		
+				}
+			else
+				{
+				ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
+				StopTest(aError, EFail);
+				}
+			break;
+			}	
+		default:
+			{
+			ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
+			StopTest(aError, EFail);
+			}
+		}
+	}
+
+
+/*
+ *========================================================================================================
+ * MM-A3F-DEVSOUND-CHRTZ-INIT-0018
+ */
+RA3FDevSoundRecordInitializeToRecordAudioTwiceTest::RA3FDevSoundRecordInitializeToRecordAudioTwiceTest(const TDesC& aTestName) 
+	: 	RA3FDevSoundTestBase(aTestName), iReinitialized(EFalse)
+	{
+	}
+
+RA3FDevSoundRecordInitializeToRecordAudioTwiceTest* RA3FDevSoundRecordInitializeToRecordAudioTwiceTest::NewL(const TDesC& aTestName)
+	{
+	RA3FDevSoundRecordInitializeToRecordAudioTwiceTest* self = new (ELeave) RA3FDevSoundRecordInitializeToRecordAudioTwiceTest(aTestName);
+	return self;
+	}
+
+void RA3FDevSoundRecordInitializeToRecordAudioTwiceTest::DoKickoffTestL()
+	{
+	TPtrC fourccCode;
+	if(!GetStringFromConfig(iTestStepName, KFourccCode, fourccCode))
+		{
+		ERR_PRINTF2(KMsgErrorGetParameter, &KFourccCode);
+		StopTest(KErrNotFound);
+		return;
+		}
+	EncodingFromStringToTFourCC(fourccCode);
+	}
+
+void RA3FDevSoundRecordInitializeToRecordAudioTwiceTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
+	{
+	switch(iDevSoundState)
+		{
+		case EStateCreated:
+			{
+			__ASSERT_ALWAYS((aError == KErrNone),Panic(_L("RA3FDevSoundRecordInitializeToRecordAudioTwiceTest"),EFsmIncorrectErrorPassed));
+			if(aDevSoundEvent == EEventInitialize)
+				{
+				INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
+				TRAPD(err, iMMFDevSound->InitializeL(*this, iFourCCCode, EMMFStateRecording));
+				if(err != KErrNone)
+					{
+					ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
+					StopTest(err);
+					break;
+					}
+				INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
+				iDevSoundState = EStateInitializing;
+				}
+			else
+				{
+				ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
+				StopTest(aError, EFail);
+				}
+			break;
+			}
+		case EStateInitializing:
+			{
+			if(aDevSoundEvent == EEventInitComplete && aError == KErrNone)
+				{
+				if(!iReinitialized)
+					{
+					INFO_PRINTF1(_L("========== First initialization successfully completed =========="));
+					iReinitialized = ETrue;
+					INFO_PRINTF1(_L("Again calling CMMFDevSound::InitializeL"));
+					TRAPD(err, iMMFDevSound->InitializeL(*this, iFourCCCode, EMMFStateRecording));
+					if(err != KErrNone)
+						{
+						StopTest(err);
+						break;
+						}
+					INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
+					iDevSoundState = EStateInitializing;
+					}
+				else
+					{
+					INFO_PRINTF1(_L("========== Second initialization successfully completed =========="));
+					StopTest();
+					}
+				}
+			else if(aDevSoundEvent == EEventInitComplete && aError != KErrNone)
+				{
+				ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error = %d"), aError);
+				StopTest(aError);		
+				}
+			else
+				{
+				ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
+				StopTest(aError, EFail);
+				}
+			break;
+			}	
+		default:
+			{
+			ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
+			StopTest(aError, EFail);
+			}
+		}
+	}
+
+
+/*
+ *========================================================================================================
+ * MM-A3F-DEVSOUND-CHRTZ-INIT-0019
+ */
+RA3FDevSoundRecordInitializeNoFormatSpecificationPresentedTest::RA3FDevSoundRecordInitializeNoFormatSpecificationPresentedTest(const TDesC& aTestName) 
+	:	RA3FDevSoundTestBase(aTestName)
+	{
+	}
+
+RA3FDevSoundRecordInitializeNoFormatSpecificationPresentedTest* RA3FDevSoundRecordInitializeNoFormatSpecificationPresentedTest::NewL(const TDesC& aTestName)
+	{
+	RA3FDevSoundRecordInitializeNoFormatSpecificationPresentedTest* self = new (ELeave) RA3FDevSoundRecordInitializeNoFormatSpecificationPresentedTest(aTestName);
+	return self;
+	}
+
+void RA3FDevSoundRecordInitializeNoFormatSpecificationPresentedTest::DoKickoffTestL()
+	{
+	}
+
+void RA3FDevSoundRecordInitializeNoFormatSpecificationPresentedTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
+	{
+	switch(iDevSoundState)
+		{
+		case EStateCreated:
+			{
+			__ASSERT_ALWAYS((aError == KErrNone),Panic(_L("RA3FDevSoundReocordCancelInitializeNoFormatSpecificationPresentedTest"),EFsmIncorrectErrorPassed));
+			if(aDevSoundEvent == EEventInitialize)
+				{
+				INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
+				TRAPD(err, iMMFDevSound->InitializeL(*this, EMMFStateRecording));
+				if(err != KErrNone)
+					{
+					ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
+					StopTest(err);
+					break;
+					}		
+				INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
+				iDevSoundState = EStateInitializing;
+				}
+			else if(aDevSoundEvent == EEventInitComplete && aError != KErrNone)
+				{
+				ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error = %d"), aError);
+				StopTest(aError);		
+				}
+			else
+				{
+				ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
+				StopTest(aError, EFail);
+				}
+			break;
+			}
+		case EStateInitializing:
+			{
+			if(aDevSoundEvent == EEventInitComplete && aError == KErrNone)
+				{
+				INFO_PRINTF1(_L("========== Test Case Successfully Completed =========="));
+				StopTest();
+				}
+			else if(aDevSoundEvent == EEventInitComplete && aError != KErrNone)
+				{
+				ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error = %d"), aError);
+				StopTest(aError);		
+				}
+			else
+				{
+				ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
+				StopTest(aError, EFail);
+				}
+			break;
+			}	
+		default:
+			{
+			ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
+			StopTest(aError, EFail);
+			}
+		}
+	}
+
+
+/*
+ *========================================================================================================
+ * MM-A3F-DEVSOUND-CHRTZ-INIT-0020
+ */
+RA3FDevSoundPlayDataWithoutInitializeTest::RA3FDevSoundPlayDataWithoutInitializeTest(const TDesC& aTestName) 
+	:	RA3FDevSoundTestBase(aTestName)
+	{
+	}
+
+RA3FDevSoundPlayDataWithoutInitializeTest* RA3FDevSoundPlayDataWithoutInitializeTest::NewL(const TDesC& aTestName)
+	{
+	RA3FDevSoundPlayDataWithoutInitializeTest* self = new (ELeave) RA3FDevSoundPlayDataWithoutInitializeTest(aTestName);
+	return self;
+	}
+
+void RA3FDevSoundPlayDataWithoutInitializeTest::DoKickoffTestL()
+	{
+	iTimer = CPeriodic::NewL(CActive::EPriorityHigh);
+	}
+
+void RA3FDevSoundPlayDataWithoutInitializeTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
+	{
+	switch(iDevSoundState)
+		{
+		case EStateCreated:
+			{
+			__ASSERT_ALWAYS((aError == KErrNone),Panic(_L("RA3FDevSoundPlayDataWithoutInitializeTest"),EFsmIncorrectErrorPassed));
+			if(aDevSoundEvent == EEventInitialize)
+				{
+				INFO_PRINTF1(_L("Call CMMFDevSound::PlayData without calling CMMFDevSound::InitializeL..."));
+				iMMFDevSound->PlayData();
+				StartTimer(KMicroSecsTwoSec);
+				}
+			else
+				{
+				ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
+				StopTest(aError, EFail);
+				}
+			break;
+			}
+		default:
+			{
+			ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
+			StopTest(aError, EFail);
+			}
+		}
+	}
+
+void RA3FDevSoundPlayDataWithoutInitializeTest::DoTimerCallback()
+	{
+	iTimer->Cancel();
+	ERR_PRINTF1(_L("Panic did not occur as expected when calling PlayData()."));
+	StopTest(KErrNone, EFail);
+	}
+
+/*
+ *========================================================================================================
+ * MM-A3F-DEVSOUND-CHRTZ-INIT-0021
+ */
+RA3FDevSoundPlayDTMFStringWithoutInitializeTest::RA3FDevSoundPlayDTMFStringWithoutInitializeTest(const TDesC& aTestName) 
+	:	RA3FDevSoundTestBase(aTestName), iDTMFString(KNullDesC)
+	{
+	}
+
+RA3FDevSoundPlayDTMFStringWithoutInitializeTest* RA3FDevSoundPlayDTMFStringWithoutInitializeTest::NewL(const TDesC& aTestName)
+	{
+	RA3FDevSoundPlayDTMFStringWithoutInitializeTest* self = new (ELeave) RA3FDevSoundPlayDTMFStringWithoutInitializeTest(aTestName);
+	return self;
+	}
+
+void RA3FDevSoundPlayDTMFStringWithoutInitializeTest::DoKickoffTestL()
+	{
+	TPtrC DTMF;
+	if(!GetStringFromConfig(iTestStepName, KDTMFString, DTMF))
+		{
+		ERR_PRINTF2(KMsgErrorGetParameter, &KDTMFString);
+		StopTest(KErrNotFound);
+		return;
+		}
+	iDTMFString.Copy(DTMF);
+	}
+
+void RA3FDevSoundPlayDTMFStringWithoutInitializeTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
+	{
+	switch(iDevSoundState)
+		{
+		case EStateCreated:
+			{
+			__ASSERT_ALWAYS((aError == KErrNone),Panic(_L("RA3FDevSoundPlayDTMFStringWithoutInitializeTest"),EFsmIncorrectErrorPassed));
+			if(aDevSoundEvent == EEventInitialize)
+				{
+				INFO_PRINTF1(_L("Call CMMFDevSound::PlayDTMFStringL..."));
+				TRAPD(err, iMMFDevSound->PlayDTMFStringL(iDTMFString));
+				if(err == KErrNotReady)
+					{
+					ERR_PRINTF2(_L("Calling CMMFDevSound::PlayDTMFStringL  without calling CMMFDevSound::InitializeL left with expected error = %d"), err);
+					StopTest(err, EPass);
+					break;
+					}
+				else
+					{
+					ERR_PRINTF2(_L("CMMFDevSound::PlayDTMFStringL  without calling CMMFDevSound::InitializeL left with error = %d"), err);
+					ERR_PRINTF2(_L("Expected error = %d"), KErrNotReady);
+					StopTest(err, EFail);
+					}
+				}
+			else
+				{
+				ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
+				StopTest(aError, EFail);
+				}
+			break;
+			}
+		default:
+			{
+			ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
+			StopTest(aError, EFail);
+			}
+		}
+	}
+
+
+/*
+ *========================================================================================================
+ * MM-A3F-DEVSOUND-CHRTZ-INIT-0022
+ */
+RA3FDevSoundPlayDualToneWithoutInitializeTest::RA3FDevSoundPlayDualToneWithoutInitializeTest(const TDesC& aTestName) 
+	:	RA3FDevSoundTestBase(aTestName), iFrequencyTone1(0), iFrequencyTone2(0)
+	{
+	}
+
+RA3FDevSoundPlayDualToneWithoutInitializeTest* RA3FDevSoundPlayDualToneWithoutInitializeTest::NewL(const TDesC& aTestName)
+	{
+	RA3FDevSoundPlayDualToneWithoutInitializeTest* self = new (ELeave) RA3FDevSoundPlayDualToneWithoutInitializeTest(aTestName);
+	return self;
+	}
+
+void RA3FDevSoundPlayDualToneWithoutInitializeTest::DoKickoffTestL()
+	{
+	if(!GetIntFromConfig(iTestStepName, KDuration, iDuration)) 
+		{
+		ERR_PRINTF2(KMsgErrorGetParameter, &KDuration);
+		StopTest(KErrNotFound);
+		return;
+		}
+	if(!GetIntFromConfig(iTestStepName, KFrequencyTone1, iFrequencyTone1)) 
+		{
+		ERR_PRINTF2(KMsgErrorGetParameter, &KFrequencyTone1);
+		StopTest(KErrNotFound);
+		return;
+		}
+	if(!GetIntFromConfig(iTestStepName, KFrequencyTone2, iFrequencyTone2)) 
+		{
+		ERR_PRINTF2(KMsgErrorGetParameter, &KFrequencyTone2);
+		StopTest(KErrNotFound);
+		return;
+		}
+	}
+
+void RA3FDevSoundPlayDualToneWithoutInitializeTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
+	{
+	switch(iDevSoundState)
+		{
+		case EStateCreated:
+			{
+			__ASSERT_ALWAYS((aError == KErrNone),Panic(_L("RA3FDevSoundPlayDualToneWithoutInitializeTest"),EFsmIncorrectErrorPassed));
+			if(aDevSoundEvent == EEventInitialize)
+				{
+				INFO_PRINTF1(_L("Call CMMFDevSound::PlayDualToneL..."));
+				TRAPD(err, iMMFDevSound->PlayDualToneL(iFrequencyTone1,iFrequencyTone2,iDuration));
+				if(err == KErrNotReady)
+					{
+					ERR_PRINTF2(_L("Calling CMMFDevSound::PlayDualToneL  without calling CMMFDevSound::InitializeL left with expected error = %d"), err);
+					StopTest(err, EPass);
+					break;
+					}
+				else
+					{
+					ERR_PRINTF2(_L("CMMFDevSound::PlayDualToneL  without calling CMMFDevSound::InitializeL left with error = %d"), err);
+					ERR_PRINTF2(_L("Expected error = %d"), KErrNotReady);
+					StopTest(err, EFail);
+					}
+				}
+			else
+				{
+				ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
+				StopTest(aError, EFail);
+				}
+			break;
+			}
+		default:
+			{
+			ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
+			StopTest(aError, EFail);
+			}
+		}
+	}
+
+
+/*
+ *========================================================================================================
+ * MM-A3F-DEVSOUND-CHRTZ-INIT-0023
+ */
+RA3FDevSoundPlayFixedSequenceWithoutInitializeTest::RA3FDevSoundPlayFixedSequenceWithoutInitializeTest(const TDesC& aTestName) 
+	:	RA3FDevSoundTestBase(aTestName)
+	{
+	}
+
+RA3FDevSoundPlayFixedSequenceWithoutInitializeTest* RA3FDevSoundPlayFixedSequenceWithoutInitializeTest::NewL(const TDesC& aTestName)
+	{
+	RA3FDevSoundPlayFixedSequenceWithoutInitializeTest* self = new (ELeave) RA3FDevSoundPlayFixedSequenceWithoutInitializeTest(aTestName);
+	return self;
+	}
+
+void RA3FDevSoundPlayFixedSequenceWithoutInitializeTest::DoKickoffTestL()
+	{
+	}
+
+void RA3FDevSoundPlayFixedSequenceWithoutInitializeTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
+	{
+	switch(iDevSoundState)
+		{
+		case EStateCreated:
+			{
+			__ASSERT_ALWAYS((aError == KErrNone),Panic(_L("RA3FDevSoundPlayFixedSequenceWithoutInitializeTest"),EFsmIncorrectErrorPassed));
+			if(aDevSoundEvent == EEventInitialize)
+				{
+				INFO_PRINTF1(_L("Call CMMFDevSound::PlayFixedSequenceL..."));
+				TRAPD(err, iMMFDevSound->PlayFixedSequenceL(0));
+				if(err == KErrNotSupported)
+					{
+					ERR_PRINTF2(_L("Calling CMMFDevSound::PlayFixedSequenceL  without calling CMMFDevSound::InitializeL left with expected error = %d"), err);
+					StopTest(err, EPass);
+					break;
+					}
+				else
+					{
+					ERR_PRINTF2(_L("CMMFDevSound::PlayFixedSequenceL  without calling CMMFDevSound::InitializeL left with error = %d"), err);
+					ERR_PRINTF2(_L("Expected error = %d"), KErrNotReady);
+					StopTest(err, EFail);
+					}
+				}
+			else
+				{
+				ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
+				StopTest(aError, EFail);
+				}
+			break;
+			}
+		default:
+			{
+			ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
+			StopTest(aError, EFail);
+			}
+		}
+	}
+
+
+/*
+ *========================================================================================================
+ * MM-A3F-DEVSOUND-CHRTZ-INIT-0024
+ */
+RA3FDevSoundPlayInitWithoutInitializeTest::RA3FDevSoundPlayInitWithoutInitializeTest(const TDesC& aTestName) 
+	:	RA3FDevSoundTestBase(aTestName)
+	{
+	}
+
+RA3FDevSoundPlayInitWithoutInitializeTest* RA3FDevSoundPlayInitWithoutInitializeTest::NewL(const TDesC& aTestName)
+	{
+	RA3FDevSoundPlayInitWithoutInitializeTest* self = new (ELeave) RA3FDevSoundPlayInitWithoutInitializeTest(aTestName);
+	return self;
+	}
+
+void RA3FDevSoundPlayInitWithoutInitializeTest::DoKickoffTestL()
+	{
+	}
+
+void RA3FDevSoundPlayInitWithoutInitializeTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
+	{
+	switch(iDevSoundState)
+		{
+		case EStateCreated:
+			{
+			__ASSERT_ALWAYS((aError == KErrNone),Panic(_L("RA3FDevSoundPlayInitWithoutInitializeTest"),EFsmIncorrectErrorPassed));
+			if(aDevSoundEvent == EEventInitialize)
+				{
+				INFO_PRINTF1(_L("Call CMMFDevSound::PlayInitL without calling CMMFDevSound::InitializeL..."));
+				TRAPD(err,iMMFDevSound->PlayInitL());
+				if(err == KErrNotReady)
+					{
+					ERR_PRINTF2(_L("Calling CMMFDevSound::PlayInitL  without calling CMMFDevSound::InitializeL left with expected error = %d"), err);
+					StopTest(err, EPass);
+					break;
+					}
+				else
+					{
+					ERR_PRINTF2(_L("CMMFDevSound::PlayInitL  without calling CMMFDevSound::InitializeL left with error = %d"), err);
+					ERR_PRINTF2(_L("Expected error = %d"), KErrNotReady);
+					StopTest(err, EFail);
+					}
+				}
+			else
+				{
+				ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
+				StopTest(aError, EFail);
+				}
+			break;
+			}
+		default:
+			{
+			ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
+			StopTest(aError, EFail);
+			}
+		}
+	}
+
+
+/*
+ *========================================================================================================
+ * MM-A3F-DEVSOUND-CHRTZ-INIT-0025
+ */
+RA3FDevSoundPlayToneWithoutInitializeTest::RA3FDevSoundPlayToneWithoutInitializeTest(const TDesC& aTestName) 
+	:	RA3FDevSoundTestBase(aTestName), iFrequencyTone1(0)
+	{
+	}
+
+RA3FDevSoundPlayToneWithoutInitializeTest* RA3FDevSoundPlayToneWithoutInitializeTest::NewL(const TDesC& aTestName)
+	{
+	RA3FDevSoundPlayToneWithoutInitializeTest* self = new (ELeave) RA3FDevSoundPlayToneWithoutInitializeTest(aTestName);
+	return self;
+	}
+
+void RA3FDevSoundPlayToneWithoutInitializeTest::DoKickoffTestL()
+	{
+	if(!GetIntFromConfig(iTestStepName, KDuration, iDuration)) 
+		{
+		ERR_PRINTF2(KMsgErrorGetParameter, &KDuration);
+		StopTest(KErrNotFound);
+		return;
+		}
+	if(!GetIntFromConfig(iTestStepName, KFrequencyTone1, iFrequencyTone1)) 
+		{
+		ERR_PRINTF2(KMsgErrorGetParameter, &KFrequencyTone1);
+		StopTest(KErrNotFound);
+		return;
+		}
+	}
+
+void RA3FDevSoundPlayToneWithoutInitializeTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
+	{
+	switch(iDevSoundState)
+		{
+		case EStateCreated:
+			{
+			__ASSERT_ALWAYS((aError == KErrNone),Panic(_L("RA3FDevSoundPlayToneWithoutInitializeTest"),EFsmIncorrectErrorPassed));
+			if(aDevSoundEvent == EEventInitialize)
+				{
+				INFO_PRINTF1(_L("Call CMMFDevSound::PlayToneL..."));
+				TRAPD(err, iMMFDevSound->PlayToneL(iFrequencyTone1, iDuration));
+				if(err == KErrNotReady)
+					{
+					ERR_PRINTF2(_L("Calling CMMFDevSound::PlayToneL  without calling CMMFDevSound::InitializeL left with expected error = %d"), err);
+					StopTest(err, EPass);
+					break;
+					}
+				else
+					{
+					ERR_PRINTF2(_L("CMMFDevSound::PlayToneL  without calling CMMFDevSound::InitializeL left with error = %d"), err);
+					ERR_PRINTF2(_L("Expected error = %d"), KErrNotReady);
+					StopTest(err, EFail);
+					}
+				}
+			else
+				{
+				ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
+				StopTest(aError, EFail);
+				}
+			break;
+			}
+		default:
+			{
+			ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
+			StopTest(aError, EFail);
+			}
+		}
+	}
+
+
+/*
+ *========================================================================================================
+ * MM-A3F-DEVSOUND-CHRTZ-INIT-0026
+ */
+RA3FDevSoundPlayToneSequenceWithoutInitializeTest::RA3FDevSoundPlayToneSequenceWithoutInitializeTest(const TDesC& aTestName) 
+	:	RA3FDevSoundTestBase(aTestName)
+	{
+	}
+
+RA3FDevSoundPlayToneSequenceWithoutInitializeTest* RA3FDevSoundPlayToneSequenceWithoutInitializeTest::NewL(const TDesC& aTestName)
+	{
+	RA3FDevSoundPlayToneSequenceWithoutInitializeTest* self = new (ELeave) RA3FDevSoundPlayToneSequenceWithoutInitializeTest(aTestName);
+	return self;
+	}
+
+void RA3FDevSoundPlayToneSequenceWithoutInitializeTest::DoKickoffTestL()
+	{
+	}
+
+void RA3FDevSoundPlayToneSequenceWithoutInitializeTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
+	{
+	switch(iDevSoundState)
+		{
+		case EStateCreated:
+			{
+			__ASSERT_ALWAYS((aError == KErrNone),Panic(_L("RA3FDevSoundPlayToneSequenceWithoutInitializeTest"),EFsmIncorrectErrorPassed));
+			if(aDevSoundEvent == EEventInitialize)
+				{
+				TUint8* tablePointer = const_cast<TUint8*>( &(KFixedSequenceTestSequenceDataX[0] )); 
+				TPtrC8 KFixedSequenceData(tablePointer,  sizeof(KFixedSequenceTestSequenceDataX));
+				INFO_PRINTF1(_L("Call CMMFDevSound::PlayToneSequenceL..."));
+				TRAPD(err, iMMFDevSound->PlayToneSequenceL(KFixedSequenceData));
+				if(err == KErrNotReady)
+					{
+					ERR_PRINTF2(_L("Calling CMMFDevSound::PlayToneSequenceL  without calling CMMFDevSound::InitializeL left with expected error = %d"), err);
+					StopTest(err, EPass);
+					break;
+					}
+				else
+					{
+					ERR_PRINTF2(_L("CMMFDevSound::PlayToneSequenceL  without calling CMMFDevSound::InitializeL left with error = %d"), err);
+					ERR_PRINTF2(_L("Expected error = %d"), KErrNotReady);
+					StopTest(err, EFail);
+					}
+				}
+			else
+				{
+				ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
+				StopTest(aError, EFail);
+				}
+			break;
+			}
+		default:
+			{
+			ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
+			StopTest(aError, EFail);
+			}
+		}
+	}
+
+
+/*
+ *========================================================================================================
+ * MM-A3F-DEVSOUND-CHRTZ-INIT-0027
+ */
+RA3FDevSoundRecordDataWithoutInitializeTest::RA3FDevSoundRecordDataWithoutInitializeTest(const TDesC& aTestName) 
+	:	RA3FDevSoundTestBase(aTestName)
+	{
+	}
+
+RA3FDevSoundRecordDataWithoutInitializeTest* RA3FDevSoundRecordDataWithoutInitializeTest::NewL(const TDesC& aTestName)
+	{
+	RA3FDevSoundRecordDataWithoutInitializeTest* self = new (ELeave) RA3FDevSoundRecordDataWithoutInitializeTest(aTestName);
+	return self;
+	}
+
+void RA3FDevSoundRecordDataWithoutInitializeTest::DoKickoffTestL()
+	{
+	iTimer = CPeriodic::NewL(CActive::EPriorityHigh);
+	}
+
+void RA3FDevSoundRecordDataWithoutInitializeTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
+	{
+	switch(iDevSoundState)
+		{
+		case EStateCreated:
+			{
+			__ASSERT_ALWAYS((aError == KErrNone),Panic(_L("RA3FDevSoundRecordDataWithoutInitializeTest"),EFsmIncorrectErrorPassed));
+			if(aDevSoundEvent == EEventInitialize)
+				{
+				INFO_PRINTF1(_L("Call CMMFDevSound::RecordData without calling CMMFDevSound::InitializeL..."));
+				iMMFDevSound->RecordData();
+				StartTimer(KMicroSecsTwoSec);
+				}
+			else
+				{
+				ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
+				StopTest(aError, EFail);
+				}
+			break;
+			}
+		default:
+			{
+			ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
+			StopTest(aError, EFail);
+			}
+		}
+	}
+
+void RA3FDevSoundRecordDataWithoutInitializeTest::DoTimerCallback()
+	{
+	iTimer->Cancel();
+	ERR_PRINTF1(_L("Panic did not occur as expected when calling RecordData()."));
+	StopTest(KErrNone, EFail);
+	}
+
+/*
+ *========================================================================================================
+ * MM-A3F-DEVSOUND-CHRTZ-INIT-0028
+ */
+RA3FDevSoundRecordInitWithoutInitializeTest::RA3FDevSoundRecordInitWithoutInitializeTest(const TDesC& aTestName) 
+	:	RA3FDevSoundTestBase(aTestName)
+	{
+	}
+
+RA3FDevSoundRecordInitWithoutInitializeTest* RA3FDevSoundRecordInitWithoutInitializeTest::NewL(const TDesC& aTestName)
+	{
+	RA3FDevSoundRecordInitWithoutInitializeTest* self = new (ELeave) RA3FDevSoundRecordInitWithoutInitializeTest(aTestName);
+	return self;
+	}
+
+void RA3FDevSoundRecordInitWithoutInitializeTest::DoKickoffTestL()
+	{
+	}
+
+void RA3FDevSoundRecordInitWithoutInitializeTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
+	{
+	switch(iDevSoundState)
+		{
+		case EStateCreated:
+			{
+			__ASSERT_ALWAYS((aError == KErrNone),Panic(_L("RA3FDevSoundRecordInitWithoutInitializeTest"),EFsmIncorrectErrorPassed));
+			if(aDevSoundEvent == EEventInitialize)
+				{
+				INFO_PRINTF1(_L("Call CMMFDevSound::RecordInitL without calling CMMFDevSound::InitializeL..."));
+				TRAPD(err,iMMFDevSound->RecordInitL());
+				if(err == KErrNotReady)
+					{
+					ERR_PRINTF2(_L("Calling CMMFDevSound::RecordInitL  without calling CMMFDevSound::InitializeL left with expected error = %d"), err);
+					StopTest(err, EPass);
+					break;
+					}
+				else
+					{
+					ERR_PRINTF2(_L("CMMFDevSound::RecordInitL  without calling CMMFDevSound::InitializeL left with error = %d"), err);
+					ERR_PRINTF2(_L("Expected error = %d"), KErrNotReady);
+					StopTest(err, EFail);
+					}
+				}
+			else
+				{
+				ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
+				StopTest(aError, EFail);
+				}
+			break;
+			}
+		default:
+			{
+			ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
+			StopTest(aError, EFail);
+			}
+		}
+	}
+
+
+/*
+ *========================================================================================================
+ * MM-A3F-DEVSOUND-CHRTZ-INIT-0029
+ */
+RA3FDevSoundToneInitializationMoreThanOnceBeforeInitCompleteTest::RA3FDevSoundToneInitializationMoreThanOnceBeforeInitCompleteTest(const TDesC& aTestName) 
+	:	RA3FDevSoundTestBase(aTestName)
+	{
+	}
+
+RA3FDevSoundToneInitializationMoreThanOnceBeforeInitCompleteTest* RA3FDevSoundToneInitializationMoreThanOnceBeforeInitCompleteTest::NewL(const TDesC& aTestName)
+	{
+	RA3FDevSoundToneInitializationMoreThanOnceBeforeInitCompleteTest* self = new (ELeave) RA3FDevSoundToneInitializationMoreThanOnceBeforeInitCompleteTest(aTestName);
+	return self;
+	}
+
+void RA3FDevSoundToneInitializationMoreThanOnceBeforeInitCompleteTest::DoKickoffTestL()
+	{
+	}
+
+void RA3FDevSoundToneInitializationMoreThanOnceBeforeInitCompleteTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
+	{
+	switch(iDevSoundState)
+		{
+		case EStateCreated:
+			{
+			__ASSERT_ALWAYS((aError == KErrNone),Panic(_L("RA3FDevSoundToneInitializationMoreThanOnceBeforeInitCompleteTest"),EFsmIncorrectErrorPassed));
+			if(aDevSoundEvent == EEventInitialize)
+				{
+				INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
+				TRAPD(err, iMMFDevSound->InitializeL(*this, EMMFStateTonePlaying));
+				if(err != KErrNone)
+					{
+					ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
+					StopTest(err);
+					break;
+					}
+				INFO_PRINTF1(_L("CMMFDevSound::InitializeL called twice before init complete"));
+				TRAP(err, iMMFDevSound->InitializeL(*this, EMMFStateTonePlaying));
+				if(err != KErrNotReady)
+					{
+					ERR_PRINTF2(_L("Calling CMMFDevSound::InitializeL more than once before init complete left with error = %d"), err);
+					ERR_PRINTF2(_L("Expected error = %d"), KErrNotReady);
+					StopTest(err, EFail);
+					}
+				else
+					{
+					INFO_PRINTF1(_L("Second call to CMMFDevSound::InitializeL leaves with KErrNotReady as expected"));
+					}
+				INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
+				iDevSoundState = EStateInitializing;
+				}
+			else
+				{
+				ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
+				StopTest(aError, EFail);
+				}
+			break;
+			}
+		case EStateInitializing:
+			{
+			if(aDevSoundEvent == EEventInitComplete && aError == KErrNone)
+				{
+				INFO_PRINTF1(_L("========== Test Case Successfully Completed =========="));
+				StopTest();
+				}
+			else if(aDevSoundEvent == EEventInitComplete && aError != KErrNone)
+				{
+				ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error = %d"), aError);
+				StopTest(aError);		
+				}
+			else
+				{
+				ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
+				StopTest(aError, EFail);
+				}
+			break;
+			}	
+		default:
+			{
+			ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
+			StopTest(aError, EFail);
+			}
+		}
+	}
+
+
+/*
+ *========================================================================================================
+ * MM-A3F-DEVSOUND-CHRTZ-INIT-0030
+ */
+RA3FDevSoundPlayInitializationMoreThanOnceBeforeInitCompleteTest::RA3FDevSoundPlayInitializationMoreThanOnceBeforeInitCompleteTest(const TDesC& aTestName) 
+	:	RA3FDevSoundTestBase(aTestName)
+	{
+	}
+
+RA3FDevSoundPlayInitializationMoreThanOnceBeforeInitCompleteTest* RA3FDevSoundPlayInitializationMoreThanOnceBeforeInitCompleteTest::NewL(const TDesC& aTestName)
+	{
+	RA3FDevSoundPlayInitializationMoreThanOnceBeforeInitCompleteTest* self = new (ELeave) RA3FDevSoundPlayInitializationMoreThanOnceBeforeInitCompleteTest(aTestName);
+	return self;
+	}
+
+void RA3FDevSoundPlayInitializationMoreThanOnceBeforeInitCompleteTest::DoKickoffTestL()
+	{
+	TPtrC fourccCode;
+	if(!GetStringFromConfig(iTestStepName, KFourccCode, fourccCode))
+		{
+		ERR_PRINTF2(KMsgErrorGetParameter, &KFourccCode);
+		StopTest(KErrNotFound);
+		return;
+		}
+	EncodingFromStringToTFourCC(fourccCode);
+	}
+
+void RA3FDevSoundPlayInitializationMoreThanOnceBeforeInitCompleteTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
+	{
+	switch(iDevSoundState)
+		{
+		case EStateCreated:
+			{
+			__ASSERT_ALWAYS((aError == KErrNone),Panic(_L("RA3FDevSoundPlayInitializationMoreThanOnceBeforeInitCompleteTest"),EFsmIncorrectErrorPassed));
+			if(aDevSoundEvent == EEventInitialize)
+				{
+				INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
+				TRAPD(err, iMMFDevSound->InitializeL(*this, iFourCCCode, EMMFStatePlaying));
+				if(err != KErrNone)
+					{
+					ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
+					StopTest(err);
+					break;
+					}
+				INFO_PRINTF1(_L("CMMFDevSound::InitializeL called twice before init complete"));
+				TRAP(err, iMMFDevSound->InitializeL(*this, iFourCCCode, EMMFStatePlaying));
+				if(err != KErrNotReady)
+					{
+					ERR_PRINTF2(_L("Calling CMMFDevSound::InitializeL more than once before init complete left with error = %d"), err);
+					ERR_PRINTF2(_L("Expected error = %d"), KErrNotReady);
+					StopTest(err, EFail);
+					}
+				else
+					{
+					INFO_PRINTF1(_L("Second call to CMMFDevSound::InitializeL leaves with KErrNotReady as expected"));
+					}
+				INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
+				iDevSoundState = EStateInitializing;
+				}
+			else
+				{
+				ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
+				StopTest(aError, EFail);
+				}
+			break;
+			}
+		case EStateInitializing:
+			{
+			if(aDevSoundEvent == EEventInitComplete && aError == KErrNone)
+				{
+				INFO_PRINTF1(_L("========== Test Case Successfully Completed =========="));
+				StopTest();
+				}
+			else if(aDevSoundEvent == EEventInitComplete && aError != KErrNone)
+				{
+				ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error = %d"), aError);
+				StopTest(aError);		
+				}
+			else
+				{
+				ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
+				StopTest(aError, EFail);
+				}
+			break;
+			}	
+		default:
+			{
+			ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
+			StopTest(aError, EFail);
+			}
+		}
+	}
+
+
+/*
+ *========================================================================================================
+ * MM-A3F-DEVSOUND-CHRTZ-INIT-0031
+ */
+RA3FDevSoundRecordInitializationMoreThanOnceBeforeInitCompleteTest::RA3FDevSoundRecordInitializationMoreThanOnceBeforeInitCompleteTest(const TDesC& aTestName) 
+	:	RA3FDevSoundTestBase(aTestName)
+	{
+	}
+
+RA3FDevSoundRecordInitializationMoreThanOnceBeforeInitCompleteTest* RA3FDevSoundRecordInitializationMoreThanOnceBeforeInitCompleteTest::NewL(const TDesC& aTestName)
+	{
+	RA3FDevSoundRecordInitializationMoreThanOnceBeforeInitCompleteTest* self = new (ELeave) RA3FDevSoundRecordInitializationMoreThanOnceBeforeInitCompleteTest(aTestName);
+	return self;
+	}
+
+void RA3FDevSoundRecordInitializationMoreThanOnceBeforeInitCompleteTest::DoKickoffTestL()
+	{
+	TPtrC fourccCode;
+	if(!GetStringFromConfig(iTestStepName, KFourccCode, fourccCode))
+		{
+		ERR_PRINTF2(KMsgErrorGetParameter, &KFourccCode);
+		StopTest(KErrNotFound);
+		return;
+		}
+	EncodingFromStringToTFourCC(fourccCode);
+	}
+
+void RA3FDevSoundRecordInitializationMoreThanOnceBeforeInitCompleteTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
+	{
+	switch(iDevSoundState)
+		{
+		case EStateCreated:
+			{
+			__ASSERT_ALWAYS((aError == KErrNone),Panic(_L("RA3FDevSoundRecordInitializationMoreThanOnceBeforeInitCompleteTest"),EFsmIncorrectErrorPassed));
+			if(aDevSoundEvent == EEventInitialize)
+				{
+				INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
+				TRAPD(err, iMMFDevSound->InitializeL(*this, iFourCCCode, EMMFStateRecording));
+				if(err != KErrNone)
+					{
+					INFO_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
+					StopTest(err);
+					break;
+					}
+				INFO_PRINTF1(_L("CMMFDevSound::InitializeL called twice before init complete"));
+				TRAP(err, iMMFDevSound->InitializeL(*this, iFourCCCode, EMMFStateRecording));
+				if(err != KErrNotReady)
+					{
+					ERR_PRINTF2(_L("Calling MMFDevSound::InitializeL more than once before init complete left with error = %d"), err);
+					ERR_PRINTF2(_L("Expected error = %d"), KErrNotReady);
+					StopTest(err, EFail);
+					}
+				else
+					{
+					INFO_PRINTF1(_L("Second call to CMMFDevSound::InitializeL leaves with KErrNotReady as expected"));
+					}
+				INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
+				iDevSoundState = EStateInitializing;
+				}
+			else
+				{
+				ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
+				StopTest(aError, EFail);
+				}
+			break;
+			}
+		case EStateInitializing:
+			{
+			if(aDevSoundEvent == EEventInitComplete && aError == KErrNone)
+				{
+				INFO_PRINTF1(_L("========== Test Case Successfully Completed =========="));
+				StopTest();
+				}
+			else if(aDevSoundEvent == EEventInitComplete && aError != KErrNone)
+				{
+				ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error = %d"), aError);
+				StopTest(aError);		
+				}
+			else
+				{
+				ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
+				StopTest(aError, EFail);
+				}
+			break;
+			}	
+		default:
+			{
+			ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
+			StopTest(aError, EFail);
+			}
+		}
+	}
+
+
+/*
+ *========================================================================================================
+ * MM-A3F-DEVSOUND-CHRTZ-INIT-0032
+ */
+RA3FDevSoundToneFirstInitializationLeavesThenSecondSucceeds::RA3FDevSoundToneFirstInitializationLeavesThenSecondSucceeds(const TDesC& aTestName) 
+	:	RA3FDevSoundTestBase(aTestName)
+	{
+	}
+
+RA3FDevSoundToneFirstInitializationLeavesThenSecondSucceeds* RA3FDevSoundToneFirstInitializationLeavesThenSecondSucceeds::NewL(const TDesC& aTestName)
+	{
+	RA3FDevSoundToneFirstInitializationLeavesThenSecondSucceeds* self = new (ELeave) RA3FDevSoundToneFirstInitializationLeavesThenSecondSucceeds(aTestName);
+	return self;
+	}
+
+void RA3FDevSoundToneFirstInitializationLeavesThenSecondSucceeds::DoKickoffTestL()
+	{
+	}
+
+void RA3FDevSoundToneFirstInitializationLeavesThenSecondSucceeds::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
+	{
+	switch(iDevSoundState)
+		{
+		case EStateCreated:
+			{
+			__ASSERT_ALWAYS((aError == KErrNone),Panic(_L("RA3FDevSoundToneFirstInitializationLeavesThenSecondSucceed"),EFsmIncorrectErrorPassed));
+			if(aDevSoundEvent == EEventInitialize)
+				{
+				INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL to make it leave"));
+				TRAPD(err, iMMFDevSound->InitializeL(*this, EMMFStateConverting));
+				if(err != KErrNone)
+					{
+					ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
+					}
+				else
+					{
+					ERR_PRINTF1(_L("CMMFDevSound::InitializeL  did not leave as expected"));
+					StopTest(err, EFail);
+					}
+				INFO_PRINTF1(_L("CMMFDevSound::InitializeL called twice, but now using right parameters"));
+				TRAP(err, iMMFDevSound->InitializeL(*this, EMMFStateTonePlaying));
+				if(err != KErrNone)
+					{
+					ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
+					StopTest(err);
+					break;
+					}
+				INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
+				iDevSoundState = EStateInitializing;
+				}
+			else
+				{
+				ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
+				StopTest(aError, EFail);
+				}
+			break;
+			}
+		case EStateInitializing:
+			{
+			if(aDevSoundEvent == EEventInitComplete && aError == KErrNone)
+				{
+				INFO_PRINTF1(_L("========== Test Case Successfully Completed =========="));
+				StopTest();
+				}
+			else if(aDevSoundEvent == EEventInitComplete && aError != KErrNone)
+				{
+				ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error = %d"), aError);
+				StopTest(aError);		
+				}
+			else
+				{
+				ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
+				StopTest(aError, EFail);
+				}
+			break;
+			}	
+		default:
+			{
+			ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
+			StopTest(aError, EFail);
+			}
+		}
+	}
+
+
+/*
+ *========================================================================================================
+ * MM-A3F-DEVSOUND-CHRTZ-INIT-0033
+ */
+RA3FDevSoundPlayFirstInitializationLeavesThenSecondSucceeds::RA3FDevSoundPlayFirstInitializationLeavesThenSecondSucceeds(const TDesC& aTestName) 
+	:	RA3FDevSoundTestBase(aTestName)
+	{
+	}
+
+RA3FDevSoundPlayFirstInitializationLeavesThenSecondSucceeds* RA3FDevSoundPlayFirstInitializationLeavesThenSecondSucceeds::NewL(const TDesC& aTestName)
+	{
+	RA3FDevSoundPlayFirstInitializationLeavesThenSecondSucceeds* self = new (ELeave) RA3FDevSoundPlayFirstInitializationLeavesThenSecondSucceeds(aTestName);
+	return self;
+	}
+
+void RA3FDevSoundPlayFirstInitializationLeavesThenSecondSucceeds::DoKickoffTestL()
+	{
+	TPtrC fourccCode;
+	if(!GetStringFromConfig(iTestStepName, KFourccCode, fourccCode))
+		{
+		ERR_PRINTF2(KMsgErrorGetParameter, &KFourccCode);
+		StopTest(KErrNotFound);
+		return;
+		}
+	EncodingFromStringToTFourCC(fourccCode);
+	}
+
+void RA3FDevSoundPlayFirstInitializationLeavesThenSecondSucceeds::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
+	{
+	switch(iDevSoundState)
+		{
+		case EStateCreated:
+			{
+			__ASSERT_ALWAYS((aError == KErrNone),Panic(_L("RA3FDevSoundPlayFirstInitializationLeavesThenSecondSucceed"),EFsmIncorrectErrorPassed));
+			if(aDevSoundEvent == EEventInitialize)
+				{
+				INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL to make it leave"));
+				TRAPD(err, iMMFDevSound->InitializeL(*this, iFourCCCode, EMMFStateConverting));
+				if(err != KErrNone)
+					{
+					ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
+					}
+				else
+					{
+					ERR_PRINTF1(_L("CMMFDevSound::InitializeL  did not leave as expected"));
+					StopTest(err, EFail);
+					}
+				INFO_PRINTF1(_L("CMMFDevSound::InitializeL called twice, but now using right parameters"));
+				TRAP(err, iMMFDevSound->InitializeL(*this, iFourCCCode, EMMFStatePlaying));
+				if(err != KErrNone)
+					{
+					ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
+					StopTest(err);
+					break;
+					}
+				INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
+				iDevSoundState = EStateInitializing;
+				}
+			else
+				{
+				ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
+				StopTest(aError, EFail);
+				}
+			break;
+			}
+		case EStateInitializing:
+			{
+			if(aDevSoundEvent == EEventInitComplete && aError == KErrNone)
+				{
+				INFO_PRINTF1(_L("========== Test Case Successfully Completed =========="));
+				StopTest();
+				}
+			else if(aDevSoundEvent == EEventInitComplete && aError != KErrNone)
+				{
+				ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error = %d"), aError);
+				StopTest(aError);		
+				}
+			else
+				{
+				ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
+				StopTest(aError, EFail);
+				}
+			break;
+			}	
+		default:
+			{
+			ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
+			StopTest(aError, EFail);
+			}
+		}
+	}
+
+
+/*
+ *========================================================================================================
+ * MM-A3F-DEVSOUND-CHRTZ-INIT-0034
+ */
+RA3FDevSoundRecordFirstInitializationLeavesThenSecondSucceeds::RA3FDevSoundRecordFirstInitializationLeavesThenSecondSucceeds(const TDesC& aTestName) 
+	:	RA3FDevSoundTestBase(aTestName)
+	{
+	}
+
+RA3FDevSoundRecordFirstInitializationLeavesThenSecondSucceeds* RA3FDevSoundRecordFirstInitializationLeavesThenSecondSucceeds::NewL(const TDesC& aTestName)
+	{
+	RA3FDevSoundRecordFirstInitializationLeavesThenSecondSucceeds* self = new (ELeave) RA3FDevSoundRecordFirstInitializationLeavesThenSecondSucceeds(aTestName);
+	return self;
+	}
+
+void RA3FDevSoundRecordFirstInitializationLeavesThenSecondSucceeds::DoKickoffTestL()
+	{
+	TPtrC fourccCode;
+	if(!GetStringFromConfig(iTestStepName, KFourccCode, fourccCode))
+		{
+		ERR_PRINTF2(KMsgErrorGetParameter, &KFourccCode);
+		StopTest(KErrNotFound);
+		return;
+		}
+	EncodingFromStringToTFourCC(fourccCode);
+	}
+
+void RA3FDevSoundRecordFirstInitializationLeavesThenSecondSucceeds::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
+	{
+	switch(iDevSoundState)
+		{
+		case EStateCreated:
+			{
+			__ASSERT_ALWAYS((aError == KErrNone),Panic(_L("RA3FDevSoundRecordFirstInitializationLeavesThenSecondSucceed"),EFsmIncorrectErrorPassed));
+			if(aDevSoundEvent == EEventInitialize)
+				{
+				INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL to make it leave"));
+				TRAPD(err, iMMFDevSound->InitializeL(*this, iFourCCCode, EMMFStateConverting));
+				if(err != KErrNone)
+					{
+					ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
+					}
+				else
+					{
+					ERR_PRINTF1(_L("CMMFDevSound::InitializeL  did not leave as expected"));
+					StopTest(err, EFail);
+					}
+				INFO_PRINTF1(_L("CMMFDevSound::InitializeL called twice, but now using right parameters"));
+				TRAP(err, iMMFDevSound->InitializeL(*this, iFourCCCode, EMMFStateRecording));
+				if(err != KErrNone)
+					{
+					ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
+					StopTest(err);
+					break;
+					}
+				INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
+				iDevSoundState = EStateInitializing;
+				}
+			else
+				{
+				ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
+				StopTest(aError, EFail);
+				}
+			break;
+			}
+		case EStateInitializing:
+			{
+			if(aDevSoundEvent == EEventInitComplete && aError == KErrNone)
+				{
+				INFO_PRINTF1(_L("========== Test Case Successfully Completed =========="));
+				StopTest();
+				}
+			else if(aDevSoundEvent == EEventInitComplete && aError != KErrNone)
+				{
+				ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error = %d"), aError);
+				StopTest(aError);		
+				}
+			else
+				{
+				ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
+				StopTest(aError, EFail);
+				}
+			break;
+			}	
+		default:
+			{
+			ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
+			StopTest(aError, EFail);
+			}
+		}
+	}