mmlibs/mmfw/tsrc/mmfintegrationtest/ACLNT/OpenFileByHandle7806.cpp
changeset 0 40261b775718
child 31 ae0addfe117e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmlibs/mmfw/tsrc/mmfintegrationtest/ACLNT/OpenFileByHandle7806.cpp	Tue Feb 02 01:56:55 2010 +0200
@@ -0,0 +1,201 @@
+// 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:
+//
+
+#include "TestPlayerUtils.h"
+#include "OpenFileByHandle7806.h"
+
+CTestMmfAclntOpenFile7806::CTestMmfAclntOpenFile7806(const TDesC& aTestName, const TDesC& aSectName)
+	: CTestMmfAclntOpenFile7804(aTestName, aSectName)
+	{}
+
+CTestMmfAclntOpenFile7806* CTestMmfAclntOpenFile7806::NewL(const TDesC& aTestName, const TDesC& aSectName)
+	{
+	CTestMmfAclntOpenFile7806* self = new (ELeave) CTestMmfAclntOpenFile7806(aTestName, aSectName);
+	return self;
+	}
+
+/**
+ * Open new file.
+ */
+TVerdict CTestMmfAclntOpenFile7806::DoTestL(CMdaAudioPlayerUtility* aPlayer)
+	{
+	TVerdict iAllocTestStepResult=EPass;
+	TInt err = KErrNone;
+	TBool result = EFalse;
+	
+	//>>>>>>>>>>>>>>>>>>>>>>>>Test Method Call<<<<<<<<<<<<<<<<<<<<<<<<<<
+	if( PerformTestL(aPlayer) != EPass )
+		{
+		err = iError;
+		}
+
+	if (err != KErrNone)
+		{
+		INFO_PRINTF2(_L("Test error, returned error code =  %d"), err);
+		User::Leave(err);
+		}
+	else
+		{
+		//Check the iAllocTestStepResult
+		if (iAllocTestStepResult != EPass)
+			{
+			result = ETrue;
+			}
+		}	
+	
+	TInt failCount = 1;
+	TBool completed = EFalse;
+	iAllocTestStepResult = EPass; // TODO check?? assume pass
+	TBool reachedEnd = EFalse; // Note: declare outside loop to help with debugging
+	for(;;)	
+		{
+		__UHEAP_SETFAIL(RHeap::EFailNext, failCount);
+		__MM_HEAP_MARK;
+
+		//>>>>>>>>>>>>>>>>>>>>>>>>Test Method Call<<<<<<<<<<<<<<<<<<<<<<<<<<
+		TVerdict verdict = EFail;
+		TRAP(err, verdict = PerformTestL(aPlayer));
+		
+		if (err == KErrNone && verdict != EPass) 
+			{
+			err = iError;
+			}
+
+		completed = EFalse;
+		if (err == KErrNone)
+			{
+			TAny *testAlloc = User::Alloc(1); // when this fails, we passed through all allocs within test
+			if (testAlloc == NULL)
+				{
+				reachedEnd = ETrue;
+				failCount -= 1;
+				}
+			else
+				{
+				User::Free(testAlloc);	
+				}			
+			
+			//Check the iAllocTestStepResult
+			if (iAllocTestStepResult != EPass)
+				{
+				result = ETrue;
+				}
+			
+			completed = reachedEnd || result;
+			}
+		else if (err != KErrNoMemory) // bad error code
+			{
+			completed = ETrue;
+			result = EFail;
+			}			
+
+		__MM_HEAP_MARKEND;
+		__UHEAP_SETFAIL(RHeap::ENone, 0);
+
+		if (completed)
+			{
+			break; // exit loop
+			}
+
+		failCount++;
+		}
+
+	failCount -= 1; // Failcount of 1 equates to 0 successful allocs, etc
+
+	if (err != KErrNone || result)
+		{
+		TBuf<80> format;
+		iAllocTestStepResult = EFail;
+		if (result)
+			{
+			format.Format(_L("  Bad result with %d memory allocations tested\n"), failCount);
+			}
+		else
+			{
+			format.Format(_L("  Error(%d) with %d memory allocations tested\n"), err, failCount);
+			}
+		Log(format);
+		}
+	else 
+		{
+		TBuf<80> format;
+		format.Format(_L("  Completed OK with %d memory allocations tested\n"), failCount);
+		Log(format);
+		}
+
+	return iAllocTestStepResult;
+	}
+
+CTestMmfAclntRepeatPlayAlloc::CTestMmfAclntRepeatPlayAlloc(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName)
+	: CTestMmfAclntOpenFile7806(aTestName, aSectName), iSectName(aSectName),iKeyName(aKeyName)
+	{}
+
+CTestMmfAclntRepeatPlayAlloc* CTestMmfAclntRepeatPlayAlloc::NewL(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName)
+	{
+	CTestMmfAclntRepeatPlayAlloc* self = new (ELeave) CTestMmfAclntRepeatPlayAlloc(aTestName, aSectName, aKeyName);
+	return self;
+	}
+
+TVerdict CTestMmfAclntRepeatPlayAlloc::PerformTestL(CMdaAudioPlayerUtility* aPlayer)
+	{
+	INFO_PRINTF1( _L("TestPlayerUtils : OpenFileL(RFile&)/Play"));
+	TInt repeatCount;
+	TVerdict ret = EFail;
+	iError = KErrNone;
+
+	RFs fs;
+
+	User::LeaveIfError(fs.Connect());
+	CleanupClosePushL(fs);
+	User::LeaveIfError(fs.ShareProtected());
+
+	TBuf<KSizeBuf>	filename;
+	TPtrC			filename1; 
+	RFile			file;
+
+	if(!GetStringFromConfig(iSectName, iKeyName, filename1))
+		{
+		return EInconclusive;
+		}
+
+	GetDriveName(filename);
+	filename.Append(filename1);
+
+	User::LeaveIfError( file.Open( fs, filename, EFileRead ) );
+	CleanupClosePushL(file);
+	if(!GetIntFromConfig(_L("SectionRepeatCount"), _L("numOfRepeat"), repeatCount))
+		{
+		return EInconclusive;
+		}
+	aPlayer->SetRepeats(repeatCount, TTimeIntervalMicroSeconds(2));
+	aPlayer->OpenFileL(file);
+	CActiveScheduler::Start();
+	
+	if (iError == KErrNone)
+		{
+		aPlayer->Play();
+		CActiveScheduler::Start();
+		}
+
+	if (iError == KErrNone)
+		{
+		ret = EPass;
+		}
+	
+	aPlayer->Close();	
+	CleanupStack::PopAndDestroy(2, &fs);
+
+	return ret;
+	}