os/mm/mmlibs/mmfw/tsrc/mmfintegrationtest/ACLNT/TestPlayerUtilsARN.cpp
author sl
Tue, 10 Jun 2014 14:32:02 +0200
changeset 1 260cb5ec6c19
permissions -rw-r--r--
Update contrib.
sl@0
     1
// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
sl@0
     2
// All rights reserved.
sl@0
     3
// This component and the accompanying materials are made available
sl@0
     4
// under the terms of "Eclipse Public License v1.0"
sl@0
     5
// which accompanies this distribution, and is available
sl@0
     6
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
sl@0
     7
//
sl@0
     8
// Initial Contributors:
sl@0
     9
// Nokia Corporation - initial contribution.
sl@0
    10
//
sl@0
    11
// Contributors:
sl@0
    12
//
sl@0
    13
// Description:
sl@0
    14
// CPP file: Audio Resource Notification tests for Audio Player.
sl@0
    15
// 
sl@0
    16
//
sl@0
    17
sl@0
    18
/**
sl@0
    19
 @file TestPlayerUtilsARN.cpp
sl@0
    20
*/
sl@0
    21
sl@0
    22
#include "TestAudioClientUtilitiesARN.h"
sl@0
    23
sl@0
    24
//------------------------------------------------------------------------------
sl@0
    25
//********************PREQ 797 - Audio Resource Notification********************
sl@0
    26
//------------------------------------------------------------------------------
sl@0
    27
sl@0
    28
//
sl@0
    29
//CTestMdaAudioPlayerCallbackSupport
sl@0
    30
//
sl@0
    31
sl@0
    32
/**
sl@0
    33
 * NewL
sl@0
    34
 */
sl@0
    35
CTestMdaAudioPlayerCallbackSupport* CTestMdaAudioPlayerCallbackSupport::NewL(MTestAudioPlayerCallback& aCallback)
sl@0
    36
	{
sl@0
    37
	return new(ELeave) CTestMdaAudioPlayerCallbackSupport(aCallback);
sl@0
    38
	}
sl@0
    39
sl@0
    40
/**
sl@0
    41
 * MapcInitComplete
sl@0
    42
 */
sl@0
    43
void CTestMdaAudioPlayerCallbackSupport::MapcInitComplete(TInt aError, const TTimeIntervalMicroSeconds& aDuration)
sl@0
    44
	{
sl@0
    45
	iCallback.MapcInitCompleteTest(aError, aDuration, *this);
sl@0
    46
	}
sl@0
    47
sl@0
    48
/**
sl@0
    49
 * MapcPlayComplete
sl@0
    50
 */
sl@0
    51
void CTestMdaAudioPlayerCallbackSupport::MapcPlayComplete(TInt aError)
sl@0
    52
	{
sl@0
    53
	iCallback.MapcPlayCompleteTest(aError, *this);
sl@0
    54
	}
sl@0
    55
sl@0
    56
/**
sl@0
    57
 * MarncResourceAvailable
sl@0
    58
 */
sl@0
    59
void CTestMdaAudioPlayerCallbackSupport::MarncResourceAvailable(TUid aNotificationEventId, const TDesC8& aNotificationData)
sl@0
    60
	{
sl@0
    61
	iCallback.MarncResourceAvailableTest(aNotificationEventId, aNotificationData, *this);
sl@0
    62
	}
sl@0
    63
sl@0
    64
/**
sl@0
    65
 * Constructor
sl@0
    66
 */
sl@0
    67
CTestMdaAudioPlayerCallbackSupport::CTestMdaAudioPlayerCallbackSupport(MTestAudioPlayerCallback& aCallback):iCallback(aCallback)
sl@0
    68
	{
sl@0
    69
sl@0
    70
	}
sl@0
    71
sl@0
    72
//
sl@0
    73
//CTestMmfAclntAudioPlayerARN
sl@0
    74
//
sl@0
    75
sl@0
    76
/**
sl@0
    77
 * Constructor
sl@0
    78
 */
sl@0
    79
CTestMmfAclntAudioPlayerARN::CTestMmfAclntAudioPlayerARN(const TDesC& aTestName, const TDesC& aSectName)
sl@0
    80
	{
sl@0
    81
	// store the name of this test case
sl@0
    82
	iTestStepName=aTestName;
sl@0
    83
	iHeapSize = 3600000;
sl@0
    84
	iSectName = aSectName;
sl@0
    85
	}
sl@0
    86
sl@0
    87
sl@0
    88
/**
sl@0
    89
 * MapcInitCompleteTest
sl@0
    90
 */
sl@0
    91
void CTestMmfAclntAudioPlayerARN::MapcInitCompleteTest(TInt aError, const TTimeIntervalMicroSeconds& aDuration, CTestMdaAudioPlayerCallbackSupport& aMdaAudioPlayerCallbackSupport)
sl@0
    92
	{
sl@0
    93
	iDuration = aDuration;
sl@0
    94
	if (&aMdaAudioPlayerCallbackSupport == iMdaAudioPlayerCallbackSupport1)
sl@0
    95
		{
sl@0
    96
		INFO_PRINTF2(_L("iAudioPlayer1 -> MMdaAudioPlayerCallback InitComplete (%d)"),aError);
sl@0
    97
		TRAP(iError, FsmL(EMapcInitComplete1, aError));
sl@0
    98
		}
sl@0
    99
	else if (&aMdaAudioPlayerCallbackSupport == iMdaAudioPlayerCallbackSupport2)
sl@0
   100
		{
sl@0
   101
		INFO_PRINTF2(_L("iAudioPlayer2 -> MMdaAudioPlayerCallback InitComplete (%d)"),aError);
sl@0
   102
		TRAP(iError, FsmL(EMapcInitComplete2, aError));
sl@0
   103
		}	
sl@0
   104
	else if (&aMdaAudioPlayerCallbackSupport == iMdaAudioPlayerCallbackSupport3)
sl@0
   105
		{
sl@0
   106
		INFO_PRINTF2(_L("iAudioPlayer3 -> MMdaAudioPlayerCallback InitComplete (%d)"),aError);
sl@0
   107
		TRAP(iError, FsmL(EMapcInitComplete3, aError));
sl@0
   108
		}
sl@0
   109
	}
sl@0
   110
sl@0
   111
sl@0
   112
/**
sl@0
   113
 * MapcPlayCompleteTest
sl@0
   114
 */
sl@0
   115
void CTestMmfAclntAudioPlayerARN::MapcPlayCompleteTest(TInt aError, CTestMdaAudioPlayerCallbackSupport& aMdaAudioPlayerCallbackSupport)
sl@0
   116
	{
sl@0
   117
	if (&aMdaAudioPlayerCallbackSupport == iMdaAudioPlayerCallbackSupport1)
sl@0
   118
		{
sl@0
   119
		INFO_PRINTF2(_L("iAudioPlayer1 -> MMdaAudioPlayerCallback PlayComplete (%d)"), aError);
sl@0
   120
		TRAP(iError, FsmL(EMapcPlayComplete1, aError));
sl@0
   121
		}
sl@0
   122
	else if (&aMdaAudioPlayerCallbackSupport == iMdaAudioPlayerCallbackSupport2)
sl@0
   123
		{
sl@0
   124
		INFO_PRINTF2(_L("iAudioPlayer2 -> MMdaAudioPlayerCallback PlayComplete (%d)"), aError);
sl@0
   125
		TRAP(iError, FsmL(EMapcPlayComplete2, aError));
sl@0
   126
		}
sl@0
   127
	else if (&aMdaAudioPlayerCallbackSupport == iMdaAudioPlayerCallbackSupport3)
sl@0
   128
		{
sl@0
   129
		INFO_PRINTF2(_L("iAudioPlayer3 -> MMdaAudioPlayerCallback PlayComplete (%d)"), aError);
sl@0
   130
		TRAP(iError, FsmL(EMapcPlayComplete3, aError));
sl@0
   131
		}
sl@0
   132
	}
sl@0
   133
sl@0
   134
sl@0
   135
/**
sl@0
   136
 * MarncResourceAvailableTest
sl@0
   137
 */
sl@0
   138
void CTestMmfAclntAudioPlayerARN::MarncResourceAvailableTest(TUid aNotificationEventId, const TDesC8& aNotificationData, CTestMdaAudioPlayerCallbackSupport& aMdaAudioPlayerCallbackSupport)
sl@0
   139
	{
sl@0
   140
	if (aNotificationEventId == KMMFEventCategoryAudioResourceAvailable)
sl@0
   141
		{
sl@0
   142
		INFO_PRINTF1(_L("iAudioPlayer::MMMFAudioResourceNotificationCallback -> KMMFEventCategoryAudioResourceAvailable"));
sl@0
   143
sl@0
   144
		//Convert TDesc8 to TInt64
sl@0
   145
		TMMFTimeIntervalMicroSecondsPckg timeIntvbuf;
sl@0
   146
		timeIntvbuf.Copy(aNotificationData);
sl@0
   147
		TTimeIntervalMicroSeconds intPos = timeIntvbuf();
sl@0
   148
		iPosition = intPos;
sl@0
   149
		if (&aMdaAudioPlayerCallbackSupport == iMdaAudioPlayerCallbackSupport1)
sl@0
   150
			{
sl@0
   151
			INFO_PRINTF1(_L("iAudioPlayer1 -> MMMFAudioResourceNotificationCallback : AudioResourceAvailable..waiting for playcomplete"));
sl@0
   152
			TRAP(iError, FsmL(EMarncResourceAvailable1, KErrNone));
sl@0
   153
			}
sl@0
   154
		else if (&aMdaAudioPlayerCallbackSupport == iMdaAudioPlayerCallbackSupport2)
sl@0
   155
			{
sl@0
   156
			INFO_PRINTF1(_L("iAudioPlayer2 -> MMMFAudioResourceNotificationCallback : AudioResourceAvailable"));
sl@0
   157
			TRAP(iError, FsmL(EMarncResourceAvailable2, KErrNone));
sl@0
   158
			}
sl@0
   159
		else if (&aMdaAudioPlayerCallbackSupport == iMdaAudioPlayerCallbackSupport3)
sl@0
   160
			{
sl@0
   161
			INFO_PRINTF1(_L("iAudioPlayer3 -> MMMFAudioResourceNotificationCallback : AudioResourceAvailable"));
sl@0
   162
			TRAP(iError, FsmL(EMarncResourceAvailable3, KErrNone));
sl@0
   163
			}
sl@0
   164
		}
sl@0
   165
	else
sl@0
   166
		{
sl@0
   167
		INFO_PRINTF1(_L("MMMFAudioResourceNotificationCallback, but NOT KMMFEventCategoryAudioResourceAvailable"));
sl@0
   168
		}
sl@0
   169
	}
sl@0
   170
sl@0
   171
/**
sl@0
   172
 * DoTestStepPreambleL
sl@0
   173
 */
sl@0
   174
TVerdict CTestMmfAclntAudioPlayerARN::DoTestStepPreambleL()
sl@0
   175
	{
sl@0
   176
	TPtrC filename;
sl@0
   177
	TVerdict ret = EPass;
sl@0
   178
	
sl@0
   179
	// Call base DoTestStepPreambleL()
sl@0
   180
	ret = CTestMmfAclntStep::DoTestStepPreambleL();
sl@0
   181
	if (ret == EFail)
sl@0
   182
		{
sl@0
   183
		return ret;
sl@0
   184
		}
sl@0
   185
	
sl@0
   186
	// Get 1st file name
sl@0
   187
	if(!GetStringFromConfig(iSectName, _L("playerAudioFile1"), filename))
sl@0
   188
		{
sl@0
   189
		return EInconclusive;
sl@0
   190
		}
sl@0
   191
	GetDriveName(iFilename1);
sl@0
   192
	iFilename1.Append(filename);
sl@0
   193
	
sl@0
   194
	iEventChecker = CMultiEventChecker::NewL();
sl@0
   195
	// Initialise 1st Audio Player
sl@0
   196
	INFO_PRINTF1(_L("Initialise CMdaAudioPlayerUtility1 : EMdaPriorityNormal"));
sl@0
   197
	iMdaAudioPlayerCallbackSupport1 = CTestMdaAudioPlayerCallbackSupport::NewL(*this);
sl@0
   198
	iTestAudioPlayer1 = CMdaAudioPlayerUtility::NewL(*iMdaAudioPlayerCallbackSupport1, EMdaPriorityNormal);
sl@0
   199
	
sl@0
   200
	// Get 2nd file name
sl@0
   201
	if(!GetStringFromConfig(iSectName, _L("playerAudioFile2"), filename))
sl@0
   202
		{
sl@0
   203
		return EInconclusive;
sl@0
   204
		}
sl@0
   205
	GetDriveName(iFilename2);
sl@0
   206
	iFilename2.Append(filename);
sl@0
   207
sl@0
   208
	// Initialise 2nd Audio Player
sl@0
   209
	INFO_PRINTF1(_L("Initialise CMdaAudioPlayerUtility2 : EMdaPriorityMax"));
sl@0
   210
	iMdaAudioPlayerCallbackSupport2 = CTestMdaAudioPlayerCallbackSupport::NewL(*this);
sl@0
   211
	iTestAudioPlayer2 = CMdaAudioPlayerUtility::NewL(*iMdaAudioPlayerCallbackSupport2, EMdaPriorityMax);
sl@0
   212
	
sl@0
   213
	// Get 3rd file name
sl@0
   214
	if(!GetStringFromConfig(iSectName, _L("playerAudioFile3"), filename))
sl@0
   215
		{
sl@0
   216
		return EInconclusive;
sl@0
   217
		}
sl@0
   218
	GetDriveName(iFilename3);
sl@0
   219
	iFilename3.Append(filename);
sl@0
   220
sl@0
   221
	// Initialise 3rd Audio Player
sl@0
   222
	INFO_PRINTF1(_L("Initialise CMdaAudioPlayerUtility3 : EMdaPriorityMin"));
sl@0
   223
	iMdaAudioPlayerCallbackSupport3 = CTestMdaAudioPlayerCallbackSupport::NewL(*this);
sl@0
   224
	iTestAudioPlayer3 = CMdaAudioPlayerUtility::NewL(*iMdaAudioPlayerCallbackSupport3, EMdaPriorityMin);
sl@0
   225
		
sl@0
   226
	// Initialise the CCallBackTimer.
sl@0
   227
	iCallBackTimer = CCallBackTimer::NewL(TCallBack(stopActiveScheduler));
sl@0
   228
	
sl@0
   229
	return ret;
sl@0
   230
	}
sl@0
   231
sl@0
   232
/**
sl@0
   233
 * DoTestStepPostambleL
sl@0
   234
 */
sl@0
   235
TVerdict CTestMmfAclntAudioPlayerARN::DoTestStepPostambleL()
sl@0
   236
	{
sl@0
   237
	// Delete all the iTestAudioPlayer utilities.
sl@0
   238
	iTestAudioPlayer1->Close();
sl@0
   239
	delete iTestAudioPlayer1;
sl@0
   240
	iTestAudioPlayer1=NULL;
sl@0
   241
	iTestAudioPlayer2->Close();
sl@0
   242
	delete iTestAudioPlayer2;
sl@0
   243
	iTestAudioPlayer2=NULL;
sl@0
   244
	iTestAudioPlayer3->Close();
sl@0
   245
	delete iTestAudioPlayer3;
sl@0
   246
	iTestAudioPlayer3=NULL;
sl@0
   247
	// Delete CTestMdaAudioPlayerCallbackSupport
sl@0
   248
	delete iMdaAudioPlayerCallbackSupport1;
sl@0
   249
	delete iMdaAudioPlayerCallbackSupport2;
sl@0
   250
	delete iMdaAudioPlayerCallbackSupport3;
sl@0
   251
	// Delete the CCallBackTimer.
sl@0
   252
	delete iCallBackTimer;
sl@0
   253
	iCallBackTimer=NULL;
sl@0
   254
	delete iEventChecker;
sl@0
   255
	// Base Postamble.
sl@0
   256
	return CTestMmfAclntStep::DoTestStepPostambleL();
sl@0
   257
	}
sl@0
   258
sl@0
   259
/**
sl@0
   260
 * DoTestStepL
sl@0
   261
 */
sl@0
   262
TVerdict CTestMmfAclntAudioPlayerARN::DoTestStepL()
sl@0
   263
	{
sl@0
   264
	return( DoTestL() );
sl@0
   265
	}
sl@0
   266
sl@0
   267
/**
sl@0
   268
 * StateInit
sl@0
   269
 */
sl@0
   270
void CTestMmfAclntAudioPlayerARN::StateInit()
sl@0
   271
	{
sl@0
   272
	iExpectedEvent=EIdlePlayer;
sl@0
   273
	iExpectedError=KErrNone;
sl@0
   274
	iState=EStateBegin;
sl@0
   275
	}
sl@0
   276
sl@0
   277
/**
sl@0
   278
 * StateChange
sl@0
   279
 */
sl@0
   280
void CTestMmfAclntAudioPlayerARN::StateChange(TMmfAudioPlayerState aState, TMmfAudioPlayerEvents aExpectedEvent, TInt aExpectedError)
sl@0
   281
	{
sl@0
   282
	iExpectedEvent=aExpectedEvent;
sl@0
   283
	iExpectedError=aExpectedError;
sl@0
   284
	iState=aState;
sl@0
   285
	}
sl@0
   286
sl@0
   287
/**
sl@0
   288
 * FsmCheck
sl@0
   289
 */
sl@0
   290
TBool CTestMmfAclntAudioPlayerARN::FsmCheck(TMmfAudioPlayerEvents aEventCode, TInt aError)
sl@0
   291
	{
sl@0
   292
	TBool retFsmCheck = EFalse;
sl@0
   293
	if (((aEventCode == EMapcPlayComplete1) || (aEventCode == EMapcPlayComplete2)) && (aError == KErrUnderflow))
sl@0
   294
		{
sl@0
   295
		INFO_PRINTF1(_L("Underflow !"));
sl@0
   296
		}
sl@0
   297
	else if (iExpectedEvent != aEventCode)
sl@0
   298
		{
sl@0
   299
		ERR_PRINTF3(_L("ExpectedEvent : %d, ActualEvent : %d"), iExpectedEvent, aEventCode);
sl@0
   300
		iTestStepResult = EFail;
sl@0
   301
		CActiveScheduler::Stop();
sl@0
   302
		}
sl@0
   303
	else if (iExpectedError != aError)
sl@0
   304
		{
sl@0
   305
		ERR_PRINTF3(_L("ExpectedError : %d, ActualError : %d"), iExpectedError, aError);
sl@0
   306
		iTestStepResult = EFail;
sl@0
   307
		CActiveScheduler::Stop();
sl@0
   308
		}
sl@0
   309
	else
sl@0
   310
		{
sl@0
   311
		retFsmCheck = ETrue;
sl@0
   312
		}
sl@0
   313
	return retFsmCheck;
sl@0
   314
	}
sl@0
   315
sl@0
   316
//
sl@0
   317
//POSITIVE TESTS//
sl@0
   318
//
sl@0
   319
sl@0
   320
//
sl@0
   321
//CTestMmfAclntARN8101
sl@0
   322
//
sl@0
   323
sl@0
   324
/**
sl@0
   325
 * Constructor
sl@0
   326
 */
sl@0
   327
CTestMmfAclntARN8101::CTestMmfAclntARN8101(const TDesC& aTestName, const TDesC& aSectName)
sl@0
   328
	: CTestMmfAclntAudioPlayerARN(aTestName, aSectName)
sl@0
   329
	{}
sl@0
   330
sl@0
   331
/**
sl@0
   332
 * NewL
sl@0
   333
 */
sl@0
   334
CTestMmfAclntARN8101* CTestMmfAclntARN8101::NewL(const TDesC& aTestName, const TDesC& aSectName)
sl@0
   335
	{
sl@0
   336
	CTestMmfAclntARN8101* self = new (ELeave) CTestMmfAclntARN8101(aTestName, aSectName);
sl@0
   337
	return self;
sl@0
   338
	}
sl@0
   339
sl@0
   340
