diff -r 000000000000 -r bde4ae8d615e os/mm/mmlibs/mmfw/tsrc/mmfintegrationtest/ACLNT/TestPlayerFileSource.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/os/mm/mmlibs/mmfw/tsrc/mmfintegrationtest/ACLNT/TestPlayerFileSource.cpp Fri Jun 15 03:10:57 2012 +0200 @@ -0,0 +1,329 @@ +// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// Integration tests. +// This program is designed the test of the MMF_ACLNT. +// +// + +/** + @file TestPlayerFileSource.cpp +*/ + +#include "TestPlayerUtils.h" +#include "TestPlayerFileSource.h" + +// +// CTestMmfAclntFileSource +// + +/** + * Constructor + */ +CTestMmfAclntFileSource::CTestMmfAclntFileSource(const TDesC& aTestName,const TDesC& aSectName, + const TDesC& aKeyName,const TBool aPlay, + const TInt aExpectedError) + :iPlay (aPlay) + ,iExpectedError (aExpectedError) + { + // store the name of this test case + iTestStepName = aTestName; + // store the section-name of the ini file + iSectName = aSectName; + // store the key-name of the ini file + iKeyName = aKeyName; + } + +/** + * NewL + */ +CTestMmfAclntFileSource* CTestMmfAclntFileSource::NewL(const TDesC& aTestName, const TDesC& aSectName, + const TDesC& aKeyName,const TBool aPlay, + const TInt aExpectedError = KErrNone) + { + CTestMmfAclntFileSource* self = new (ELeave) CTestMmfAclntFileSource(aTestName,aSectName,aKeyName,aPlay,aExpectedError); + return self; + } + +/** + * NewLC + */ +CTestMmfAclntFileSource* CTestMmfAclntFileSource::NewLC(const TDesC& aTestName, const TDesC& aSectName, + const TDesC& aKeyName, + const TBool aPlay, + const TInt aExpectedError) + { + CTestMmfAclntFileSource* self = CTestMmfAclntFileSource::NewL(aTestName,aSectName,aKeyName,aPlay,aExpectedError); + CleanupStack::PushL(self); + return self; + } + +/** + * MapcInitComplete + */ +void CTestMmfAclntFileSource::MapcInitComplete(TInt aError, const TTimeIntervalMicroSeconds &aDuration) + { + iError = aError; + iDuration = aDuration; + INFO_PRINTF1( _L("MMdaAudioPlayerCallback Init Complete")); + CActiveScheduler::Stop(); + } + +/** + * MapcPlayComplete + */ +void CTestMmfAclntFileSource::MapcPlayComplete(TInt aError) + { + iError = aError; + INFO_PRINTF1( _L("MMdaAudioPlayerCallback Play Complete")); + CActiveScheduler::Stop(); + } + +/** + * Load and initialise an audio file. + */ +TVerdict CTestMmfAclntFileSource::DoTestStepL( void ) + { + INFO_PRINTF1( _L("TestPlayerUtils : File")); + TVerdict ret = EFail; + + iError = KErrTimedOut; + + TBuf filename; + TPtrC filename1; + + if(!GetStringFromConfig(iSectName,iKeyName,filename1)) + { + return EInconclusive; + } + + GetDriveName(filename); + filename.Append(filename1); + + // Create CMdaAudioPlayerUtility Object + CMdaAudioPlayerUtility* player = NULL; + player = CMdaAudioPlayerUtility::NewL(*this); + + // Create TMMFileSource Object + TMMFileSource filesource(filename); + player->OpenFileL(filesource); + + // Wait for initialisation callback + INFO_PRINTF1(_L("Initialise CMdaAudioPlayerUtility")); + CActiveScheduler::Start(); + + // Check for expected errors. + if(iError != KErrNone && (iExpectedError == iError)) + { + ret = EPass; // all other tests pass + delete player; + User::After(KOneSecond); // wait for deletion to shut down devsound + ERR_PRINTF2( _L("CMdaAudioPlayerUtility failed with expected error %d"),iError ); + return ret; + } + + // Check for errors (after OPEN). + if (iError == KErrNone && player != NULL) + { + if(iPlay) + { + iError = KErrTimedOut; + player->Play(); + + // Wait for play complete callback + INFO_PRINTF1(_L("Play CMdaAudioPlayerUtility")); + CActiveScheduler::Start(); + + // Check for Callback errors + if(iError == KErrNone) + { + ret = EPass; + } + } + else + { + ret = EPass; + } + } + + // Clean up activities. + delete player; + User::After(KOneSecond); // wait for deletion to shut down devsound + + // Check for errors (final check). + if(iError != KErrNone) + { + ERR_PRINTF2( _L("CMdaAudioPlayerUtility failed with error %d"),iError ); + } + return ret; + } + +// +// CTestMmfAclntFileHandleSource +// + +/** + * Constructor + */ +CTestMmfAclntFileHandleSource::CTestMmfAclntFileHandleSource(const TDesC& aTestName,const TDesC& aSectName, + const TDesC& aKeyName,const TBool aPlay, + const TInt aExpectedError) + :iPlay (aPlay) + ,iExpectedError (aExpectedError) + { + // store the name of this test case + iTestStepName = aTestName; + // store the section-name of the ini file + iSectName = aSectName; + // store the key-name of the ini file + iKeyName = aKeyName; + } + +/** + * NewL + */ +CTestMmfAclntFileHandleSource* CTestMmfAclntFileHandleSource::NewL(const TDesC& aTestName, const TDesC& aSectName, + const TDesC& aKeyName,const TBool aPlay, + const TInt aExpectedError = KErrNone) + { + CTestMmfAclntFileHandleSource* self = new (ELeave) CTestMmfAclntFileHandleSource(aTestName,aSectName,aKeyName,aPlay,aExpectedError); + return self; + } + +/** + * NewLC + */ +CTestMmfAclntFileHandleSource* CTestMmfAclntFileHandleSource::NewLC(const TDesC& aTestName, const TDesC& aSectName, + const TDesC& aKeyName, + const TBool aPlay, + const TInt aExpectedError) + { + CTestMmfAclntFileHandleSource* self = CTestMmfAclntFileHandleSource::NewL(aTestName,aSectName,aKeyName,aPlay,aExpectedError); + CleanupStack::PushL(self); + return self; + } + +/** + * MapcInitComplete + */ +void CTestMmfAclntFileHandleSource::MapcInitComplete(TInt aError, const TTimeIntervalMicroSeconds &aDuration) + { + iError = aError; + iDuration = aDuration; + INFO_PRINTF1( _L("MMdaAudioPlayerCallback Init Complete")); + CActiveScheduler::Stop(); + } + +/** + * MapcPlayComplete + */ +void CTestMmfAclntFileHandleSource::MapcPlayComplete(TInt aError) + { + iError = aError; + INFO_PRINTF1( _L("MMdaAudioPlayerCallback Play Complete")); + CActiveScheduler::Stop(); + } + +/** + * Load and initialise an audio file. + */ +TVerdict CTestMmfAclntFileHandleSource::DoTestStepL( void ) + { + INFO_PRINTF1( _L("TestPlayerUtils : File")); + TVerdict ret = EFail; + + iError = KErrTimedOut; + + // Get the file name. + TBuf filename; + TPtrC filename1; + if(!GetStringFromConfig(iSectName,iKeyName,filename1)) + { + return EInconclusive; + } + GetDriveName(filename); + filename.Append(filename1); + + // Create CMdaAudioPlayerUtility Object + CMdaAudioPlayerUtility* player = NULL; + player = CMdaAudioPlayerUtility::NewL(*this); + + // Create RFs and RFile Objects + RFs fs; + User::LeaveIfError(fs.Connect()); + CleanupClosePushL(fs); + User::LeaveIfError(fs.ShareProtected()); + + RFile file; + User::LeaveIfError( file.Open( fs, filename, EFileRead ) ); + CleanupClosePushL(file); + + // Create TMMFileSource Object + TMMFileHandleSource filehandlesource(file); + player->OpenFileL(filehandlesource); + + // Wait for initialisation callback + INFO_PRINTF1(_L("CMdaAudioPlayerUtility->OpenFileL(TMMFileHandleSource)")); + CActiveScheduler::Start(); + + // Check for expected errors. + if((iError != KErrNone) && (iExpectedError == iError)) + { + ERR_PRINTF2(_L("CMdaAudioPlayerUtility->OpenFileL() Returned the Expected Error : %d"),iError); + ret=EPass; + } + + // Check for errors. + if(iError != KErrNone) + { + ERR_PRINTF2(_L("CMdaAudioPlayerUtility->OpenFileL() Failed with Error : %d"),iError); + ret=EFail; + } + + // Check for No errors, so as to start Playback + if (iError == KErrNone && player != NULL) + { + if(iPlay) + { + iError = KErrTimedOut; + player->Play(); + + // Wait for play complete callback + INFO_PRINTF1(_L("CMdaAudioPlayerUtility->Play()")); + CActiveScheduler::Start(); + + // Check for Callback errors + if(iError == KErrNone) + { + ERR_PRINTF2(_L("CMdaAudioPlayerUtility->Play() completed successfully with return code : %d"),iError); + ret = EPass; + } + else + { + ERR_PRINTF2(_L("CMdaAudioPlayerUtility->Play() Failed with Error : %d"),iError ); + ret = EFail; + } + } + else + { + ret = EPass; + } + } + + // Clean up activities. + delete player; + User::After(KOneSecond); // wait for deletion to shut down devsound + CleanupStack::PopAndDestroy(2); + + return ret; + }