mmlibs/mmfw/tsrc/mmfunittest/aclnt/TSU_MMF_ACLNT_01/TestStepPlayerSharedHeap.cpp
author hgs
Thu, 07 Oct 2010 22:34:12 +0100
changeset 0 b8ed18f6c07b
permissions -rw-r--r--
2010wk40
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     1
// Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     2
// All rights reserved.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     3
// This component and the accompanying materials are made available
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     4
// under the terms of "Eclipse Public License v1.0"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     5
// which accompanies this distribution, and is available
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     6
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     7
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     8
// Initial Contributors:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     9
// Nokia Corporation - initial contribution.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    10
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    11
// Contributors:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    12
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    13
// Description:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    14
// These test steps create audio player utilities whose
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    15
// controllers share a single heap.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    16
// 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    17
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    18
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    19
// EPOC includes
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    20
#include <e32base.h>
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    21
#include <e32test.h>
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    22
#include <e32keys.h>
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    23
#include <c32comm.h>
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    24
#include <f32file.h>
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    25
#include <etel.h>
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    26
#include <etelmm.h>
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    27
#include <testframework.h>
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    28
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    29
#include <mdaaudiosampleplayer.h>
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    30
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    31
// Test system includes
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    32
#include <testframework.h>
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    33
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    34
// Specific includes for this test suite
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    35
#include "TestStepUnitMMFAudClient.h"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    36
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    37
// Specific includes for these test steps
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    38
#include "TestStepPlayerSharedHeap.h"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    39
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    40
#include "mmfclientaudioplayer.h"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    41
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    42
// For custom controller
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    43
#include "../../ctlfrm/TS_CMMFTestController/CmmfTestControllerUIDs.hrh"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    44
#include "../../ctlfrm/TS_Codes.h"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    45
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    46
// --------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    47
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    48
const TInt KMaxPlayers = 24;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    49
// would definitely exceed the chunk limit if there players were
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    50
// using separate heaps (which they shouldn't in this test)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    51
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    52
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    53
const TInt KNoSharedPlayer = 2;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    54
// which of the created players should be given its own heap on mixed style tests
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    55
// This must always be true: KNoSharedPlayer < KMaxPlayers
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    56
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    57
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    58
const TInt KRepeatAmount = 16;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    59
// how often CTestStepPlayerSharedHeapRepeatMultiFilePlayer should create and delete players
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    60
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    61
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    62
const TUid KTstControllerUid = {KMmfTestControllerUid}; //(0x101F88D8)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    63
// custom controller ID
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    64
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    65
// --------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    66
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    67
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    68
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    69
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    70
 * Static constructor for CTestStepPlayerSharedHeapMultiFilePlayer.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    71
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    72
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    73
 * @return	"CTestStepPlayerSharedHeapMultiFilePlayer*"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    74
 *			The constructed CTestStepPlayerSharedHeapMultiFilePlayer
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    75
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    76
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    77
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    78
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    79
CTestStepPlayerSharedHeapMultiFilePlayer* CTestStepPlayerSharedHeapMultiFilePlayer::NewL(const TDesC& aName, TBool aMixHeapStyle )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    80
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    81
	CTestStepPlayerSharedHeapMultiFilePlayer* self = new(ELeave) CTestStepPlayerSharedHeapMultiFilePlayer( aName, aMixHeapStyle );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    82
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    83
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    84
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    85
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    86
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    87
 * Test step constructor.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    88
 * Each test step initialises its own name.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    89
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    90
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    91
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    92
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    93
CTestStepPlayerSharedHeapMultiFilePlayer::CTestStepPlayerSharedHeapMultiFilePlayer(const TDesC& aName, TBool aMixHeapStyle )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    94
	: iMixHeapStyle( aMixHeapStyle )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    95
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    96
	// store the name of this test case
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    97
	// this is the name that is used by the script file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    98
	iTestStepName = aName;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    99
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   100
	iHeapSize = 128 * 1024; 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   101
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   102
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   103
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   104
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   105
 * Test step destructor.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   106
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   107
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   108
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   109
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   110
CTestStepPlayerSharedHeapMultiFilePlayer::~CTestStepPlayerSharedHeapMultiFilePlayer()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   111
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   112
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   113
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   114
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   115
 * Implementation of the MMdaAudioPlayerCallback interface functions
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   116
 **/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   117