/**
sl@0
   341
 * DoTestL
sl@0
   342
 */
sl@0
   343
TVerdict CTestMmfAclntARN8101::DoTestL()
sl@0
   344
	{
sl@0
   345
	return( PerformTestL() );
sl@0
   346
	}
sl@0
   347
sl@0
   348
/**
sl@0
   349
 * FsmL
sl@0
   350
 */
sl@0
   351
void CTestMmfAclntARN8101::FsmL(TMmfAudioPlayerEvents aEventCode, TInt aError)
sl@0
   352
	{
sl@0
   353
	if (FsmCheck(aEventCode, aError))
sl@0
   354
		{
sl@0
   355
		TInt retErr = KErrNone;
sl@0
   356
		switch (iState)
sl@0
   357
			{
sl@0
   358
			case EStateBegin:
sl@0
   359
				// Open iTestAudioPlayer#1
sl@0
   360
				iTestAudioPlayer1->OpenFileL(iFilename1);
sl@0
   361
				INFO_PRINTF1(_L("iTestAudioPlayer1->OpenFileL()"));
sl@0
   362
				// Set ExpectedEvent and change the State
sl@0
   363
				StateChange(EStateOpenPlayer2, EMapcInitComplete1);
sl@0
   364
				break;
sl@0
   365
			case EStateOpenPlayer2:
sl@0
   366
				// Register iTestAudioPlayer#1 for Notification
sl@0
   367
				retErr = iTestAudioPlayer1->RegisterAudioResourceNotification(*iMdaAudioPlayerCallbackSupport1, KMMFEventCategoryAudioResourceAvailable);
sl@0
   368
				INFO_PRINTF1(_L("iTestAudioPlayer1->RegisterAudioResourceNotification()"));
sl@0
   369
				if( retErr != KErrNone )
sl@0
   370
					{
sl@0
   371
					ERR_PRINTF2(_L("iTestAudioPlayer1->RegisterAudioResourceNotification - Failed with Error : %d"), retErr);
sl@0
   372
					iTestStepResult = EFail;
sl@0
   373
					CActiveScheduler::Stop();
sl@0
   374
					break;
sl@0
   375
					}
sl@0
   376
				// Open iTestAudioPlayer#2
sl@0
   377
				iTestAudioPlayer2->OpenFileL(iFilename2);
sl@0
   378
				INFO_PRINTF1(_L("iTestAudioPlayer2->OpenFileL()"));
sl@0
   379
				// Set ExpectedEvent and change the State
sl@0
   380
				StateChange(EStatePlaying2, EMapcInitComplete2);
sl@0
   381
				break;
sl@0
   382
			case EStatePlaying2:
sl@0
   383
				// Play iTestAudioPlayer#2
sl@0
   384
				iTestAudioPlayer2->Play();
sl@0
   385
				INFO_PRINTF1(_L("iTestAudioPlayer2->Play()"));
sl@0
   386
				// Set ExpectedEvent and change the State
sl@0
   387
				StateChange(EStateEndPlay2, EMapcPlayComplete2);
sl@0
   388
				break;
sl@0
   389
			case EStateEndPlay2:
sl@0
   390
				// Timer to check if Notification Event Occurs.
sl@0
   391
				iCallBackTimer->After(2000000);
sl@0
   392
				iTestStepResult = EPass;
sl@0
   393
				// Set ExpectedEvent and change the State
sl@0
   394
				StateChange(EStateNotifiedPlayer1, EMarncResourceAvailable1);
sl@0
   395
				break;
sl@0
   396
			case EStateNotifiedPlayer1:
sl@0
   397
				iCallBackTimer->Cancel(); // in case something else stopped the AS
sl@0
   398
				INFO_PRINTF1(_L("iTestAudioPlayer1->NotificationReceived"));
sl@0
   399
				iTestStepResult = EFail;
sl@0
   400
				CActiveScheduler::Stop();
sl@0
   401
				break;
sl@0
   402
			}
sl@0
   403
		}
sl@0
   404
	}
sl@0
   405
	
sl@0
   406
/**
sl@0
   407
 * PerformTestL
sl@0
   408
 */
sl@0
   409
TVerdict CTestMmfAclntARN8101::PerformTestL()
sl@0
   410
	{
sl@0
   411
	INFO_PRINTF1(_L("Register for notification, but make no request to play audio"));
sl@0
   412
	iTestStepResult = EFail;
sl@0
   413
	
sl@0
   414
	// Initialise the state variables
sl@0
   415
	StateInit();
sl@0
   416
	
sl@0
   417
	// Begin the process
sl@0
   418
	FsmL(EIdlePlayer, KErrNone);
sl@0
   419
	
sl@0
   420
	// Start the scheduler - Done only once !
sl@0
   421
	CActiveScheduler::Start();
sl@0
   422
	
sl@0
   423
	return iTestStepResult;
sl@0
   424
	}
sl@0
   425
sl@0
   426
//
sl@0
   427
//CTestMmfAclntARN8102
sl@0
   428
//
sl@0
   429
sl@0
   430
/**
sl@0
   431
 * Constructor
sl@0
   432
 */
sl@0
   433
CTestMmfAclntARN8102::CTestMmfAclntARN8102(const TDesC& aTestName, const TDesC& aSectName)
sl@0
   434
	: CTestMmfAclntAudioPlayerARN(aTestName, aSectName)
sl@0
   435
	{}
sl@0
   436
sl@0
   437
/**
sl@0
   438
 * NewL
sl@0
   439
 */
sl@0
   440
CTestMmfAclntARN8102* CTestMmfAclntARN8102::NewL(const TDesC& aTestName, const TDesC& aSectName)
sl@0
   441
	{
sl@0
   442
	CTestMmfAclntARN8102* self = new (ELeave) CTestMmfAclntARN8102(aTestName, aSectName);
sl@0
   443
	return self;
sl@0
   444
	}
sl@0
   445
sl@0
   446
/**
sl@0
   447
 * DoTestL
sl@0
   448
 */
sl@0
   449
TVerdict CTestMmfAclntARN8102::DoTestL()
sl@0
   450
	{
sl@0
   451
	return( PerformTestL() );
sl@0
   452
	}
sl@0
   453
sl@0
   454
/**
sl@0
   455
 * FsmL
sl@0
   456
 */
sl@0
   457
void CTestMmfAclntARN8102::FsmL(TMmfAudioPlayerEvents aEventCode, TInt aError)
sl@0
   458
	{
sl@0
   459
	if (FsmCheck(aEventCode, aError))
sl@0
   460
		{
sl@0
   461
		TInt retErr = KErrNone;
sl@0
   462
		switch (iState)
sl@0
   463
			{
sl@0
   464
			case EStateBegin:
sl@0
   465
				// Open iTestAudioPlayer#1
sl@0
   466
				iTestAudioPlayer1->OpenFileL(iFilename1);
sl@0
   467
				INFO_PRINTF1(_L("iTestAudioPlayer1->OpenFileL()"));
sl@0
   468
				// Set ExpectedEvent and change the State
sl@0
   469
				StateChange(EStateOpenPlayer2, EMapcInitComplete1);
sl@0
   470
				break;
sl@0
   471
			case EStateOpenPlayer2:
sl@0
   472
				// Register iTestAudioPlayer#1 for Notification
sl@0
   473
				retErr = iTestAudioPlayer1->RegisterAudioResourceNotification(*iMdaAudioPlayerCallbackSupport1, KMMFEventCategoryAudioResourceAvailable);
sl@0
   474
				INFO_PRINTF1(_L("iTestAudioPlayer1->RegisterAudioResourceNotification()"));
sl@0
   475
				if( retErr != KErrNone )
sl@0
   476
					{
sl@0
   477
					ERR_PRINTF2(_L("iTestAudioPlayer1->RegisterAudioResourceNotification - Failed with Error : %d"), retErr);
sl@0
   478
					iTestStepResult = EFail;
sl@0
   479
					CActiveScheduler::Stop();
sl@0
   480
					break;
sl@0
   481
					}
sl@0
   482
				// Open iTestAudioPlayer#2
sl@0
   483
				iTestAudioPlayer2->OpenFileL(iFilename2);
sl@0
   484
				INFO_PRINTF1(_L("iTestAudioPlayer2->OpenFileL()"));
sl@0
   485
				// Set ExpectedEvent and change the State
sl@0
   486
				StateChange(EStatePlaying2, EMapcInitComplete2);
sl@0
   487
				break;
sl@0
   488
			case EStatePlaying2:
sl@0
   489
				// Play iTestAudioPlayer#2
sl@0
   490
				iTestAudioPlayer2->Play();
sl@0
   491
				INFO_PRINTF1(_L("iTestAudioPlayer2->Play()"));
sl@0
   492
				// Play iTestAudioPlayer#1
sl@0
   493
				iTestAudioPlayer1->Play();
sl@0
   494
				INFO_PRINTF1(_L("iTestAudioPlayer1->Play()"));
sl@0
   495
				// Set ExpectedEvent and change the State
sl@0
   496
				StateChange(EStateErrInUsePlayer1, EMapcPlayComplete1, KErrInUse);
sl@0
   497
				break;
sl@0
   498
			case EStateErrInUsePlayer1:
sl@0
   499
				// Close iTestAudioPlayer#2
sl@0
   500
				WaitWithTimeout(iRequestStatus,1000000);
sl@0
   501
				iTestAudioPlayer2->Stop();
sl@0
   502
				INFO_PRINTF1(_L("iTestAudioPlayer2->Stop()"));
sl@0
   503
				iTestAudioPlayer2->Close();
sl@0
   504
				INFO_PRINTF1(_L("iTestAudioPlayer2->Close()"));
sl@0
   505
				// Timer to check if Notification Event Occurs.
sl@0
   506
				iCallBackTimer->After(2000000);
sl@0
   507
				// Set ExpectedEvent and change the State
sl@0
   508
				StateChange(EStateNotifiedPlayer1, EMarncResourceAvailable1);
sl@0
   509
				break;
sl@0
   510
			case EStateNotifiedPlayer1:
sl@0
   511
				iCallBackTimer->Cancel(); // in case something else stopped the AS
sl@0
   512
				INFO_PRINTF1(_L("iTestAudioPlayer1->NotificationReceived"));
sl@0
   513
				iTestStepResult = EPass;
sl@0
   514
				CActiveScheduler::Stop();
sl@0
   515
				break;
sl@0
   516
			}
sl@0
   517
		}
sl@0
   518
	}
sl@0
   519
sl@0
   520
/**
sl@0
   521
 * PerformTestL
sl@0
   522
 */
sl@0
   523
TVerdict CTestMmfAclntARN8102::PerformTestL()
sl@0
   524
	{
sl@0
   525
	INFO_PRINTF1(_L("Register (b4 play, after Open) and Receive Notification of a Resource Available Event."));
sl@0
   526
	INFO_PRINTF1(_L("(when audio resource is currently unavailable and then available)"));
sl@0
   527
	iTestStepResult = EFail;
sl@0
   528
	
sl@0
   529
	// Initialise the state variables
sl@0
   530
	StateInit();
sl@0
   531
	
sl@0
   532
	// Begin the process
sl@0
   533
	FsmL(EIdlePlayer, KErrNone);
sl@0
   534
	
sl@0
   535
	// Start the scheduler - Done only once !
sl@0
   536
	CActiveScheduler::Start();
sl@0
   537
	
sl@0
   538
	return iTestStepResult;
sl@0
   539
	}
sl@0
   540
sl@0
   541
//
sl@0
   542
//CTestMmfAclntARN8103
sl@0
   543
//
sl@0
   544
sl@0
   545
/**
sl@0
   546
 * Constructor
sl@0
   547
 */
sl@0
   548
CTestMmfAclntARN8103::CTestMmfAclntARN8103(const TDesC& aTestName, const TDesC& aSectName)
sl@0
   549
	: CTestMmfAclntAudioPlayerARN(aTestName, aSectName)
sl@0
   550
	{}
sl@0
   551
sl@0
   552
/**
sl@0
   553
 * NewL
sl@0
   554
 */
sl@0
   555
CTestMmfAclntARN8103* CTestMmfAclntARN8103::NewL(const TDesC& aTestName, const TDesC& aSectName)
sl@0
   556
	{
sl@0
   557
	CTestMmfAclntARN8103* self = new (ELeave) CTestMmfAclntARN8103(aTestName, aSectName);
sl@0
   558
	return self;
sl@0
   559
	}
sl@0
   560
sl@0
   561
/**
sl@0
   562
 * DoTestL
sl@0
   563
 */
sl@0
   564
TVerdict CTestMmfAclntARN8103::DoTestL()
sl@0
   565
	{
sl@0
   566
	return( PerformTestL() );
sl@0
   567
	}
sl@0
   568
sl@0
   569
/**
sl@0
   570
 * FsmCheck
sl@0
   571
 */
sl@0
   572
TBool CTestMmfAclntARN8103::FsmCheck(TMmfAudioPlayerEvents aEventCode, TInt aError)
sl@0
   573
	{
sl@0
   574
	TBool retFsmCheck = EFalse;
sl@0
   575
	if (((aEventCode == EMapcPlayComplete1) || (aEventCode == EMapcPlayComplete2)) && (aError == KErrUnderflow))
sl@0
   576
		{
sl@0
   577
		INFO_PRINTF1(_L("Underflow !"));
sl@0
   578
		}
sl@0
   579
	else if (iExpectedEvent != aEventCode)
sl@0
   580
		{
sl@0
   581
		if ((aEventCode == EMapcPlayComplete2))
sl@0
   582
	        {
sl@0
   583
	        retFsmCheck = ETrue;
sl@0
   584
	        if (iEventOccured == EMarncResourceAvailable1)
sl@0
   585
	            {
sl@0
   586
	            return retFsmCheck;
sl@0
   587
	            }
sl@0
   588
            else
sl@0
   589
                {
sl@0
   590
                iEventOccured = EMapcPlayComplete2;
sl@0
   591
                }
sl@0
   592
	        }
sl@0
   593
        else if (aEventCode == EMarncResourceAvailable1)
sl@0
   594
            {
sl@0
   595
            retFsmCheck = ETrue;
sl@0
   596
            if (iEventOccured == EMapcPlayComplete2)
sl@0
   597
                {
sl@0
   598
                return retFsmCheck;
sl@0
   599
                }
sl@0
   600
            else
sl@0
   601
                {
sl@0
   602
                iEventOccured = EMarncResourceAvailable1;
sl@0
   603
                }
sl@0
   604
            }
sl@0
   605
        else
sl@0
   606
            {
sl@0
   607
            ERR_PRINTF3(_L("ExpectedEvent : %d, ActualEvent : %d"), iExpectedEvent, aEventCode);
sl@0
   608
	        iTestStepResult = EFail;
sl@0
   609
	        CActiveScheduler::Stop();
sl@0
   610
            }
sl@0
   611
		}
sl@0
   612
	else if (iExpectedError != aError)
sl@0
   613
		{
sl@0
   614
		ERR_PRINTF3(_L("ExpectedError : %d, ActualError : %d"), iExpectedError, aError);
sl@0
   615
		iTestStepResult = EFail;
sl@0
   616
		CActiveScheduler::Stop();
sl@0
   617
		}
sl@0
   618
	else
sl@0
   619
		{
sl@0
   620
		retFsmCheck = ETrue;
sl@0
   621
		}
sl@0
   622
	return retFsmCheck;
sl@0
   623
	}
sl@0
   624
sl@0
   625
/**
sl@0
   626
 * FsmL
sl@0
   627
 */
sl@0
   628
void CTestMmfAclntARN8103::FsmL(TMmfAudioPlayerEvents aEventCode, TInt aError)
sl@0
   629
	{
sl@0
   630
	if (FsmCheck(aEventCode, aError))
sl@0
   631
		{
sl@0
   632
		TInt retErr = KErrNone;
sl@0
   633
		switch (iState)
sl@0
   634
			{
sl@0
   635
			case EStateBegin:
sl@0
   636
				// Open iTestAudioPlayer#1
sl@0
   637
				iTestAudioPlayer1->OpenFileL(iFilename1);
sl@0
   638
				INFO_PRINTF1(_L("iTestAudioPlayer1->OpenFileL()"));
sl@0
   639
				// Set ExpectedEvent and change the State
sl@0
   640
				StateChange(EStatePlaying1, EMapcInitComplete1);
sl@0
   641
				break;
sl@0
   642
			case EStatePlaying1:
sl@0
   643
				// Play iTestAudioPlayer#1
sl@0
   644
				iTestAudioPlayer1->Play();
sl@0
   645
				INFO_PRINTF1(_L("iTestAudioPlayer1->Play()"));
sl@0
   646
				// Register iTestAudioPlayer#1 for Notification
sl@0
   647
				retErr = iTestAudioPlayer1->RegisterAudioResourceNotification(*iMdaAudioPlayerCallbackSupport1, KMMFEventCategoryAudioResourceAvailable);
sl@0
   648
				INFO_PRINTF1(_L("iTestAudioPlayer1->RegisterAudioResourceNotification()"));
sl@0
   649
				if( retErr != KErrNone )
sl@0
   650
					{
sl@0
   651
					ERR_PRINTF2(_L("iTestAudioPlayer1->RegisterAudioResourceNotification - Failed with Error : %d"), retErr);
sl@0
   652
					iTestStepResult = EFail;
sl@0
   653
					CActiveScheduler::Stop();
sl@0
   654
					break;
sl@0
   655
					}
sl@0
   656
				// Open iTestAudioPlayer#2
sl@0
   657
				iTestAudioPlayer2->OpenFileL(iFilename2);
sl@0
   658
				INFO_PRINTF1(_L("iTestAudioPlayer2->OpenFileL()"));
sl@0
   659
				// Set ExpectedEvent and change the State
sl@0
   660
				StateChange(EStatePlaying2, EMapcInitComplete2);
sl@0
   661
				break;
sl@0
   662
			case EStatePlaying2:
sl@0
   663
				// Play iTestAudioPlayer#2				
sl@0
   664
				iTestAudioPlayer2->Play();
sl@0
   665
				INFO_PRINTF1(_L("iTestAudioPlayer2->Play()"));
sl@0
   666
				// Set ExpectedEvent and change the State
sl@0
   667
				StateChange(EStateErrInUsePlayer1, EMapcPlayComplete1, KErrInUse);
sl@0
   668
				break;
sl@0
   669
			case EStateErrInUsePlayer1:
sl@0
   670
				// Set ExpectedEvent and change the State
sl@0
   671
				StateChange(EStateEndPlay2, EMapcPlayComplete2);
sl@0
   672
				break;
sl@0
   673
			case EStateEndPlay2:
sl@0
   674
				// Timer to check if Notification Event Occurs.
sl@0
   675
				iCallBackTimer->After(2000000);
sl@0
   676
				// Set ExpectedEvent and change the State
sl@0
   677
				StateChange(EStateNotifiedPlayer1, EMarncResourceAvailable1);
sl@0
   678
				break;
sl@0
   679
			case EStateNotifiedPlayer1:
sl@0
   680
				iCallBackTimer->Cancel(); // in case something else stopped the AS
sl@0
   681
				INFO_PRINTF1(_L("iTestAudioPlayer1->NotificationReceived"));
sl@0
   682
				iTestStepResult = EPass;
sl@0
   683
				CActiveScheduler::Stop();
sl@0
   684
				break;
sl@0
   685
			}
sl@0
   686
		}
sl@0
   687
	}
sl@0
   688
	
sl@0
   689
/**
sl@0
   690
 * PerformTestL
sl@0
   691
 */
sl@0
   692
TVerdict CTestMmfAclntARN8103::PerformTestL()
sl@0
   693
	{
sl@0
   694
	INFO_PRINTF1(_L("Register (at the time of Play) and Receive Notification of a Resource Available Event."));
sl@0
   695
	INFO_PRINTF1(_L("(when audio resource is currently available and subsequently unavailable, and then available)"));
sl@0
   696
	iTestStepResult = EFail;
sl@0
   697
sl@0
   698
	// Initialise the state variables
sl@0
   699
	StateInit();
sl@0
   700
	
sl@0
   701
	// Begin the process
sl@0
   702
	FsmL(EIdlePlayer, KErrNone);
sl@0
   703
	
sl@0
   704
	// Start the scheduler - Done only once !
sl@0
   705
	CActiveScheduler::Start();
sl@0
   706
	
sl@0
   707
	return iTestStepResult;
sl@0
   708
	}
