imaging/imaginginttest/src/TestPositiveConversionNew.cpp
changeset 0 5752a19fdefe
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/imaging/imaginginttest/src/TestPositiveConversionNew.cpp	Wed Aug 25 12:29:52 2010 +0300
@@ -0,0 +1,687 @@
+// 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:
+// This file contains the test steps ICL positive testing for GT0210 MS3.4 File Handle APIs.
+// EPOC includes
+// 
+//
+
+#include <testframework.h>
+#include <icl/icl_uids.hrh>
+#ifdef SYMBIAN_ENABLE_SPLIT_HEADERS
+#include <icl/icl_uids_const.hrh>
+#include <icl/icl_uids_def.hrh>
+#endif
+#include "TestPositiveConversionNew.h"
+
+#include "ICLFbsSessionTest.h"
+
+const TInt KMaxMimeLength = 256;
+
+/**
+ * 
+ *
+ * Class Constructor
+ *
+ */
+CTestPositiveConversionNew::CTestPositiveConversionNew(const TDesC& aTestName) : 
+		 CTestStepConversion(aTestName)
+	{
+	iHeapSize = 500000;
+	}
+
+/**
+ * 
+ *
+ * NewL Method
+ *
+ */
+CTestPositiveConversionNew *CTestPositiveConversionNew::NewL(const TDesC& aTestName)
+	{
+	CTestPositiveConversionNew* self = new(ELeave) CTestPositiveConversionNew(aTestName);
+	return self;
+	}
+
+
+/**
+ * 
+ *
+ * do the test step
+ *
+ */
+TVerdict CTestPositiveConversionNew::DoTestStepL()
+	{
+	TVerdict currentVerdict = EPass;
+
+	if( (iTestStepName.Compare(_L("MM-ICL-FRM-I-0701-CP")) == 0)   ||
+		(iTestStepName.Compare(_L("MM-ICL-FRM-I-0702-CP")) == 0)   ||
+		(iTestStepName.Compare(_L("MM-ICL-FRM-I-0703-CP")) == 0)   ||
+		(iTestStepName.Compare(_L("MM-ICL-FRM-I-0704-CP")) == 0) )
+		{
+			currentVerdict = Step0701_0704_CPL();
+		}
+	else if( (iTestStepName.Compare(_L("MM-ICL-FRM-I-0705-CP")) == 0) ||
+			 (iTestStepName.Compare(_L("MM-ICL-FRM-I-0706-CP")) == 0) ||
+			 (iTestStepName.Compare(_L("MM-ICL-FRM-I-0707-CP")) == 0) ||
+			 (iTestStepName.Compare(_L("MM-ICL-FRM-I-0708-CP")) == 0) )
+		{
+			currentVerdict = Step0705_0708_CPL();
+		}
+	else if ( (iTestStepName.Compare(_L("MM-ICL-FRM-I-0709-CP")) == 0) ||
+			  (iTestStepName.Compare(_L("MM-ICL-FRM-I-0710-CP")) == 0) )
+		{
+			currentVerdict = Step0709_0710_CPL();
+		}
+	else if ( (iTestStepName.Compare(_L("MM-ICL-FRM-I-0711-CP")) == 0) ||
+			  (iTestStepName.Compare(_L("MM-ICL-FRM-I-0712-CP")) == 0) )
+		{
+			currentVerdict = Step0711_0712_CPL();
+		}
+
+	return currentVerdict;
+	}
+
+/**
+ * 
+ * Read, decode and verify different graphic formats
+ *	
+ * Step 0701_CP to 0704_CP
+ * 
+ */
+TVerdict CTestPositiveConversionNew::Step0701_0704_CPL()
+	{
+	TVerdict result = EFail;
+	TInt theErr = KErrNone;
+	TInt theErr1 = KErrNone;
+	
+	// dummy Hal call for heap balance on target
+	if (DummyHalCall() != KErrNone)
+		{
+		return EInconclusive;
+		}
+	
+	//__MM_HEAP_MARK;
+	//[ Connect RFs ]
+	User::LeaveIfError(iFs.Connect());
+	CleanupClosePushL(iFs);
+	User::LeaveIfError(iFs.ShareProtected());
+	
+	//[ Open the Source Image File using RFile ]
+	TFileName theSourceFilename;
+	Directory(EInput, theSourceFilename);
+	theSourceFilename.Append(iFileNameSrc);
+
+	INFO_PRINTF2(_L("Start : Open the file : %S by RFile"), &theSourceFilename);
+	TInt theRes = iFile.Open(iFs, theSourceFilename, EFileWrite);
+	User::LeaveIfError(theRes);
+	CleanupClosePushL(iFile);
+	INFO_PRINTF2(_L("End : Open the file : %S by RFile"), &theSourceFilename);
+
+	//[ Connect to RFbsSession ]
+	CICLFbsSessionTest* fbsSession = CICLFbsSessionTest::NewLC();
+
+	//[ Open the File for convert, using the 'FileNewL' APIs for each test step ]
+	INFO_PRINTF2(_L("Start : Open the file : %S by CImageDecoder::FileNewL"), &theSourceFilename);
+	if (iTestStepName.Compare(_L("MM-ICL-FRM-I-0701-CP")) == 0)
+		{
+		INFO_PRINTF1(_L("Read a JPEG,not specifying file type. Decode and verify JPEG."));
+		TRAP(theRes, iImageDecoder=CImageDecoder::FileNewL(iFile, EPlay));
+		}
+	else if (iTestStepName.Compare(_L("MM-ICL-FRM-I-0702-CP")) == 0)
+		{
+		INFO_PRINTF1(_L("Read a JPEG,specifying MIME type. Decode and verify JPEG."));
+		TBuf8<KMaxMimeLength> mimeType;
+		ReadMimeTypeFromConfig(mimeType);
+		TRAP(theRes, iImageDecoder=CImageDecoder::FileNewL(iFile, mimeType, EPlay));
+		}
+	else if (iTestStepName.Compare(_L("MM-ICL-FRM-I-0703-CP")) == 0)
+		{
+		INFO_PRINTF1(_L("Read a OTA, specifying image type. Decode and verify OTA."));
+		TRAP(theRes, iImageDecoder=CImageDecoder::FileNewL(iFile, EPlay, CImageDecoder::EOptionNone, iImageTypeUid, KNullUid, KNullUid));
+		}
+	else if (iTestStepName.Compare(_L("MM-ICL-FRM-I-0704-CP")) == 0)
+		{
+		INFO_PRINTF1(_L("Read a WBMP, specifying the Decoder UID. Decode and verify WBMP."));
+		TRAP(theRes, iImageDecoder=CImageDecoder::FileNewL(iFile, EPlay, CImageDecoder::EOptionNone, iImageTypeUid, KNullUid, TUid::Uid(KWBMPDecoderImplementationUidValue)));
+		}
+	User::LeaveIfError(theRes);
+	CleanupStack::PushL(iImageDecoder);
+	INFO_PRINTF2(_L("End : Open the file : %S by CImageDecoder::FileNewL"), &theSourceFilename);
+
+	//[ Call the main Decode Test Method ]
+	TRAP(theErr1, theErr = DecodeUsingDecoderL(iFileNameSrc));
+	
+	//[ Delete and Close Local ImageDecoder and iFs ]
+	CleanupStack::Pop();
+	delete iImageDecoder;
+	iImageDecoder = NULL;
+	
+	//[ Delete and Close RFs, RFile and FbsSession]
+	CleanupStack::PopAndDestroy(3);
+	//__MM_HEAP_MARKEND;
+
+	if(theErr1 != KErrNone)
+		{
+		theErr = theErr1;
+		}
+	if(theErr == KErrNone)
+		{
+		result = EPass;
+		}
+	else
+		{
+		INFO_PRINTF2(_L("Error : %d"), theErr);
+		}
+
+	return result;
+	}
+
+/**
+ * 
+ * Encode an image from bitmap to a file
+ *	
+ * Step 0705_CP to 0708_CP
+ * 
+ */
+TVerdict CTestPositiveConversionNew::Step0705_0708_CPL()
+	{
+	TVerdict result = EFail ;
+	TInt theErr = KErrNone;
+	TInt theErr1 = KErrNone;
+	TInt theRes = KErrNone;
+	
+	//__MM_HEAP_MARK;
+
+	//[ Connect RFs ]
+	User::LeaveIfError(iFs.Connect());
+	CleanupClosePushL(iFs);
+	User::LeaveIfError(iFs.ShareProtected());
+		
+	// [ Open the Destination File using RFile ]
+	TFileName theDestinationFileName; 
+	TBuf<KLenBuffer> theExtension;
+
+	Directory(EOutput, theDestinationFileName);
+	theDestinationFileName.Append(iFileNameSrc.Left(iFileNameSrc.Length()-3));
+	GetImageExtension(iImageTypeUid, theExtension);
+	theDestinationFileName.Append(theExtension);
+
+	INFO_PRINTF2(_L("Start : Open the file : %S by RFile"), &theDestinationFileName);
+	User::LeaveIfError(iFile.Replace(iFs, theDestinationFileName, EFileWrite));
+	CleanupClosePushL(iFile);
+	INFO_PRINTF2(_L("End : Open the file : %S by RFile"), &theDestinationFileName);
+
+	//[ Connect to RFbsSession ]
+	CICLFbsSessionTest* fbsSession = CICLFbsSessionTest::NewLC();
+	
+	//[ Open the File for convert, using the 'FileNewL' APIs for each test step ]
+	INFO_PRINTF2(_L("Start : Open the file : %S by CImageEncoder::FileNewL"), &theDestinationFileName);
+	if (iTestStepName.Compare(_L("MM-ICL-FRM-I-0705-CP")) == 0)
+		{
+		INFO_PRINTF1(_L("Encode an image from bitmap to a file, not specifying the file type."));
+		//Image type or encoder UID should be there, otherwise throws panic..
+		TRAP(theRes, iImageEncoder=CImageEncoder::FileNewL(iFile, CImageEncoder::EOptionNone, iImageTypeUid));
+		}
+	else if (iTestStepName.Compare(_L("MM-ICL-FRM-I-0706-CP")) == 0)
+		{
+		INFO_PRINTF1(_L("Encode an image from bitmap to a file, given the MIME Type"));
+		TBuf8<KMaxMimeLength> mimeType;
+		ReadMimeTypeFromConfig(mimeType);
+		TRAP(theRes, iImageEncoder=CImageEncoder::FileNewL(iFile, mimeType));
+		}
+	else if (iTestStepName.Compare(_L("MM-ICL-FRM-I-0707-CP")) == 0)
+		{
+		INFO_PRINTF1(_L("Encode an image from bitmap to a file, given the Image Type"));
+		TRAP(theRes, iImageEncoder=CImageEncoder::FileNewL(iFile, CImageEncoder::EOptionNone, iImageTypeUid, KNullUid, KNullUid));
+		}
+	else if (iTestStepName.Compare(_L("MM-ICL-FRM-I-0708-CP")) == 0)
+		{
+		INFO_PRINTF1(_L("Encode an image from bitmap to a file, given the Encoder UID."));
+		//The Image type has to be given for Decoder Implementation
+		TRAP(theRes, iImageEncoder=CImageEncoder::FileNewL(iFile, CImageEncoder::EOptionNone, KNullUid, KNullUid, TUid::Uid(KJPGEncoderImplementationUidValue)));
+		}
+	User::LeaveIfError(theRes);
+	
+	INFO_PRINTF2(_L("End : Open the file : %S by CImageEncoder::FileNewL"), &theDestinationFileName);
+	
+	//[ Call the main Encode Test Method ]
+	EncodeUsingEncoderL(iFileNameSrc);
+	
+	//[ Delete and Close ImageEncoder ]
+	
+	delete iImageEncoder;
+	iImageEncoder = NULL;
+	
+	//[ Delete and Close RFs, RFile and fbsSession]
+	CleanupStack::PopAndDestroy(3);
+	
+	//__MM_HEAP_MARKEND;
+
+	if(theErr1 != KErrNone)
+		{
+		theErr = theErr1;
+		}
+	if(theErr == KErrNone)
+		{
+		result = EPass;
+		}
+	else
+		{
+		INFO_PRINTF2(_L("Error : %d"), theErr);
+		}
+
+	return result;
+	}
+
+/**
+ * 
+ * Alloc tests to Encode an image from bitmap to a file
+ *	
+ * Step 0709_CP to 0710_CP
+ * 
+ */
+TVerdict CTestPositiveConversionNew::Step0709_0710_CPL()
+	{
+	//Traces
+	if (iTestStepName.Compare(_L("MM-ICL-FRM-I-0709-CP")) == 0)
+		{
+		INFO_PRINTF1(_L("Alloc tests to Encode an image from bitmap to a file, specifying the MIME Type."));
+		}
+	else if (iTestStepName.Compare(_L("MM-ICL-FRM-I-0710-CP")) == 0)
+		{
+		INFO_PRINTF1(_L("Alloc tests to Encode an image from bitmap to a file, NOT specifying the MIME Type."));
+		}
+	
+	//Check for Alloc Test Support
+	__UHEAP_SETFAIL(RHeap::EFailNext, 1);
+	TAny *testAllocSupport = User::Alloc(1);
+	if (testAllocSupport!=NULL)
+		{
+		delete testAllocSupport;
+		testAllocSupport=NULL;
+		INFO_PRINTF1(_L("This build does not support ALLOC testing"));
+		return EInconclusive;
+		}
+		
+	//Initialise Variables
+	TVerdict iAllocTestStepResult=EPass;
+	TInt err = KErrNone;
+	TBool badResult = EFalse;
+	
+	//>>>>>>>>>>>>>>>>>>>>>>>>Test Method Call<<<<<<<<<<<<<<<<<<<<<<<<<<
+	INFO_PRINTF1(_L("Executing the Test Method call Outside the FOR LOOP."));
+	TRAP(err, iAllocTestStepResult = TestStep0709_0710_CPL());
+	if (err != KErrNone)
+		{
+		INFO_PRINTF2(_L("Encoding error, returned error code =  %d"), err);
+		User::Leave(err);
+		}
+	else
+		{
+		//Check the iAllocTestStepResult
+		if (iAllocTestStepResult != EPass)
+			{
+			badResult = ETrue;
+			}
+		}	
+	
+	TInt failCount = 1;
+	TBool completed = EFalse;
+	iAllocTestStepResult = EPass; // reinitialise
+	TBool reachedEnd = EFalse; // Note: declare outside loop to help with debugging
+	for(;;)	
+		{
+		__UHEAP_SETFAIL(RHeap::EFailNext, failCount);
+		__MM_HEAP_MARK;
+
+		//>>>>>>>>>>>>>>>>>>>>>>>>Test Method Call<<<<<<<<<<<<<<<<<<<<<<<<<<
+		INFO_PRINTF2(_L("Executing the Test Method call #%d."), failCount);
+		TRAP(err, iAllocTestStepResult = TestStep0709_0710_CPL());
+		
+		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)
+				{
+				badResult = ETrue;
+				}
+			
+			completed = reachedEnd || badResult;
+			}
+		else if (err != KErrNoMemory) // bad error code
+			{
+			completed = ETrue;
+			badResult = 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 || badResult)
+		{
+		if (badResult)
+			{
+			INFO_PRINTF3(_L("  Bad result with %d memory allocations tested. The Error returned is %d"), failCount, err);
+			}
+		else
+			{
+			INFO_PRINTF3(_L("  Error(%d) with %d memory allocations tested\n"), err, failCount);
+			}
+		iAllocTestStepResult = EFail;
+		}
+	else 
+		{
+		INFO_PRINTF2(_L("  Completed OK with %d memory allocations tested\n"), failCount);
+		iAllocTestStepResult = EPass;
+		}
+		return iAllocTestStepResult;
+	}
+
+/**
+ * 
+ * Alloc test main test step to Encode an image from bitmap to a file
+ *	
+ * Step 0709_CP to 0710_CP
+ * 
+ */
+TVerdict CTestPositiveConversionNew::TestStep0709_0710_CPL()
+	{
+	TInt theRes = KErrNone;
+	
+	//__MM_HEAP_MARK;
+
+	//[ Connect RFs ]
+	User::LeaveIfError(iFs.Connect());
+	CleanupClosePushL(iFs);
+	User::LeaveIfError(iFs.ShareProtected());
+	
+	// [ Open the Destination File using RFile ]
+	TFileName theDestinationFileName; 
+	TBuf<KLenBuffer> theExtension;
+
+	Directory(EOutput, theDestinationFileName);
+	theDestinationFileName.Append(iFileNameSrc.Left(iFileNameSrc.Length()-3));
+	GetImageExtension(iImageTypeUid, theExtension);
+	theDestinationFileName.Append(theExtension);
+
+	INFO_PRINTF2(_L("Start : Open the file : %S by RFile"), &theDestinationFileName);
+	User::LeaveIfError(iFile.Replace(iFs, theDestinationFileName, EFileWrite));
+	CleanupClosePushL(iFile);
+	INFO_PRINTF2(_L("End : Open the file : %S by RFile"), &theDestinationFileName);
+	
+	//[ Connect to RFbsSession ]
+	CICLFbsSessionTest* fbsSession = CICLFbsSessionTest::NewLC();
+	
+	//[ Open the File for convert, using the 'FileNewL' APIs for each test step ]
+	INFO_PRINTF2(_L("Start : Open the file : %S by CImageEncoder::FileNewL"), &theDestinationFileName);
+	if (iTestStepName.Compare(_L("MM-ICL-FRM-I-0709-CP")) == 0)
+		{
+		//INFO_PRINTF1(_L("Alloc tests to Encode an image from bitmap to a file, specifying the MIME Type."));
+		TBuf8<KMaxMimeLength> mimeType;
+		ReadMimeTypeFromConfig(mimeType);
+		TRAP(theRes, iImageEncoder=CImageEncoder::FileNewL(iFile, mimeType));
+		}
+	else if (iTestStepName.Compare(_L("MM-ICL-FRM-I-0710-CP")) == 0)
+		{
+		//INFO_PRINTF1(_L("Alloc tests to Encode an image from bitmap to a file, NOT specifying the MIME Type."));
+		//The Image type has to be given for Decoder Implementation
+		TRAP(theRes, iImageEncoder=CImageEncoder::FileNewL(iFile, CImageEncoder::EOptionNone, KNullUid, KNullUid, TUid::Uid(KJPGEncoderImplementationUidValue)));
+		}
+	User::LeaveIfError(theRes);
+
+	INFO_PRINTF2(_L("End : Open the file : %S by CImageEncoder::FileNewL"), &theDestinationFileName);
+	
+	//[ Call the main Encode Test Method ]
+	TRAPD(err, EncodeUsingEncoderL(iFileNameSrc));
+	if (err != KErrNone)
+	{
+	delete iImageEncoder;
+	iImageEncoder = NULL;
+
+	User::Leave(err);
+	}
+	
+	//[ Delete and Close ImageEncoder ]
+
+	delete iImageEncoder;
+	iImageEncoder = NULL;
+	
+	//[ Delete and Close RFs, RFile and fbsSession]
+	CleanupStack::PopAndDestroy(3);
+	
+	//__MM_HEAP_MARKEND;
+
+	return EPass;
+	}
+
+
+
+/**
+ * 
+ * Alloc tests to Read, decode and verify JPEG.
+ *	
+ * Step 0711_CP to 0712_CP
+ * 
+ */
+TVerdict CTestPositiveConversionNew::Step0711_0712_CPL()
+	{
+	//Traces
+	if (iTestStepName.Compare(_L("MM-ICL-FRM-I-0711-CP")) == 0)
+		{
+		INFO_PRINTF1(_L("Alloc tests to Read, decode and verify JPEG, specifying the MIME Type."));
+		}
+	else if (iTestStepName.Compare(_L("MM-ICL-FRM-I-0712-CP")) == 0)
+		{
+		INFO_PRINTF1(_L("Alloc tests to Read, decode and verify JPEG, NOT specifying the MIME Type."));
+		}
+		
+	//Check for Alloc Test Support
+	__UHEAP_SETFAIL(RHeap::EFailNext, 1);
+	TAny *testAllocSupport = User::Alloc(1);
+	if (testAllocSupport!=NULL)
+		{
+		delete testAllocSupport;
+		testAllocSupport=NULL;
+		INFO_PRINTF1(_L("This build does not support ALLOC testing"));
+		return EInconclusive;
+		}
+	
+	//Initialise Variables
+	TVerdict iAllocTestStepResult=EPass;
+	TInt err = KErrNone;
+	TBool badResult = EFalse;
+	
+	//>>>>>>>>>>>>>>>>>>>>>>>>Test Method Call<<<<<<<<<<<<<<<<<<<<<<<<<<
+	INFO_PRINTF1(_L("Executing the Test Method call Outside the FOR LOOP."));
+	TRAP(err, iAllocTestStepResult = TestStep0711_0712_CPL());
+	if (err != KErrNone)
+		{
+		INFO_PRINTF2(_L("Decoding error, returned error code =  %d"), err);
+		User::Leave(err);
+		}
+	else
+		{
+		//Check the iAllocTestStepResult
+		if (iAllocTestStepResult != EPass)
+			{
+			badResult = ETrue;
+			}
+		}
+	
+	TInt failCount = 1;
+	TBool completed = EFalse;
+	iAllocTestStepResult = EPass; // reinitialise
+	TBool reachedEnd = EFalse; // Note: declare outside loop to help with debugging
+	for(;;)	
+		{
+		__UHEAP_SETFAIL(RHeap::EFailNext, failCount);
+		//__MM_HEAP_MARK;
+
+		//>>>>>>>>>>>>>>>>>>>>>>>>Test Method Call<<<<<<<<<<<<<<<<<<<<<<<<<<
+		INFO_PRINTF2(_L("Executing the Test Method call #%d."), failCount);
+		TRAP(err, iAllocTestStepResult = TestStep0711_0712_CPL());
+		
+		completed = EFalse;
+		if (err == KErrNone)
+			{
+			TAny *testAlloc = NULL;
+			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);
+				testAlloc=NULL;
+				}			
+			
+			//Check the iAllocTestStepResult
+			if (iAllocTestStepResult != EPass)
+				{
+				badResult = ETrue;
+				}
+			
+			completed = reachedEnd || badResult;
+			}
+		else if (err != KErrNoMemory) // bad error code
+			{
+			completed = ETrue;
+			badResult = 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 || badResult)
+		{
+		if (badResult)
+			{
+			INFO_PRINTF3(_L("  Bad result with %d memory allocations tested. The Error returned is %d"), failCount, err);
+			}
+		else
+			{
+			INFO_PRINTF3(_L("  Error(%d) with %d memory allocations tested\n"), err, failCount);
+			}
+		iAllocTestStepResult = EFail;
+		}
+	else 
+		{
+		INFO_PRINTF2(_L("  Completed OK with %d memory allocations tested\n"), failCount);
+		iAllocTestStepResult = EPass;
+		}
+		return iAllocTestStepResult;
+	}
+
+/**
+ * 
+ * Alloc test main test step to Read, decode and verify JPEG.
+ *	
+ * Step 0711_CP to 0712_CP
+ * 
+ */
+TVerdict CTestPositiveConversionNew::TestStep0711_0712_CPL()
+	{
+	TInt theRes = KErrNone;
+	
+	// dummy Hal call for heap balance on target
+	//if (DummyHalCall() != KErrNone)
+	//	return EInconclusive;
+	
+	//__MM_HEAP_MARK;
+	//[ Connect RFs ]
+	User::LeaveIfError(iFs.Connect());
+	CleanupClosePushL(iFs);
+	User::LeaveIfError(iFs.ShareProtected());
+	
+	//[ Open the Source Image File using RFile ]
+	TFileName theSourceFilename;
+	Directory(EInput, theSourceFilename);
+	theSourceFilename.Append(iFileNameSrc);
+
+	INFO_PRINTF2(_L("Start : Open the file : %S by RFile"), &theSourceFilename);
+	theRes = iFile.Open(iFs, theSourceFilename, EFileWrite);
+	User::LeaveIfError(theRes);
+	CleanupClosePushL(iFile);
+	INFO_PRINTF2(_L("End : Open the file : %S by RFile"), &theSourceFilename);
+	
+	//[ Connect to RFbsSession ]
+	CICLFbsSessionTest* fbsSession = CICLFbsSessionTest::NewLC();
+
+	//[ Open the File for convert, using the 'FileNewL' APIs for each test step ]
+	INFO_PRINTF2(_L("Start : Open the file : %S by CImageDecoder::FileNewL"), &theSourceFilename);
+	if (iTestStepName.Compare(_L("MM-ICL-FRM-I-0711-CP")) == 0)
+		{
+		//INFO_PRINTF1(_L("Alloc tests to Read, decode and verify JPEG, specifying the MIME Type."));
+		TBuf8<KMaxMimeLength> mimeType;
+		ReadMimeTypeFromConfig(mimeType);
+		TRAP(theRes, iImageDecoder=CImageDecoder::FileNewL(iFile, mimeType, EPlay));
+		}
+	else if (iTestStepName.Compare(_L("MM-ICL-FRM-I-0712-CP")) == 0)
+		{
+		//INFO_PRINTF1(_L("Alloc tests to Read, decode and verify JPEG, NOT specifying the MIME Type."));
+		TRAP(theRes, iImageDecoder=CImageDecoder::FileNewL(iFile, EPlay, CImageDecoder::EOptionNone, iImageTypeUid, KNullUid, TUid::Uid(KJPGDecoderImplementationUidValue)));
+		}
+	User::LeaveIfError(theRes);
+	CleanupStack::PushL(iImageDecoder);
+	INFO_PRINTF2(_L("End : Open the file : %S by CImageDecoder::FileNewL"), &theSourceFilename);
+	
+	//[ Call the main Decode Test Method ]
+	User::LeaveIfError(DecodeUsingDecoderL(iFileNameSrc));
+	
+	//[ Delete and Close Local ImageDecoder ]
+	CleanupStack::Pop();
+	delete iImageDecoder;
+	iImageDecoder = NULL;
+	
+	//[ Delete and Close RFs, RFile and fbsSession]
+	CleanupStack::PopAndDestroy(3);
+	
+	//__MM_HEAP_MARKEND;
+
+	return EPass;
+	}
+