mmlibs/mmfw/tsrc/mmfunittest/aclnt/TSU_MMF_ACLNT_01/TestStepPlayerPlay.cpp
author hgs
Tue, 02 Nov 2010 12:28:51 +0000
changeset 6 fe9d1bf55678
parent 0 b8ed18f6c07b
permissions -rw-r--r--
2010wk46_02
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
// This file contains an example Test step implementation 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    15
// This demonstrates the various functions provided
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    16
// by the CTestStep base class which are available within
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    17
// a test step 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    18
// 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    19
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    20
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    21
// EPOC includes
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    22
#include <e32base.h>
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    23
#include <e32test.h>
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    24
#include <e32keys.h>
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    25
#include <c32comm.h>
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    26
#include <f32file.h>
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    27
#include <etel.h>
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    28
#include <etelmm.h>
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    29
#include <testframework.h>
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    30
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    31
#include <mdaaudiosampleplayer.h>
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    32
//#include <MdaAudioSampleEditor.h>
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    33
//#include <MdaAudioTonePlayer.h>
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    34
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    35
// Test system includes
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    36
#include <testframework.h>
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    37
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    38
// Specific includes for this test suite
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    39
#include "TestStepUnitMMFAudClient.h"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    40
#include "TestSuiteUnitMMFAudClient.h"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    41
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    42
// Specific includes for these test steps
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    43
#include "TestStepPlayerNew.h"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    44
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    45
#include "mmfclientaudioplayer.h"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    46
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    47
// Path where the test files reside
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    48
_LIT(KFilePath, "C:\\mm\\mmf\\testfiles\\aclnt\\");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    49
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    50
// --------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    51
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    52
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    53
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    54
 * Static constructor for CTestStepPlayerPlay.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    55
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    56
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    57
 * @return   "CTestStepPlayerPlay*"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    58
 *         The constructed CTestStepPlayerPlay
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    59
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    60
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    61
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    62
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    63
CTestStepPlayerPlay* CTestStepPlayerPlay::NewL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    64
   {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    65
   CTestStepPlayerPlay* self = new(ELeave) CTestStepPlayerPlay;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    66
   return self;
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
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    71
 * Test step constructor.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    72
 * Each test step initialises its own name.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    73
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    74
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    75
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    76
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    77
CTestStepPlayerPlay::CTestStepPlayerPlay() : iHasPlayed(EFalse)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    78
   {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    79
   iTestStepResult = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    80
   // store the name of this test case
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    81
   // this is the name that is used by the script file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    82
   iTestStepName = _L("MM-MMF-ACLNT-U-0010-CP");
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 destructor.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    88
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    89
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    90
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    91
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    92
CTestStepPlayerPlay::~CTestStepPlayerPlay()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    93
   {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    94
   }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    95
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    96
 * Implementation of the MMdaAudioPlayerCallback interface functions
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    97
 **/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    98
void CTestStepPlayerPlay::MapcInitComplete(TInt aError, 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    99
                        const TTimeIntervalMicroSeconds &/*aDuration*/)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   100
   {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   101
   iError = aError;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   102
   CActiveScheduler::Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   103
   }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   104
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   105
void CTestStepPlayerPlay::MapcPlayComplete(TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   106
   {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   107
   iError = aError;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   108
   if (iError == KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   109
      iHasPlayed = ETrue;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   110
   CActiveScheduler::Stop();
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
 * Test step Preamble.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   116
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   117
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   118
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   119
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   120
 enum TVerdict CTestStepPlayerPlay::DoTestStepPreambleL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   121
   {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   122
    enum TVerdict verdict;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   123
    // this installs the scheduler
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   124
    verdict = CTestStepUnitMMFAudClient::DoTestStepPreambleL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   125
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   126
   // Printing to the console and log file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   127
    INFO_PRINTF1(_L("MM-MMF-ACLNT-U-0010-CP"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   128
    INFO_PRINTF1(_L("this test is playing a sound file after openning it. Play()"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   129
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   130
    iError = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   131
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   132
    if(!GetStringFromConfig(_L("SectionOne"), _L("AudioPlayFName1"), iFileName))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   133
      {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   134
       INFO_PRINTF2(_L("file name %S not found..."), &iFileName);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   135
       return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   136
      }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   137
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   138
	// 23_01_06 This test case has been modified in order to provide regression testing for improved CAF file sharing.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   139
	// See defect DEF076592.  This test case ensures that a file can be played that has already been opened for reading/writing.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   140
	RFs fs;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   141
	User::LeaveIfError(fs.Connect());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   142
	CleanupClosePushL(fs);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   143
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   144
	RFile temp;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   145
	temp.Open(fs, iFileName, EFileRead|EFileWrite|EFileShareReadersOnly);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   146
	CleanupClosePushL(temp);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   147
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   148
    iPlayer = CMMFMdaAudioPlayerUtility::NewFilePlayerL(iFileName, *this);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   149
    CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   150
    User::After(1000000);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   151
    
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   152
    CleanupStack::PopAndDestroy(2, &fs);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   153
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   154
    if (iPlayer == NULL ||
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   155
       iError != KErrNone )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   156
       return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   157
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   158
    return verdict;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   159
   }
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
 * Test step Postamble.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   164
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   165
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   166
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   167
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   168
enum TVerdict CTestStepPlayerPlay::DoTestStepPostambleL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   169
   {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   170
   delete iPlayer;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   171
   iPlayer = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   172
   //[ Destroy the scheduler ]
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   173
   return CTestStepUnitMMFAudClient::DoTestStepPostambleL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   174
   }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   175
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   176
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   177
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   178
 * Do the test step.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   179
 * Each test step must supply an implementation for DoTestStepL.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   180
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   181
 * @return   "TVerdict"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   182
 *         The result of the test step
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   183
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   184
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   185
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   186
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   187
TVerdict CTestStepPlayerPlay::DoTestStepL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   188
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   189
	//__MM_HEAP_MARK;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   190
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   191
   // check if player openned the file successfully
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   192
   TInt err1 = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   193
   TInt state = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   194
   err1 = GetAudPlayerState(iPlayer, state);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   195
   if ( state != CMMFMdaAudioPlayerUtility::EStopped )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   196
       return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   197
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   198
   TInt err2 = iPlayer->SetThreadPriority(EPriorityAbsoluteHigh);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   199
   if (err2 != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   200
       {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   201
       INFO_PRINTF1(_L("Failed to set the player's thread priority"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   202
   	   return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   203
   	   }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   204
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   205
   iPlayer->Play();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   206
   CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   207
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   208
   User::After(500000);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   209
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   210
   iPlayer->Pause(); //JPW
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   211
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   212
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   213
   User::After(2000000);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   214
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   215
   err2 = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   216
   TMMFMessageDestination* srcHandle = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   217
   err1 = GetAudPlayerState(iPlayer, state);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   218
   err2 = GetAudPlayerSourceHandle(iPlayer, srcHandle);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   219
   if ( err1 != KErrNone ||
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   220
       err2 != KErrNone ||
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   221
       &srcHandle == NULL ||
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   222
       state != CMMFMdaAudioPlayerUtility::EStopped ||
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   223
       !iHasPlayed ||
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   224
       iError != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   225
       iTestStepResult = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   226
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   227
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   228
	//__MM_HEAP_MARKEND;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   229
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   230
   INFO_PRINTF1(_L("finished with this test step"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   231
   // test steps return a result
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   232
   return iTestStepResult;
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
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   238
 * Static constructor for CTestStepPlayerPlay.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   239
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   240
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   241
 * @return   "CTestStepPlayerPlay*"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   242
 *         The constructed CTestStepPlayerPlay
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   243
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   244
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   245
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   246
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   247
CTestStepPlayerPlayTwice* CTestStepPlayerPlayTwice::NewL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   248
   {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   249
   CTestStepPlayerPlayTwice* self = new(ELeave) CTestStepPlayerPlayTwice;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   250
   return self;
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
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   255
 * Test step constructor.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   256
 * Each test step initialises its own name.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   257
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   258
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   259
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   260
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   261
CTestStepPlayerPlayTwice::CTestStepPlayerPlayTwice()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   262
   : iHasPlayed(EFalse)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   263
   {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   264
   iTestStepResult = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   265
   // store the name of this test case
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   266
   // this is the name that is used by the script file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   267
   iTestStepName = _L("MM-MMF-ACLNT-U-0012-CP");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   268
   }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   269
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   270
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   271
 * Implementation of the MMdaAudioPlayerCallback interface functions
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   272
 **/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   273
void CTestStepPlayerPlayTwice::MapcInitComplete(TInt aError, 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   274
                                    const TTimeIntervalMicroSeconds &/*aDuration*/)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   275
   {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   276
   iError = aError;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   277
   CActiveScheduler::Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   278
   }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   279
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   280
void CTestStepPlayerPlayTwice::MapcPlayComplete(TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   281
   {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   282
   iError = aError;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   283
   if (iError == KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   284
      iHasPlayed = ETrue;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   285
   CActiveScheduler::Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   286
   }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   287
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   288
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   289
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   290
 * Test step Preamble.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   291
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   292
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   293
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   294
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   295
 enum TVerdict CTestStepPlayerPlayTwice::DoTestStepPreambleL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   296
   {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   297
    enum TVerdict verdict;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   298
    // this installs the scheduler
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   299
    verdict = CTestStepUnitMMFAudClient::DoTestStepPreambleL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   300
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   301
   // Printing to the console and log file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   302
    INFO_PRINTF1(_L("MM-MMF-ACLNT-U-0012-CP"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   303
    INFO_PRINTF1(_L("This test is calling Play() twice"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   304
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   305
    iError = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   306
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   307
    if(!GetStringFromConfig(_L("SectionOne"), _L("AudioPlayFName1"), iFileName))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   308
      {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   309
       //INFO_PRINTF2(_L("file name %s not found..."), fileptr);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   310
       return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   311
      }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   312
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   313
	// This test case has been modified in order to provide regression testing for improved CAF file sharing
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   314
	// See defect DEF076592.  This test case now checks that a file can be played from z:\resource
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   315
	_LIT(KResFile, "z:\\resource\\small.wav");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   316
	TBuf<100> temp;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   317
	temp.Copy(KResFile);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   318
	iPlayer = CMMFMdaAudioPlayerUtility::NewFilePlayerL(temp, *this);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   319
    CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   320
    User::After(1000000);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   321
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   322
    if (iPlayer == NULL ||
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   323
       iError != KErrNone )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   324
       return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   325
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   326
    return verdict;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   327
   }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   328
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   329
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   330
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   331
 * Test step Postamble.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   332
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   333
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   334
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   335
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   336
TVerdict CTestStepPlayerPlayTwice::DoTestStepPostambleL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   337
   {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   338
   delete iPlayer;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   339
   iPlayer = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   340
   //[ Destroy the scheduler ]
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   341
   return CTestStepUnitMMFAudClient::DoTestStepPostambleL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   342
   }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   343
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   344
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   345
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   346
 * Do the test step.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   347
 * Each test step must supply an implementation for DoTestStepL.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   348
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   349
 * @return   "TVerdict"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   350
 *         The result of the test step
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   351
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   352
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   353
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   354
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   355
TVerdict CTestStepPlayerPlayTwice::DoTestStepL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   356
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   357
	//__MM_HEAP_MARK;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   358
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   359
   // check if player openned the file successfully
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   360
   TInt err1 = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   361
   TInt state = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   362
   err1 = GetAudPlayerState(iPlayer, state);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   363
   if ( state != CMMFMdaAudioPlayerUtility::EStopped )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   364
      return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   365
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   366
   // used to measure the time it takes to play
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   367
   TTime timeStart;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   368
   TTime timeEnd;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   369
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   370
   // start the timer
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   371
   timeStart.UniversalTime();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   372
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   373
   // Play
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   374
   iPlayer->Play();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   375
   CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   376
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   377
   // stop the timer
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   378
   timeEnd.UniversalTime();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   379
   TTimeIntervalMicroSeconds playDuration1 = 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   380
      timeEnd.MicroSecondsFrom(timeStart);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   381
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   382
   User::After(2000000);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   383
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   384
   TInt err2 = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   385
   TMMFMessageDestination* srcHandle = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   386
   err1 = GetAudPlayerState(iPlayer, state);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   387
   err2 = GetAudPlayerSourceHandle(iPlayer, srcHandle);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   388
   if ( err1 != KErrNone ||
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   389
       err2 != KErrNone ||
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   390
       &srcHandle == NULL ||
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   391
       state != CMMFMdaAudioPlayerUtility::EStopped ||
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   392
       !iHasPlayed ||
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   393
       iError != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   394
      {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   395
      iTestStepResult = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   396
      }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   397
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   398
   // start the timer
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   399
   timeStart.UniversalTime();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   400
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   401
   // Play again
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   402
   iPlayer->Play();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   403
   CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   404
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   405
   // stop the timer
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   406
   timeEnd.UniversalTime();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   407
   TTimeIntervalMicroSeconds playDuration2 = 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   408
      timeEnd.MicroSecondsFrom(timeStart);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   409
   
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   410
   // calculate the difference (hopefully pretty small)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   411
   TInt64 playDurationDiff = 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   412
      playDuration2.Int64() - playDuration1.Int64();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   413
   // make sure it's a positive number
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   414
   if (playDurationDiff < 0)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   415
      playDurationDiff = -playDurationDiff;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   416
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   417
   INFO_PRINTF2(_L("Duration #1 = %d microseconds"), (long)(playDuration1.Int64()));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   418
   INFO_PRINTF2(_L("Duration #2 = %d microseconds"), (long)(playDuration2.Int64()));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   419
   INFO_PRINTF2(_L("Difference  = %d microseconds"), (long)playDurationDiff);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   420
   if (playDurationDiff > 250000)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   421
      {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   422
      INFO_PRINTF1(_L("Error: Difference is too high"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   423
   #ifdef __WINS__
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   424
      // under WINS these values can't be trusted due to both
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   425
      // background processing and timer resolution
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   426
      // report the difference as an error but still allow
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   427
      // the test to pass.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   428
      INFO_PRINTF1(_L("This is Emulator so allowing test to still pass..."));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   429
   #else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   430
      iTestStepResult = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   431
   #endif
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   432
      }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   433
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   434
   User::After(2000000);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   435
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   436
   err2 = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   437
   srcHandle = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   438
   err1 = GetAudPlayerState(iPlayer, state);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   439
   err2 = GetAudPlayerSourceHandle(iPlayer, srcHandle);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   440
   if ( err1 != KErrNone ||
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   441
       err2 != KErrNone ||
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   442
       &srcHandle == NULL ||
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   443
       state != CMMFMdaAudioPlayerUtility::EStopped ||
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   444
       !iHasPlayed ||
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   445
       iError != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   446
      {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   447
      INFO_PRINTF1(_L("Invalid player state"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   448
      iTestStepResult = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   449
      }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   450
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   451
	//__MM_HEAP_MARKEND;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   452
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   453
   INFO_PRINTF1(_L("finished with this test step"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   454
   // test steps return a result
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   455
   return iTestStepResult;
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
 * Static constructor for CTestStepPlayerPlayThreeTimes.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   461
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   462
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   463
 * @return   "CTestStepPlayerPlayThreeTimes*"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   464
 *         The constructed CTestStepPlayerPlayThreeTimes
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   465
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   466
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   467
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   468
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   469
CTestStepPlayerPlayThreeTimes* CTestStepPlayerPlayThreeTimes::NewL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   470
   {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   471
   CTestStepPlayerPlayThreeTimes* self = new(ELeave) CTestStepPlayerPlayThreeTimes;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   472
   return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   473
   }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   474
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   475
CTestStepPlayerPlayThreeTimes::CTestStepPlayerPlayThreeTimes()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   476
   : iHasPlayed(EFalse)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   477
   {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   478
   // store the name of this test case
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   479
   // this is the name that is used by the script file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   480
   iTestStepName = _L("MM-MMF-ACLNT-U-0013-CP");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   481
   }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   482
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   483
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   484
 * Implementation of the MMdaAudioPlayerCallback interface functions
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   485
 **/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   486
void CTestStepPlayerPlayThreeTimes::MapcInitComplete(TInt aError, const TTimeIntervalMicroSeconds& /*aDuration*/)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   487
   {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   488
   iError = aError;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   489
   CActiveScheduler::Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   490
   }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   491
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   492
void CTestStepPlayerPlayThreeTimes::MapcPlayComplete(TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   493
   {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   494
   iError = aError;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   495
   if (iError == KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   496
      iHasPlayed = ETrue;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   497
   CActiveScheduler::Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   498
   }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   499
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   500
TVerdict CTestStepPlayerPlayThreeTimes::DoTestStepPreambleL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   501
   {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   502
   TVerdict verdict;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   503
   // this installs the scheduler
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   504
   verdict = CTestStepUnitMMFAudClient::DoTestStepPreambleL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   505
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   506
   // Printing to the console and log file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   507
   INFO_PRINTF1(_L("MM-MMF-ACLNT-U-0013-CP"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   508
   INFO_PRINTF1(_L("This test is calling Play() three times"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   509
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   510
   iError = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   511
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   512
   if (!GetStringFromConfig(_L("SectionOne"), _L("AudioPlayFName2"), iFileName))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   513
      {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   514
      return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   515
      }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   516
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   517
   iPlayer = CMMFMdaAudioPlayerUtility::NewFilePlayerL(iFileName, *this);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   518
   CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   519
   User::After(1000000);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   520
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   521
   if (iPlayer == NULL || iError != KErrNone )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   522
       return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   523
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   524
   return verdict;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   525
   }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   526
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   527
TVerdict CTestStepPlayerPlayThreeTimes::DoTestStepPostambleL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   528
   {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   529
   delete iPlayer;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   530
   iPlayer = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   531
   //[ Destroy the scheduler ]
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   532
   return CTestStepUnitMMFAudClient::DoTestStepPostambleL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   533
   }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   534
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   535
TVerdict CTestStepPlayerPlayThreeTimes::DoTestStepL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   536
   {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   537
   // check if player openned the file successfully
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   538
//   TInt err1 = KErrNone;   // EABI warning removal
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   539
   TInt state = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   540
//   err1 = GetAudPlayerState(iPlayer, state);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   541
   GetAudPlayerState(iPlayer, state);   // EABI warning removal
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   542
   if ( state != CMMFMdaAudioPlayerUtility::EStopped )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   543
      return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   544
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   545
   TCallBack cb(PlayThreeTimesCallBack, this);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   546
   iTimer = CPeriodic::NewL(CActive::EPriorityLow);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   547
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   548
   // Play
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   549
   INFO_PRINTF1(_L("Playing for first time"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   550
   iPlayer->Play();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   551
   iTimer->Start(1500000, 3000000, cb);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   552
   CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   553
   if (iError != KErrNone || iHasPlayed)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   554
      {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   555
      INFO_PRINTF3(_L("Error playing first time  iError = %d, iHasPlayed = %d"), iError, iHasPlayed);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   556
      return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   557
      }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   558
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   559
   User::After(500000);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   560
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   561
   // Play again
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   562
   INFO_PRINTF1(_L("Playing for second time"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   563
   iPlayer->Play();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   564
   CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   565
   if (iError != KErrNone || !iHasPlayed)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   566
      {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   567
      INFO_PRINTF3(_L("Error playing second time  iError = %d, iHasPlayed = %d"), iError, iHasPlayed);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   568
      return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   569
      }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   570
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   571
   User::After(2000000);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   572
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   573
   // Play third time
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   574
   INFO_PRINTF1(_L("Playing for third time"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   575
   iPlayer->Play();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   576
   CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   577
   if (iError != KErrNone || !iHasPlayed)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   578
      {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   579
      INFO_PRINTF3(_L("Error playing third time  iError = %d, iHasPlayed = %d"), iError, iHasPlayed);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   580
      return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   581
      }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   582
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   583
   INFO_PRINTF1(_L("finished with this test step"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   584
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   585
   return iTestStepResult;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   586
   }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   587
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   588
TInt CTestStepPlayerPlayThreeTimes::PlayThreeTimesCallBack(TAny* aPtr)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   589
   {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   590
   CTestStepPlayerPlayThreeTimes* self = static_cast<CTestStepPlayerPlayThreeTimes*>(aPtr);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   591
   self->DoPlayThreeTimesCallBack();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   592
   return EFalse;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   593
   }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   594
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   595
void CTestStepPlayerPlayThreeTimes::DoPlayThreeTimesCallBack()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   596
   {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   597
   iPlayer->Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   598
   iTimer->Cancel();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   599
   CActiveScheduler::Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   600
   }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   601
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   602
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   603
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   604
 * Static constructor for CTestStepPlayerClosePlay.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   605
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   606
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   607
 * @return   "CTestStepPlayerPlay*"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   608
 *         The constructed CTestStepPlayerPlay
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   609
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   610
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   611
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   612
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   613
CTestStepPlayerClosePlay* CTestStepPlayerClosePlay::NewL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   614
   {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   615
   CTestStepPlayerClosePlay* self = new(ELeave) CTestStepPlayerClosePlay;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   616
   return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   617
   }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   618
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   619
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   620
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   621
 * Test step constructor.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   622
 * Each test step initialises its own name.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   623
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   624
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   625
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   626
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   627
CTestStepPlayerClosePlay::CTestStepPlayerClosePlay()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   628
   {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   629
   // store the name of this test case
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   630
   // this is the name that is used by the script file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   631
   iTestStepName = _L("MM-MMF-ACLNT-U-0015-CP");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   632
   }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   633
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   634
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   635
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   636
 * Test step destructor.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   637
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   638
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   639
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   640
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   641
CTestStepPlayerClosePlay::~CTestStepPlayerClosePlay()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   642
   {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   643
   }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   644
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   645
 * Implementation of the MMdaAudioPlayerCallback interface functions
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   646
 **/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   647
void CTestStepPlayerClosePlay::MapcInitComplete(TInt aError, 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   648
                        const TTimeIntervalMicroSeconds &/*aDuration*/)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   649
   {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   650
   iError = aError;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   651
   CActiveScheduler::Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   652
   }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   653
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   654
void CTestStepPlayerClosePlay::MapcPlayComplete(TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   655
   {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   656
   iError = aError;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   657
   CActiveScheduler::Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   658
   }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   659
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   660
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   661
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   662
 * Test step Preamble.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   663
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   664
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   665
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   666
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   667
TVerdict CTestStepPlayerClosePlay::DoTestStepPreambleL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   668
   {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   669
    // this installs the scheduler
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   670
    TVerdict verdict = CTestStepUnitMMFAudClient::DoTestStepPreambleL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   671
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   672
   // Printing to the console and log file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   673
    INFO_PRINTF1(_L("MM-MMF-ACLNT-U-0015-CP"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   674
    INFO_PRINTF1(_L("This test will call Play()->Close()->Play() and checks if the audioplayerutility is in stopped state after calling Close()"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   675
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   676
    iError = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   677
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   678
    if(!GetStringFromConfig(_L("SectionOne"), _L("AudioPlayFName1"), iFileName))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   679
      {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   680
       return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   681
      }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   682
    return verdict;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   683
   }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   684
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   685
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   686
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   687
 * Test step Postamble.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   688
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   689
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   690
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   691
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   692
TVerdict CTestStepPlayerClosePlay::DoTestStepPostambleL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   693
   {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   694
   //[ Destroy the scheduler ]
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   695
   return CTestStepUnitMMFAudClient::DoTestStepPostambleL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   696
   }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   697
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   698
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   699
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   700
 * Do the test step.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   701
 * Each test step must supply an implementation for DoTestStepL.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   702
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   703
 * @return   "TVerdict"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   704
 *         The result of the test step
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   705
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   706
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   707
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   708
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   709
TVerdict CTestStepPlayerClosePlay::DoTestStepL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   710
   {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   711
   TInt err = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   712
   TInt state = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   713
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   714
   CMMFMdaAudioPlayerUtility* player = CMMFMdaAudioPlayerUtility::NewL(*this);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   715
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   716
   if (player == NULL ||
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   717
       iError != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   718
      {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   719
       return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   720
      }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   721
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   722
   err = GetAudPlayerState(player, state);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   723
   if ( err != KErrNone || 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   724
       state != CMMFMdaAudioPlayerUtility::EStopped )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   725
      {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   726
      return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   727
      }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   728
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   729
   CleanupStack::PushL(player);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   730
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   731
   TRAP(err,player->OpenFileL(iFileName));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   732
   if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   733
      {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   734
      CleanupStack::PopAndDestroy(player);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   735
      return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   736
      }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   737
   CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   738
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   739
   INFO_PRINTF1(_L("Calling Play()"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   740
   player->Play();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   741
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   742
   INFO_PRINTF1(_L("Calling Close()"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   743
   player->Close(); 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   744
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   745
   // AudioPlayerUtility should be in EStopped state after calling Close().
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   746
   err = GetAudPlayerState(player, state);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   747
   if ( err != KErrNone || 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   748
       state != CMMFMdaAudioPlayerUtility::EStopped )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   749
      {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   750
      CleanupStack::PopAndDestroy(player);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   751
      return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   752
      }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   753
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   754
   TRAP(err,player->OpenFileL(iFileName));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   755
   if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   756
      {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   757
      CleanupStack::PopAndDestroy(player);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   758
      return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   759
      }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   760
   CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   761
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   762
   INFO_PRINTF1(_L("Calling Play()"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   763
   player->Play();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   764
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   765
   // AudioPlayerUtility should now be in EPlaying state.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   766
   err = GetAudPlayerState(player, state);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   767
   CleanupStack::PopAndDestroy(player);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   768
   if ( err != KErrNone || 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   769
       state != CMMFMdaAudioPlayerUtility::EPlaying )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   770
      {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   771
      return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   772
      }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   773
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   774
   INFO_PRINTF1(_L("finished with this test step"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   775
   
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   776
   // test steps return a result
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   777
   return EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   778
   }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   779
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   780
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   781
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   782
//----- Test for WAV  IMAADCPM Formats -----
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   783
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   784
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   785
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   786
 * Static constructor for CTestStepPlayerPlayWav.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   787
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   788
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   789
 * @return   "CTestStepPlayerPlayWav*"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   790
 *         The constructed CTestStepPlayerPlayWav
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   791
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   792
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   793
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   794
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   795
CTestStepPlayerPlayWav* CTestStepPlayerPlayWav::NewL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   796
   {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   797
   CTestStepPlayerPlayWav* self = new(ELeave) CTestStepPlayerPlayWav;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   798
   return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   799
   }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   800
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   801
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   802
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   803
 * Test step constructor.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   804
 * Each test step initialises its own name.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   805
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   806
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   807
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   808
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   809
CTestStepPlayerPlayWav::CTestStepPlayerPlayWav() : iHasPlayed(EFalse)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   810
   {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   811
   // store the name of this test case
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   812
   // this is the name that is used by the script file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   813
   iTestStepName = _L("MM-MMF-ACLNT-U-0854-HP");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   814
   }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   815
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   816
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   817
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   818
 * Test step destructor.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   819
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   820
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   821
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   822
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   823
CTestStepPlayerPlayWav::~CTestStepPlayerPlayWav()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   824
   {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   825
   }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   826
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   827
 * Implementation of the MMdaAudioPlayerCallback interface functions
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   828
 **/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   829
void CTestStepPlayerPlayWav::MapcInitComplete(TInt aError, 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   830
                        const TTimeIntervalMicroSeconds &/*aDuration*/)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   831
   {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   832
   iError = aError;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   833
   CActiveScheduler::Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   834
   }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   835
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   836
void CTestStepPlayerPlayWav::MapcPlayComplete(TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   837
   {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   838
   iError = aError;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   839
   if (iError == KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   840
      {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   841
      iHasPlayed = ETrue;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   842
      }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   843
   CActiveScheduler::Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   844
   }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   845
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   846
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   847
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   848
 * Do the test step.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   849
 * Each test step must supply an implementation for DoTestStepL.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   850
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   851
 * @return   "TVerdict"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   852
 *         The result of the test step
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   853
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   854
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   855
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   856
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   857
TVerdict CTestStepPlayerPlayWav::DoTestStepL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   858
   {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   859
   // Printing to the console and log file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   860
   INFO_PRINTF1(_L("MM-MMF-ACLNT-U-0854-HP"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   861
   INFO_PRINTF1(_L("This test will play the Wav IMAADPCM formats."));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   862
   
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   863
   TInt err = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   864
   TInt state = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   865
   TVerdict result = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   866
      
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   867
   RArray<TPtrC> array;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   868
   array.Append(_L("IMAADPCM4Bit8KHzMono.wav"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   869
   array.Append(_L("IMAADPCM 4-Bit,8KHz,Mono"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   870
   array.Append(_L("IMAADPCM4Bit11KHzMono.wav"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   871
   array.Append(_L("IMAADPCM 4-Bit,11KHz,Mono"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   872
   array.Append(_L("IMAADPCM4Bit22KHzMono.wav"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   873
   array.Append(_L("IMAADPCM 4-Bit,22KHz,Mono"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   874
   array.Append(_L("IMAADPCM4Bit8KHzMono512Block.wav"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   875
   array.Append(_L("IMAADPCM 4-Bit,8KHz,Mono"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   876
         
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   877
   CMMFMdaAudioPlayerUtility* player = CMMFMdaAudioPlayerUtility::NewL(*this);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   878
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   879
   if (player == NULL ||
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   880
       iError != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   881
      {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   882
       return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   883
      }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   884
   CleanupStack::PushL(player);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   885
   TInt count = array.Count();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   886
   for (TInt iter=0; iter<count; iter+=2)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   887
      {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   888
      TBuf<256> fileBuf;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   889
      fileBuf.Append(KFilePath);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   890
      // Append the file name
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   891
      fileBuf.Append(array[iter]);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   892
      
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   893
      INFO_PRINTF2(_L("Opening file = %S"), &fileBuf);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   894
      INFO_PRINTF2(_L("File info = %S"), &array[iter+1]);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   895
   
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   896
      TRAP(err,player->OpenFileL(fileBuf));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   897
      // If the opening fails, save the test result as fail and continue looping
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   898
      if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   899
         {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   900
         INFO_PRINTF3(_L("Opening file %S failed,error = %d"),&fileBuf,err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   901
         result = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   902
         continue;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   903
         }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   904
      CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   905
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   906
      player->Play();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   907
      
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   908
      CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   909
      
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   910
      // Close the file before opening the second file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   911
      player->Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   912
      
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   913
      err = GetAudPlayerState(player, state);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   914
      if (err != KErrNone ||
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   915
         state != CMMFMdaAudioPlayerUtility::EStopped ||
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   916
          !iHasPlayed ||
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   917
         iError != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   918
         {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   919
         INFO_PRINTF4(_L("Playing file %S failed,error = %d iHasPlayed = %d"),&fileBuf,err,iHasPlayed);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   920
         result = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   921
         }   
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   922
      }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   923
   CleanupStack::PopAndDestroy(player);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   924
   
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   925
   INFO_PRINTF1(_L("Finished with this test step"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   926
   // test steps return a result
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   927
   return result;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   928
   }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   929
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   930
RAudioPlayCompleteTest* RAudioPlayCompleteTest::NewL(const TDesC& aStepName, const TDesC& aFileName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   931
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   932
	RAudioPlayCompleteTest* self = new(ELeave)RAudioPlayCompleteTest(aStepName, aFileName);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   933
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   934
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   935
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   936
RAudioPlayCompleteTest::RAudioPlayCompleteTest(const TDesC& aStepName, const TDesC& aFileName):
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   937
	iFileName (aFileName), iUtility(NULL), iPlayStartTime(0)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   938
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   939
	iTestStepName = aStepName;	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   940
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   941
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   942
void RAudioPlayCompleteTest::KickoffTestL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   943
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   944
	INFO_PRINTF1(_L("INC103000:V&V_PATOS_3_W950i_error when audio file is finished"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   945
	iUtility = CMdaAudioPlayerUtility::NewL(*this);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   946
	iUtility->OpenFileL(iFileName);	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   947
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   948
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   949
void RAudioPlayCompleteTest::CloseTest()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   950
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   951
	delete iUtility;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   952
	iUtility = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   953
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   954
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   955
void RAudioPlayCompleteTest::MapcInitComplete(TInt aError, const TTimeIntervalMicroSeconds& aDuration)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   956
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   957
	if(aError != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   958
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   959
		StopTest(aError);		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   960
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   961
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   962
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   963
		iDuration = aDuration;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   964
		iPlayStartTime.UniversalTime();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   965
		iUtility->Play();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   966
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   967
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   968
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   969
void RAudioPlayCompleteTest::MapcPlayComplete(TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   970
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   971
	if(aError != KErrNone)	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   972
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   973
		INFO_PRINTF1(_L("Got play error"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   974
		StopTest(aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   975
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   976
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   977
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   978
		TTime curTime;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   979
		curTime.UniversalTime();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   980
		//add margin of 1 sec
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   981
		curTime += TTimeIntervalMicroSeconds(1000000);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   982
		TTimeIntervalMicroSeconds playDuration(curTime.MicroSecondsFrom(iPlayStartTime));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   983
		if(playDuration < iDuration)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   984
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   985
			INFO_PRINTF3(_L("Clip is not played till the end - playDuration %d iDuration %d"),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   986
						 TInt(playDuration.Int64()), TInt(iDuration.Int64()));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   987
			StopTest(EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   988
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   989
		else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   990
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   991
			StopTest(EPass);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   992
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   993
		}		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   994
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   995
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   996
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   997
// -------------------- Open a corrupt wav file, which has sampling rate 0xFFFFFFFF --------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   998
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   999
RAudioOpenCorrupt* RAudioOpenCorrupt::NewL(const TDesC& aStepName, const TDesC& aFileName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1000
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1001
	RAudioOpenCorrupt* self = new(ELeave)RAudioOpenCorrupt(aStepName, aFileName);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1002
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1003
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1004
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1005
RAudioOpenCorrupt::RAudioOpenCorrupt(const TDesC& aStepName, const TDesC& aFileName):
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1006
	iFileName (aFileName), iUtility(NULL)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1007
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1008
	iTestStepName = aStepName;	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1009
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1010
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1011
void RAudioOpenCorrupt::KickoffTestL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1012
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1013
	INFO_PRINTF1(_L("PDEF131534 SPPR_PERF: Music player crashes when opening corrupted wav file"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1014
	iUtility = CMdaAudioPlayerUtility::NewL(*this);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1015
	iUtility->OpenFileL(iFileName);	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1016
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1017
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1018
void RAudioOpenCorrupt::CloseTest()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1019
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1020
	delete iUtility;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1021
	iUtility = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1022
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1023
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1024
void RAudioOpenCorrupt::MapcInitComplete(TInt aError, const TTimeIntervalMicroSeconds& /*aDuration*/)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1025
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1026
	if(aError != KErrNotSupported)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1027
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1028
		if(aError==KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1029
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1030
			INFO_PRINTF1(_L("Received KErrNone while expecting KErrNotSupported"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1031
			StopTest(EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1032
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1033
		else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1034
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1035
			StopTest(aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1036
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1037
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1038
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1039
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1040
		INFO_PRINTF2(_L("Recevied %d as expected"),aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1041
		StopTest(EPass);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1042
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1043
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1044
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1045
void RAudioOpenCorrupt::MapcPlayComplete(TInt /*aError*/)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1046
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1047
	ASSERT(0);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1048
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1049
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1050
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1051
RAudioPlayPanicTest* RAudioPlayPanicTest::NewL(const TDesC& aStepName, const TDesC& aFileName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1052
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1053
	RAudioPlayPanicTest* self = new(ELeave)RAudioPlayPanicTest(aStepName, aFileName);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1054
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1055
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1056
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1057
RAudioPlayPanicTest::RAudioPlayPanicTest(const TDesC& aStepName, const TDesC& aFileName):
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1058
	RAudioPlayCompleteTest(aStepName, aFileName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1059
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1060
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1061
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1062
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1063
void RAudioPlayPanicTest::KickoffTestL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1064
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1065
	INFO_PRINTF1(_L("DEF127630:Fix for INC108007 appears to close "));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1066
	iUtility = CMdaAudioPlayerUtility::NewL(*this);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1067
	iUtility->OpenFileL(iFileName);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1068
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1069
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1070
void RAudioPlayPanicTest::MapcPlayComplete(TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1071
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1072
	if(aError != KErrServerTerminated)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1073
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1074
		INFO_PRINTF2(_L("Not received KErrDied as expected[%d]"), aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1075
		StopTest(aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1076
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1077
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1078
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1079
		StopTest(EPass);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1080
		}		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1081
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1082