sl@0
   709
sl@0
   710
//
sl@0
   711
//CTestMmfAclntARN8104
sl@0
   712
//
sl@0
   713
sl@0
   714
/**
sl@0
   715
 * Constructor
sl@0
   716
 */
sl@0
   717
CTestMmfAclntARN8104::CTestMmfAclntARN8104(const TDesC& aTestName, const TDesC& aSectName)
sl@0
   718
	: CTestMmfAclntAudioPlayerARN(aTestName, aSectName)
sl@0
   719
	{}
sl@0
   720
sl@0
   721
/**
sl@0
   722
 * NewL
sl@0
   723
 */
sl@0
   724
CTestMmfAclntARN8104* CTestMmfAclntARN8104::NewL(const TDesC& aTestName, const TDesC& aSectName)
sl@0
   725
	{
sl@0
   726
	CTestMmfAclntARN8104* self = new (ELeave) CTestMmfAclntARN8104(aTestName, aSectName);
sl@0
   727
	return self;
sl@0
   728
	}
sl@0
   729
sl@0
   730
/**
sl@0
   731
 * DoTestL
sl@0
   732
 */
sl@0
   733
TVerdict CTestMmfAclntARN8104::DoTestL()
sl@0
   734
	{
sl@0
   735
	return( PerformTestL() );
sl@0
   736
	}
sl@0
   737
sl@0
   738
/**
sl@0
   739
 * FsmL
sl@0
   740
 */
sl@0
   741
void CTestMmfAclntARN8104::FsmL(TMmfAudioPlayerEvents aEventCode, TInt aError)
sl@0
   742
	{
sl@0
   743
	if (FsmCheck(aEventCode, aError))
sl@0
   744
		{
sl@0
   745
		TInt canErr = KErrNone;
sl@0
   746
		switch (iState)
sl@0
   747
			{
sl@0
   748
			case EStateBegin:
sl@0
   749
				// Open iTestAudioPlayer#1
sl@0
   750
				iTestAudioPlayer1->OpenFileL(iFilename1);
sl@0
   751
				INFO_PRINTF1(_L("iTestAudioPlayer1->OpenFileL()"));
sl@0
   752
				// Set ExpectedEvent and change the State
sl@0
   753
				StateChange(EStatePlaying1, EMapcInitComplete1);
sl@0
   754
				break;
sl@0
   755
			case EStatePlaying1:
sl@0
   756
				// Play iTestAudioPlayer#1
sl@0
   757
				iTestAudioPlayer1->Play();
sl@0
   758
				INFO_PRINTF1(_L("iTestAudioPlayer1->Play()"));
sl@0
   759
				// Open iTestAudioPlayer#2
sl@0
   760
				iTestAudioPlayer2->OpenFileL(iFilename2);
sl@0
   761
				INFO_PRINTF1(_L("iTestAudioPlayer2->OpenFileL()"));
sl@0
   762
				// Set ExpectedEvent and change the State
sl@0
   763
				StateChange(EStatePlaying2, EMapcInitComplete2);
sl@0
   764
				break;
sl@0
   765
			case EStatePlaying2:
sl@0
   766
				// Play iTestAudioPlayer#2
sl@0
   767
				iTestAudioPlayer2->Play();
sl@0
   768
				INFO_PRINTF1(_L("iTestAudioPlayer2->Play()"));
sl@0
   769
				// Set ExpectedEvent and change the State
sl@0
   770
				StateChange(EStateErrInUsePlayer1, EMapcPlayComplete1, KErrInUse);
sl@0
   771
				break;
sl@0
   772
			case EStateErrInUsePlayer1:
sl@0
   773
				// Cancel notification for iTestAudioPlayer#1
sl@0
   774
				canErr = iTestAudioPlayer1->CancelRegisterAudioResourceNotification(KMMFEventCategoryAudioResourceAvailable);
sl@0
   775
				INFO_PRINTF1(_L("iTestAudioPlayer1->CancelRegisterAudioResourceNotification()"));
sl@0
   776
				if( canErr != KErrNone )
sl@0
   777
					{
sl@0
   778
					ERR_PRINTF2(_L("iTestAudioPlayer1->CancelRegisterAudioResourceNotification - Failed with Error : %d"), canErr);
sl@0
   779
					iTestStepResult = EFail;
sl@0
   780
					CActiveScheduler::Stop();
sl@0
   781
					break;
sl@0
   782
					}
sl@0
   783
				// Close iTestAudioPlayer#2
sl@0
   784
				WaitWithTimeout(iRequestStatus,1000000);
sl@0
   785
				iTestAudioPlayer2->Stop();
sl@0
   786
				INFO_PRINTF1(_L("iTestAudioPlayer2->Stop()"));
sl@0
   787
				iTestAudioPlayer2->Close();
sl@0
   788
				INFO_PRINTF1(_L("iTestAudioPlayer2->Close()"));
sl@0
   789
				// Timer to check if Notification Event Occurs.
sl@0
   790
				iCallBackTimer->After(2000000);
sl@0
   791
				iTestStepResult = EPass;
sl@0
   792
				// Set ExpectedEvent and change the State
sl@0
   793
				StateChange(EStateNotifiedPlayer1, EMarncResourceAvailable1);
sl@0
   794
				break;
sl@0
   795
			case EStateNotifiedPlayer1:
sl@0
   796
				iCallBackTimer->Cancel(); // in case something else stopped the AS
sl@0
   797
				INFO_PRINTF1(_L("iTestAudioPlayer1->NotificationReceived"));
sl@0
   798
				iTestStepResult = EFail;
sl@0
   799
				CActiveScheduler::Stop();
sl@0
   800
				break;
sl@0
   801
			}
sl@0
   802
		}
sl@0
   803
	}
sl@0
   804
	
sl@0
   805
/**
sl@0
   806
 * PerformTestL
sl@0
   807
 */
sl@0
   808
TVerdict CTestMmfAclntARN8104::PerformTestL()
sl@0
   809
	{
sl@0
   810
	INFO_PRINTF1(_L("Registration (b4 File Open) and Cancellation of  the notification request"));
sl@0
   811
	iTestStepResult = EFail;
sl@0
   812
	
sl@0
   813
	// Initialise the state variables
sl@0
   814
	StateInit();
sl@0
   815
	
sl@0
   816
	// Register iTestAudioPlayer#1 for Notification
sl@0
   817
	TInt retErr = iTestAudioPlayer1->RegisterAudioResourceNotification(*iMdaAudioPlayerCallbackSupport1, KMMFEventCategoryAudioResourceAvailable);
sl@0
   818
	INFO_PRINTF1(_L("iTestAudioPlayer1->RegisterAudioResourceNotification()"));
sl@0
   819
	if( retErr != KErrNone )
sl@0
   820
		{
sl@0
   821
		ERR_PRINTF2(_L("iTestAudioPlayer1->RegisterAudioResourceNotification - Failed with Error : %d"), retErr);
sl@0
   822
		return EFail;
sl@0
   823
		}
sl@0
   824
	
sl@0
   825
	// Begin the process
sl@0
   826
	FsmL(EIdlePlayer, KErrNone);
sl@0
   827
	
sl@0
   828
	// Start the scheduler - Done only once !
sl@0
   829
	CActiveScheduler::Start();
sl@0
   830
	
sl@0
   831
	return iTestStepResult;
sl@0
   832
	}
sl@0
   833
sl@0
   834
//
sl@0
   835
//CTestMmfAclntARN8105
sl@0
   836
//
sl@0
   837
sl@0
   838
/**
sl@0
   839
 * Constructor
sl@0
   840
 */
sl@0
   841
CTestMmfAclntARN8105::CTestMmfAclntARN8105(const TDesC& aTestName, const TDesC& aSectName)
sl@0
   842
	: CTestMmfAclntAudioPlayerARN(aTestName, aSectName)
sl@0
   843
	{}
sl@0
   844
sl@0
   845
/**
sl@0
   846
 * NewL
sl@0
   847
 */
sl@0
   848
CTestMmfAclntARN8105* CTestMmfAclntARN8105::NewL(const TDesC& aTestName, const TDesC& aSectName)
sl@0
   849
	{
sl@0
   850
	CTestMmfAclntARN8105* self = new (ELeave) CTestMmfAclntARN8105(aTestName, aSectName);
sl@0
   851
	return self;
sl@0
   852
	}
sl@0
   853
sl@0
   854
/**
sl@0
   855
 * DoTestL
sl@0
   856
 */
sl@0
   857
TVerdict CTestMmfAclntARN8105::DoTestL()
sl@0
   858
	{
sl@0
   859
	return( PerformTestL() );
sl@0
   860
	}
sl@0
   861
sl@0
   862
/**
sl@0
   863
 * FsmCheck
sl@0
   864
 */
sl@0
   865
TBool CTestMmfAclntARN8105::FsmCheck(TMmfAudioPlayerEvents aEventCode, TInt aError)
sl@0
   866
	{
sl@0
   867
	TBool retFsmCheck = EFalse;
sl@0
   868
	if (((aEventCode == EMapcPlayComplete1) || (aEventCode == EMapcPlayComplete2)) && (aError == KErrUnderflow))
sl@0
   869
		{
sl@0
   870
		INFO_PRINTF1(_L("Underflow !"));
sl@0
   871
		}
sl@0
   872
	else if (iExpectedEvent != aEventCode)
sl@0
   873
		{
sl@0
   874
		if ((aEventCode == EMapcPlayComplete2))
sl@0
   875
	        {
sl@0
   876
	        retFsmCheck = ETrue;
sl@0
   877
	        if (iEventOccured == EMarncResourceAvailable1)
sl@0
   878
	            {
sl@0
   879
	            return retFsmCheck;
sl@0
   880
	            }
sl@0
   881
            else
sl@0
   882
                {
sl@0
   883
                iEventOccured = EMapcPlayComplete2;
sl@0
   884
                }
sl@0
   885
	        }
sl@0
   886
        else if (aEventCode == EMarncResourceAvailable1)
sl@0
   887
            {
sl@0
   888
            retFsmCheck = ETrue;
sl@0
   889
            if (iEventOccured == EMapcPlayComplete2)
sl@0
   890
                {
sl@0
   891
                return retFsmCheck;
sl@0
   892
                }
sl@0
   893
            else
sl@0
   894
                {
sl@0
   895
                iEventOccured = EMarncResourceAvailable1;
sl@0
   896
                }
sl@0
   897
            }
sl@0
   898
        else
sl@0
   899
            {
sl@0
   900
            ERR_PRINTF3(_L("ExpectedEvent : %d, ActualEvent : %d"), iExpectedEvent, aEventCode);
sl@0
   901
	        iTestStepResult = EFail;
sl@0
   902
	        CActiveScheduler::Stop();
sl@0
   903
            }
sl@0
   904
		}
sl@0
   905
	else if (iExpectedError != aError)
sl@0
   906
		{
sl@0
   907
		ERR_PRINTF3(_L("ExpectedError : %d, ActualError : %d"), iExpectedError, aError);
sl@0
   908
		iTestStepResult = EFail;
sl@0
   909
		CActiveScheduler::Stop();
sl@0
   910
		}
sl@0
   911
	else
sl@0
   912
		{
sl@0
   913
		retFsmCheck = ETrue;
sl@0
   914
		}
sl@0
   915
	return retFsmCheck;
sl@0
   916
	}
sl@0
   917
sl@0
   918
/**
sl@0
   919
 * FsmL
sl@0
   920
 */
sl@0
   921
void CTestMmfAclntARN8105::FsmL(TMmfAudioPlayerEvents aEventCode, TInt aError)
sl@0
   922
	{
sl@0
   923
	if (FsmCheck(aEventCode, aError))
sl@0
   924
		{
sl@0
   925
		TInt retErr = KErrNone;
sl@0
   926
		switch (iState)
sl@0
   927
			{
sl@0
   928
			case EStateBegin:
sl@0
   929
				// Open iTestAudioPlayer#1
sl@0
   930
				iTestAudioPlayer1->OpenFileL(iFilename1);
sl@0
   931
				INFO_PRINTF1(_L("iTestAudioPlayer1->OpenFileL()"));
sl@0
   932
				// Set ExpectedEvent and change the State
sl@0
   933
				StateChange(EStatePlaying1, EMapcInitComplete1);
sl@0
   934
				break;
sl@0
   935
			case EStatePlaying1:
sl@0
   936
				// Play iTestAudioPlayer#1
sl@0
   937
				iTestAudioPlayer1->Play();
sl@0
   938
				INFO_PRINTF1(_L("iTestAudioPlayer1->Play()"));
sl@0
   939
				// Open iTestAudioPlayer#2
sl@0
   940
				iTestAudioPlayer2->OpenFileL(iFilename2);
sl@0
   941
				INFO_PRINTF1(_L("iTestAudioPlayer2->OpenFileL()"));
sl@0
   942
				// Set ExpectedEvent and change the State
sl@0
   943
				StateChange(EStatePlaying2, EMapcInitComplete2);
sl@0
   944
				break;
sl@0
   945
			case EStatePlaying2:
sl@0
   946
				// Play iTestAudioPlayer#2
sl@0
   947
				iTestAudioPlayer2->Play();
sl@0
   948
				INFO_PRINTF1(_L("iTestAudioPlayer2->Play()"));
sl@0
   949
				// Set ExpectedEvent and change the State
sl@0
   950
				StateChange(EStateErrInUsePlayer1, EMapcPlayComplete1, KErrInUse);
sl@0
   951
				break;
sl@0
   952
			case EStateErrInUsePlayer1:
sl@0
   953
				//Get Position of iTestAudioPlayer#1
sl@0
   954
				retErr = iTestAudioPlayer1->GetPosition(iPositionStop);
sl@0
   955
				INFO_PRINTF1(_L("iTestAudioPlayer1->GetPosition()"));
sl@0
   956
				if( retErr != KErrNone )
sl@0
   957
					{
sl@0
   958
					ERR_PRINTF2(_L("iTestAudioPlayer1->GetPosition - Failed with Error : %d"), retErr);
sl@0
   959
					iTestStepResult = EFail;
sl@0
   960
					CActiveScheduler::Stop();
sl@0
   961
					break;
sl@0
   962
					}
sl@0
   963
				INFO_PRINTF2(_L("value of iPositionStop = %d"),iPositionStop.Int64());//Statement Changed under DEF105143
sl@0
   964
sl@0
   965
				// Register iTestAudioPlayer#1 for Notification
sl@0
   966
				retErr = iTestAudioPlayer1->RegisterAudioResourceNotification(*iMdaAudioPlayerCallbackSupport1, KMMFEventCategoryAudioResourceAvailable);
sl@0
   967
				INFO_PRINTF1(_L("iTestAudioPlayer1->RegisterAudioResourceNotification()"));
sl@0
   968
				if( retErr != KErrNone )
sl@0
   969
					{
sl@0
   970
					ERR_PRINTF2(_L("iTestAudioPlayer1->RegisterAudioResourceNotification - Failed with Error : %d"), retErr);
sl@0
   971
					iTestStepResult = EFail;
sl@0
   972
					CActiveScheduler::Stop();
sl@0
   973
					break;
sl@0
   974
					}
sl@0
   975
				// Set ExpectedEvent and change the State
sl@0
   976
				StateChange(EStateEndPlay2, EMapcPlayComplete2);
sl@0
   977
				break;
sl@0
   978
			case EStateEndPlay2:
sl@0
   979
				// Timer to check if Notification Event Occurs.
sl@0
   980
				iCallBackTimer->After(2000000);
sl@0
   981
				// Set ExpectedEvent and change the State
sl@0
   982
				StateChange(EStateNotifiedPlayer1, EMarncResourceAvailable1);
sl@0
   983
				break;
sl@0
   984
			case EStateNotifiedPlayer1:
sl@0
   985
				iCallBackTimer->Cancel(); // in case something else stopped the AS
sl@0
   986
				INFO_PRINTF1(_L("iTestAudioPlayer1->NotificationReceived"));
sl@0
   987
				iPositionResume = iPosition;
sl@0
   988
				CActiveScheduler::Stop();
sl@0
   989
				// Check for the Position. 
sl@0
   990
				if (iPositionResume >= iPositionStop)
sl@0
   991
					{
sl@0
   992
					INFO_PRINTF3(_L("iTestAudioPlayer1->Audio Resource iPositionResume >= iPositionStop, Expected=%Ld, Actual=%Ld"), iPositionStop.Int64(), iPositionResume.Int64());
sl@0
   993
					iTestStepResult=EPass;
sl@0
   994
					}
sl@0
   995
				else
sl@0
   996
					{
sl@0
   997
					ERR_PRINTF3(_L("iTestAudioPlayer1->Audio Resource Position is  NOT iPositionResume >= iPositionStop, Expected=%Ld, Actual=%Ld"), iPositionStop.Int64(), iPositionResume.Int64());
sl@0
   998
					iTestStepResult=EFail;
sl@0
   999
					}
sl@0
  1000
				break;
sl@0
  1001
			}
sl@0
  1002
		}
sl@0
  1003
	}
sl@0
  1004
sl@0
  1005
/**
sl@0
  1006
 * PerformTestL
sl@0
  1007
 */
sl@0
  1008
TVerdict CTestMmfAclntARN8105::PerformTestL()
sl@0
  1009
	{
sl@0
  1010
	INFO_PRINTF1(_L("Register (after Play Error) and Get the actual position from where the paused audio can be resumed. Low priority client is played first."));
sl@0
  1011
	iTestStepResult = EFail;
sl@0
  1012
sl@0
  1013
	// Initialise the state variables
sl@0
  1014
	StateInit();
sl@0
  1015
	
sl@0
  1016
	// Begin the process
sl@0
  1017
	FsmL(EIdlePlayer, KErrNone);
sl@0
  1018
	
sl@0
  1019
	// Start the scheduler - Done only once !
sl@0
  1020
	CActiveScheduler::Start();
sl@0
  1021
	
sl@0
  1022
	return iTestStepResult;
sl@0
  1023
	}
sl@0
  1024
sl@0
  1025
//
sl@0
  1026
//CTestMmfAclntARN8106
sl@0
  1027
//
sl@0
  1028
sl@0
  1029
/**
sl@0
  1030
 * Constructor
sl@0
  1031
 */
sl@0
  1032
CTestMmfAclntARN8106::CTestMmfAclntARN8106(const TDesC& aTestName, const TDesC& aSectName)
sl@0
  1033
	: CTestMmfAclntAudioPlayerARN(aTestName, aSectName)
sl@0
  1034
	{}
sl@0
  1035
sl@0
  1036
/**
sl@0
  1037
 * NewL
sl@0
  1038
 */
sl@0
  1039
CTestMmfAclntARN8106* CTestMmfAclntARN8106::NewL(const TDesC& aTestName, const TDesC& aSectName)
sl@0
  1040
	{
sl@0
  1041
	CTestMmfAclntARN8106* self = new (ELeave) CTestMmfAclntARN8106(aTestName, aSectName);
sl@0
  1042
	return self;
sl@0
  1043
	}
sl@0
  1044
sl@0
  1045
/**
sl@0
  1046
 * DoTestL
sl@0
  1047
 */
sl@0
  1048
TVerdict CTestMmfAclntARN8106::DoTestL()
sl@0
  1049
	{
sl@0
  1050
	return( PerformTestL() );
sl@0
  1051
	}
sl@0
  1052
sl@0
  1053
/**
sl@0
  1054
 * FsmCheck
sl@0
  1055
 */
sl@0
  1056