void CTestStepPlayerSharedHeapMultiFilePlayer::MapcInitComplete(TInt aError, 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   118
															const TTimeIntervalMicroSeconds &/*aDuration*/)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   119
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   120
	iError = aError;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   121
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   122
	if( aError )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   123
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   124
		INFO_PRINTF2(_L("	Callback error (%d) while opening player."), aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   125
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   126
	/*else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   127
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   128
		INFO_PRINTF1(_L("	Player opened successfully."));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   129
		}*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   130
	CActiveScheduler::Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   131
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   132
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   133
void CTestStepPlayerSharedHeapMultiFilePlayer::MapcPlayComplete(TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   134
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   135
	iError = aError;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   136
	CActiveScheduler::Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   137
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   138
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   139
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   140
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   141
 * Test step Preamble.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   142
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   143
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   144
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   145
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   146
enum TVerdict CTestStepPlayerSharedHeapMultiFilePlayer::DoTestStepPreambleL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   147
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   148
	 enum TVerdict verdict;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   149
	 // this installs the scheduler
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   150
	 verdict = CTestStepUnitMMFAudClient::DoTestStepPreambleL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   151
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   152
	// Printing to the console and log file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   153
	INFO_PRINTF1( iTestStepName );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   154
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   155
	iError = KErrNone; //KErrTimedOut;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   156
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   157
	if(!GetStringFromConfig(_L("SectionOne"), _L("AudioPlayFName1"), iFileName))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   158
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   159
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   160
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   161
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   162
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   163
	return verdict;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   164
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   165
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   166
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   167
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   168
 * Test step Postamble.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   169
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   170
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   171
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   172
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   173
enum TVerdict CTestStepPlayerSharedHeapMultiFilePlayer::DoTestStepPostambleL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   174
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   175
	// close array
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   176
	iPlayers.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   177
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   178
	INFO_PRINTF1(_L("finished with this test step"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   179
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   180
	//[ Destroy the scheduler ]
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   181
	return CTestStepUnitMMFAudClient::DoTestStepPostambleL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   182
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   183
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   184
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   185
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   186
 * The commands to be included in the TRAP command
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   187
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   188
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   189
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   190
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   191
CMdaAudioPlayerUtility* CTestStepPlayerSharedHeapMultiFilePlayer::CreateAndOpenPlayerL( TInt aIteration )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   192
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   193
	CMdaAudioPlayerUtility* player = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   194
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   195
	TRAPD( err, player = CMdaAudioPlayerUtility::NewL(*this) );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   196
	User::LeaveIfError( err );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   197
	CleanupStack::PushL(player);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   198
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   199
	if( ! (iMixHeapStyle && (aIteration == KNoSharedPlayer)) )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   200
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   201
		INFO_PRINTF2(_L("	Player on iteration %2d is using a shared heap."), aIteration );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   202
		player->UseSharedHeap(); // ensure that underlying controller uses a shared heap
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   203
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   204
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   205
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   206
		INFO_PRINTF2(_L("	Player on iteration %2d has its own heap."), aIteration );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   207
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   208
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   209
	player->OpenFileL( iFileName ); // this creates a new controller
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   210
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   211
	CActiveScheduler::Start(); // wait for open to complete
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   212
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   213
	User::LeaveIfError( iError ); // if had error return from callback
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   214
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   215
	CleanupStack::Pop(player);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   216
	return player;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   217
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   218
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   219
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   220
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   221
 * Get's the Audio Player State
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   222
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   223
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   224
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   225
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   226
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   227
TInt CTestStepPlayerSharedHeapMultiFilePlayer::GetAudPlayerState(CMdaAudioPlayerUtility* aPlayer, TInt& aState)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   228
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   229
	if (aPlayer == NULL)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   230
		return KErrNotReady;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   231
	aState = this->iState;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   232
	return KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   233
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   234
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   235
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   236
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   237
 * Get's the Audio Player Source Handle
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   238
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   239
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   240
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   241
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   242
TInt CTestStepPlayerSharedHeapMultiFilePlayer::GetAudPlayerSourceHandle(CMdaAudioPlayerUtility* aPlayer,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   243
														 TMMFMessageDestination* /*aSrcHandle*/)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   244
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   245
	if (aPlayer == NULL)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   246
		return KErrNotReady;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   247
	return KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   248
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   249
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   250
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   251
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   252
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   253
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   254
 * Creates KMaxPlayers players, performs the desired test on one of them
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   255
 * and then closes them all and cleans up.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   256
 * If problems are encountered the returned result will reflect this.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   257
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   258
 * @return	"TVerdict"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   259
 *			The result of the tests
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   260
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   261
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   262
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   263
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   264
TVerdict CTestStepPlayerSharedHeapMultiFilePlayer::DoTestL( TTestType aTestType )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   265
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   266
	iTestStepResult = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   267
    TInt err = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   268
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   269
	__MM_HEAP_MARK;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   270
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   271
	TInt i=0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   272
	for( ; i < KMaxPlayers; ++i )	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   273
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   274
		iError = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   275
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   276
		CMdaAudioPlayerUtility* player = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   277
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   278
		TRAPD(err, player = CreateAndOpenPlayerL(i) );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   279
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   280
		if (err == KErrNone && iError == KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   281
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   282
			// see if valid result and break if wrong - might be premature result
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   283
			TInt err1 = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   284
			TInt err2 = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   285
			TInt state = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   286
			TMMFMessageDestination* srcHandle = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   287
			err1 = GetAudPlayerState(player, state);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   288
			err2 = GetAudPlayerSourceHandle(player, srcHandle);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   289
			if ( err1 != KErrNone ||
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   290
				 err2 != KErrNone ||
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   291
				 &srcHandle == NULL ||
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   292
				 state != CTestStepPlayerSharedHeapMultiFilePlayer::EStopped ||
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   293
				 player->Duration() == TTimeIntervalMicroSeconds(0) || // we know the duration of the file is more than 0
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   294
				 iError != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   295
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   296
				// dodgy player
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   297
				
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   298
				INFO_PRINTF2(_L("	Dodgy player on iteration %2d"), i);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   299
				iTestStepResult = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   300
				
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   301
				delete player;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   302
				player = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   303
				break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   304
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   305
			else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   306
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   307
				// no errors				
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   308
				// append player to array
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   309
				if( (err = iPlayers.Append( player )) != KErrNone )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   310
					{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   311
					INFO_PRINTF2(_L("Fail to append player on iteration %2d"), i);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   312
					// this doesn't indicate a failure in what we're testing here
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   313
					iTestStepResult = EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   314
				
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   315
					delete player;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   316
					player = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   317
					break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   318
					}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   319
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   320
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   321
		else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   322
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   323
			INFO_PRINTF4(_L("Fail to open player on iteration %2d - %d %d"), i, err, iError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   324
			break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   325
			}	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   326
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   327
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   328
	// check outcome of making players
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   329
	if ( err || iError )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   330
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   331
		if ((err && err != KErrNoMemory) || (err == KErrNone && iError != KErrNoMemory))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   332
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   333
			// a genuine error
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   334
			
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   335
			if( err )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   336
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   337
				INFO_PRINTF3(_L("Error %d occured while trying to create player #%d"), err, i );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   338
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   339
			else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   340
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   341
				INFO_PRINTF3(_L("Error %d occured while opening player #%d"), iError, i );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   342
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   343
			
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   344
			iTestStepResult = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   345
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   346
		else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   347
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   348
			// we ran out of memory
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   349
			INFO_PRINTF2(_L("Teststep ran out of memory while creating player #%d"), i );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   350
			iTestStepResult = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   351
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   352
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   353
	// else no errors
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   354
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   355
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   356
	// perform test on 1st player (unless there were errors above)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   357
	if( (iTestStepResult == EPass) && (iPlayers.Count() > 0 ) )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   358
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   359
		switch( aTestType )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   360
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   361
			case EPlay:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   362
				{		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   363
				(iPlayers[0])->Play();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   364
				CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   365
				
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   366
				if( iError )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   367
					{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   368
					// playback died
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   369
					INFO_PRINTF2(_L("Error %d occured while playing"), iError );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   370
					iTestStepResult = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   371
					}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   372
					
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   373
				break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   374
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   375
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   376
				
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   377
			case EPanic:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   378
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   379
				// panic player
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   380
				
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   381
				// load a custom controller (using the share heap)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   382
				// that can be panicked and see if we recover OK
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   383
				TMMFPrioritySettings settings;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   384
				TInt error = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   385
				RMMFController controller;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   386
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   387
				settings.iPriority = 1;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   388
				settings.iPref = EMdaPriorityPreferenceTime;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   389
				settings.iState = EMMFStateIdle;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   390
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   391
				error = controller.Open(KTstControllerUid, settings, ETrue); // use shared heap
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   392
				INFO_PRINTF2(_L("Custom controller Open: %d"), error);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   393
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   394
				if( ! error )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   395
					{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   396
					// panic the controller
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   397
					// this command will complete immediately and
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   398
					// then panic
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   399
					TUid uid;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   400
					uid = TUid::Uid(0x101f72B4);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   401
					TMMFMessageDestinationPckg destPckg(uid);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   402
					//TRequestStatus status = KRequestPending;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   403
					controller.CustomCommandSync(destPckg,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   404
												EMMFTestCustomCommandPanic,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   405
												KNullDesC8,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   406
												KNullDesC8);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   407
					
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   408
					// need to allow some time to make
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   409
					// sure the thread has actually been panicked when we close it
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   410
					User::After( TTimeIntervalMicroSeconds32(5000000) ); // 5 seconds
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   411
					}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   412
					
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   413
				// controller should have panicked by now
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   414
				controller.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   415
				
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   416
				break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   417
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   418
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   419
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   420
			// default: // do nothing
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   421
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   422
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   423
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   424
	// cleanup
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   425
	for( i = 0; i < iPlayers.Count(); ++i )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   426
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   427
		delete iPlayers[i];
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   428
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   429
		iPlayers[i] = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   430
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   431
	iPlayers.Reset();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   432
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   433
	__MM_HEAP_MARKEND;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   434
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   435
	// test steps return a result
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   436
	return iTestStepResult;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   437
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   438
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   439
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   440
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   441
 * Do the test step.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   442
 * Each test step must supply an implementation for DoTestStepL.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   443
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   444
 * @return	"TVerdict"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   445
 *			The result of the test step
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   446
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   447
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   448
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   449
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   450
TVerdict CTestStepPlayerSharedHeapMultiFilePlayer::DoTestStepL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   451
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   452
	INFO_PRINTF1(_L("This is a test that several player utilities using a shared heap can be created."));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   453
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   454
	return DoTestL( EPlay );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   455
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   456
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   457
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   458
//===========================================================================================
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   459
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   460
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   461
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   462
 * Static constructor for CTestStepPlayerSharedHeapRepeatMultiFilePlayer.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   463
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   464
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   465
 * @return	"CTestStepPlayerSharedHeapRepeatMultiFilePlayer*"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   466
 *			The constructed CTestStepPlayerSharedHeapRepeatMultiFilePlayer
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   467
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   468
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   469
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   470
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   471
CTestStepPlayerSharedHeapRepeatMultiFilePlayer* CTestStepPlayerSharedHeapRepeatMultiFilePlayer::NewL(const TDesC& aName, TBool aMixHeapStyle )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   472
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   473
	CTestStepPlayerSharedHeapRepeatMultiFilePlayer* self = new(ELeave) CTestStepPlayerSharedHeapRepeatMultiFilePlayer( aName, aMixHeapStyle );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   474
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   475
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   476
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   477
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   478
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   479
 * Test step constructor.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   480
 * Each test step initialises its own name.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   481
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   482
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   483
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   484
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   485
CTestStepPlayerSharedHeapRepeatMultiFilePlayer::CTestStepPlayerSharedHeapRepeatMultiFilePlayer(const TDesC& aName, TBool aMixHeapStyle )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   486
	: CTestStepPlayerSharedHeapMultiFilePlayer( aName, aMixHeapStyle )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   487
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   488
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   489
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   490
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   491
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   492
 * Test step destructor.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   493
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   494
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   495
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   496
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   497
CTestStepPlayerSharedHeapRepeatMultiFilePlayer::~CTestStepPlayerSharedHeapRepeatMultiFilePlayer()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   498
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   499
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   500
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   501
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   502
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   503
 * Do the test step.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   504
 * Each test step must supply an implementation for DoTestStepL.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   505
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   506
 * @return	"TVerdict"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   507
 *			The result of the test step
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   508
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   509
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   510
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   511
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   512
TVerdict CTestStepPlayerSharedHeapRepeatMultiFilePlayer::DoTestStepL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   513
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   514
	INFO_PRINTF1(_L("This is a test that several player utilities using a shared heap can be created."));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   515
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   516
	TVerdict result = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   517
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   518
	__MM_HEAP_MARK;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   519
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   520
	for(TInt i=0; i < KRepeatAmount; ++i)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   521
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   522
		INFO_PRINTF2(_L("Create and delete iteration %d."), i );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   523
		result = DoTestL( EPlay );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   524
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   525
		if( result != EPass )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   526
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   527
			INFO_PRINTF2(_L("Iteration %d failed. Stopping."), i );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   528
			break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   529
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   530
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   531
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   532
	__MM_HEAP_MARKEND;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   533
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   534
	return result;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   535
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   536
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   537
// =============================================================
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   538
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   539
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   540
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   541
 * Static constructor for CTestStepPlayerSharedHeapPanicMultiFilePlayer.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   542
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   543
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   544
 * @return	"CTestStepPlayerSharedHeapPanicMultiFilePlayer*"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   545
 *			The constructed CTestStepPlayerSharedHeapPanicMultiFilePlayer
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   546
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   547
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   548
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   549
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   550
CTestStepPlayerSharedHeapPanicMultiFilePlayer* CTestStepPlayerSharedHeapPanicMultiFilePlayer::NewL(const TDesC& aName, TBool aMixHeapStyle )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   551
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   552
	CTestStepPlayerSharedHeapPanicMultiFilePlayer* self = new(ELeave) CTestStepPlayerSharedHeapPanicMultiFilePlayer( aName, aMixHeapStyle );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   553
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   554
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   555
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   556
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   557
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   558
 * Test step constructor.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   559
 * Each test step initialises its own name.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   560
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   561
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   562
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   563
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   564
CTestStepPlayerSharedHeapPanicMultiFilePlayer::CTestStepPlayerSharedHeapPanicMultiFilePlayer(const TDesC& aName, TBool aMixHeapStyle )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   565
	: CTestStepPlayerSharedHeapMultiFilePlayer( aName, aMixHeapStyle )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   566
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   567
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   568
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   569
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   570
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   571
 * Test step destructor.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   572
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   573
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   574
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   575
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   576
CTestStepPlayerSharedHeapPanicMultiFilePlayer::~CTestStepPlayerSharedHeapPanicMultiFilePlayer()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   577
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   578
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   579
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   580
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   581
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   582
 * Do the test step.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   583
 * Each test step must supply an implementation for DoTestStepL.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   584
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   585
 * @return	"TVerdict"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   586
 *			The result of the test step
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   587
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   588
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   589
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   590
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   591
TVerdict CTestStepPlayerSharedHeapPanicMultiFilePlayer::DoTestStepL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   592
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   593
	INFO_PRINTF1(_L("This is a test that shared heap layers can recover from a panic."));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   594
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   595
	return DoTestL( EPanic );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   596
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   597