TBool CTestMmfAclntARN8106::FsmCheck(TMmfAudioPlayerEvents aEventCode, TInt aError)
sl@0
  1057
	{
sl@0
  1058
	TBool retFsmCheck = EFalse;
sl@0
  1059
	if (((aEventCode == EMapcPlayComplete1) || (aEventCode == EMapcPlayComplete2)) && (aError == KErrUnderflow))
sl@0
  1060
		{
sl@0
  1061
		INFO_PRINTF1(_L("Underflow !"));
sl@0
  1062
		}
sl@0
  1063
	else if (iExpectedEvent != aEventCode)
sl@0
  1064
		{
sl@0
  1065
		if ((aEventCode == EMapcPlayComplete2))
sl@0
  1066
	        {
sl@0
  1067
	        retFsmCheck = ETrue;
sl@0
  1068
	        if (iEventOccured == EMarncResourceAvailable1)
sl@0
  1069
	            {
sl@0
  1070
	            return retFsmCheck;
sl@0
  1071
	            }
sl@0
  1072
            else
sl@0
  1073
                {
sl@0
  1074
                iEventOccured = EMapcPlayComplete2;
sl@0
  1075
                }
sl@0
  1076
	        }
sl@0
  1077
        else if (aEventCode == EMarncResourceAvailable1)
sl@0
  1078
            {
sl@0
  1079
            retFsmCheck = ETrue;
sl@0
  1080
            if (iEventOccured == EMapcPlayComplete2)
sl@0
  1081
                {
sl@0
  1082
                return retFsmCheck;
sl@0
  1083
                }
sl@0
  1084
            else
sl@0
  1085
                {
sl@0
  1086
                iEventOccured = EMarncResourceAvailable1;
sl@0
  1087
                }
sl@0
  1088
            }
sl@0
  1089
        else
sl@0
  1090
            {
sl@0
  1091
            ERR_PRINTF3(_L("ExpectedEvent : %d, ActualEvent : %d"), iExpectedEvent, aEventCode);
sl@0
  1092
	        iTestStepResult = EFail;
sl@0
  1093
	        CActiveScheduler::Stop();
sl@0
  1094
            }
sl@0
  1095
		}
sl@0
  1096
	else if (iExpectedError != aError)
sl@0
  1097
		{
sl@0
  1098
		ERR_PRINTF3(_L("ExpectedError : %d, ActualError : %d"), iExpectedError, aError);
sl@0
  1099
		iTestStepResult = EFail;
sl@0
  1100
		CActiveScheduler::Stop();
sl@0
  1101
		}
sl@0
  1102
	else
sl@0
  1103
		{
sl@0
  1104
		retFsmCheck = ETrue;
sl@0
  1105
		}
sl@0
  1106
	return retFsmCheck;
sl@0
  1107
	}
sl@0
  1108
sl@0
  1109
/**
sl@0
  1110
 * FsmL
sl@0
  1111
 */
sl@0
  1112
void CTestMmfAclntARN8106::FsmL(TMmfAudioPlayerEvents aEventCode, TInt aError)
sl@0
  1113
	{
sl@0
  1114
	if (FsmCheck(aEventCode, aError))
sl@0
  1115
		{
sl@0
  1116
		TInt retErr = KErrNone;
sl@0
  1117
		switch (iState)
sl@0
  1118
			{
sl@0
  1119
			case EStateBegin:
sl@0
  1120
				// Open iTestAudioPlayer#2
sl@0
  1121
				iTestAudioPlayer2->OpenFileL(iFilename2);
sl@0
  1122
				INFO_PRINTF1(_L("iTestAudioPlayer2->OpenFileL()"));
sl@0
  1123
				// Set ExpectedEvent and change the State
sl@0
  1124
				StateChange(EStatePlaying2, EMapcInitComplete2);
sl@0
  1125
				break;
sl@0
  1126
			case EStatePlaying2:
sl@0
  1127
				// Play iTestAudioPlayer#2
sl@0
  1128
				iTestAudioPlayer2->Play();
sl@0
  1129
				INFO_PRINTF1(_L("iTestAudioPlayer2->Play()"));
sl@0
  1130
				// Open iTestAudioPlayer#1
sl@0
  1131
				iTestAudioPlayer1->OpenFileL(iFilename1);
sl@0
  1132
				INFO_PRINTF1(_L("iTestAudioPlayer1->OpenFileL()"));
sl@0
  1133
				// Set ExpectedEvent and change the State
sl@0
  1134
				StateChange(EStatePlaying1, EMapcInitComplete1);
sl@0
  1135
				break;
sl@0
  1136
			case EStatePlaying1:
sl@0
  1137
				// Play iTestAudioPlayer#1
sl@0
  1138
				iTestAudioPlayer1->Play();
sl@0
  1139
				INFO_PRINTF1(_L("iTestAudioPlayer1->Play()"));
sl@0
  1140
				// Set ExpectedEvent and change the State
sl@0
  1141
				StateChange(EStateErrInUsePlayer1, EMapcPlayComplete1, KErrInUse);
sl@0
  1142
				break;
sl@0
  1143
			case EStateErrInUsePlayer1:
sl@0
  1144
				//Get Position of iTestAudioPlayer#1
sl@0
  1145
				retErr = iTestAudioPlayer1->GetPosition(iPositionStop);
sl@0
  1146
				INFO_PRINTF1(_L("iTestAudioPlayer1->GetPosition()"));
sl@0
  1147
				if( retErr != KErrNone )
sl@0
  1148
					{
sl@0
  1149
					ERR_PRINTF2(_L("iTestAudioPlayer1->GetPosition - Failed with Error : %d"), retErr);
sl@0
  1150
					iTestStepResult = EFail;
sl@0
  1151
					CActiveScheduler::Stop();
sl@0
  1152
					break;
sl@0
  1153
					}
sl@0
  1154
				// Register iTestAudioPlayer#1 for Notification
sl@0
  1155
				retErr = iTestAudioPlayer1->RegisterAudioResourceNotification(*iMdaAudioPlayerCallbackSupport1, KMMFEventCategoryAudioResourceAvailable);
sl@0
  1156
				INFO_PRINTF1(_L("iTestAudioPlayer1->RegisterAudioResourceNotification()"));
sl@0
  1157
				if( retErr != KErrNone )
sl@0
  1158
					{
sl@0
  1159
					ERR_PRINTF2(_L("iTestAudioPlayer1->RegisterAudioResourceNotification - Failed with Error : %d"), retErr);
sl@0
  1160
					iTestStepResult = EFail;
sl@0
  1161
					CActiveScheduler::Stop();
sl@0
  1162
					break;
sl@0
  1163
					}
sl@0
  1164
				// Set ExpectedEvent and change the State
sl@0
  1165
				StateChange(EStateEndPlay2, EMapcPlayComplete2);
sl@0
  1166
				break;
sl@0
  1167
			case EStateEndPlay2:
sl@0
  1168
				// Timer to check if Notification Event Occurs.
sl@0
  1169
				iCallBackTimer->After(2000000);
sl@0
  1170
				// Set ExpectedEvent and change the State
sl@0
  1171
				StateChange(EStateNotifiedPlayer1, EMarncResourceAvailable1);
sl@0
  1172
				break;
sl@0
  1173
			case EStateNotifiedPlayer1:
sl@0
  1174
				iCallBackTimer->Cancel(); // in case something else stopped the AS
sl@0
  1175
				INFO_PRINTF1(_L("iTestAudioPlayer1->NotificationReceived"));
sl@0
  1176
				iPositionResume = iPosition;
sl@0
  1177
				CActiveScheduler::Stop();
sl@0
  1178
				// Check for the Position
sl@0
  1179
				if (iPositionResume >= iPositionStop)
sl@0
  1180
					{
sl@0
  1181
					INFO_PRINTF3(_L("iTestAudioPlayer1->Audio Resource Position Matches, Expected=%Ld, Actual=%Ld"), iPositionStop.Int64(), iPositionResume.Int64());
sl@0
  1182
					iTestStepResult=EPass;
sl@0
  1183
					}
sl@0
  1184
				else
sl@0
  1185
					{
sl@0
  1186
					ERR_PRINTF3(_L("iTestAudioPlayer1->Audio Resource Position does NOT Match, Expected=%Ld, Actual=%Ld"), iPositionStop.Int64(), iPositionResume.Int64());
sl@0
  1187
					iTestStepResult=EFail;
sl@0
  1188
					}
sl@0
  1189
				break;
sl@0
  1190
			}
sl@0
  1191
		}
sl@0
  1192
	}
sl@0
  1193
	
sl@0
  1194
/**
sl@0
  1195
 * PerformTestL
sl@0
  1196
 */
sl@0
  1197
TVerdict CTestMmfAclntARN8106::PerformTestL()
sl@0
  1198
	{
sl@0
  1199
	INFO_PRINTF1(_L("Register (after Play Error) and Get the actual position from where the paused audio can be resumed. High priority client is played first."));
sl@0
  1200
	iTestStepResult = EFail;
sl@0
  1201
	
sl@0
  1202
	// Initialise the state variables
sl@0
  1203
	StateInit();
sl@0
  1204
		
sl@0
  1205
	// Begin the process
sl@0
  1206
	FsmL(EIdlePlayer, KErrNone);
sl@0
  1207
	
sl@0
  1208
	// Start the scheduler - Done only once !
sl@0
  1209
	CActiveScheduler::Start();
sl@0
  1210
	
sl@0
  1211
	return iTestStepResult;
sl@0
  1212
	}
sl@0
  1213
sl@0
  1214
//
sl@0
  1215
//CTestMmfAclntARN8107
sl@0
  1216
//
sl@0
  1217
sl@0
  1218
/**
sl@0
  1219
 * Constructor
sl@0
  1220
 */
sl@0
  1221
CTestMmfAclntARN8107::CTestMmfAclntARN8107(const TDesC& aTestName, const TDesC& aSectName)
sl@0
  1222
	: CTestMmfAclntAudioPlayerARN(aTestName, aSectName)
sl@0
  1223
	{}
sl@0
  1224
sl@0
  1225
/**
sl@0
  1226
 * NewL
sl@0
  1227
 */
sl@0
  1228
CTestMmfAclntARN8107* CTestMmfAclntARN8107::NewL(const TDesC& aTestName, const TDesC& aSectName)
sl@0
  1229
	{
sl@0
  1230
	CTestMmfAclntARN8107* self = new (ELeave) CTestMmfAclntARN8107(aTestName, aSectName);
sl@0
  1231
	return self;
sl@0
  1232
	}
sl@0
  1233
sl@0
  1234
/**
sl@0
  1235
 * DoTestL
sl@0
  1236
 */
sl@0
  1237
TVerdict CTestMmfAclntARN8107::DoTestL()
sl@0
  1238
	{
sl@0
  1239
	return( PerformTestL() );
sl@0
  1240
	}
sl@0
  1241
sl@0
  1242
/**
sl@0
  1243
 * FsmCheck
sl@0
  1244
 */
sl@0
  1245
TBool CTestMmfAclntARN8107::FsmCheck(TMmfAudioPlayerEvents aEventCode, TInt aError)
sl@0
  1246
	{
sl@0
  1247
	TBool retFsmCheck = EFalse;
sl@0
  1248
	if (((aEventCode == EMapcPlayComplete1) || (aEventCode == EMapcPlayComplete2)) && (aError == KErrUnderflow))
sl@0
  1249
		{
sl@0
  1250
		INFO_PRINTF1(_L("Underflow !"));
sl@0
  1251
		}
sl@0
  1252
	else if (iExpectedEvent != aEventCode)
sl@0
  1253
		{
sl@0
  1254
		if ((aEventCode == EMapcPlayComplete2))
sl@0
  1255
	        {
sl@0
  1256
	        retFsmCheck = ETrue;
sl@0
  1257
	        if (iEventOccured == EMarncResourceAvailable1)
sl@0
  1258
	            {
sl@0
  1259
	            return retFsmCheck;
sl@0
  1260
	            }
sl@0
  1261
            else
sl@0
  1262
                {
sl@0
  1263
                iEventOccured = EMapcPlayComplete2;
sl@0
  1264
                }
sl@0
  1265
	        }
sl@0
  1266
        else if (aEventCode == EMarncResourceAvailable1)
sl@0
  1267
            {
sl@0
  1268
            retFsmCheck = ETrue;
sl@0
  1269
            if (iEventOccured == EMapcPlayComplete2)
sl@0
  1270
                {
sl@0
  1271
                return retFsmCheck;
sl@0
  1272
                }
sl@0
  1273
            else
sl@0
  1274
                {
sl@0
  1275
                iEventOccured = EMarncResourceAvailable1;
sl@0
  1276
                }
sl@0
  1277
            }
sl@0
  1278
        else
sl@0
  1279
            {
sl@0
  1280
            ERR_PRINTF3(_L("ExpectedEvent : %d, ActualEvent : %d"), iExpectedEvent, aEventCode);
sl@0
  1281
	        iTestStepResult = EFail;
sl@0
  1282
	        CActiveScheduler::Stop();
sl@0
  1283
            }
sl@0
  1284
		}
sl@0
  1285
	else if (iExpectedError != aError)
sl@0
  1286
		{
sl@0
  1287
		ERR_PRINTF3(_L("ExpectedError : %d, ActualError : %d"), iExpectedError, aError);
sl@0
  1288
		iTestStepResult = EFail;
sl@0
  1289
		CActiveScheduler::Stop();
sl@0
  1290
		}
sl@0
  1291
	else
sl@0
  1292
		{
sl@0
  1293
		retFsmCheck = ETrue;
sl@0
  1294
		}
sl@0
  1295
	return retFsmCheck;
sl@0
  1296
	}
sl@0
  1297
sl@0
  1298
/**
sl@0
  1299
 * FsmL
sl@0
  1300
 */
sl@0
  1301
void CTestMmfAclntARN8107::FsmL(TMmfAudioPlayerEvents aEventCode, TInt aError)
sl@0
  1302
	{
sl@0
  1303
	if (FsmCheck(aEventCode, aError))
sl@0
  1304
		{
sl@0
  1305
		TInt retErr = KErrNone;
sl@0
  1306
		switch (iState)
sl@0
  1307
			{
sl@0
  1308
			case EStateBegin:
sl@0
  1309
				// Open iTestAudioPlayer#1
sl@0
  1310
				iTestAudioPlayer1->OpenFileL(iFilename1);
sl@0
  1311
				INFO_PRINTF1(_L("iTestAudioPlayer1->OpenFileL()"));
sl@0
  1312
				// Set ExpectedEvent and change the State
sl@0
  1313
				StateChange(EStatePlaying1, EMapcInitComplete1);
sl@0
  1314
				break;
sl@0
  1315
			case EStatePlaying1:
sl@0
  1316
				// Play iTestAudioPlayer#1
sl@0
  1317
				iTestAudioPlayer1->Play();
sl@0
  1318
				INFO_PRINTF1(_L("iTestAudioPlayer1->Play()"));
sl@0
  1319
				// Register iTestAudioPlayer#1 for Notification
sl@0
  1320
				retErr = iTestAudioPlayer1->RegisterAudioResourceNotification(*iMdaAudioPlayerCallbackSupport1, KMMFEventCategoryAudioResourceAvailable);
sl@0
  1321
				INFO_PRINTF1(_L("iTestAudioPlayer1->RegisterAudioResourceNotification()"));
sl@0
  1322
				if( retErr != KErrNone )
sl@0
  1323
					{
sl@0
  1324
					ERR_PRINTF2(_L("iTestAudioPlayer1->RegisterAudioResourceNotification - Failed with Error : %d"), retErr);
sl@0
  1325
					iTestStepResult = EFail;
sl@0
  1326
					CActiveScheduler::Stop();
sl@0
  1327
					break;
sl@0
  1328
					}
sl@0
  1329
				// Open iTestAudioPlayer#2
sl@0
  1330
				iTestAudioPlayer2->OpenFileL(iFilename2);
sl@0
  1331
				INFO_PRINTF1(_L("iTestAudioPlayer2->OpenFileL()"));
sl@0
  1332
				// Set ExpectedEvent and change the State
sl@0
  1333
				StateChange(EStatePlaying2, EMapcInitComplete2);
sl@0
  1334
				break;
sl@0
  1335
			case EStatePlaying2:
sl@0
  1336
				// Play iTestAudioPlayer#2
sl@0
  1337
				iTestAudioPlayer2->Play();
sl@0
  1338
				INFO_PRINTF1(_L("iTestAudioPlayer2->Play()"));
sl@0
  1339
				// Set ExpectedEvent and change the State
sl@0
  1340
				StateChange(EStateErrInUsePlayer1, EMapcPlayComplete1, KErrInUse);
sl@0
  1341
				break;
sl@0
  1342
			case EStateErrInUsePlayer1:
sl@0
  1343
				// Set ExpectedEvent and change the State
sl@0
  1344
				StateChange(EStateEndPlay2, EMapcPlayComplete2);
sl@0
  1345
				break;
sl@0
  1346
            case EStateEndPlay2:
sl@0
  1347
				// Timer to check if Notification Event Occurs.
sl@0
  1348
				iCallBackTimer->After(2000000);
sl@0
  1349
				// Set ExpectedEvent and change the State
sl@0
  1350
				StateChange(EStateNotifiedPlayer1, EMarncResourceAvailable1);
sl@0
  1351
				break;
sl@0
  1352
			case EStateNotifiedPlayer1:
sl@0
  1353
				iCallBackTimer->Cancel(); // in case something else stopped the AS
sl@0
  1354
				INFO_PRINTF1(_L("iTestAudioPlayer1->NotificationReceived => 1"));
sl@0
  1355
				retErr = iTestAudioPlayer1->WillResumePlay();
sl@0
  1356
				INFO_PRINTF1(_L("iTestAudioPlayer1->WillResumePlay()"));
sl@0
  1357
				if( retErr != KErrNone )
sl@0
  1358
					{
sl@0
  1359
					ERR_PRINTF2(_L("iTestAudioPlayer1->WillResumePlay() - Failed with Error : %d"), retErr);
sl@0
  1360
					iTestStepResult = EFail;
sl@0
  1361
					CActiveScheduler::Stop();
sl@0
  1362
					break;
sl@0
  1363
					}
sl@0
  1364
				iTestAudioPlayer1->SetPosition(iPosition);
sl@0
  1365
				// Play iTestAudioPlayer#1
sl@0
  1366
				iTestAudioPlayer1->Play();
sl@0
  1367
				INFO_PRINTF1(_L("iTestAudioPlayer1->Play()"));
sl@0
  1368
				// Open iTestAudioPlayer#2
sl@0
  1369
				iTestAudioPlayer2->OpenFileL(iFilename2);
sl@0
  1370
				INFO_PRINTF1(_L("iTestAudioPlayer2->OpenFileL()"));
sl@0
  1371
				// Set ExpectedEvent and change the State
sl@0
  1372
				StateChange(EStatePlaying2A, EMapcInitComplete2);
sl@0
  1373
				break;
sl@0
  1374
			case EStatePlaying2A:
sl@0
  1375
				// Play iTestAudioPlayer#2
sl@0
  1376
				iTestAudioPlayer2->Play();
sl@0
  1377
				INFO_PRINTF1(_L("iTestAudioPlayer2->Play()"));
sl@0
  1378
				// Set ExpectedEvent and change the State
sl@0
  1379
				StateChange(EStateErrInUsePlayer1A, EMapcPlayComplete1, KErrInUse);
sl@0
  1380
				break;
sl@0
  1381
			case EStateErrInUsePlayer1A:
sl@0
  1382
				// Set ExpectedEvent and change the State
sl@0
  1383
				StateChange(EStateEndPlay2A, EMapcPlayComplete2);
sl@0
  1384
				break;
sl@0
  1385
            case EStateEndPlay2A:
sl@0
  1386
                // Timer to check if Notification Event Occurs.
sl@0
  1387
				iCallBackTimer->After(2000000);
sl@0
  1388
				// Set ExpectedEvent and change the State
sl@0
  1389
				StateChange(EStateNotifiedPlayer1A, EMarncResourceAvailable1);
sl@0
  1390
				break;
sl@0
  1391
			case EStateNotifiedPlayer1A:
sl@0
  1392
				iCallBackTimer->Cancel(); // in case something else stopped the AS
sl@0
  1393
				INFO_PRINTF1(_L("iTestAudioPlayer1->NotificationReceived => 2"));
sl@0
  1394
				iTestStepResult = EPass;
sl@0
  1395
				CActiveScheduler::Stop();
sl@0
  1396
				break;
sl@0
  1397
			}
sl@0
  1398
		}
sl@0
  1399
	}
sl@0
  1400
	
sl@0
  1401
/**
sl@0
  1402
 * PerformTestL
sl@0
  1403
 */
sl@0
  1404
TVerdict CTestMmfAclntARN8107::PerformTestL()
sl@0
  1405
	{
sl@0
  1406
	INFO_PRINTF1(_L("Client does not need to Re-register for the same event when the event is received i.e API is not one shot."));
sl@0
  1407
	iTestStepResult = EFail;
sl@0
  1408
	
sl@0
  1409
	// Initialise the state variables
sl@0
  1410
	StateInit();
sl@0
  1411
	
sl@0
  1412
	// Begin the process
sl@0
  1413
	FsmL(EIdlePlayer, KErrNone);
sl@0
  1414
	
sl@0
  1415
	// Start the scheduler - Done only once !
sl@0
  1416
	CActiveScheduler::Start();
sl@0
  1417
	
sl@0
  1418
	return iTestStepResult;
sl@0
  1419
	}
sl@0
  1420
sl@0
  1421
//
sl@0
  1422
//CTestMmfAclntARN8108
sl@0
  1423
//
sl@0
  1424
sl@0
  1425
/**
sl@0
  1426
 * NewL
sl@0
  1427
 */
sl@0
  1428
CTestMmfAclntARN8108* CTestMmfAclntARN8108::NewL(const TDesC& aTestName, const TDesC& aSectName)
sl@0
  1429
	{
sl@0
  1430
	CTestMmfAclntARN8108* self = new (ELeave) CTestMmfAclntARN8108(aTestName, aSectName);
sl@0
  1431
	return self;
sl@0
  1432
	}
sl@0
  1433
sl@0
  1434
/**
sl@0
  1435
 * Constructor
sl@0
  1436
 */
sl@0
  1437
CTestMmfAclntARN8108::CTestMmfAclntARN8108(const TDesC& aTestName, const TDesC& aSectName)
sl@0
  1438
	: CTestMmfAclntAudioPlayerARN(aTestName, aSectName)
sl@0
  1439
	{}
sl@0
  1440
sl@0
  1441
sl@0
  1442
/**
sl@0
  1443
 * DoTestL
sl@0
  1444
 */
sl@0
  1445
TVerdict CTestMmfAclntARN8108::DoTestL()
sl@0
  1446
	{
sl@0
  1447
	return( PerformTestL() );
sl@0
  1448
	}
sl@0
  1449
sl@0
  1450
void CTestMmfAclntARN8108::DecideFsmState(TInt aClientNumber,CMultiEventChecker::TClientUtilityType aClientType, TInt aEventCode, TInt aError)
sl@0
  1451
	{
sl@0
  1452
	if (iEventChecker->CheckFsm(aClientNumber, aClientType, aEventCode, aError))
sl@0
  1453
		{
sl@0
  1454
		iTestStepResult = (this->*(iStateHandlers[iEventChecker->NextState()]))();
sl@0
  1455
 		if(iTestStepResult != EPass)
sl@0
  1456
 			{
sl@0
  1457
 			iEventChecker->StopTest();
sl@0
  1458
 			}
sl@0
  1459
		}
sl@0
  1460
	}
sl@0
  1461
sl@0
  1462
void CTestMmfAclntARN8108::FsmL(TMmfAudioPlayerEvents aEventCode, TInt aError)
sl@0
  1463
	{
sl@0
  1464
	if (aEventCode == EMapcInitComplete1 || aEventCode == EMapcPlayComplete1 || aEventCode == EMarncResourceAvailable1)
sl@0
  1465
		{	//Client 1
sl@0
  1466
			DecideFsmState(1,CMultiEventChecker::EAudioPlayer,aEventCode,aError);
sl@0
  1467
		}
sl@0
  1468
	if (aEventCode == EMapcInitComplete2 || aEventCode == EMapcPlayComplete2 || aEventCode == EMarncResourceAvailable2)
sl@0
  1469
		{	//Client 2
sl@0
  1470
			DecideFsmState(2,CMultiEventChecker::EAudioPlayer,aEventCode,aError);
sl@0
  1471
		}
sl@0
  1472
	if (aEventCode == EMapcInitComplete3 || aEventCode == EMapcPlayComplete3 || aEventCode == EMarncResourceAvailable3)
sl@0
  1473
		{	//Client 3
sl@0
  1474
			DecideFsmState(3,CMultiEventChecker::EAudioPlayer,aEventCode,aError);
sl@0
  1475
		}
sl@0
  1476
	}
sl@0
  1477
sl@0
  1478
sl@0
  1479
void CTestMmfAclntARN8108::InitTest()
sl@0
  1480
	{
sl@0
  1481
	iStateHandlers[EStateOpenPlayer1]=&CTestMmfAclntARN8108::HandleStateOpenPlayer1;
sl@0
  1482
	iStateHandlers[EStateOpenPlayer3]=&CTestMmfAclntARN8108::HandleStateOpenPlayer3;
sl@0
  1483
	iStateHandlers[EStateOpenPlayer2]=&CTestMmfAclntARN8108::HandleStateOpenPlayer2;
sl@0
  1484
	iStateHandlers[EStateErrInUsePlayer1]=&CTestMmfAclntARN8108::HandleStateErrInUsePlayer1;
sl@0
  1485
	iStateHandlers[EStateErrInUsePlayer3]=&CTestMmfAclntARN8108::HandleStateErrInUsePlayer3;
sl@0
  1486
	iStateHandlers[EStateNotifiedPlayer1]=&CTestMmfAclntARN8108::HandleStateNotifiedPlayer1;
sl@0
  1487
	iStateHandlers[EStateNotifiedPlayer3]=&CTestMmfAclntARN8108::HandleStateNotifiedPlayer3;
sl@0
  1488
	iStateHandlers[EStatePlaying1]=&CTestMmfAclntARN8108::HandleStatePlaying1;
sl@0
  1489
	}
sl@0
  1490
	
sl@0
  1491
void CTestMmfAclntARN8108::StartTestL()
sl@0
  1492
	{
sl@0
  1493
	// Open iTestAudioPlayer#1
sl@0
  1494
	iTestAudioPlayer1->OpenFileL(iFilename1);
sl@0
  1495
	INFO_PRINTF1(_L("iTestAudioPlayer1->OpenFileL()"));
sl@0
  1496
	iEventChecker->SetExpectedEvent(1,EMapcInitComplete1,KErrNone);
sl@0
  1497
	iEventChecker->SetExpectedState(EStateOpenPlayer1);
sl@0
  1498
	}
sl@0
  1499
sl@0
  1500
TVerdict CTestMmfAclntARN8108::HandleStateOpenPlayer1()
sl@0
  1501
	{
sl@0
  1502
	TInt retErr;
sl@0
  1503
	// Play iTestAudioPlayer#1
sl@0
  1504
	iTestAudioPlayer1->Play();
sl@0
  1505
	INFO_PRINTF1(_L("iTestAudioPlayer1->Play()"));
sl@0
  1506
	// Register iTestAudioPlayer#1 for Notification
sl@0
  1507
	retErr = iTestAudioPlayer1->RegisterAudioResourceNotification(*iMdaAudioPlayerCallbackSupport1, KMMFEventCategoryAudioResourceAvailable);
sl@0
  1508
	INFO_PRINTF1(_L("iTestAudioPlayer1->RegisterAudioResourceNotification()"));
sl@0
  1509
	if( retErr != KErrNone )
sl@0
  1510
		{
sl@0
  1511
		ERR_PRINTF2(_L("iTestAudioPlayer1->RegisterAudioResourceNotification - Failed with Error : %d"), retErr);
sl@0
  1512
		iTestStepResult = EFail;
sl@0
  1513
		CActiveScheduler::Stop();
sl@0
  1514
		return EFail;
sl@0
  1515
		}
sl@0
  1516
	// Register iTestAudioPlayer#3 for Notification
sl@0
  1517
	retErr = iTestAudioPlayer3->RegisterAudioResourceNotification(*iMdaAudioPlayerCallbackSupport3, KMMFEventCategoryAudioResourceAvailable);
sl@0
  1518
	INFO_PRINTF1(_L("iTestAudioPlayer3->RegisterAudioResourceNotification()"));
sl@0
  1519
	if( retErr != KErrNone )
sl@0
  1520
		{
sl@0
  1521
		ERR_PRINTF2(_L("iTestAudioPlayer3->RegisterAudioResourceNotification - Failed with Error : %d"), retErr);
sl@0
  1522
		iTestStepResult = EFail;
sl@0
  1523
		CActiveScheduler::Stop();
sl@0
  1524
		return EFail;
sl@0
  1525
		}
sl@0
  1526
	// Open iTestAudioPlayer#3
sl@0
  1527
	iTestAudioPlayer3->OpenFileL(iFilename3);
sl@0
  1528
	INFO_PRINTF1(_L("iTestAudioPlayer3->OpenFileL()"));
sl@0
  1529
	// Set ExpectedEvent and change the State
sl@0
  1530
	iEventChecker->SetExpectedEvent(3,EMapcInitComplete3,KErrNone);
sl@0
  1531
	iEventChecker->SetExpectedState(EStateOpenPlayer3);
sl@0
  1532
	return EPass;
sl@0
  1533
	}
sl@0
  1534
	
sl@0
  1535
TVerdict CTestMmfAclntARN8108::HandleStateOpenPlayer3()
sl@0
  1536
	{
sl@0
  1537
	iTestAudioPlayer2->OpenFileL(iFilename2);
sl@0
  1538
	INFO_PRINTF1(_L("iTestAudioPlayer2->OpenFileL()"));
sl@0
  1539
	// Set ExpectedEvent and change the State
sl@0
  1540
	iEventChecker->SetExpectedEvent(2,EMapcInitComplete2,KErrNone);
sl@0
  1541
	iEventChecker->SetExpectedState(EStateOpenPlayer2);
sl@0
  1542
	return EPass;
sl@0
  1543
	}
sl@0
  1544
sl@0
  1545
TVerdict CTestMmfAclntARN8108::HandleStateOpenPlayer2()
sl@0
  1546
	{
sl@0
  1547
	// Play iTestAudioPlayer#2
sl@0
  1548
	iTestAudioPlayer2->Play();
sl@0
  1549
	INFO_PRINTF1(_L("iTestAudioPlayer2->Play()"));
sl@0
  1550
	// Set ExpectedEvent and change the State
sl@0
  1551
	iEventChecker->SetExpectedEvent(1,EMapcPlayComplete1,KErrInUse);
sl@0
  1552
	iEventChecker->SetExpectedState(EStateErrInUsePlayer1);
sl@0
  1553
	return EPass;
sl@0
  1554
	}
sl@0
  1555
TVerdict CTestMmfAclntARN8108::HandleStateErrInUsePlayer1()
sl@0
  1556
	{
sl@0
  1557
	// Play iTestAudioPlayer#3
sl@0
  1558
	iTestAudioPlayer3->Play();
sl@0
  1559
	INFO_PRINTF1(_L("iTestAudioPlayer3->Play()"));
sl@0
  1560
	// Set ExpectedEvent and change the State
sl@0
  1561
	iEventChecker->SetExpectedEvent(3,EMapcPlayComplete3,KErrInUse);
sl@0
  1562
	iEventChecker->SetExpectedState(EStateErrInUsePlayer3);
sl@0
  1563
	return EPass;
sl@0
  1564
	}
sl@0
  1565
	
sl@0
  1566
TVerdict CTestMmfAclntARN8108::HandleStateErrInUsePlayer3()
sl@0
  1567
	{
sl@0
  1568
	// Close iTestAudioPlayer#2
sl@0
  1569
	WaitWithTimeout(iRequestStatus,1000000);
sl@0
  1570
	iTestAudioPlayer2->Stop();
sl@0
  1571
	INFO_PRINTF1(_L("iTestAudioPlayer2->Stop()"));
sl@0
  1572
	iTestAudioPlayer2->Close();
sl@0
  1573
	INFO_PRINTF1(_L("iTestAudioPlayer2->Close()"));
sl@0
  1574
	// Timer to check if Notification Event Occurs.
sl@0
  1575
	iCallBackTimer->After(2000000);
sl@0
  1576
	// Set ExpectedEvent and change the State
sl@0
  1577
	iEventChecker->SetExpectedEvent(1,EMarncResourceAvailable1,KErrNone);
sl@0
  1578
	iEventChecker->SetExpectedState(EStateNotifiedPlayer1);
sl@0
  1579
	return EPass;
sl@0
  1580
	}
sl@0
  1581
sl@0
  1582
TVerdict CTestMmfAclntARN8108::HandleStateNotifiedPlayer1()
sl@0
  1583
	{
sl@0
  1584
	iCallBackTimer->Cancel(); // in case something else stopped the AS
sl@0
  1585
	INFO_PRINTF1(_L("iTestAudioPlayer1->NotificationReceived"));
sl@0
  1586
	TInt retErr = iTestAudioPlayer1->WillResumePlay();
sl@0
  1587
	INFO_PRINTF1(_L("iTestAudioPlayer1->WillResumePlay()"));
sl@0
  1588
	if( retErr != KErrNone )
sl@0
  1589
		{
sl@0
  1590
		ERR_PRINTF2(_L("iTestAudioPlayer1->WillResumePlay() - Failed with Error : %d"), retErr);
sl@0
  1591
		iTestStepResult = EFail;
sl@0
  1592
		CActiveScheduler::Stop();
sl@0
  1593
		return EFail;
sl@0
  1594
		}
sl@0
  1595
	iTestAudioPlayer1->SetPosition(iPosition);
sl@0
  1596
	// Play iTestAudioPlayer#1
sl@0
  1597
	iTestAudioPlayer1->Play();
sl@0
  1598
	INFO_PRINTF1(_L("iTestAudioPlayer1->Play()"));
sl@0
  1599
	// Set ExpectedEvent and change the State
sl@0
  1600
	iEventChecker->RegisterClientEventToMonitor(1,EMapcPlayComplete1,KErrNone,EStateNotifiedPlayer3);
sl@0
  1601
	iEventChecker->RegisterClientEventToMonitor(3,EMarncResourceAvailable3,KErrNone,EStatePlaying1);
sl@0
  1602
	iEventChecker->EnableMultipleEventMonitor();
sl@0
  1603
	return EPass;
sl@0
  1604
	}
sl@0
  1605
	
sl@0
  1606
TVerdict CTestMmfAclntARN8108::HandleStateNotifiedPlayer3()
sl@0
  1607
	{
sl@0
  1608
	INFO_PRINTF1(_L("iTestAudioPlayer3->NotificationReceived"));
sl@0
  1609
	if(iEventChecker->IsMonitoringFinished())
sl@0
  1610
		{
sl@0
  1611
		iTestStepResult = EPass;
sl@0
  1612
		iCallBackTimer->Cancel();
sl@0
  1613
		iEventChecker->StopTest();
sl@0
  1614
		}
sl@0
  1615
	else
sl@0
  1616
		{
sl@0
  1617
		iEventChecker->EnableMultipleEventMonitor();
sl@0
  1618
		}
sl@0
  1619
	return EPass;		
sl@0
  1620
	}
sl@0
  1621
sl@0
  1622
TVerdict CTestMmfAclntARN8108::HandleStatePlaying1()
sl@0
  1623
	{
sl@0
  1624
	INFO_PRINTF1(_L("iTestAudioPlayer1->AudioPlayerComplete"));
sl@0
  1625
	iCallBackTimer->After(2000000);
sl@0
  1626
	if(iEventChecker->IsMonitoringFinished())
sl@0
  1627
		{
sl@0
  1628
		iTestStepResult = EPass;
sl@0
  1629
		iCallBackTimer->Cancel();
sl@0
  1630
		iEventChecker->StopTest();
sl@0
  1631
		}
sl@0
  1632
	else
sl@0
  1633
		{
sl@0
  1634
		iEventChecker->EnableMultipleEventMonitor();
sl@0
  1635
		}
sl@0
  1636
	return EPass;
sl@0
  1637
	}
sl@0
  1638
sl@0
  1639
TVerdict CTestMmfAclntARN8108::PerformTestL()
sl@0
  1640
	{
sl@0
  1641
	INFO_PRINTF1(_L("Call WillResumePlay()."));
sl@0
  1642
	iTestStepResult = EFail;
sl@0
  1643
	
sl@0
  1644
	// Initialise the handler functions
sl@0
  1645
	InitTest();
sl@0
  1646
	
sl@0
  1647
	// Initiate the process
sl@0
  1648
	StartTestL();
sl@0
  1649
	
sl@0
  1650
	// Start the scheduler - Done only once !
sl@0
  1651
	CActiveScheduler::Start();
sl@0
  1652
	
sl@0
  1653
	return iTestStepResult;
sl@0
  1654
	}
sl@0
  1655
sl@0
  1656
sl@0
  1657
//
sl@0
  1658
//CTestMmfAclntARN8109
sl@0
  1659
//
sl@0
  1660
sl@0
  1661
/**
sl@0
  1662
 * NewL
sl@0
  1663
 */
sl@0
  1664
CTestMmfAclntARN8109* CTestMmfAclntARN8109::NewL(const TDesC& aTestName, const TDesC& aSectName)
sl@0
  1665
	{
sl@0
  1666
	CTestMmfAclntARN8109* self = new (ELeave) CTestMmfAclntARN8109(aTestName, aSectName);
sl@0
  1667
	return self;
sl@0
  1668
	}
sl@0
  1669
sl@0
  1670
/**
sl@0
  1671
 * Constructor
sl@0
  1672
 */
sl@0
  1673
CTestMmfAclntARN8109::CTestMmfAclntARN8109(const TDesC& aTestName, const TDesC& aSectName)
sl@0
  1674
	: CTestMmfAclntAudioPlayerARN(aTestName, aSectName), iPlayComplete2(EFalse), iResourceAvailable1(EFalse)
sl@0
  1675
	{}
sl@0
  1676
sl@0
  1677
sl@0
  1678
/**
sl@0
  1679
 * DoTestL
sl@0
  1680
 */
sl@0
  1681
TVerdict CTestMmfAclntARN8109::DoTestL()
sl@0
  1682
	{
sl@0
  1683
	return( PerformTestL() );
sl@0
  1684
	}
sl@0
  1685
/**
sl@0
  1686
 * MapcPlayCompleteTest
sl@0
  1687
 */
sl@0
  1688
void CTestMmfAclntARN8109::MapcPlayCompleteTest(TInt aError, CTestMdaAudioPlayerCallbackSupport& aMdaAudioPlayerCallbackSupport)
sl@0
  1689
	{
sl@0
  1690
	if (&aMdaAudioPlayerCallbackSupport == iMdaAudioPlayerCallbackSupport1)
sl@0
  1691
		{
sl@0
  1692
		INFO_PRINTF2(_L("iAudioPlayer1 -> MMdaAudioPlayerCallback PlayComplete (%d)"), aError);
sl@0
  1693
		TRAP(iError, FsmL(EMapcPlayComplete1, aError));
sl@0
  1694
		}
sl@0
  1695
	else if (&aMdaAudioPlayerCallbackSupport == iMdaAudioPlayerCallbackSupport2)
sl@0
  1696
		{
sl@0
  1697
		INFO_PRINTF2(_L("iAudioPlayer2 -> MMdaAudioPlayerCallback PlayComplete (%d)"), aError);
sl@0
  1698
		iPlayComplete2= ETrue;
sl@0
  1699
		TRAP(iError, FsmL(EMapcPlayComplete2, aError));
sl@0
  1700
		}
sl@0
  1701
	else if (&aMdaAudioPlayerCallbackSupport == iMdaAudioPlayerCallbackSupport3)
sl@0
  1702
		{
sl@0
  1703
		INFO_PRINTF2(_L("iAudioPlayer3 -> MMdaAudioPlayerCallback PlayComplete (%d)"), aError);
sl@0
  1704
		TRAP(iError, FsmL(EMapcPlayComplete3, aError));
sl@0
  1705
		}
sl@0
  1706
	}
sl@0
  1707
sl@0
  1708
sl@0
  1709
/**
sl@0
  1710
 * MarncResourceAvailableTest
sl@0
  1711
 */
sl@0
  1712
void CTestMmfAclntARN8109::MarncResourceAvailableTest(TUid aNotificationEventId, const TDesC8& aNotificationData, CTestMdaAudioPlayerCallbackSupport& aMdaAudioPlayerCallbackSupport)
sl@0
  1713
	{
sl@0
  1714
	if (aNotificationEventId == KMMFEventCategoryAudioResourceAvailable)
sl@0
  1715
		{
sl@0
  1716
		INFO_PRINTF1(_L("iAudioPlayer::MMMFAudioResourceNotificationCallback -> KMMFEventCategoryAudioResourceAvailable"));
sl@0
  1717
sl@0
  1718
		//Convert TDesc8 to TInt64
sl@0
  1719
		TMMFTimeIntervalMicroSecondsPckg timeIntvbuf;
sl@0
  1720
		timeIntvbuf.Copy(aNotificationData);
sl@0
  1721
		TTimeIntervalMicroSeconds intPos = timeIntvbuf();
sl@0
  1722
		iPosition = intPos;
sl@0
  1723
		if (&aMdaAudioPlayerCallbackSupport == iMdaAudioPlayerCallbackSupport1)
sl@0
  1724
			{
sl@0
  1725
			INFO_PRINTF1(_L("iAudioPlayer1 -> MMMFAudioResourceNotificationCallback : AudioResourceAvailable..waiting for playcomplete"));
sl@0
  1726
			iResourceAvailable1 = ETrue;
sl@0
  1727
			TRAP(iError, FsmL(EMarncResourceAvailable1, KErrNone));
sl@0
  1728
			}
sl@0
  1729
		else if (&aMdaAudioPlayerCallbackSupport == iMdaAudioPlayerCallbackSupport2)
sl@0
  1730
			{
sl@0
  1731
			INFO_PRINTF1(_L("iAudioPlayer2 -> MMMFAudioResourceNotificationCallback : AudioResourceAvailable"));
sl@0
  1732
			TRAP(iError, FsmL(EMarncResourceAvailable2, KErrNone));
sl@0
  1733
			}
sl@0
  1734
		else if (&aMdaAudioPlayerCallbackSupport == iMdaAudioPlayerCallbackSupport3)
sl@0
  1735
			{
sl@0
  1736
			INFO_PRINTF1(_L("iAudioPlayer3 -> MMMFAudioResourceNotificationCallback : AudioResourceAvailable"));
sl@0
  1737
			TRAP(iError, FsmL(EMarncResourceAvailable3, KErrNone));
sl@0
  1738
			}
sl@0
  1739
		}
sl@0
  1740
	else
sl@0
  1741
		{
sl@0
  1742
		INFO_PRINTF1(_L("MMMFAudioResourceNotificationCallback, but NOT KMMFEventCategoryAudioResourceAvailable"));
sl@0
  1743
		}
sl@0
  1744
	}
sl@0
  1745
sl@0
  1746
/**
sl@0
  1747
 * FsmCheck
sl@0
  1748
 */
sl@0
  1749
TBool CTestMmfAclntARN8109::FsmCheck(TMmfAudioPlayerEvents aEventCode, TInt aError)
sl@0
  1750
	{
sl@0
  1751
	TBool retFsmCheck = EFalse;
sl@0
  1752
	if (((aEventCode == EMapcPlayComplete1) || (aEventCode == EMapcPlayComplete2)) && (aError == KErrUnderflow))
sl@0
  1753
		{
sl@0
  1754
		INFO_PRINTF1(_L("Underflow !"));
sl@0
  1755
		}
sl@0
  1756
	else if (iExpectedEvent != aEventCode)
sl@0
  1757
		{
sl@0
  1758
		if(aEventCode == EMarncResourceAvailable1)
sl@0
  1759
            {
sl@0
  1760
            retFsmCheck = EFalse;
sl@0
  1761
            }
sl@0
  1762
        else
sl@0
  1763
            {
sl@0
  1764
            ERR_PRINTF3(_L("ExpectedEvent : %d, ActualEvent : %d"), iExpectedEvent, aEventCode);
sl@0
  1765
	        iTestStepResult = EFail;
sl@0
  1766
	        CActiveScheduler::Stop();
sl@0
  1767
            }
sl@0
  1768
		}
sl@0
  1769
	else if (iExpectedError != aError)
sl@0
  1770
		{
sl@0
  1771
		ERR_PRINTF3(_L("ExpectedError : %d, ActualError : %d"), iExpectedError, aError);
sl@0
  1772
		iTestStepResult = EFail;
sl@0
  1773
		CActiveScheduler::Stop();
sl@0
  1774
		}
sl@0
  1775
	else
sl@0
  1776
		{
sl@0
  1777
		retFsmCheck = ETrue;
sl@0
  1778
		}
sl@0
  1779
	return retFsmCheck;
sl@0
  1780
	}
sl@0
  1781
/**
sl@0
  1782
 * FsmL
sl@0
  1783
 */
sl@0
  1784
void CTestMmfAclntARN8109::FsmL(TMmfAudioPlayerEvents aEventCode, TInt aError)
sl@0
  1785
	{
sl@0
  1786
	if (FsmCheck(aEventCode, aError))
sl@0
  1787
		{
sl@0
  1788
		TTimeIntervalMicroSeconds silence(0); // 3 sec of silence
sl@0
  1789
		TInt retErr = KErrNone;
sl@0
  1790
		switch (iState)
sl@0
  1791
			{
sl@0
  1792
			
sl@0
  1793
			case EStateBegin:
sl@0
  1794
				// Open iTestAudioPlayer#1
sl@0
  1795
				iTestAudioPlayer1->OpenFileL(iFilename1);
sl@0
  1796
				INFO_PRINTF1(_L("iTestAudioPlayer1->OpenFileL()"));
sl@0
  1797
				// Set ExpectedEvent and change the State
sl@0
  1798
				StateChange(EStatePlaying1, EMapcInitComplete1);
sl@0
  1799
				break;
sl@0
  1800
			case EStatePlaying1:
sl@0
  1801
				// Play iTestAudioPlayer#1
sl@0
  1802
				iTestAudioPlayer1->Play();
sl@0
  1803
				INFO_PRINTF1(_L("iTestAudioPlayer1->Play()"));
sl@0
  1804
				// Register iTestAudioPlayer#1 for Notification
sl@0
  1805
				retErr = iTestAudioPlayer1->RegisterAudioResourceNotification(*iMdaAudioPlayerCallbackSupport1, KMMFEventCategoryAudioResourceAvailable);
sl@0
  1806
				INFO_PRINTF1(_L("iTestAudioPlayer1->RegisterAudioResourceNotification()"));
sl@0
  1807
				if( retErr != KErrNone )
sl@0
  1808
					{
sl@0
  1809
					ERR_PRINTF2(_L("iTestAudioPlayer1->RegisterAudioResourceNotification - Failed with Error : %d"), retErr);
sl@0
  1810
					iTestStepResult = EFail;
sl@0
  1811
					CActiveScheduler::Stop();
sl@0
  1812
					break;
sl@0
  1813
					}
sl@0
  1814
				// Open iTestAudioPlayer#2
sl@0
  1815
				iTestAudioPlayer2->OpenFileL(iFilename2);
sl@0
  1816
				INFO_PRINTF1(_L("iTestAudioPlayer2->OpenFileL()"));
sl@0
  1817
				// Set ExpectedEvent and change the State
sl@0
  1818
				StateChange(EStatePlaying2, EMapcInitComplete2);
sl@0
  1819
				break;
sl@0
  1820
			case EStatePlaying2:
sl@0
  1821
				// Play iTestAudioPlayer#2
sl@0
  1822
				iDuration = I64INT(iTestAudioPlayer2->Duration().Int64());
sl@0
  1823
				INFO_PRINTF1( _L("SetRepeats CMdaAudioPlayerUtility"));
sl@0
  1824
				INFO_PRINTF2( _L("Repeats = %d\n"),NUMBER_OF_REPEATS);
sl@0
  1825
				iTestAudioPlayer2->SetRepeats(NUMBER_OF_REPEATS,silence);
sl@0
  1826
				INFO_PRINTF1(_L("iTestAudioPlayer2->Play()"));
sl@0
  1827
								
sl@0
  1828
				iTestAudioPlayer2->Play();
sl@0
  1829
				iStart.HomeTime();
sl@0
  1830
				INFO_PRINTF1(_L("iTestAudioPlayer2->Play()"));
sl@0
  1831
				// Set ExpectedEvent and change the State
sl@0
  1832
				StateChange(EStateErrInUsePlayer1, EMapcPlayComplete1, KErrInUse);
sl@0
  1833
				break;
sl@0
  1834
			case EStateErrInUsePlayer1:
sl@0
  1835
				// Set ExpectedEvent and change the State
sl@0
  1836
				StateChange(EStateEndPlay2, EMapcPlayComplete2);
sl@0
  1837
				break;
sl@0
  1838
			case EStateEndPlay2:
sl@0
  1839
				iStop.HomeTime();
sl@0
  1840
				iActualDuration = I64INT(iStop.MicroSecondsFrom(iStart).Int64()); 
sl@0
  1841
				INFO_PRINTF2( _L("Clip Duration = %d "),iDuration);
sl@0
  1842
				INFO_PRINTF2( _L("Actual Duration = %u "),iActualDuration);
sl@0
  1843
				INFO_PRINTF2( _L("Expected Duration = %d "),iDuration *(NUMBER_OF_REPEATS));
sl@0
  1844
				if(iPlayComplete2 && iResourceAvailable1)
sl@0
  1845
					{	
sl@0
  1846
					#ifdef SYMBIAN_MULTIMEDIA_A3FDEVSOUND
sl@0
  1847
					if(TimeComparison(iActualDuration, iDuration * (NUMBER_OF_REPEATS + 1),
sl@0
  1848
													   KExpectedDeviation))
sl@0
  1849
						{
sl@0
  1850
						iCallBackTimer->Cancel(); // in case something else stopped the AS
sl@0
  1851
						INFO_PRINTF1(_L("iTestAudioPlayer1->NotificationReceived"));
sl@0
  1852
						iTestStepResult = EPass;
sl@0
  1853
						CActiveScheduler::Stop();
sl@0
  1854
						}
sl@0
  1855
					else
sl@0
  1856
						{
sl@0
  1857
						iTestStepResult = EFail;
sl@0
  1858
						CActiveScheduler::Stop();
sl@0
  1859
						}
sl@0
  1860
					#else
sl@0
  1861
					if(TimeComparison(iActualDuration, iDuration * (NUMBER_OF_REPEATS + 1),
sl@0
  1862
													   KExpectedDeviation*NUMBER_OF_REPEATS))
sl@0
  1863
						{
sl@0
  1864
						iCallBackTimer->Cancel(); // in case something else stopped the AS
sl@0
  1865
						INFO_PRINTF1(_L("iTestAudioPlayer1->NotificationReceived"));
sl@0
  1866
						iTestStepResult = EPass;
sl@0
  1867
						CActiveScheduler::Stop();
sl@0
  1868
						// Timer to check if Notification Event Occurs.
sl@0
  1869
						}
sl@0
  1870
					else
sl@0
  1871
						{
sl@0
  1872
						iTestStepResult = EFail;
sl@0
  1873
						CActiveScheduler::Stop();
sl@0
  1874
						}
sl@0
  1875
					#endif	
sl@0
  1876
					}
sl@0
  1877
				else if(iPlayComplete2 && ! iResourceAvailable1)
sl@0
  1878
					{
sl@0
  1879
					#ifdef SYMBIAN_MULTIMEDIA_A3FDEVSOUND
sl@0
  1880
					if(TimeComparison(iActualDuration, iDuration * (NUMBER_OF_REPEATS + 1),
sl@0
  1881
													   KExpectedDeviation))
sl@0
  1882
						{
sl@0
  1883
						// Timer to check if Notification Event Occurs.
sl@0
  1884
						iCallBackTimer->After(2000000);
sl@0
  1885
						// Set ExpectedEvent and change the State
sl@0
  1886
						StateChange(EStateNotifiedPlayer1, EMarncResourceAvailable1);
sl@0
  1887
						}
sl@0
  1888
					else
sl@0
  1889
						{
sl@0
  1890
						iTestStepResult = EFail;
sl@0
  1891
						CActiveScheduler::Stop();
sl@0
  1892
						}
sl@0
  1893
					#else
sl@0
  1894
					if(TimeComparison(iActualDuration, iDuration * (NUMBER_OF_REPEATS + 1),
sl@0
  1895
													   KExpectedDeviation*NUMBER_OF_REPEATS))
sl@0
  1896
						{
sl@0
  1897
						// Timer to check if Notification Event Occurs.
sl@0
  1898
						iCallBackTimer->After(2000000);
sl@0
  1899
						// Set ExpectedEvent and change the State
sl@0
  1900
						StateChange(EStateNotifiedPlayer1, EMarncResourceAvailable1);
sl@0
  1901
						// Timer to check if Notification Event Occurs.
sl@0
  1902
						}
sl@0
  1903
					else
sl@0
  1904
						{
sl@0
  1905
						iTestStepResult = EFail;
sl@0
  1906
						CActiveScheduler::Stop();
sl@0
  1907
						}
sl@0
  1908
					#endif	
sl@0
  1909
					}	
sl@0
  1910
				break;
sl@0
  1911
			case EStateNotifiedPlayer1:
sl@0
  1912
				iCallBackTimer->Cancel(); // in case something else stopped the AS
sl@0
  1913
				INFO_PRINTF1(_L("iTestAudioPlayer1->NotificationReceived"));
sl@0
  1914
				iTestStepResult = EPass;
sl@0
  1915
				CActiveScheduler::Stop();
sl@0
  1916
				break;
sl@0
  1917
			}
sl@0
  1918
		}
sl@0
  1919
	}
sl@0
  1920
TBool CTestMmfAclntARN8109::TimeComparison(const TUint aActual, const TUint aExpected, const TUint aDeviation)
sl@0
  1921
	{
sl@0
  1922
	// save unnessary conditions
sl@0
  1923
	if(aActual == aExpected)
sl@0
  1924
		return ETrue;	
sl@0
  1925
sl@0
  1926
	// Prevent unsigned wrapping errors 
sl@0
  1927
	TUint difference;
sl@0
  1928
	if(aActual > aExpected)
sl@0
  1929
		difference = aActual - aExpected;
sl@0
  1930
	else
sl@0
  1931
		difference = aExpected - aActual;
sl@0
  1932
sl@0
  1933
	// comapare
sl@0
  1934
	if(difference < aDeviation)
sl@0
  1935
		return ETrue;
sl@0
  1936
	return EFalse;
sl@0
  1937
	}
sl@0
  1938
/**
sl@0
  1939
 * PerformTestL
sl@0
  1940
 */
sl@0
  1941
TVerdict CTestMmfAclntARN8109::PerformTestL()
sl@0
  1942
	{
sl@0
  1943
	INFO_PRINTF1(_L("High priority client plays with repeats and low priority client doesn't get resources."));
sl@0
  1944
	iTestStepResult = EFail;
sl@0
  1945
	
sl@0
  1946
	// Initialise the state variables
sl@0
  1947
	StateInit();
sl@0
  1948
	
sl@0
  1949
	// Begin the process
sl@0
  1950
	FsmL(EIdlePlayer, KErrNone);
sl@0
  1951
	
sl@0
  1952
	// Start the scheduler - Done only once !
sl@0
  1953
	CActiveScheduler::Start();
sl@0
  1954
	
sl@0
  1955
	return iTestStepResult;
sl@0
  1956
	}
sl@0
  1957
sl@0
  1958
sl@0
  1959
//
sl@0
  1960
//CTestMmfAclntARN8110 //test to cover CR id: 
sl@0
  1961
//
sl@0
  1962
sl@0
  1963
/**
sl@0
  1964
 * Constructor
sl@0
  1965
 */
sl@0
  1966
CTestMmfAclntARN8110::CTestMmfAclntARN8110(const TDesC& aTestName, const TDesC& aSectName)
sl@0
  1967
    : CTestMmfAclntAudioPlayerARN(aTestName, aSectName)
sl@0
  1968
    {}
sl@0
  1969
sl@0
  1970
/**
sl@0
  1971
 * NewL
sl@0
  1972
 */
sl@0
  1973
CTestMmfAclntARN8110* CTestMmfAclntARN8110::NewL(const TDesC& aTestName, const TDesC& aSectName)
sl@0
  1974
    {
sl@0
  1975
    CTestMmfAclntARN8110* self = new (ELeave) CTestMmfAclntARN8110(aTestName, aSectName);
sl@0
  1976
    return self;
sl@0
  1977
    }
sl@0
  1978
sl@0
  1979
/**
sl@0
  1980
 * DoTestL
sl@0
  1981
 */
sl@0
  1982
TVerdict CTestMmfAclntARN8110::DoTestL()
sl@0
  1983
    {
sl@0
  1984
    return( PerformTestL() );
sl@0
  1985
    }
sl@0
  1986
sl@0
  1987
/**
sl@0
  1988
 * FsmL
sl@0
  1989
 */
sl@0
  1990
void CTestMmfAclntARN8110::FsmL(TMmfAudioPlayerEvents aEventCode, TInt aError)
sl@0
  1991
    {
sl@0
  1992
    if (FsmCheck(aEventCode, aError))
sl@0
  1993
        {
sl@0
  1994
        TTimeIntervalMicroSeconds32 wait2secs(2000000);
sl@0
  1995
        TTimeIntervalMicroSeconds oneNhalf(MAKE_TINT64(0,1500000));
sl@0
  1996
        TInt retErr = KErrNone;
sl@0
  1997
        switch (iState)
sl@0
  1998
            {
sl@0
  1999
            case EStateBegin:
sl@0
  2000
                // Open iTestAudioPlayer#1 // next event to play iTestAudioPlayer#1
sl@0
  2001
                iTestAudioPlayer1->OpenFileL(iFilename1);
sl@0
  2002
                INFO_PRINTF1(_L("iTestAudioPlayer1->OpenFileL()"));
sl@0
  2003
                // Set ExpectedEvent and change the State
sl@0
  2004
                StateChange(EStatePlaying1, EMapcInitComplete1);
sl@0
  2005
                break;
sl@0
  2006
            case EStatePlaying1:
sl@0
  2007
                // Play iTestAudioPlayer#1
sl@0
  2008
                iTestAudioPlayer1->Play();
sl@0
  2009
                INFO_PRINTF1(_L("iTestAudioPlayer1->Play()"));
sl@0
  2010
                // Open iTestAudioPlayer#2
sl@0
  2011
                 iTestAudioPlayer2->OpenFileL(iFilename2);
sl@0
  2012
                 INFO_PRINTF1(_L("iTestAudioPlayer2->OpenFileL()"));
sl@0
  2013
                 // Set ExpectedEvent and change the State
sl@0
  2014
                 StateChange(EStatePlaying2, EMapcInitComplete2);
sl@0
  2015
                 break;
sl@0
  2016
            case EStatePlaying2:
sl@0
  2017
                // Play iTestAudioPlayer#2
sl@0
  2018
                User::After(wait2secs);
sl@0
  2019
                iTestAudioPlayer2->Play();
sl@0
  2020
                INFO_PRINTF1(_L("iTestAudioPlayer2->Play()"));
sl@0
  2021
                // Set ExpectedEvent and change the State
sl@0
  2022
                StateChange(EStateErrInUsePlayer1, EMapcPlayComplete1, KErrInUse);
sl@0
  2023
                break;
sl@0
  2024
            case EStateErrInUsePlayer1:
sl@0
  2025
                retErr = iTestAudioPlayer1->GetPosition(iPlayer1Pos);
sl@0
  2026
                if(retErr != KErrNone)
sl@0
  2027
                    {
sl@0
  2028
                    ERR_PRINTF2(_L("iTestAudioPlayer1->Position() - Failed with Error : %d"), retErr);
sl@0
  2029
                    iTestStepResult = EFail;
sl@0
  2030
                    CActiveScheduler::Stop();
sl@0
  2031
                    break;
sl@0
  2032
                    }
sl@0
  2033
                INFO_PRINTF1(_L("iTestAudioPlayer1->Position()"));
sl@0
  2034
                //using 1.5 sec for comparison as sometimes playback is slow.
sl@0
  2035
                if(iPlayer1Pos < oneNhalf)
sl@0
  2036
                    {
sl@0
  2037
                    iTestStepResult = EFail;
sl@0
  2038
                    CActiveScheduler::Stop();
sl@0
  2039
                    break;
sl@0
  2040
                    }
sl@0
  2041
                // Set ExpectedEvent and change the State
sl@0
  2042
                StateChange(EStateEndPlay2, EMapcPlayComplete2 );
sl@0
  2043
                break;
sl@0
  2044
            case EStateEndPlay2:
sl@0
  2045
                iTestStepResult = EPass;
sl@0
  2046
                // Play iTestAudioPlayer#1 again
sl@0
  2047
                TTimeIntervalMicroSeconds pos;
sl@0
  2048
                INFO_PRINTF1(_L("iTestAudioPlayer1->Position()"));
sl@0
  2049
                retErr = iTestAudioPlayer1->GetPosition(pos);
sl@0
  2050
                if(retErr != KErrNone)
sl@0
  2051
                    {
sl@0
  2052
                    ERR_PRINTF2(_L("iTestAudioPlayer1->Position() - Failed with Error : %d"), retErr);
sl@0
  2053
                    iTestStepResult = EFail;
sl@0
  2054
                    CActiveScheduler::Stop();
sl@0
  2055
                    break;
sl@0
  2056
                    }
sl@0
  2057
                if(pos == 0 || pos != iPlayer1Pos )
sl@0
  2058
                    {
sl@0
  2059
                    iTestStepResult = EFail;
sl@0
  2060
                    CActiveScheduler::Stop();
sl@0
  2061
                    break;
sl@0
  2062
                    }
sl@0
  2063
                iTestAudioPlayer1->Play();
sl@0
  2064
                INFO_PRINTF1(_L("iTestAudioPlayer1->Play()"));
sl@0
  2065
                retErr = iTestAudioPlayer1->GetPosition(pos);
sl@0
  2066
                if(retErr != KErrNone)
sl@0
  2067
                    {
sl@0
  2068
                    ERR_PRINTF2(_L("iTestAudioPlayer1->Position() - Failed with Error : %d"), retErr);
sl@0
  2069
                    iTestStepResult = EFail;
sl@0
  2070
                    CActiveScheduler::Stop();
sl@0
  2071
                    break;
sl@0
  2072
                    }
sl@0
  2073
                INFO_PRINTF1(_L("iTestAudioPlayer1->Position()"));
sl@0
  2074
                if(pos < iPlayer1Pos)
sl@0
  2075
                    {
sl@0
  2076
                    iTestStepResult = EFail;
sl@0
  2077
                    CActiveScheduler::Stop();
sl@0
  2078
                    break;
sl@0
  2079
                    }
sl@0
  2080
                iTestAudioPlayer1->Stop();
sl@0
  2081
                INFO_PRINTF1(_L("iTestAudioPlayer1->Stop()"));
sl@0
  2082
                iTestStepResult = EPass;
sl@0
  2083
                CActiveScheduler::Stop();
sl@0
  2084
                // Set ExpectedEvent and change the State
sl@0
  2085
                break;
sl@0
  2086
            }
sl@0
  2087
        }
sl@0
  2088
    }
sl@0
  2089
    
sl@0
  2090
/**
sl@0
  2091
 * PerformTestL
sl@0
  2092
 */
sl@0
  2093
TVerdict CTestMmfAclntARN8110::PerformTestL()
sl@0
  2094
    {
sl@0
  2095
    INFO_PRINTF1(_L("Register for notification, but make no request to play audio"));
sl@0
  2096
    iTestStepResult = EFail;
sl@0
  2097
    
sl@0
  2098
    // Initialise the state variables
sl@0
  2099
    StateInit();
sl@0
  2100
    
sl@0
  2101
    // Begin the process
sl@0
  2102
    FsmL(EIdlePlayer, KErrNone);
sl@0
  2103
    
sl@0
  2104
    // Start the scheduler - Done only once !
sl@0
  2105
    CActiveScheduler::Start();
sl@0
  2106
    
sl@0
  2107
    return iTestStepResult;
sl@0
  2108
    }
sl@0
  2109
sl@0
  2110
sl@0
  2111
//
sl@0
  2112
//CTestMmfAclntARN8111 //test to cover CR id: 
sl@0
  2113
//
sl@0
  2114
sl@0
  2115
/**
sl@0
  2116
 * Constructor
sl@0
  2117
 */
sl@0
  2118
CTestMmfAclntARN8111::CTestMmfAclntARN8111(const TDesC& aTestName, const TDesC& aSectName)
sl@0
  2119
    : CTestMmfAclntAudioPlayerARN(aTestName, aSectName)
sl@0
  2120
    {}
sl@0
  2121
sl@0
  2122
/**
sl@0
  2123
 * NewL
sl@0
  2124
 */
sl@0
  2125
CTestMmfAclntARN8111* CTestMmfAclntARN8111::NewL(const TDesC& aTestName, const TDesC& aSectName)
sl@0
  2126
    {
sl@0
  2127
    CTestMmfAclntARN8111* self = new (ELeave) CTestMmfAclntARN8111(aTestName, aSectName);
sl@0
  2128
    return self;
sl@0
  2129
    }
sl@0
  2130
sl@0
  2131
/**
sl@0
  2132
 * DoTestL
sl@0
  2133
 */
sl@0
  2134
TVerdict CTestMmfAclntARN8111::DoTestL()
sl@0
  2135
    {
sl@0
  2136
    return( PerformTestL() );
sl@0
  2137
    }
sl@0
  2138
sl@0
  2139
/**
sl@0
  2140
 * FsmL
sl@0
  2141
 */
sl@0
  2142
void CTestMmfAclntARN8111::FsmL(TMmfAudioPlayerEvents aEventCode, TInt aError)
sl@0
  2143
    {
sl@0
  2144
    if (FsmCheck(aEventCode, aError))
sl@0
  2145
        {
sl@0
  2146
        TTimeIntervalMicroSeconds32 wait2secs(2000000);
sl@0
  2147
        TTimeIntervalMicroSeconds oneNhalf(MAKE_TINT64(0,1500000));
sl@0
  2148
        TTimeIntervalMicroSeconds zeroSecs(MAKE_TINT64(0,0));
sl@0
  2149
        TInt retErr = KErrNone;
sl@0
  2150
        switch (iState)
sl@0
  2151
            {
sl@0
  2152
            case EStateBegin:
sl@0
  2153
                // Open iTestAudioPlayer#1 // next event to play iTestAudioPlayer#1
sl@0
  2154
                iTestAudioPlayer1->OpenFileL(iFilename1);
sl@0
  2155
                INFO_PRINTF1(_L("iTestAudioPlayer1->OpenFileL()"));
sl@0
  2156
                // Set ExpectedEvent and change the State
sl@0
  2157
                StateChange(EStatePlaying1, EMapcInitComplete1);
sl@0
  2158
                break;
sl@0
  2159
            case EStatePlaying1:
sl@0
  2160
                // Play iTestAudioPlayer#1
sl@0
  2161
                iTestAudioPlayer1->Play();
sl@0
  2162
                INFO_PRINTF1(_L("iTestAudioPlayer1->Play()"));
sl@0
  2163
                // Open iTestAudioPlayer#2
sl@0
  2164
                 iTestAudioPlayer2->OpenFileL(iFilename2);
sl@0
  2165
                 INFO_PRINTF1(_L("iTestAudioPlayer2->OpenFileL()"));
sl@0
  2166
                 // Set ExpectedEvent and change the State
sl@0
  2167
                 StateChange(EStatePlaying2, EMapcInitComplete2);
sl@0
  2168
                 break;
sl@0
  2169
            case EStatePlaying2:
sl@0
  2170
                // Play iTestAudioPlayer#2
sl@0
  2171
                User::After(wait2secs);
sl@0
  2172
                iTestAudioPlayer2->Play();
sl@0
  2173
                INFO_PRINTF1(_L("iTestAudioPlayer2->Play()"));
sl@0
  2174
                // Set ExpectedEvent and change the State
sl@0
  2175
                StateChange(EStateErrInUsePlayer1, EMapcPlayComplete1, KErrInUse);
sl@0
  2176
                break;
sl@0
  2177
            case EStateErrInUsePlayer1:
sl@0
  2178
                retErr = iTestAudioPlayer1->GetPosition(iPlayer1Pos);
sl@0
  2179
                if(retErr != KErrNone)
sl@0
  2180
                    {
sl@0
  2181
                    ERR_PRINTF2(_L("iTestAudioPlayer1->Position() - Failed with Error : %d"), retErr);
sl@0
  2182
                    iTestStepResult = EFail;
sl@0
  2183
                    CActiveScheduler::Stop();
sl@0
  2184
                    break;
sl@0
  2185
                    }
sl@0
  2186
                INFO_PRINTF1(_L("iTestAudioPlayer1->Position()"));
sl@0
  2187
                //using 1.5 sec for comparison as sometimes playback is slow.
sl@0
  2188
                if(iPlayer1Pos < oneNhalf)
sl@0
  2189
                    {
sl@0
  2190
                    iTestStepResult = EFail;
sl@0
  2191
                    CActiveScheduler::Stop();
sl@0
  2192
                    break;
sl@0
  2193
                    }
sl@0
  2194
                //stop the iTestAudioPlayer#1 after pre-emption and check if the position is reset.
sl@0
  2195
                iTestAudioPlayer1->Stop();
sl@0
  2196
                INFO_PRINTF1(_L("iTestAudioPlayer1->Stop()"));
sl@0
  2197
                retErr = iTestAudioPlayer1->GetPosition(iPlayer1Pos);
sl@0
  2198
                if(retErr != KErrNone)
sl@0
  2199
                    {
sl@0
  2200
                    ERR_PRINTF2(_L("iTestAudioPlayer1->Position() - Failed with Error : %d"), retErr);
sl@0
  2201
                    iTestStepResult = EFail;
sl@0
  2202
                    CActiveScheduler::Stop();
sl@0
  2203
                    break;
sl@0
  2204
                    }
sl@0
  2205
                INFO_PRINTF1(_L("iTestAudioPlayer1->Position()"));
sl@0
  2206
                if(iPlayer1Pos != zeroSecs)
sl@0
  2207
                    {
sl@0
  2208
                    iTestStepResult = EFail;
sl@0
  2209
                    CActiveScheduler::Stop();
sl@0
  2210
                    break;
sl@0
  2211
                    }
sl@0
  2212
                // Set ExpectedEvent and change the State
sl@0
  2213
                StateChange(EStateEndPlay2, EMapcPlayComplete2 );
sl@0
  2214
                break;
sl@0
  2215
            case EStateEndPlay2:
sl@0
  2216
                iTestStepResult = EPass;
sl@0
  2217
                // Play iTestAudioPlayer#1 again
sl@0
  2218
                iTestAudioPlayer1->Play();
sl@0
  2219
                INFO_PRINTF1(_L("iTestAudioPlayer1->Play()"));
sl@0
  2220
                User::After(wait2secs);
sl@0
  2221
                iTestAudioPlayer1->Stop();
sl@0
  2222
                INFO_PRINTF1(_L("iTestAudioPlayer1->Stop()"));
sl@0
  2223
                CActiveScheduler::Stop();
sl@0
  2224
                // Set ExpectedEvent and change the State
sl@0
  2225
                break;
sl@0
  2226
            }
sl@0
  2227
        }
sl@0
  2228
    }
sl@0
  2229
    
sl@0
  2230
/**
sl@0
  2231
 * PerformTestL
sl@0
  2232
 */
sl@0
  2233
TVerdict CTestMmfAclntARN8111::PerformTestL()
sl@0
  2234
    {
sl@0
  2235
    INFO_PRINTF1(_L("Register for notification, but make no request to play audio"));
sl@0
  2236
    iTestStepResult = EFail;
sl@0
  2237
    
sl@0
  2238
    // Initialise the state variables
sl@0
  2239
    StateInit();
sl@0
  2240
    
sl@0
  2241
    // Begin the process
sl@0
  2242
    FsmL(EIdlePlayer, KErrNone);
sl@0
  2243
    
sl@0
  2244
    // Start the scheduler - Done only once !
sl@0
  2245
    CActiveScheduler::Start();
sl@0
  2246
    
sl@0
  2247
    return iTestStepResult;
sl@0
  2248
    }
sl@0
  2249
sl@0
  2250
//
sl@0
  2251
//CTestMmfAclntARN8112 //test to cover CR id: 
sl@0
  2252
//
sl@0
  2253
sl@0
  2254
/**
sl@0
  2255
 * Constructor
sl@0
  2256
 */
sl@0
  2257
CTestMmfAclntARN8112::CTestMmfAclntARN8112(const TDesC& aTestName, const TDesC& aSectName)
sl@0
  2258
    : CTestMmfAclntAudioPlayerARN(aTestName, aSectName)
sl@0
  2259
    {}
sl@0
  2260
sl@0
  2261
/**
sl@0
  2262
 * NewL
sl@0
  2263
 */
sl@0
  2264
CTestMmfAclntARN8112* CTestMmfAclntARN8112::NewL(const TDesC& aTestName, const TDesC& aSectName)
sl@0
  2265
    {
sl@0
  2266
    CTestMmfAclntARN8112* self = new (ELeave) CTestMmfAclntARN8112(aTestName, aSectName);
sl@0
  2267
    return self;
sl@0
  2268
    }
sl@0
  2269
sl@0
  2270
/**
sl@0
  2271
 * DoTestL
sl@0
  2272
 */
sl@0
  2273
TVerdict CTestMmfAclntARN8112::DoTestL()
sl@0
  2274
    {
sl@0
  2275
    return( PerformTestL() );
sl@0
  2276
    }
sl@0
  2277
sl@0
  2278
/**
sl@0
  2279
 * FsmL
sl@0
  2280
 */
sl@0
  2281
void CTestMmfAclntARN8112::FsmL(TMmfAudioPlayerEvents aEventCode, TInt aError)
sl@0
  2282
    {
sl@0
  2283
    if (FsmCheck(aEventCode, aError))
sl@0
  2284
        {
sl@0
  2285
        TTimeIntervalMicroSeconds32 wait1secs(1000000);
sl@0
  2286
        TTimeIntervalMicroSeconds zeroSecs(MAKE_TINT64(0,0));
sl@0
  2287
        TInt retErr = KErrNone;
sl@0
  2288
        switch (iState)
sl@0
  2289
            {
sl@0
  2290
            case EStateBegin:
sl@0
  2291
                // Open iTestAudioPlayer#2 // next event to play iTestAudioPlayer#2
sl@0
  2292
                iTestAudioPlayer2->OpenFileL(iFilename2);
sl@0
  2293
                INFO_PRINTF1(_L("iTestAudioPlayer2->OpenFileL()"));
sl@0
  2294
                // Set ExpectedEvent and change the State
sl@0
  2295
                StateChange(EStatePlaying2, EMapcInitComplete2);
sl@0
  2296
                break;
sl@0
  2297
            case EStatePlaying2:
sl@0
  2298
                // Play iTestAudioPlayer#1
sl@0
  2299
                iTestAudioPlayer2->Play();
sl@0
  2300
                INFO_PRINTF1(_L("iTestAudioPlayer2->Play()"));
sl@0
  2301
                // Open iTestAudioPlayer#1
sl@0
  2302
                 iTestAudioPlayer1->OpenFileL(iFilename1);
sl@0
  2303
                 INFO_PRINTF1(_L("iTestAudioPlayer1->OpenFileL()"));
sl@0
  2304
                 // Set ExpectedEvent and change the State
sl@0
  2305
                 StateChange(EStatePlaying1, EMapcInitComplete1);
sl@0
  2306
                 break;
sl@0
  2307
            case EStatePlaying1:
sl@0
  2308
                // Play iTestAudioPlayer#1
sl@0
  2309
                User::After(wait1secs);
sl@0
  2310
                iTestAudioPlayer1->Play();
sl@0
  2311
                INFO_PRINTF1(_L("iTestAudioPlayer1->Play()"));
sl@0
  2312
                // Set ExpectedEvent and change the State
sl@0
  2313
                StateChange(EStateErrInUsePlayer1, EMapcPlayComplete1, KErrInUse);
sl@0
  2314
                break;
sl@0
  2315
            case EStateErrInUsePlayer1:
sl@0
  2316
                retErr = iTestAudioPlayer1->GetPosition(iPlayer1Pos);
sl@0
  2317
                if(retErr != KErrNone)
sl@0
  2318
                    {
sl@0
  2319
                    ERR_PRINTF2(_L("iTestAudioPlayer1->Position() - Failed with Error : %d"), retErr);
sl@0
  2320
                    iTestStepResult = EFail;
sl@0
  2321
                    CActiveScheduler::Stop();
sl@0
  2322
                    break;
sl@0
  2323
                    }
sl@0
  2324
                INFO_PRINTF1(_L("iTestAudioPlayer1->Position()"));
sl@0
  2325
                if(iPlayer1Pos != zeroSecs)
sl@0
  2326
                    {
sl@0
  2327
                    iTestStepResult = EFail;
sl@0
  2328
                    CActiveScheduler::Stop();
sl@0
  2329
                    break;
sl@0
  2330
                    }
sl@0
  2331
                //stop the iTestAudioPlayer#1 after pre-emption and check if the position is reset.
sl@0
  2332
                iTestAudioPlayer2->Stop();
sl@0
  2333
                INFO_PRINTF1(_L("iTestAudioPlayer2->Stop()"));
sl@0
  2334
                iTestAudioPlayer1->Play();
sl@0
  2335
                INFO_PRINTF1(_L("iTestAudioPlayer1->Play()"));
sl@0
  2336
                
sl@0
  2337
                // Set ExpectedEvent and change the State
sl@0
  2338
                StateChange(EStateEndPlay1, EMapcPlayComplete1 );
sl@0
  2339
                break;
sl@0
  2340
            case EStateEndPlay1:
sl@0
  2341
                iTestStepResult = EPass;
sl@0
  2342
                // Play iTestAudioPlayer#1 again
sl@0
  2343
                CActiveScheduler::Stop();
sl@0
  2344
                // Set ExpectedEvent and change the State
sl@0
  2345
                break;
sl@0
  2346
            }
sl@0
  2347
        }
sl@0
  2348
    }
sl@0
  2349
    
sl@0
  2350
/**
sl@0
  2351
 * PerformTestL
sl@0
  2352
 */
sl@0
  2353
TVerdict CTestMmfAclntARN8112::PerformTestL()
sl@0
  2354
    {
sl@0
  2355
    INFO_PRINTF1(_L("Register for notification, but make no request to play audio"));
sl@0
  2356
    iTestStepResult = EFail;
sl@0
  2357
    
sl@0
  2358
    // Initialise the state variables
sl@0
  2359
    StateInit();
sl@0
  2360
    
sl@0
  2361
    // Begin the process
sl@0
  2362
    FsmL(EIdlePlayer, KErrNone);
sl@0
  2363
    
sl@0
  2364
    // Start the scheduler - Done only once !
sl@0
  2365
    CActiveScheduler::Start();
sl@0
  2366
    
sl@0
  2367
    return iTestStepResult;
sl@0
  2368
    }
sl@0
  2369
sl@0
  2370
//
sl@0
  2371
//NEGATIVE TESTS//
sl@0
  2372
//
sl@0
  2373
sl@0
  2374
//
sl@0
  2375
//CTestMmfAclntARN1301
sl@0
  2376
//
sl@0
  2377
sl@0
  2378
/**
sl@0
  2379
 * Constructor
sl@0
  2380
 */
sl@0
  2381
CTestMmfAclntARN1301::CTestMmfAclntARN1301(const TDesC& aTestName, const TDesC& aSectName)
sl@0
  2382
	: CTestMmfAclntAudioPlayerARN(aTestName, aSectName)
sl@0
  2383
	{}
sl@0
  2384
sl@0
  2385
/**
sl@0
  2386
 * NewL
sl@0
  2387
 */
sl@0
  2388
CTestMmfAclntARN1301* CTestMmfAclntARN1301::NewL(const TDesC& aTestName, const TDesC& aSectName)
sl@0
  2389
	{
sl@0
  2390
	CTestMmfAclntARN1301* self = new (ELeave) CTestMmfAclntARN1301(aTestName, aSectName);
sl@0
  2391
	return self;
sl@0
  2392
	}
sl@0
  2393
sl@0
  2394
/**
sl@0
  2395
 * DoTestL
sl@0
  2396
 */
sl@0
  2397
TVerdict CTestMmfAclntARN1301::DoTestL()
sl@0
  2398
	{
sl@0
  2399
	return( PerformTestL() );
sl@0
  2400
	}
sl@0
  2401
sl@0
  2402
/**
sl@0
  2403
 * FsmL
sl@0
  2404
 */
sl@0
  2405
void CTestMmfAclntARN1301::FsmL(TMmfAudioPlayerEvents aEventCode, TInt aError)
sl@0
  2406
	{
sl@0
  2407
	if (FsmCheck(aEventCode, aError))
sl@0
  2408
		{
sl@0
  2409
		TInt retErr = KErrNone;
sl@0
  2410
		switch (iState)
sl@0
  2411
			{
sl@0
  2412
			case EStateBegin:
sl@0
  2413
				// Open iTestAudioPlayer#1
sl@0
  2414
				iTestAudioPlayer1->OpenFileL(iFilename1);
sl@0
  2415
				INFO_PRINTF1(_L("iTestAudioPlayer1->OpenFileL()"));
sl@0
  2416
				// Set ExpectedEvent and change the State
sl@0
  2417
				StateChange(EStateOpenPlayer1, EMapcInitComplete1);
sl@0
  2418
				break;
sl@0
  2419
			case EStateOpenPlayer1:
sl@0
  2420
				// Register iTestAudioPlayer#1 for Notification
sl@0
  2421
				retErr = iTestAudioPlayer1->RegisterAudioResourceNotification(*iMdaAudioPlayerCallbackSupport1, KMMFEventCategoryPlaybackComplete);
sl@0
  2422
				INFO_PRINTF1(_L("iTestAudioPlayer1->RegisterAudioResourceNotification(KMMFEventCategoryPlaybackComplete)"));
sl@0
  2423
				if( retErr == KErrNotSupported )
sl@0
  2424
					{
sl@0
  2425
					INFO_PRINTF1(_L("iTestAudioPlayer1->RegisterAudioResourceNotification - Returned KErrNotSupported ") );
sl@0
  2426
					iTestStepResult = EPass;
sl@0
  2427
					}
sl@0
  2428
				else
sl@0
  2429
					{
sl@0
  2430
					ERR_PRINTF2(_L("iTestAudioPlayer1->RegisterAudioResourceNotification - Failed with Error : %d"), retErr);
sl@0
  2431
					iTestStepResult = EFail;
sl@0
  2432
					}
sl@0
  2433
				CActiveScheduler::Stop();
sl@0
  2434
				break;
sl@0
  2435
			}
sl@0
  2436
		}
sl@0
  2437
	}
sl@0
  2438
	
sl@0
  2439
/**
sl@0
  2440
 * PerformTestL
sl@0
  2441
 */
sl@0
  2442
TVerdict CTestMmfAclntARN1301::PerformTestL()
sl@0
  2443
	{
sl@0
  2444
	INFO_PRINTF1(_L("Register for notification with an unsupported event type."));
sl@0
  2445
	iTestStepResult = EFail;
sl@0
  2446
	
sl@0
  2447
	// Initialise the state variables
sl@0
  2448
	StateInit();
sl@0
  2449
	
sl@0
  2450
	// Begin the process
sl@0
  2451
	FsmL(EIdlePlayer, KErrNone);
sl@0
  2452
	
sl@0
  2453
	// Start the scheduler - Done only once !
sl@0
  2454
	CActiveScheduler::Start();
sl@0
  2455
	
sl@0
  2456
	return iTestStepResult;
sl@0
  2457
	}
sl@0
  2458
sl@0
  2459
//
sl@0
  2460
//CTestMmfAclntARN1302
sl@0
  2461
//
sl@0
  2462
sl@0
  2463
/**
sl@0
  2464
 * Constructor
sl@0
  2465
 */
sl@0
  2466
CTestMmfAclntARN1302::CTestMmfAclntARN1302(const TDesC& aTestName, const TDesC& aSectName)
sl@0
  2467
	: CTestMmfAclntAudioPlayerARN(aTestName, aSectName)
sl@0
  2468
	{}
sl@0
  2469
sl@0
  2470
/**
sl@0
  2471
 * NewL
sl@0
  2472
 */
sl@0
  2473
CTestMmfAclntARN1302* CTestMmfAclntARN1302::NewL(const TDesC& aTestName, const TDesC& aSectName)
sl@0
  2474
	{
sl@0
  2475
	CTestMmfAclntARN1302* self = new (ELeave) CTestMmfAclntARN1302(aTestName, aSectName);
sl@0
  2476
	return self;
sl@0
  2477
	}
sl@0
  2478
sl@0
  2479
/**
sl@0
  2480
 * DoTestL
sl@0
  2481
 */
sl@0
  2482
TVerdict CTestMmfAclntARN1302::DoTestL()
sl@0
  2483
	{
sl@0
  2484
	return( PerformTestL() );
sl@0
  2485
	}
sl@0
  2486
sl@0
  2487
/**
sl@0
  2488
 * FsmL
sl@0
  2489
 */
sl@0
  2490
void CTestMmfAclntARN1302::FsmL(TMmfAudioPlayerEvents aEventCode, TInt aError)
sl@0
  2491
	{
sl@0
  2492
	if (FsmCheck(aEventCode, aError))
sl@0
  2493
		{
sl@0
  2494
		TInt retErr = KErrNone;
sl@0
  2495
		switch (iState)
sl@0
  2496
			{
sl@0
  2497
			case EStateBegin:
sl@0
  2498
				// Open iTestAudioPlayer#1
sl@0
  2499
				iTestAudioPlayer1->OpenFileL(iFilename1);
sl@0
  2500
				INFO_PRINTF1(_L("iTestAudioPlayer1->OpenFileL()"));
sl@0
  2501
				// Set ExpectedEvent and change the State
sl@0
  2502
				StateChange(EStateOpenPlayer1, EMapcInitComplete1);
sl@0
  2503
				break;
sl@0
  2504
			case EStateOpenPlayer1:
sl@0
  2505
				// Register iTestAudioPlayer#1 for Notification
sl@0
  2506
				retErr = iTestAudioPlayer1->RegisterAudioResourceNotification(*iMdaAudioPlayerCallbackSupport1, KMMFEventCategoryAudioResourceAvailable);
sl@0
  2507
				INFO_PRINTF1(_L("iTestAudioPlayer1->RegisterAudioResourceNotification()"));
sl@0
  2508
				if( retErr != KErrNone )
sl@0
  2509
					{
sl@0
  2510
					ERR_PRINTF2(_L("iTestAudioPlayer1->RegisterAudioResourceNotification - Failed with Error : %d"), retErr);
sl@0
  2511
					iTestStepResult = EFail;
sl@0
  2512
					CActiveScheduler::Stop();
sl@0
  2513
					break;
sl@0
  2514
					}
sl@0
  2515
				// Cancel notification for iTestAudioPlayer#1
sl@0
  2516
				retErr = iTestAudioPlayer1->CancelRegisterAudioResourceNotification(KMMFEventCategoryPlaybackComplete);
sl@0
  2517
				INFO_PRINTF1(_L("iTestAudioPlayer1->CancelRegisterAudioResourceNotification(KMMFEventCategoryPlaybackComplete)"));
sl@0
  2518
				if( retErr == KErrNotSupported )
sl@0
  2519
					{
sl@0
  2520
					ERR_PRINTF1(_L("iTestAudioPlayer1->CancelRegisterAudioResourceNotification - Returned KErrNotSupported ") );
sl@0
  2521
					iTestStepResult = EPass;
sl@0
  2522
					}
sl@0
  2523
				else
sl@0
  2524
					{
sl@0
  2525
					ERR_PRINTF2(_L("iTestAudioPlayer1->CancelRegisterAudioResourceNotification - Failed with Error : %d"), retErr);
sl@0
  2526
					iTestStepResult = EFail;
sl@0
  2527
					}
sl@0
  2528
				CActiveScheduler::Stop();
sl@0
  2529
				break;
sl@0
  2530
			}
sl@0
  2531
		}
sl@0
  2532
	}
sl@0
  2533
	
sl@0
  2534
/**
sl@0
  2535
 * PerformTestL
sl@0
  2536
 */
sl@0
  2537
TVerdict CTestMmfAclntARN1302::PerformTestL()
sl@0
  2538
	{
sl@0
  2539
	INFO_PRINTF1(_L("Cancel the request for notification with an unsupported event type."));
sl@0
  2540
	iTestStepResult = EFail;
sl@0
  2541
	
sl@0
  2542
	// Initialise the state variables
sl@0
  2543
	StateInit();
sl@0
  2544
	
sl@0
  2545
	// Begin the process
sl@0
  2546
	FsmL(EIdlePlayer, KErrNone);
sl@0
  2547
	
sl@0
  2548
	// Start the scheduler - Done only once !
sl@0
  2549
	CActiveScheduler::Start();
sl@0
  2550
	
sl@0
  2551
	return iTestStepResult;
sl@0
  2552
	}
sl@0
  2553
sl@0
  2554
//
sl@0
  2555
//CTestMmfAclntARN1303
sl@0
  2556
//
sl@0
  2557
sl@0
  2558
/**
sl@0
  2559
 * Constructor
sl@0
  2560
 */
sl@0
  2561
CTestMmfAclntARN1303::CTestMmfAclntARN1303(const TDesC& aTestName, const TDesC& aSectName)
sl@0
  2562
	: CTestMmfAclntAudioPlayerARN(aTestName, aSectName)
sl@0
  2563
	{}
sl@0
  2564
sl@0
  2565
/**
sl@0
  2566
 * NewL
sl@0
  2567
 */
sl@0
  2568
CTestMmfAclntARN1303* CTestMmfAclntARN1303::NewL(const TDesC& aTestName, const TDesC& aSectName)
sl@0
  2569
	{
sl@0
  2570
	CTestMmfAclntARN1303* self = new (ELeave) CTestMmfAclntARN1303(aTestName, aSectName);
sl@0
  2571
	return self;
sl@0
  2572
	}
sl@0
  2573
sl@0
  2574
/**
sl@0
  2575
 * DoTestL
sl@0
  2576
 */
sl@0
  2577
TVerdict CTestMmfAclntARN1303::DoTestL()
sl@0
  2578
	{
sl@0
  2579
	return( PerformTestL() );
sl@0
  2580
	}
sl@0
  2581
sl@0
  2582
/**
sl@0
  2583
 * FsmL
sl@0
  2584
 */
sl@0
  2585
void CTestMmfAclntARN1303::FsmL(TMmfAudioPlayerEvents aEventCode, TInt aError)
sl@0
  2586
	{
sl@0
  2587
	if (FsmCheck(aEventCode, aError))
sl@0
  2588
		{
sl@0
  2589
		TInt retErr = KErrNone;
sl@0
  2590
		switch (iState)
sl@0
  2591
			{
sl@0
  2592
			case EStateBegin:
sl@0
  2593
				// Open iTestAudioPlayer#1
sl@0
  2594
				iTestAudioPlayer1->OpenFileL(iFilename1);
sl@0
  2595
				INFO_PRINTF1(_L("iTestAudioPlayer1->OpenFileL()"));
sl@0
  2596
				// Set ExpectedEvent and change the State
sl@0
  2597
				StateChange(EStateOpenPlayer1, EMapcInitComplete1);
sl@0
  2598
				break;
sl@0
  2599
			case EStateOpenPlayer1:
sl@0
  2600
				// Cancel notification for iTestAudioPlayer#1
sl@0
  2601
				retErr = iTestAudioPlayer1->CancelRegisterAudioResourceNotification(KMMFEventCategoryAudioResourceAvailable);
sl@0
  2602
				INFO_PRINTF1(_L("iTestAudioPlayer1->CancelRegisterAudioResourceNotification(KMMFEventCategoryAudioResourceAvailable)"));
sl@0
  2603
				if( retErr == KErrCancel )
sl@0
  2604
					{
sl@0
  2605
					ERR_PRINTF1(_L("iTestAudioPlayer1->CancelRegisterAudioResourceNotification - Returned KErrCancel ") );
sl@0
  2606
					iTestStepResult = EPass;
sl@0
  2607
					}
sl@0
  2608
				else
sl@0
  2609
					{
sl@0
  2610
					ERR_PRINTF2(_L("iTestAudioPlayer1->CancelRegisterAudioResourceNotification - Failed with Error : %d"), retErr);
sl@0
  2611
					iTestStepResult = EFail;
sl@0
  2612
					}
sl@0
  2613
				CActiveScheduler::Stop();
sl@0
  2614
				break;
sl@0
  2615
			}
sl@0
  2616
		}
sl@0
  2617
	}
sl@0
  2618
	
sl@0
  2619
/**
sl@0
  2620
 * PerformTestL
sl@0
  2621
 */
sl@0
  2622
TVerdict CTestMmfAclntARN1303::PerformTestL()
sl@0
  2623
	{
sl@0
  2624
	INFO_PRINTF1(_L("Cancel when no resource Notification is requested."));
sl@0
  2625
	iTestStepResult = EFail;
sl@0
  2626
	
sl@0
  2627
	// Initialise the state variables
sl@0
  2628
	StateInit();
sl@0
  2629
	
sl@0
  2630
	// Begin the process
sl@0
  2631
	FsmL(EIdlePlayer, KErrNone);
sl@0
  2632
	
sl@0
  2633
	// Start the scheduler - Done only once !
sl@0
  2634
	CActiveScheduler::Start();
sl@0
  2635
	
sl@0
  2636
	return iTestStepResult;
sl@0
  2637
	}
sl@0
  2638
sl@0
  2639
//
sl@0
  2640
//CTestMmfAclntARN1304
sl@0
  2641
//
sl@0
  2642
sl@0
  2643
/**
sl@0
  2644
 * Constructor
sl@0
  2645
 */
sl@0
  2646
CTestMmfAclntARN1304::CTestMmfAclntARN1304(const TDesC& aTestName, const TDesC& aSectName)
sl@0
  2647
	: CTestMmfAclntAudioPlayerARN(aTestName, aSectName)
sl@0
  2648
	{}
sl@0
  2649
sl@0
  2650
/**
sl@0
  2651
 * NewL
sl@0
  2652
 */
sl@0
  2653
CTestMmfAclntARN1304* CTestMmfAclntARN1304::NewL(const TDesC& aTestName, const TDesC& aSectName)
sl@0
  2654
	{
sl@0
  2655
	CTestMmfAclntARN1304* self = new (ELeave) CTestMmfAclntARN1304(aTestName, aSectName);
sl@0
  2656
	return self;
sl@0
  2657
	}
sl@0
  2658
sl@0
  2659
/**
sl@0
  2660
 * DoTestL
sl@0
  2661
 */
sl@0
  2662
TVerdict CTestMmfAclntARN1304::DoTestL()
sl@0
  2663
	{
sl@0
  2664
	return( PerformTestL() );
sl@0
  2665
	}
sl@0
  2666
sl@0
  2667
/**
sl@0
  2668
 * FsmL
sl@0
  2669
 */
sl@0
  2670
void CTestMmfAclntARN1304::FsmL(TMmfAudioPlayerEvents aEventCode, TInt aError)
sl@0
  2671
	{
sl@0
  2672
	if (FsmCheck(aEventCode, aError))
sl@0
  2673
		{
sl@0
  2674
		TInt retErr = KErrNone;
sl@0
  2675
		switch (iState)
sl@0
  2676
			{
sl@0
  2677
			case EStateBegin:
sl@0
  2678
				// Open iTestAudioPlayer#1
sl@0
  2679
				iTestAudioPlayer1->OpenFileL(iFilename1);
sl@0
  2680
				INFO_PRINTF1(_L("iTestAudioPlayer1->OpenFileL()"));
sl@0
  2681
				// Set ExpectedEvent and change the State
sl@0
  2682
				StateChange(EStateOpenPlayer1, EMapcInitComplete1);
sl@0
  2683
				break;
sl@0
  2684
			case EStateOpenPlayer1:
sl@0
  2685
				// Register iTestAudioPlayer#1 for Notification
sl@0
  2686
				retErr = iTestAudioPlayer1->RegisterAudioResourceNotification(*iMdaAudioPlayerCallbackSupport1, KMMFEventCategoryAudioResourceAvailable);
sl@0
  2687
				INFO_PRINTF1(_L("iTestAudioPlayer1->RegisterAudioResourceNotification()#1"));
sl@0
  2688
				if( retErr != KErrNone )
sl@0
  2689
					{
sl@0
  2690
					ERR_PRINTF2(_L("iTestAudioPlayer1->RegisterAudioResourceNotification #1 - Failed with Error : %d"), retErr);
sl@0
  2691
					iTestStepResult = EFail;
sl@0
  2692
					CActiveScheduler::Stop();
sl@0
  2693
					break;
sl@0
  2694
					}
sl@0
  2695
				// Register iTestAudioPlayer#1 for Notification (AGAIN)
sl@0
  2696
				retErr = iTestAudioPlayer1->RegisterAudioResourceNotification(*iMdaAudioPlayerCallbackSupport1, KMMFEventCategoryAudioResourceAvailable);
sl@0
  2697
				INFO_PRINTF1(_L("iTestAudioPlayer1->RegisterAudioResourceNotification()#2"));
sl@0
  2698
				if( retErr == KErrAlreadyExists )
sl@0
  2699
					{
sl@0
  2700
					INFO_PRINTF1(_L("iTestAudioPlayer1->RegisterAudioResourceNotification #2 - Returned KErrAlreadyExists ") );
sl@0
  2701
					iTestStepResult = EPass;
sl@0
  2702
					}
sl@0
  2703
				else
sl@0
  2704
					{
sl@0
  2705
					ERR_PRINTF2(_L("iTestAudioPlayer1->RegisterAudioResourceNotification #2 - Failed with Error : %d"), retErr);
sl@0
  2706
					iTestStepResult = EFail;
sl@0
  2707
					}
sl@0
  2708
				CActiveScheduler::Stop();
sl@0
  2709
				break;
sl@0
  2710
			}
sl@0
  2711
		}
sl@0
  2712
	}
sl@0
  2713
	
sl@0
  2714
/**
sl@0
  2715
 * PerformTestL
sl@0
  2716
 */
sl@0
  2717
TVerdict CTestMmfAclntARN1304::PerformTestL()
sl@0
  2718
	{
sl@0
  2719
	INFO_PRINTF1(_L("Multiple Registration for notification for the same event type."));
sl@0
  2720
	iTestStepResult = EFail;
sl@0
  2721
	
sl@0
  2722
	// Initialise the state variables
sl@0
  2723
	StateInit();
sl@0
  2724
	
sl@0
  2725
	// Begin the process
sl@0
  2726
	FsmL(EIdlePlayer, KErrNone);
sl@0
  2727
	
sl@0
  2728
	// Start the scheduler - Done only once !
sl@0
  2729
	CActiveScheduler::Start();
sl@0
  2730
	
sl@0
  2731
	return iTestStepResult;
sl@0
  2732
	}