imagingandcamerafws/imagingunittest/tsu_icl_mediasvr/src/MediaSvrTest.cpp
changeset 0 40261b775718
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/imagingandcamerafws/imagingunittest/tsu_icl_mediasvr/src/MediaSvrTest.cpp	Tue Feb 02 01:56:55 2010 +0200
@@ -0,0 +1,2266 @@
+// Copyright (c) 2002-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 implementation of the unit test steps for
+// the MediaSvr backwards compatibility layer
+// 
+//
+
+// EPOC includes
+#include <e32base.h>
+
+// Test system includes
+#include <testframework.h>
+
+// Specific includes for this test suite
+#include <mdaimageconverter.h>
+#include "TestStepMediaSvr.h"
+#include "TestSuiteMediaSvr.h"
+
+#include "MediaSvrTest.h"
+#include "TMDATEST.H"
+#include "ICLFbsSessionTest.h"
+
+const TInt KArrayGranularity5 = 5;
+
+TMdaInvalidClipFormat::TMdaInvalidClipFormat()
+	:TMdaClipFormat(KUidMdaVideoCurrentFrame,sizeof(TMdaInvalidClipFormat))
+	{	
+	} 
+
+
+// --------------------------------------------
+/**
+ *
+ * Static constructor for CMediaSvrTest.
+ *
+ *
+ * @return	"CMediaSvrTest*"
+ *			The constructed CMediaSvrTest
+ *
+ * @xxxx
+ * 
+ */
+CMediaSvrTest* CMediaSvrTest::NewL()
+	{
+	CMediaSvrTest* self = new(ELeave) CMediaSvrTest;
+	return self;
+	}
+/**
+ *
+ * Test step constructor.
+ * Each test step initialises its own name.
+ *
+ * @xxxx
+ * 
+ */
+CMediaSvrTest::CMediaSvrTest()
+	{
+	// store the name of this test case
+	// this is the name that is used by the script file
+	iTestStepName = _L("MM-ICL-MEDIASVR-U-001");
+
+	// Heap size necessary for PNG and JPEG decoders
+	iHeapSize = 200000;
+	}
+
+/**
+ *
+ * Pre-test setup. Create array of test images
+ *
+ * @return	"TVerdict"
+ *			Whether the test preamble completed successfully
+ *
+ * @xxxx
+ * 
+ */
+TVerdict CMediaSvrTest::DoTestStepPreambleL()
+	{
+	iTestImages = new (ELeave) CArrayFixFlat<TTestImage>(KArrayGranularity5);
+
+	iTestImages->AppendL(TTestImage(KMediaSvrTest1BppBmp,&iBmpFormat,&iBmp1BppCodec));
+	iTestImages->AppendL(TTestImage(KMediaSvrTest4BppBmp,&iBmpFormat,&iBmp4BppCodec));
+	iTestImages->AppendL(TTestImage(KMediaSvrTest8BppBmp,&iBmpFormat,&iBmp8BppCodec));
+	iTestImages->AppendL(TTestImage(KMediaSvrTest24BppBmp,&iBmpFormat,&iBmp24BppCodec));
+
+	iTestImages->AppendL(TTestImage(KMediaSvrTestJfifMono,&iJfifFormat,NULL));
+	iTestImages->AppendL(TTestImage(KMediaSvrTestJfif420,&iJfifFormat,NULL));
+	iTestImages->AppendL(TTestImage(KMediaSvrTestJfif422,&iJfifFormat,NULL));
+	iTestImages->AppendL(TTestImage(KMediaSvrTestJfif444,&iJfifFormat,NULL));
+	iTestImages->AppendL(TTestImage(KMediaSvrTestJfif10,&iJfifFormat,NULL));
+	iTestImages->AppendL(TTestImage(KMediaSvrTestJfif30,&iJfifFormat,NULL));
+	iTestImages->AppendL(TTestImage(KMediaSvrTestJfif60,&iJfifFormat,NULL));
+	iTestImages->AppendL(TTestImage(KMediaSvrTestJfif100,&iJfifFormat,NULL));
+
+	iTestImages->AppendL(TTestImage(KMediaSvrTest1BppMonoMbm,&iMbmFormat,NULL));
+	iTestImages->AppendL(TTestImage(KMediaSvrTest2BppMonoMbm,&iMbmFormat,NULL));
+	iTestImages->AppendL(TTestImage(KMediaSvrTest4BppMonoMbm,&iMbmFormat,NULL));
+	iTestImages->AppendL(TTestImage(KMediaSvrTest8BppMonoMbm,&iMbmFormat,NULL));
+	iTestImages->AppendL(TTestImage(KMediaSvrTest4BppColorMbm,&iMbmFormat,NULL));
+	iTestImages->AppendL(TTestImage(KMediaSvrTest8BppColorMbm,&iMbmFormat,NULL));
+	iTestImages->AppendL(TTestImage(KMediaSvrTest12BppColorMbm,&iMbmFormat,NULL));
+	iTestImages->AppendL(TTestImage(KMediaSvrTest16BppColorMbm,&iMbmFormat,NULL));
+	iTestImages->AppendL(TTestImage(KMediaSvrTest24BppColorMbm,& iMbmFormat,NULL));
+
+	iTestImages->AppendL(TTestImage(KMediaSvrTestPng1,& iPngFormat,NULL));
+	iTestImages->AppendL(TTestImage(KMediaSvrTestPng2,& iPngFormat,NULL));
+	iTestImages->AppendL(TTestImage(KMediaSvrTestPng3,& iPngFormat,NULL));
+	iTestImages->AppendL(TTestImage(KMediaSvrTestPng4,& iPngFormat,NULL));
+
+	iTestImages->AppendL(TTestImage(KMediaSvrTestTif1,NULL,NULL));
+	iTestImages->AppendL(TTestImage(KMediaSvrTestTif2,NULL,NULL));
+	iTestImages->AppendL(TTestImage(KMediaSvrTestTif3,NULL,NULL));
+
+
+	iTestImages->AppendL(TTestImage(KMediaSvrTestGif1,& iGifFormat,NULL));
+	return CTestStepMediaSvr::DoTestStepPreambleL();
+	}
+/**
+ *
+ * Test loading all supported images
+ *
+ * @return	"TVerdict"
+ *			Whether the images loaded successfully
+ *
+ * @xxxx
+ * 
+ */
+TVerdict CMediaSvrTest::DoTestStepL()
+	{
+	
+	INFO_PRINTF1(_L("this test loads images in each supported format"));
+	CFbsBitmap* bmp=NULL;
+	iTestStepResult = EPass;
+
+	for (int i=0;i<iTestImages->Count();i++) 
+		{
+		TRAPD(err, bmp = LoadImageL((*iTestImages)[i].SourceFile(),(*iTestImages)[i].Format(),(*iTestImages)[i].Codec()));		
+		if (err==KErrNone) 
+			delete bmp;
+		else
+			{
+			LogError((*iTestImages)[i].SourceFile(),_L("Problem loading file"));
+			iTestStepResult = EFail;
+			}
+		}
+
+	return iTestStepResult;
+	}
+
+/**
+ *
+ * Cleanup memory allocated for test images
+ *
+ */
+TVerdict CMediaSvrTest::DoTestStepPostambleL()
+	{
+	delete iTestImages;
+	return CTestStepMediaSvr::DoTestStepPostambleL();
+	}
+// --------------------------------------------
+/**
+ *
+ * Static constructor for CMediaSvrTest.
+ *
+ *
+ * @return	"CMediaSvrTest*"
+ *			The constructed CMediaSvrTest
+ *
+ * @xxxx
+ * 
+ */
+CMediaSvrTest2* CMediaSvrTest2::NewL()
+	{
+	CMediaSvrTest2* self = new(ELeave) CMediaSvrTest2;
+	return self;
+	}
+/**
+ *
+ * Test step constructor.
+ * Each test step initialises its own name.
+ *
+ * @xxxx
+ * 
+ */
+CMediaSvrTest2::CMediaSvrTest2()
+	{
+	// store the name of this test case
+	// this is the name that is used by the script file
+	iTestStepName = _L("MM-ICL-MEDIASVR-U-002");
+	}
+/**
+ *
+ * Pre-test setup. Create array with the source images to be used and the various formats
+ *
+ * @return	"TVerdict"
+ *			Whether the test preamble completed successfully
+ *
+ * @xxxx
+ * 
+ */
+TVerdict CMediaSvrTest2::DoTestStepPreambleL()
+	{
+	iTestImages = new (ELeave) CArrayFixFlat<TTestImage>(KArrayGranularity5);
+	iTestImages->AppendL(TTestImage(KMediaSvrTest24BppBmp,NULL,NULL));
+	return CTestStepMediaSvr::DoTestStepPreambleL();
+	}
+/**
+ *
+ * Attempt to load an image, without specifying the format of the image
+ *
+ * @return	"TVerdict"
+ *			Whether the load completed successfully
+ *
+ * @xxxx
+ * 
+ */
+TVerdict CMediaSvrTest2::DoTestStepL()
+	{
+	INFO_PRINTF1(_L("this test attempts to load an image without specifying a format"));
+
+	CFbsBitmap* bmp = NULL;
+
+	iTestStepResult = EPass;
+	
+	for (int i=0;i<iTestImages->Count();i++) 
+		{
+		TRAPD(err, bmp = LoadImageL((*iTestImages)[i].SourceFile(),(*iTestImages)[i].Format(),(*iTestImages)[i].Codec()));		
+		if (err==KErrNone) 
+			delete bmp;
+		else
+			{
+			LogError((*iTestImages)[i].SourceFile(),_L("Problem loading file"));
+			iTestStepResult = EFail;
+			}
+		}
+	return iTestStepResult;
+	}
+/**
+ *
+ * Cleanup memory allocated for test images
+ *
+ */
+TVerdict CMediaSvrTest2::DoTestStepPostambleL()
+	{
+	delete iTestImages;
+	return CTestStepMediaSvr::DoTestStepPostambleL();
+	}
+// --------------------------------------------
+/**
+ *
+ * Static constructor for CMediaSvrTest.
+ *
+ *
+ * @return	"CMediaSvrTest*"
+ *			The constructed CMediaSvrTest
+ *
+ * @xxxx
+ * 
+ */
+CMediaSvrTest3* CMediaSvrTest3::NewL()
+	{
+	CMediaSvrTest3* self = new(ELeave) CMediaSvrTest3;
+	return self;
+	}
+/**
+ *
+ * Test step constructor.
+ * Each test step initialises its own name.
+ *
+ * @xxxx
+ * 
+ */
+CMediaSvrTest3::CMediaSvrTest3()
+	{
+	// store the name of this test case
+	// this is the name that is used by the script file
+	iTestStepName = _L("MM-ICL-MEDIASVR-U-003");
+
+	// Heap size necessary for WriteImageToDescriptorL call
+	iHeapSize = 800000;
+	}
+/**
+ *
+ * Pre-test setup. store the images to be used in the test in an array
+ *
+ * @return	"TVerdict"
+ *			Whether the test preamble completed successfully
+ *
+ * @xxxx
+ * 
+ */
+TVerdict CMediaSvrTest3::DoTestStepPreambleL()
+	{
+	iTestImages = new (ELeave) CArrayFixFlat<TTestImage>(KArrayGranularity5);
+	iTestImages->AppendL(TTestImage(KMediaSvrTest24BppBmp,&iBmpFormat,&iBmp24BppCodec));
+	return CTestStepMediaSvr::DoTestStepPreambleL();
+	}
+/**
+ *
+ * Test storing an image in a descriptor and restoring it from the descriptor
+ *
+ * @return	"TVerdict"
+ *			Whether the final image matches the original image
+ *
+ * @xxxx
+ * 
+ */
+TVerdict CMediaSvrTest3::DoTestStepL()
+	{
+	if (DescriptorSize()==0)
+		INFO_PRINTF1(_L("Writes a file to a descriptor and reads it to check format"));
+	else
+		INFO_PRINTF1(_L("Writes a file to a small descriptor and checks error result"));
+
+	CFbsBitmap* bmp = NULL;
+	CFbsBitmap* checkbmp = NULL;
+
+	bmp = LoadImageL((*iTestImages)[0].SourceFile(),(*iTestImages)[0].Format(),(*iTestImages)[0].Codec());
+	CleanupStack::PushL(bmp);
+
+
+	iTestStepResult = EPass;
+	HBufC8* imageBuffer = NULL;
+
+	TInt err;
+	TRAP(err, imageBuffer = WriteImageToDescriptorL(bmp, (*iTestImages)[0].Format(),(*iTestImages)[0].Codec(), DescriptorSize()));
+	CleanupStack::PushL(imageBuffer);
+	if (ExpectedResult()==KErrNone)
+		{
+		if (err!=KErrNone) 
+			{
+			INFO_PRINTF2(_L("Unexpected leave(%d)"), err);
+			iTestStepResult = EFail;
+			}
+		else
+			{
+			TPtr8 buf = imageBuffer->Des();
+			TRAP(err,checkbmp = ReadImageFromDescriptorL(buf,NULL,NULL));
+			if (err==KErrNone)
+				{
+				TVerdict compareBitmaps;
+				compareBitmaps = CheckBitmaps(*checkbmp,*bmp);
+				if (compareBitmaps == EFail) 
+					{
+					iTestStepResult = EFail;
+					}
+				}
+			else 
+				{
+				iTestStepResult = EFail;
+				}
+			}
+		}
+	else
+		{
+		if (err!=ExpectedResult()) 
+			{
+			INFO_PRINTF3(_L("Unexpected leave(%d - expected %d)"), err, ExpectedResult());
+			iTestStepResult = EFail;
+			}
+		}
+
+	CleanupStack::PopAndDestroy(2); //  bmp, imageBuffer
+	return iTestStepResult;
+	}
+
+/**
+ *
+ * Cleanup memory allocated for test images
+ *
+ */
+TVerdict CMediaSvrTest3::DoTestStepPostambleL()
+	{
+	delete iTestImages;
+	return CTestStepMediaSvr::DoTestStepPostambleL();
+	}
+// --------------------------------------------
+
+/**
+ *
+ * Static constructor for CMediaSvrTest4.
+ *
+ *
+ * @return	"CMediaSvrTest4*"
+ *			The constructed CMediaSvrTest4
+ *
+ * @xxxx
+ * 
+ */
+CMediaSvrTest4* CMediaSvrTest4::NewL()
+	{
+	CMediaSvrTest4* self = new(ELeave) CMediaSvrTest4;
+	return self;
+	}
+/**
+ *
+ * Test step constructor.
+ * Each test step initialises its own name.
+ *
+ * @xxxx
+ * 
+ */
+CMediaSvrTest4::CMediaSvrTest4()
+	{
+	// store the name of this test case
+	// this is the name that is used by the script file
+	iTestStepName = _L("MM-ICL-MEDIASVR-U-004");
+	}
+/**
+ *
+ * Pre-test setup. Create array with the source images to be used and the various formats
+ *
+ * @return	"TVerdict"
+ *			Whether the test preamble completed successfully
+ *
+ * @xxxx
+ * 
+ */
+TVerdict CMediaSvrTest4::DoTestStepPreambleL()
+	{
+	iInitialImage.SetTestImage(KMediaSvrTest24BppBmp,NULL,NULL);
+	iTestImages = new (ELeave) CArrayFixFlat<TTestImage>(KArrayGranularity5);
+	iTestImages->AppendL(TTestImage(KMediaSvrGifTempFile,&iGifFormat,&iGifCodec,KMediaSvrTestGifRef));
+
+	iTestImages->AppendL(TTestImage(KMediaSvrBmpTempFile,&iBmpFormat,&iBmp1BppCodec, KMediaSvrTest1BppBmp));
+	iTestImages->AppendL(TTestImage(KMediaSvrBmpTempFile,&iBmpFormat,&iBmp4BppCodec, KMediaSvrTest4BppBmp));
+	iTestImages->AppendL(TTestImage(KMediaSvrBmpTempFile,&iBmpFormat,&iBmp8BppCodec, KMediaSvrTest8BppBmp));
+	iTestImages->AppendL(TTestImage(KMediaSvrBmpTempFile,&iBmpFormat,&iBmp24BppCodec, KMediaSvrTest24BppBmp));
+
+	iTestImages->AppendL(TTestImage(KMediaSvrJfifTempFile,&iJfifFormatMonoQ50,NULL,KMediaSvrTestJfifMono));
+	iTestImages->AppendL(TTestImage(KMediaSvrJfifTempFile,&iJfifFormatColor420Q50,NULL,KMediaSvrTestJfif420));
+	iTestImages->AppendL(TTestImage(KMediaSvrJfifTempFile,&iJfifFormatColor422Q50,NULL,KMediaSvrTestJfif422));
+	iTestImages->AppendL(TTestImage(KMediaSvrJfifTempFile,&iJfifFormatColor444Q50,NULL,KMediaSvrTestJfif444));
+	iTestImages->AppendL(TTestImage(KMediaSvrJfifTempFile,&iJfifFormatColor444Q10,NULL,KMediaSvrTestJfif10));
+	iTestImages->AppendL(TTestImage(KMediaSvrJfifTempFile,&iJfifFormatColor444Q30,NULL,KMediaSvrTestJfif30));
+	iTestImages->AppendL(TTestImage(KMediaSvrJfifTempFile,&iJfifFormatColor444Q60,NULL,KMediaSvrTestJfif60));
+	iTestImages->AppendL(TTestImage(KMediaSvrJfifTempFile,&iJfifFormatColor444Q100,NULL,KMediaSvrTestJfif100));
+
+	iTestImages->AppendL(TTestImage(KMediaSvrMbmTempFile,&iMbmFormatGray2,NULL, KMediaSvrTest1BppMonoMbm));
+	iTestImages->AppendL(TTestImage(KMediaSvrMbmTempFile,&iMbmFormatGray4,NULL, KMediaSvrTest2BppMonoMbm));
+	iTestImages->AppendL(TTestImage(KMediaSvrMbmTempFile,&iMbmFormatGray16,NULL, KMediaSvrTest4BppMonoMbm));
+	iTestImages->AppendL(TTestImage(KMediaSvrMbmTempFile,&iMbmFormatGray256,NULL, KMediaSvrTest8BppMonoMbm));
+	iTestImages->AppendL(TTestImage(KMediaSvrMbmTempFile,&iMbmFormatColor16,NULL, KMediaSvrTest4BppColorMbm));
+	iTestImages->AppendL(TTestImage(KMediaSvrMbmTempFile,&iMbmFormatColor256,NULL, KMediaSvrTest8BppColorMbm));
+	iTestImages->AppendL(TTestImage(KMediaSvrMbmTempFile,&iMbmFormatColor4K,NULL, KMediaSvrTest12BppColorMbm));
+	iTestImages->AppendL(TTestImage(KMediaSvrMbmTempFile,&iMbmFormatColor64K,NULL, KMediaSvrTest16BppColorMbm));
+	iTestImages->AppendL(TTestImage(KMediaSvrMbmTempFile,&iMbmFormatColor16M,NULL, KMediaSvrTest24BppColorMbm));
+
+	return CTestStepMediaSvr::DoTestStepPreambleL();
+	}
+/**
+ *
+ * Save images in each supported format and compare the saved bitmaps to known reference files
+ *
+ * @return	"TVerdict"
+ *			Whether the saved images match the reference bitmaps
+ *
+ * @xxxx
+ * 
+ */
+TVerdict CMediaSvrTest4::DoTestStepL()
+	{
+	
+	INFO_PRINTF1(_L("MediaSvr Test 4"));
+	INFO_PRINTF1(_L("this test attempt to save images in all supported formats"));
+
+	CFbsBitmap* bmp = NULL;
+	
+	bmp = LoadImageL(iInitialImage.SourceFile(),iInitialImage.Format(),iInitialImage.Codec());
+	CleanupStack::PushL(bmp);
+
+	iTestStepResult = EPass;
+	
+	for (int i=0;i<iTestImages->Count();i++) 
+		{
+		TInt err;
+		TRAP(err, SaveImageL(bmp,(*iTestImages)[i].SourceFile(),(*iTestImages)[i].Format(),(*iTestImages)[i].Codec()));
+		if (err==KErrNone) 
+			{
+			TVerdict result = CompareFilesL((*iTestImages)[i].SourceFile(),(*iTestImages)[i].RefFile());
+			if (result == EFail)
+				{
+				iTestStepResult = EFail;
+				LogError((*iTestImages)[i].RefFile(), _L("Saved file does not match reference file"));
+				}	
+			}
+		else
+			iTestStepResult = EFail;
+		}
+
+	CleanupStack::PopAndDestroy(); // bmp
+	return iTestStepResult;
+	}
+/**
+ *
+ * Cleanup memory allocated for test images
+ *
+ */
+TVerdict CMediaSvrTest4::DoTestStepPostambleL()
+	{
+	delete iTestImages;
+	return CTestStepMediaSvr::DoTestStepPostambleL();
+	}
+// --------------------------------------------
+
+/**
+ *
+ * Static constructor for CMediaSvrTest.
+ *
+ *
+ * @return	"CMediaSvrTest*"
+ *			The constructed CMediaSvrTest
+ *
+ * @xxxx
+ * 
+ */
+CMediaSvrTest5* CMediaSvrTest5::NewL()
+	{
+	CMediaSvrTest5* self = new(ELeave) CMediaSvrTest5;
+	return self;
+	}
+
+/**
+ *
+ * Test step constructor.
+ * Each test step initialises its own name.
+ *
+ * @xxxx
+ * 
+ */
+CMediaSvrTest5::CMediaSvrTest5()
+	{
+	// store the name of this test case
+	// this is the name that is used by the script file
+	iTestStepName = _L("MM-ICL-MEDIASVR-U-005");
+
+	// Heap size necessary for WriteImageToDescriptorL call
+	iHeapSize = 800000;
+	}
+/**
+ *
+ * Pre-test setup. Create array with the source images to be used and the various formats
+ *
+ * @return	"TVerdict"
+ *			Whether the test preamble completed successfully
+ *
+ * @xxxx
+ * 
+ */
+TVerdict CMediaSvrTest5::DoTestStepPreambleL()
+	{
+	iTestImages = new (ELeave) CArrayFixFlat<TTestImage>(KArrayGranularity5);
+	iTestImages->AppendL(TTestImage(KMediaSvrTest24BppBmp,&iBmpFormat,&iBmp24BppCodec));
+	return CTestStepMediaSvr::DoTestStepPreambleL();
+	}
+/**
+ *
+ * Test streaming an image from a descriptor
+ *
+ * @return	"TVerdict"
+ *			The result of the test step
+ *
+ * @xxxx
+ * 
+ */
+TVerdict CMediaSvrTest5::DoTestStepL()
+	{
+	INFO_PRINTF1(_L("Stream a file from a descriptor"));
+
+	CFbsBitmap* bmp = NULL;
+	CFbsBitmap* checkbmp = NULL;
+
+	bmp = LoadImageL((*iTestImages)[0].SourceFile(),(*iTestImages)[0].Format(),(*iTestImages)[0].Codec());
+	CleanupStack::PushL(bmp);
+
+	iTestStepResult = EPass;
+	HBufC8* imageBuffer = NULL;
+
+	TInt err;
+	TRAP(err, imageBuffer = WriteImageToDescriptorL(bmp, (*iTestImages)[0].Format(),(*iTestImages)[0].Codec()));
+	CleanupStack::PushL(imageBuffer);
+	if (err!=KErrNone) 
+		{
+		iTestStepResult = EFail;
+		}
+	TPtr8 buf = imageBuffer->Des();
+	TRAP(err,checkbmp = StreamImageFromDescriptorL(buf,NULL,NULL));
+	if (err==KErrNone)
+		{
+		TVerdict compareBitmaps;
+		compareBitmaps = CheckBitmaps(*checkbmp,*bmp);
+		if (compareBitmaps == EFail) 
+			{
+			iTestStepResult = EFail;
+			}
+		delete checkbmp;
+		}
+	else 
+		{
+		iTestStepResult = EFail;
+		}
+	CleanupStack::PopAndDestroy(2); //  bmp, imageBuffer
+	return iTestStepResult;
+	}
+/**
+ *
+ * Cleanup memory allocated for test images
+ *
+ */
+TVerdict CMediaSvrTest5::DoTestStepPostambleL()
+	{
+	delete iTestImages;
+	return CTestStepMediaSvr::DoTestStepPostambleL();
+	}
+// --------------------------------------------
+/**
+ *
+ * Static constructor for CMediaSvrTest.
+ *
+ *
+ * @return	"CMediaSvrTest*"
+ *			The constructed CMediaSvrTest
+ *
+ * @xxxx
+ * 
+ */
+CMediaSvrTest6* CMediaSvrTest6::NewL()
+	{
+	CMediaSvrTest6* self = new(ELeave) CMediaSvrTest6;
+	return self;
+	}
+/**
+ *
+ * Test step constructor.
+ * Each test step initialises its own name.
+ *
+ * @xxxx
+ * 
+ */
+CMediaSvrTest6::CMediaSvrTest6()
+	{
+	// store the name of this test case
+	// this is the name that is used by the script file
+	iTestStepName = _L("MM-ICL-MEDIASVR-U-006");
+	}
+/**
+ *
+ * Pre-test setup. Create array with the source images to be used and the various formats
+ *
+ * @return	"TVerdict"
+ *			Whether the test preamble completed successfully
+ *
+ * @xxxx
+ * 
+ */
+TVerdict CMediaSvrTest6::DoTestStepPreambleL()
+	{
+	iTestImages = new (ELeave) CArrayFixFlat<TTestImage>(KArrayGranularity5);
+	iTestImages->AppendL(TTestImage(KMediaSvrTest24BppBmp,&iBmpFormat,&iBmp24BppCodec));
+	return CTestStepMediaSvr::DoTestStepPreambleL();
+	}
+
+/**
+ *
+ * Test streaming an image from a file
+ *
+ * @return	"TVerdict"
+ *			Whether the image was correctly retrieved
+ *
+ * @xxxx
+ * 
+ */
+TVerdict CMediaSvrTest6::DoTestStepL()
+	{
+	
+	INFO_PRINTF1(_L("Stream an image from a file"));
+
+	CFbsBitmap* bmp = NULL;
+	CFbsBitmap* checkbmp = NULL;
+	
+	bmp = LoadImageL((*iTestImages)[0].SourceFile(),(*iTestImages)[0].Format(),(*iTestImages)[0].Codec());
+	CleanupStack::PushL(bmp);
+
+	iTestStepResult = EPass;
+
+	TInt err;
+	TRAP(err,checkbmp = StreamImageL((*iTestImages)[0].SourceFile(),(*iTestImages)[0].Format(),(*iTestImages)[0].Codec()));
+	if (err==KErrNone)
+		{
+		TVerdict compareBitmaps;
+		compareBitmaps = CheckBitmaps(*checkbmp,*bmp);
+		if (compareBitmaps == EFail) 
+			{
+			iTestStepResult = EFail;
+			}
+		delete checkbmp; // nothing can leave between creation of bitmap and deletion, so don't use cleanup stack
+		}
+	else 
+		{
+		iTestStepResult = EFail;
+		}
+	CleanupStack::PopAndDestroy(); //bmp
+	return iTestStepResult;
+	}
+
+/**
+ *
+ * Cleanup memory allocated for test images
+ *
+ */
+TVerdict CMediaSvrTest6::DoTestStepPostambleL()
+	{
+	delete iTestImages;
+	return CTestStepMediaSvr::DoTestStepPostambleL();
+	}
+// --------------------------------------------
+/**
+ *
+ * Static constructor for CMediaSvrTest7.
+ *
+ *
+ * @return	"CMediaSvrTest7*"
+ *			The constructed CMediaSvrTest7
+ *
+ * @xxxx
+ * 
+ */
+CMediaSvrTest7* CMediaSvrTest7::NewL()
+	{
+	CMediaSvrTest7* self = new(ELeave) CMediaSvrTest7;
+	return self;
+	}
+
+CMediaSvrTest7::CMediaSvrTest7()
+	{
+	// store the name of this test case
+	// this is the name that is used by the script file
+	iTestStepName = _L("MM-ICL-MEDIASVR-U-007");
+	}
+
+/**
+ *
+ * Pre-test setup. Create array with the source images to be used and the various formats
+ *
+ * @return	"TVerdict"
+ *			Whether the test preamble completed successfully
+ *
+ * @xxxx
+ * 
+ */
+TVerdict CMediaSvrTest7::DoTestStepPreambleL()
+	{
+	iTestImages = new (ELeave) CArrayFixFlat<TTestImage>(KArrayGranularity5);
+	iTestImages->AppendL(TTestImage(KMediaSvrTest1BppBmp,&iJfifFormat,NULL));
+	
+	return CTestStepMediaSvr::DoTestStepPreambleL();
+	}
+/**
+ *
+ * Attempt to load a valid image, specifying the incorrect format.
+ *
+ * @return	"TVerdict"
+ *			Whether CMdaImageFileToBitmapUtility correctly refuses to load the image
+ *
+ * @xxxx
+ * 
+ */
+TVerdict CMediaSvrTest7::DoTestStepL()
+	{
+	
+	INFO_PRINTF1(_L("this test attempts to load an image, specifying the incorrect format. The open should not succeed"));
+	iTestStepResult = EPass;
+	
+	for (int i=0;i<iTestImages->Count();i++) 
+		{
+		TMdaClipFormat *clipFormat = (TMdaClipFormat*) (*iTestImages)[i].Format();
+		TMdaPackage* codec = (TMdaPackage*) (*iTestImages)[i].Codec();
+
+		CMdaImageFileToBitmapUtility* ftob = CMdaImageFileToBitmapUtility::NewL(*this);
+		CleanupStack::PushL(ftob);
+		TFileName fileName = DefaultPath();
+		fileName.Append((*iTestImages)[i].SourceFile());
+		ftob->OpenL(fileName,clipFormat,codec);
+			
+		WaitForResult();
+		if (iError!=KErrNotFound) 
+			{
+			iTestStepResult = EFail;	
+			}
+		CleanupStack::PopAndDestroy(); //ftob
+		}
+	return iTestStepResult;
+	}
+/**
+ *
+ * Cleanup memory allocated for test images
+ *
+ */
+TVerdict CMediaSvrTest7::DoTestStepPostambleL()
+	{
+	delete iTestImages;
+	return CTestStepMediaSvr::DoTestStepPostambleL();
+	}
+// --------------------------------------------
+
+/**
+ *
+ * Static constructor for CMediaSvrTest8.
+ *
+ *
+ * @return	"CMediaSvrTest8*"
+ *			The constructed CMediaSvrTest8
+ *
+ * @xxxx
+ * 
+ */
+CMediaSvrTest8* CMediaSvrTest8::NewL()
+	{
+	CMediaSvrTest8* self = new(ELeave) CMediaSvrTest8;
+	return self;
+	}
+
+/**
+ *
+ * Test step constructor.
+ * Each test step initialises its own name.
+ *
+ * @xxxx
+ * 
+ */
+CMediaSvrTest8::CMediaSvrTest8()
+	{
+	// store the name of this test case
+	// this is the name that is used by the script file
+	iTestStepName = _L("MM-ICL-MEDIASVR-U-008");
+	}
+
+/**
+ *
+ * Pre-test setup. Create array with the source images to be used and the various formats
+ *
+ * @return	"TVerdict"
+ *			Whether the test preamble completed successfully
+ *
+ * @xxxx
+ * 
+ */
+TVerdict CMediaSvrTest8::DoTestStepPreambleL()
+	{
+	iInitialImage.SetTestImage(KMediaSvrTest24BppBmp,NULL,NULL);
+	iTestImages = new (ELeave) CArrayFixFlat<TTestImage>(KArrayGranularity5);
+	iTestImages->AppendL(TTestImage(KMediaSvrInvalidTempFile,&iBmpFormat,&iBmp24BppCodec));
+
+	return CTestStepMediaSvr::DoTestStepPreambleL();
+	}
+/**
+ *
+ * Test saving to an invalid file name
+ *
+ * @return	"TVerdict"
+ *			The result of the test step
+ *
+ * @xxxx
+ * 
+ */
+TVerdict CMediaSvrTest8::DoTestStepL()
+	{
+	
+	INFO_PRINTF1(_L("MM-ICL-MEDIASVR-U-008"));
+	INFO_PRINTF1(_L("this test attempt to save an image to an invalid file"));
+	// read in a bool value from the config file
+
+	CFbsBitmap* bmp = NULL;
+
+	bmp = LoadImageL(iInitialImage.SourceFile(),iInitialImage.Format(),iInitialImage.Codec());
+	CleanupStack::PushL(bmp);
+
+	iTestStepResult = EPass;
+	
+	for (int i=0;i<iTestImages->Count();i++) 
+		{
+		TInt err;
+		TRAP(err, SaveImageL(bmp, (*iTestImages)[i].SourceFile(),(*iTestImages)[i].Format(),(*iTestImages)[i].Codec()));
+		if (err==KErrNone)  // should not be able to open the invalid file
+			{
+			iTestStepResult = EFail;
+			}
+		}
+	CleanupStack::PopAndDestroy(); // bmp
+	return iTestStepResult;
+	}
+/**
+ *
+ * Cleanup memory allocated for test images
+ *
+ */
+TVerdict CMediaSvrTest8::DoTestStepPostambleL()
+	{
+	delete iTestImages;
+	return CTestStepMediaSvr::DoTestStepPostambleL();
+	}
+/**
+ *
+ * Static constructor for CMediaSvrTest.
+ *
+ *
+ * @return	"CMediaSvrTest*"
+ *			The constructed CMediaSvrTest
+ *
+ * @xxxx
+ * 
+ */
+CMediaSvrTest9* CMediaSvrTest9::NewL()
+	{
+	CMediaSvrTest9* self = new(ELeave) CMediaSvrTest9;
+	return self;
+	}
+
+/**
+ *
+ * Test step constructor.
+ * Each test step initialises its own name.
+ *
+ * @xxxx
+ * 
+ */
+CMediaSvrTest9::CMediaSvrTest9()
+	{
+	// store the name of this test case
+	// this is the name that is used by the script file
+	iTestStepName = _L("MM-ICL-MEDIASVR-U-009");
+	}
+/**
+ *
+ * Pre-test setup. Create array with the source images to be used and the various formats
+ *
+ * @return	"TVerdict"
+ *			Whether the test preamble completed successfully
+ *
+ * @xxxx
+ * 
+ */
+TVerdict CMediaSvrTest9::DoTestStepPreambleL()
+	{
+	iTestImages = new (ELeave) CArrayFixFlat<TTestImage>(KArrayGranularity5);
+	iTestImages->AppendL(TTestImage(KMediaSvrTest24BppBmp,&iInvalidFormat,NULL));
+	return CTestStepMediaSvr::DoTestStepPreambleL();
+	}
+/**
+ *
+ * Test passing an invalid format to CMdaImageFileToBitmapUtility
+ *
+ * @return	"TVerdict"
+ *			The result of the test step
+ *
+ * @xxxx
+ * 
+ */
+TVerdict CMediaSvrTest9::DoTestStepL()
+	{
+	
+	INFO_PRINTF1(_L("this test attempts to load an image, specifying an invalid format"));
+
+	iTestStepResult = EPass;
+	
+	for (int i=0;i<iTestImages->Count();i++) 
+		{
+		CMdaImageFileToBitmapUtility* ftob = CMdaImageFileToBitmapUtility::NewL(*this);
+		CleanupStack::PushL(ftob);
+
+		ftob->OpenL((*iTestImages)[i].SourceFile(),(*iTestImages)[i].Format());
+			
+		if (WaitForResult()==KErrNone)
+			{
+			iTestStepResult = EFail;	
+			} 
+		CleanupStack::PopAndDestroy(); //ftob
+		}
+
+	return iTestStepResult;
+	}
+/**
+ *
+ * Cleanup memory allocated for test images
+ *
+ */
+TVerdict CMediaSvrTest9::DoTestStepPostambleL()
+	{
+	delete iTestImages;
+	return CTestStepMediaSvr::DoTestStepPostambleL();
+	}
+// --------------------------------------------
+
+/**
+ *
+ * Static constructor for CMediaSvrTest.
+ *
+ *
+ * @return	"CMediaSvrTest*"
+ *			The constructed CMediaSvrTest
+ *
+ * @xxxx
+ * 
+ */
+CMediaSvrTest10* CMediaSvrTest10::NewL()
+	{
+	CMediaSvrTest10* self = new(ELeave) CMediaSvrTest10;
+	return self;
+	}
+
+/**
+ *
+ * Test step constructor.
+ * Each test step initialises its own name.
+ *
+ * @xxxx
+ * 
+ */
+CMediaSvrTest10::CMediaSvrTest10()
+	{
+	// store the name of this test case
+	// this is the name that is used by the script file
+	iTestStepName = _L("MM-ICL-MEDIASVR-U-010");
+	}
+
+/**
+ *
+ * Pre-test setup. Create array with details of the source images to be used
+ *
+ * @return	"TVerdict"
+ *			Whether the test preamble completed successfully
+ *
+ * @xxxx
+ * 
+ */
+TVerdict CMediaSvrTest10::DoTestStepPreambleL()
+	{
+	iTestImages = new (ELeave) CArrayFixFlat<TTestImage>(KArrayGranularity5);
+
+	iTestImages->AppendL(TTestImage(KMediaSvrTestTxt,NULL,NULL));
+	iTestImages->AppendL(TTestImage(KMediaSvrTestTxt,&iJfifFormat,NULL));
+	iTestImages->AppendL(TTestImage(KMediaSvrTestTxt,&iMbmFormat,NULL));
+
+	return CTestStepMediaSvr::DoTestStepPreambleL();
+	}
+/**
+ *
+ * Test trying to load an invalid file as an image
+ *
+ * @return	"TVerdict"
+ *			The result of the test step
+ *
+ * @xxxx
+ * 
+ */
+TVerdict CMediaSvrTest10::DoTestStepL()
+	{
+	
+	INFO_PRINTF1(_L("this test attempts to load a text file as an image"));
+
+	iTestStepResult = EPass;
+	
+	for (int i=0;i<iTestImages->Count();i++) 
+		{
+		CMdaImageFileToBitmapUtility* ftob = CMdaImageFileToBitmapUtility::NewL(*this);
+		CleanupStack::PushL(ftob);
+
+		ftob->OpenL((*iTestImages)[i].SourceFile(),(*iTestImages)[i].Format());
+			
+		if (WaitForResult()==KErrNone)
+			{
+			iTestStepResult = EFail;	
+			} 
+		CleanupStack::PopAndDestroy(); //ftob
+		}
+
+	return iTestStepResult;
+	}
+/**
+ *
+ * Cleanup memory allocated for test images
+ *
+ */
+TVerdict CMediaSvrTest10::DoTestStepPostambleL()
+	{
+	delete iTestImages;
+	return CTestStepMediaSvr::DoTestStepPostambleL();
+	}
+// --------------------------------------------
+/**
+ *
+ * Static constructor for CMediaSvrTest.
+ *
+ *
+ * @return	"CMediaSvrTest*"
+ *			The constructed CMediaSvrTest
+ *
+ * @xxxx
+ * 
+ */
+CMediaSvrTest11* CMediaSvrTest11::NewL()
+	{
+	CMediaSvrTest11* self = new(ELeave) CMediaSvrTest11;
+	return self;
+	}
+/**
+ *
+ * Test step constructor.
+ * Each test step initialises its own name.
+ *
+ * @xxxx
+ * 
+ */
+CMediaSvrTest11::CMediaSvrTest11()
+	{
+	// store the name of this test case
+	// this is the name that is used by the script file
+	iTestStepName = _L("MM-ICL-MEDIASVR-U-011");
+	}
+
+/**
+ *
+ * Pre-test setup. Create an instance of the stress test class
+ *
+ * @return	"TVerdict"
+ *			Whether the test preamble completed successfully
+ *
+ * @xxxx
+ * 
+ */
+TVerdict CMediaSvrTest11::DoTestStepPreambleL()
+	{
+	iStressTest = new (ELeave) CMdaStressTest;
+	return CTestStepMediaSvr::DoTestStepPreambleL();
+	}
+/**
+ *
+ * Multiple thread stress testing. The test creates multiple threads which attempt to load
+ * images. When a thread finishes, it is restarted. The test continues for a predetermined length
+ * of time
+ *
+ * @return	"TVerdict"
+ *			The result of the test step
+ *
+ * @xxxx
+ * 
+ */
+TVerdict CMediaSvrTest11::DoTestStepL()
+	{
+	INFO_PRINTF1(_L("Multiple thread stress testing"));
+
+	iTestStepResult = EPass;
+
+	TRAPD(err, iStressTest->DoTestL(DefaultPath()));
+	if (err!=KErrNone)
+		iTestStepResult = EFail;
+
+	return iTestStepResult;
+	}
+
+/**
+ *
+ * Cleanup memory allocated for Stress Test
+ *
+ */
+TVerdict CMediaSvrTest11::DoTestStepPostambleL()
+	{
+	delete iStressTest;
+	return CTestStepMediaSvr::DoTestStepPostambleL();
+	}
+// --------------------------------------------
+
+/**
+ *
+ * Static constructor for CMediaSvrTest.
+ *
+ *
+ * @return	"CMediaSvrTest*"
+ *			The constructed CMediaSvrTest
+ *
+ * @xxxx
+ * 
+ */
+CMediaSvrTest12* CMediaSvrTest12::NewL()
+	{
+	CMediaSvrTest12* self = new(ELeave) CMediaSvrTest12;
+	return self;
+	}
+
+/**
+ *
+ * Test step constructor.
+ * Each test step initialises its own name.
+ *
+ * @xxxx
+ * 
+ */
+CMediaSvrTest12::CMediaSvrTest12()
+	{
+	// store the name of this test case
+	// this is the name that is used by the script file
+	iTestStepName = _L("MM-ICL-MEDIASVR-U-012");
+	}
+/**
+ *
+ * Pre-test setup. Create array with details of the source images to be used
+ *
+ * @return	"TVerdict"
+ *			Whether the test preamble completed successfully
+ *
+ * @xxxx
+ * 
+ */
+TVerdict CMediaSvrTest12::DoTestStepPreambleL()
+	{
+	iTestImages = new (ELeave) CArrayFixFlat<TTestImage>(KArrayGranularity5);
+	iTestImages->AppendL(TTestImage(KMediaSvrTest24BppBmp,&iBmpFormat,&iBmp24BppCodec));
+	return CTestStepMediaSvr::DoTestStepPreambleL();
+	}
+
+/**
+ *
+ * Alloc failure testing while loading an image 
+ *
+ * @return	"TVerdict"
+ *			The result of the test step
+ *
+ * @xxxx
+ * 
+ */
+TVerdict CMediaSvrTest12::DoTestStepL()
+	{
+
+	// need to disconnect from the Font & Bitmap server
+	// and then reconnect for alloc testing as it allocates memory on the fly
+	RFbsSession::Disconnect();
+	
+	__MM_HEAP_MARK;
+
+	// connect to the bitmap server and check the error code
+	CICLFbsSessionTest* fbsSession = CICLFbsSessionTest::NewLC();
+	TVerdict verdict = DoTestStepFbsL();
+	CleanupStack::PopAndDestroy(fbsSession); // RFbsSession::Disconnect()
+	
+	__MM_HEAP_MARKEND; 
+
+	return verdict;
+	}
+/**
+ *
+ * Alloc failure testing while loading an image 
+ *
+ * @return	"TVerdict"
+ *			The result of the test step
+ *
+ * @xxxx
+ * 
+ */
+TVerdict CMediaSvrTest12::DoTestStepFbsL()
+	{
+	INFO_PRINTF1(_L("Loads an image with alloc failure"));
+	CFbsBitmap* bmp = NULL;
+	iTestStepResult = EPass;
+	
+	TRAPD(err, bmp = LoadImageWithAllocFailL((*iTestImages)[0].SourceFile(),NULL,NULL));
+	if (err!=KErrNone) 
+		iTestStepResult = EFail;
+
+	delete bmp;
+
+	return iTestStepResult;
+	}
+/**
+ *
+ * Cleanup memory allocated for test images
+ *
+ */
+TVerdict CMediaSvrTest12::DoTestStepPostambleL()
+	{
+	delete iTestImages;
+	return CTestStepMediaSvr::DoTestStepPostambleL();
+	}
+// --------------------------------------------
+
+/**
+ *
+ * Static constructor for CMediaSvrTest.
+ *
+ *
+ * @return	"CMediaSvrTest*"
+ *			The constructed CMediaSvrTest
+ *
+ * @xxxx
+ * 
+ */
+CMediaSvrTest13* CMediaSvrTest13::NewL()
+	{
+	CMediaSvrTest13* self = new(ELeave) CMediaSvrTest13;
+	return self;
+	}
+
+/**
+ *
+ * Test step constructor.
+ * Each test step initialises its own name.
+ *
+ * @xxxx
+ * 
+ */
+CMediaSvrTest13::CMediaSvrTest13()
+	{
+	// store the name of this test case
+	// this is the name that is used by the script file
+	iTestStepName = _L("MM-ICL-MEDIASVR-U-013");
+	}
+
+/**
+ *
+ * Pre-test setup. Create array with details of the source images to be used
+ *
+ * @return	"TVerdict"
+ *			Whether the test preamble completed successfully
+ *
+ * @xxxx
+ * 
+ */
+TVerdict CMediaSvrTest13::DoTestStepPreambleL()
+	{
+	iTestImages = new (ELeave) CArrayFixFlat<TTestImage>(KArrayGranularity5);
+	iTestImages->AppendL(TTestImage(KMediaSvrTest24BppBmp,NULL,NULL));
+	iTestImages->AppendL(TTestImage(KMediaSvrBmpTempFile,&iBmpFormat,&iBmp24BppCodec));
+
+	return CTestStepMediaSvr::DoTestStepPreambleL();
+	}
+/**
+ *
+ * Alloc failure testing while saving an image
+ *
+ * @return	"TVerdict"
+ *			The result of the test step
+ *
+ * @xxxx
+ * 
+ */
+TVerdict CMediaSvrTest13::DoTestStepL()
+	{
+	INFO_PRINTF1(_L("Saves an image with alloc failure"));
+	CFbsBitmap* bmp = NULL;
+
+	bmp = LoadImageL((*iTestImages)[0].SourceFile(),NULL,NULL);
+
+	iTestStepResult = EPass;
+
+	TInt err;
+	TRAP(err,SaveImageWithAllocFailL(bmp,(*iTestImages)[1].SourceFile(),(*iTestImages)[1].Format(),(*iTestImages)[1].Codec()));
+	if (err!=KErrNone) 
+		iTestStepResult = EFail;
+
+	delete bmp;
+
+	return iTestStepResult;
+	}
+/**
+ *
+ * Cleanup memory allocated for test images
+ *
+ */
+TVerdict CMediaSvrTest13::DoTestStepPostambleL()
+	{
+	delete iTestImages;
+	return CTestStepMediaSvr::DoTestStepPostambleL();
+	}
+// --------------------------------------------
+/**
+ *
+ * Static constructor for CMediaSvrTest.
+ *
+ *
+ * @return	"CMediaSvrTest*"
+ *			The constructed CMediaSvrTest
+ *
+ * @xxxx
+ * 
+ */
+CMediaSvrTest14* CMediaSvrTest14::NewL()
+	{
+	CMediaSvrTest14* self = new(ELeave) CMediaSvrTest14;
+	return self;
+	}
+/**
+ *
+ * Test step constructor.
+ * Each test step initialises its own name.
+ *
+ * @xxxx
+ * 
+ */
+CMediaSvrTest14::CMediaSvrTest14()
+	{
+	// store the name of this test case
+	// this is the name that is used by the script file
+	iTestStepName = _L("MM-ICL-MEDIASVR-U-014");
+
+	// Heap size necessary for WriteImageToDescriptorL call
+	iHeapSize = 800000;
+	}
+/**
+ *
+ * Pre-test setup. Create array with details of the source images to be used
+ *
+ * @return	"TVerdict"
+ *			Whether the test preamble completed successfully
+ *
+ * @xxxx
+ * 
+ */
+TVerdict CMediaSvrTest14::DoTestStepPreambleL()
+	{
+	iTestImages = new (ELeave) CArrayFixFlat<TTestImage>(KArrayGranularity5);
+
+	iTestImages->AppendL(TTestImage(KMediaSvrTest24BppBmp,NULL,NULL));
+	iTestImages->AppendL(TTestImage(KMediaSvrBmpTempFile,&iBmpFormat,&iBmp24BppCodec));
+
+	return CTestStepMediaSvr::DoTestStepPreambleL();
+	}
+/**
+ *
+ * Alloc failure testing while streaming an image
+ *
+ * @return	"TVerdict"
+ *			The result of the test
+ *
+ * @xxxx
+ * 
+ */
+TVerdict CMediaSvrTest14::DoTestStepL()
+	{
+	INFO_PRINTF1(_L("Streams an image with alloc failure"));
+	CFbsBitmap* bmp = NULL;
+	iTestStepResult = EPass;
+
+	bmp = LoadImageL((*iTestImages)[0].SourceFile(),NULL,NULL);
+
+	HBufC8 * descBuf = WriteImageToDescriptorL(bmp,(*iTestImages)[1].Format(),(*iTestImages)[1].Codec());
+
+	TInt err;
+	TRAP(err, bmp = StreamImageFromDescWithAllocFailL(descBuf->Des(),NULL,NULL));
+	if (err!=KErrNone) 
+		iTestStepResult = EFail;
+
+	delete bmp;
+
+	return iTestStepResult;
+	}
+/**
+ *
+ * Cleanup memory allocated for test images
+ *
+ */
+TVerdict CMediaSvrTest14::DoTestStepPostambleL()
+	{
+	delete iTestImages;
+	return CTestStepMediaSvr::DoTestStepPostambleL();
+	}
+// --------------------------------------------
+/**
+ *
+ * Static constructor for CMediaSvrTest15.
+ *
+ *
+ * @return	"CMediaSvrTest15*"
+ *			The constructed CMediaSvrTest15
+ *
+ * @xxxx
+ * 
+ */
+CMediaSvrTest15* CMediaSvrTest15::NewL()
+	{
+	CMediaSvrTest15* self = new(ELeave) CMediaSvrTest15;
+	return self;
+	}
+
+/**
+ *
+ * Test step constructor.
+ * Each test step initialises its own name.
+ *
+ * @xxxx
+ * 
+ */
+CMediaSvrTest15::CMediaSvrTest15()
+	{
+	// store the name of this test case
+	// this is the name that is used by the script file
+	iTestStepName = _L("MM-ICL-MEDIASVR-U-015");
+	}
+
+/**
+ *
+ * Pre-test setup. Create array with details of the source images to be used
+ *
+ * @return	"TVerdict"
+ *			Whether the test preamble completed successfully
+ *
+ * @xxxx
+ * 
+ */
+TVerdict CMediaSvrTest15::DoTestStepPreambleL()
+	{
+	iTestImages = new (ELeave) CArrayFixFlat<TTestImage>(KArrayGranularity5);
+	iTestImages->AppendL(TTestImage(KMediaSvrTest24BppBmp,&iBmpFormat,&iBmp24BppCodec));
+	return CTestStepMediaSvr::DoTestStepPreambleL();
+	}
+
+/**
+ *
+ * Test cancelling and restarting decoding
+ *
+ * @return	"TVerdict"
+ *			The result of the test
+ *
+ * @xxxx
+ * 
+ */
+TVerdict CMediaSvrTest15::DoTestStepL()
+	{
+	
+	INFO_PRINTF1(_L("Test cancelling during image decoding"));
+
+	CFbsBitmap* bmp=NULL;
+
+	iTestStepResult = EPass;
+	
+	for (int i=0;i<iTestImages->Count();i++) 
+		{
+		TRAPD(err, bmp = CancelLoadImageL((*iTestImages)[i].SourceFile(),(*iTestImages)[i].Format(),(*iTestImages)[i].Codec()));		
+		delete bmp;
+
+		if (err!=KErrNone) 
+			{
+			iTestStepResult = EFail;
+			}
+		}
+	return iTestStepResult;
+	}
+
+/**
+ *
+ * Cleanup memory allocated for test images
+ *
+ */
+TVerdict CMediaSvrTest15::DoTestStepPostambleL()
+	{
+	delete iTestImages;
+	return CTestStepMediaSvr::DoTestStepPostambleL();
+	}
+//--------------------------------------------------------------
+/**
+ *
+ * Static constructor for CMediaSvrTest16.
+ *
+ *
+ * @return	"CMediaSvrTest16*"
+ *			The constructed CMediaSvrTest16
+ *
+ * @xxxx
+ * 
+ */
+CMediaSvrTest16* CMediaSvrTest16::NewL()
+	{
+	CMediaSvrTest16* self = new(ELeave) CMediaSvrTest16;
+	return self;
+	}
+
+/**
+ *
+ * Test step constructor.
+ * Each test step initialises its own name.
+ *
+ * @xxxx
+ * 
+ */
+CMediaSvrTest16::CMediaSvrTest16()
+	{
+	// store the name of this test case
+	// this is the name that is used by the script file
+	iTestStepName = _L("MM-ICL-MEDIASVR-U-016");
+	iHeapSize = 1024*128;
+	}
+/**
+ *
+ * Pre-test setup. Create array with details of the source images to be used
+ *
+ * @return	"TVerdict"
+ *			Whether the test preamble completed successfully
+ *
+ * @xxxx
+ * 
+ */
+TVerdict CMediaSvrTest16::DoTestStepPreambleL()
+	{
+	iInitialImage.SetTestImage(KMediaSvrTest24BppBmp,NULL,NULL);
+	iOutputImage.SetTestImage(KMediaSvrJfifTempFile,&iJfifFormatMonoQ50,NULL,KMediaSvrTestJfifMono);
+	return CTestStepMediaSvr::DoTestStepPreambleL();
+	}
+/**
+ *
+ * Test cancelling and restarting encoding
+ *
+ * @return	"TVerdict"
+ *			The result of the test
+ *
+ * @xxxx
+ * 
+ */
+TVerdict CMediaSvrTest16::DoTestStepL()
+	{
+	INFO_PRINTF1(_L("Test cancelling during image encoding"));
+
+	CFbsBitmap* bmp = NULL;
+	CFbsBitmap*checkbmp =NULL;
+	CFbsBitmap*refbmp = NULL;
+	
+	bmp = LoadImageL(iInitialImage.SourceFile(),iInitialImage.Format(),iInitialImage.Codec());
+	CleanupStack::PushL(bmp);
+
+	iTestStepResult = EPass;
+	
+	TInt err;
+	TRAP(err, CancelSaveImageL(bmp, iOutputImage.SourceFile(),iOutputImage.Format(),iOutputImage.Codec()));
+	if (err!=KErrNone) 
+		{
+		iTestStepResult = EFail;
+		}
+	TRAP(err,checkbmp = LoadImageL(iOutputImage.SourceFile(),iOutputImage.Format(),iOutputImage.Codec()));
+	CleanupStack::PushL(checkbmp);
+	if (err!=KErrNone)
+		{
+		iTestStepResult = EFail;
+		}
+	// leave from the following error, as it is an indication that the test is not setup correctly
+	refbmp = LoadImageL(iOutputImage.RefFile(),iOutputImage.Format(),iOutputImage.Codec());
+	CleanupStack::PushL(refbmp);
+	TVerdict compareBitmaps;
+	compareBitmaps = CheckBitmaps(*checkbmp,*refbmp);
+	if (compareBitmaps == EFail) 
+		{
+		iTestStepResult = EFail;
+		}
+
+	CleanupStack::PopAndDestroy(3); // checkbmp, refbmp, bmp
+
+	return iTestStepResult;
+	}
+/**
+ *
+ * Cleanup memory allocated for test images
+ *
+ */
+TVerdict CMediaSvrTest16::DoTestStepPostambleL()
+	{
+	return CTestStepMediaSvr::DoTestStepPostambleL();
+	}
+
+//--------------------------------------------------------------
+/**
+ *
+ * Static constructor for CMediaSvrTest17.
+ *
+ *
+ * @return	"CMediaSvrTest17*"
+ *			The constructed CMediaSvrTest17
+ *
+ * @xxxx
+ * 
+ */
+CMediaSvrTest17* CMediaSvrTest17::NewL()
+	{
+	CMediaSvrTest17* self = new(ELeave) CMediaSvrTest17;
+	return self;
+	}
+
+/**
+ *
+ * Test step constructor.
+ * Each test step initialises its own name.
+ *
+ * @xxxx
+ * 
+ */
+CMediaSvrTest17::CMediaSvrTest17()
+	{
+	// store the name of this test case
+	// this is the name that is used by the script file
+	iTestStepName = _L("MM-ICL-MEDIASVR-U-017");
+	}
+/**
+ *
+ * Pre-test setup. Create array with details of the source images to be used
+ *
+ * @return	"TVerdict"
+ *			Whether the test preamble completed successfully
+ *
+ * @xxxx
+ * 
+ */
+TVerdict CMediaSvrTest17::DoTestStepPreambleL()
+	{
+	iTestImage.SetTestImage(KMediaSvrTest24BppBmp,NULL,NULL);
+	iExpectedFrameInfo.iOverallSizeInPixels.iWidth = 193;
+	iExpectedFrameInfo.iOverallSizeInPixels.iHeight = 151;
+	iExpectedFrameInfo.iBitsPerPixel = 24;
+	return CTestStepMediaSvr::DoTestStepPreambleL();
+	}
+/**
+ *
+ * Test cancelling and restarting encoding
+ *
+ * @return	"TVerdict"
+ *			The result of the test
+ *
+ * @xxxx
+ * 
+ */
+TVerdict CMediaSvrTest17::DoTestStepL()
+	{
+	INFO_PRINTF1(_L("Check frame information returned by OpenL"));
+
+	TFrameInfo frameInfo;
+
+	iTestStepResult = EPass;
+
+	TBuf<256> messagebuf;
+
+	TRAPD(err, frameInfo = GetFrameInfoL(iTestImage.SourceFile(),NULL,NULL));		
+	if (err==KErrNone) 
+		{
+		if (frameInfo.iOverallSizeInPixels.iWidth != iExpectedFrameInfo.iOverallSizeInPixels.iWidth ||
+			frameInfo.iOverallSizeInPixels.iHeight != iExpectedFrameInfo.iOverallSizeInPixels.iHeight)
+			{
+			messagebuf.Format(_L("size (%d,%d) instead of expected (%d,%d)"),frameInfo.iOverallSizeInPixels.iWidth,
+																			frameInfo.iOverallSizeInPixels.iHeight,
+																			iExpectedFrameInfo.iOverallSizeInPixels.iWidth,
+																			iExpectedFrameInfo.iOverallSizeInPixels.iHeight);
+			LogError(_L("FrameInfo incorrect"),messagebuf);
+			iTestStepResult = EFail;
+			}
+/* Can no longer test this property as it doesn't exist in the MDA TFrameInfo
+		if (frameInfo.iFrameDisplayMode != iExpectedFrameInfo.iFrameDisplayMode)
+			{
+			LogError(_L("FrameInfo incorrect"),_L("incorrect display mode"));
+			iTestStepResult = EFail;
+			} */
+		if (frameInfo.iBitsPerPixel != iExpectedFrameInfo.iBitsPerPixel)
+			{
+			messagebuf.Format(_L("%d bpp instead of expected %d "),frameInfo.iBitsPerPixel,
+																	iExpectedFrameInfo.iBitsPerPixel);
+			LogError(_L("FrameInfo incorrect"),messagebuf);
+			iTestStepResult = EFail;
+			}
+		}
+	else
+		{
+		iTestStepResult = EFail;
+		LogError(iTestImage.SourceFile(),_L("Problem opening file"));
+		}
+	return iTestStepResult;
+	}
+/**
+ *
+ * Cleanup memory allocated for test images
+ *
+ */
+TVerdict CMediaSvrTest17::DoTestStepPostambleL()
+	{
+	return CTestStepMediaSvr::DoTestStepPostambleL();
+	}
+
+// --------------------------------------------
+
+/**
+ *
+ * Static constructor for CMediaSvrTest.
+ *
+ *
+ * @return	"CMediaSvrTest*"
+ *			The constructed CMediaSvrTest
+ *
+ * @xxxx
+ * 
+ */
+CMediaSvrTest18* CMediaSvrTest18::NewL()
+	{
+	CMediaSvrTest18* self = new(ELeave) CMediaSvrTest18;
+	return self;
+	}
+
+/**
+ *
+ * Test step constructor.
+ * Each test step initialises its own name.
+ *
+ * @xxxx
+ * 
+ */
+CMediaSvrTest18::CMediaSvrTest18()
+	{
+	// store the name of this test case
+	// this is the name that is used by the script file
+	iTestStepName = _L("MM-ICL-MEDIASVR-U-018");
+	// Increase the heap size for this test
+	iHeapSize = 0x20000;
+	}
+/**
+ *
+ * Pre-test setup. Create array with the source images to be used and the various formats
+ *
+ * @return	"TVerdict"
+ *			Whether the test preamble completed successfully
+ *
+ * @xxxx
+ * 
+ */
+TVerdict CMediaSvrTest18::DoTestStepPreambleL()
+	{
+	iTestImage.SetTestImage(KMediaSvrTestTransparentGif,NULL,NULL);
+	return CTestStepMediaSvr::DoTestStepPreambleL();
+	}
+/**
+ *
+ * Test streaming an image from a descriptor
+ *
+ * @return	"TVerdict"
+ *			The result of the test step
+ *
+ * @xxxx
+ * 
+ */
+TVerdict CMediaSvrTest18::DoTestStepL()
+	{
+	
+	INFO_PRINTF1(_L("Load transparent image"));
+
+	CFbsBitmap* bitmap = new(ELeave) CFbsBitmap;
+	CleanupStack::PushL(bitmap);
+	CFbsBitmap* mask = new(ELeave) CFbsBitmap;
+	CleanupStack::PushL(mask);
+
+	iTestStepResult = EPass;
+
+	TInt err;
+	TRAP(err,LoadTransparentImageL(bitmap,mask,iTestImage.SourceFile(),NULL,NULL));
+
+	if (err==KErrNone) 
+		{
+		TVerdict compareBitmaps = CheckBitmaps(*bitmap,*mask);
+		if (compareBitmaps == EFail) 
+			{
+			iTestStepResult = EFail;
+			}
+		}
+	else 
+		{
+		iTestStepResult = EFail;
+		}
+
+	CleanupStack::PopAndDestroy(2); //mask, bitmap
+
+	return iTestStepResult;
+	}
+/**
+ *
+ * Cleanup memory allocated for test images
+ *
+ */
+TVerdict CMediaSvrTest18::DoTestStepPostambleL()
+	{
+	return CTestStepMediaSvr::DoTestStepPostambleL();
+	}
+
+
+// --------------------------------------------
+
+/**
+ *
+ * Static constructor for CMediaSvrTest.
+ *
+ *
+ * @return	"CMediaSvrTest*"
+ *			The constructed CMediaSvrTest
+ *
+ * @xxxx
+ * 
+ */
+CMediaSvrTest19* CMediaSvrTest19::NewL()
+	{
+	CMediaSvrTest19* self = new(ELeave) CMediaSvrTest19;
+	return self;
+	}
+
+/**
+ *
+ * Test step constructor.
+ * Each test step initialises its own name.
+ *
+ * @xxxx
+ * 
+ */
+CMediaSvrTest19::CMediaSvrTest19()
+	{
+	// store the name of this test case
+	// this is the name that is used by the script file
+	iTestStepName = _L("MM-ICL-MEDIASVR-U-019");
+	}
+/**
+ *
+ * Pre-test setup. Create array with the source images to be used and the various formats
+ *
+ * @return	"TVerdict"
+ *			Whether the test preamble completed successfully
+ *
+ * @xxxx
+ * 
+ */
+TVerdict CMediaSvrTest19::DoTestStepPreambleL()
+	{
+	iTestImage.SetTestImage(KMediaSvrTestTransparentGif,NULL,NULL);
+	return CTestStepMediaSvr::DoTestStepPreambleL();
+	}
+/**
+ *
+ * Test trying to decode a transparent image, passing incompatible bitmaps as the destination
+ * of the decode
+ *
+ * @return	"TVerdict"
+ *			The result of the test step
+ *
+ * @xxxx
+ * 
+ */
+TVerdict CMediaSvrTest19::DoTestStepL()
+	{
+	
+	INFO_PRINTF1(_L("Pass incorrectly formatted images to ConvertL"));
+
+	CFbsBitmap* bitmap = new(ELeave) CFbsBitmap;
+	CleanupStack::PushL(bitmap);
+	CFbsBitmap* mask = new(ELeave) CFbsBitmap;
+	CleanupStack::PushL(mask);
+
+	iTestStepResult = EPass;
+
+	TInt err;
+	TRAP(err,FailLoadTransparentImageL(bitmap,mask,iTestImage.SourceFile(),NULL,NULL));
+
+	if (err!=KErrArgument) 
+		{
+		iTestStepResult = EFail;
+		}
+
+	CleanupStack::PopAndDestroy(2); //mask, bitmap
+
+	return iTestStepResult;
+	}
+/**
+ *
+ * Cleanup memory allocated for test images
+ *
+ */
+TVerdict CMediaSvrTest19::DoTestStepPostambleL()
+	{
+	return CTestStepMediaSvr::DoTestStepPostambleL();
+	}
+
+// --------------------------------------------
+/**
+ *
+ * Static constructor for CMediaSvrTest.
+ *
+ *
+ * @return	"CMediaSvrTest*"
+ *			The constructed CMediaSvrTest
+ *
+ * @xxxx
+ * 
+ */
+CMediaSvrTest20* CMediaSvrTest20::NewL()
+	{
+	CMediaSvrTest20* self = new(ELeave) CMediaSvrTest20;
+	return self;
+	}
+/**
+ *
+ * Test step constructor.
+ * Each test step initialises its own name.
+ *
+ * @xxxx
+ * 
+ */
+CMediaSvrTest20::CMediaSvrTest20()
+	{
+	// store the name of this test case
+	// this is the name that is used by the script file
+	iTestStepName = _L("MM-ICL-MEDIASVR-U-020");
+	
+	// Heap size necessary for source buffer 
+	iHeapSize = 200000;
+	}
+
+/**
+ *
+ * Pre-test setup. store the images to be used in the test in an array
+ *
+ * @return	"TVerdict"
+ *			Whether the test preamble completed successfully
+ *
+ * @xxxx
+ * 
+ */
+TVerdict CMediaSvrTest20::DoTestStepPreambleL()
+	{
+	iTestImages = new (ELeave) CArrayFixFlat<TTestImage>(KArrayGranularity5);
+	iTestImages->AppendL(TTestImage(KMediaSvrTest24BppBmp,&iBmpFormat,&iBmp24BppCodec));
+	return CTestStepMediaSvr::DoTestStepPreambleL();
+	}
+/**
+ *
+ * Test re-using CMdaImageDescToBitmapUtility after a previous ConvertL()
+ * returned KErrUnderflow (Defect INC011980). If the test does not panic
+ * (EIllegalContinueConvert) the test pass.
+ *
+ * @return	"TVerdict"
+ *			EPass if the test did not panic
+ *
+ * @xxxx
+ * 
+ */
+TVerdict CMediaSvrTest20::DoTestStepL()
+	{
+
+   	INFO_PRINTF1(_L("re-using CMdaImageDescToBitmapUtility after a previous ConvertL() returned KErrUnderflow (Defect INC011980)"));
+	
+	CFbsBitmap* bmp = new(ELeave) CFbsBitmap;
+	CleanupStack::PushL(bmp);
+
+	RFs fs;
+	User::LeaveIfError(fs.Connect());
+	CleanupClosePushL(fs);
+
+	RFile srcFile;
+	TFileName fileName = DefaultPath();
+	fileName.Append((*iTestImages)[0].SourceFile()); // use full name now
+	User::LeaveIfError(srcFile.Open(fs,fileName,EFileShareAny|EFileStream|EFileRead));
+	CleanupClosePushL(srcFile);
+
+	TInt fileSize;	
+	User::LeaveIfError(srcFile.Size(fileSize));
+	HBufC8* buffer = HBufC8::NewMaxLC(fileSize);
+	TPtr8 bufPtr(buffer->Des());
+
+	// Read the file into a descriptor
+	User::LeaveIfError(srcFile.Read(bufPtr,fileSize));
+
+	//Create an instance of CMdaImageDescToBitmapUtility
+	CMdaImageDescToBitmapUtility* dtob = CMdaImageDescToBitmapUtility::NewL(*this);
+	CleanupStack::PushL(dtob);
+
+	// Open with complete image
+	dtob->OpenL(*buffer);
+	WaitForResult();
+	// We do not expect any error
+	User::LeaveIfError(iError);
+
+	// Create a bitmap from the frameInfo
+	TFrameInfo frameInfo;
+	dtob->FrameInfo(0, frameInfo);
+	User::LeaveIfError(bmp->Create(frameInfo.iOverallSizeInPixels,EColor16M));
+
+	// Use a small buffer to force ConvertL() to return KErrUnderflow
+	bufPtr.SetLength(0);
+
+	// Expect ConvertL() to return KErrUnderflow
+	dtob->ConvertL(*bmp,0);
+	WaitForResult();
+	if(iError!=KErrUnderflow)
+		User::Leave(iError);
+
+	// Reset the buffer length and reuse CMdaImageDescToBitmapUtility
+	bufPtr.SetLength(fileSize);
+	dtob->OpenL(*buffer);
+	WaitForResult();
+	User::LeaveIfError(iError);
+
+	// If ConvertL() does not panic with EIllegalContinueConvert the test pass
+	dtob->ConvertL(*bmp,0);
+	WaitForResult();
+	User::LeaveIfError(iError);
+
+	CleanupStack::PopAndDestroy(5,bmp); // dtob, buffer, srcFile, fs, bmp
+
+	return iTestStepResult;
+	}
+
+/**
+ *
+ * Cleanup memory allocated for test images
+ *
+ */
+TVerdict CMediaSvrTest20::DoTestStepPostambleL()
+	{
+	delete iTestImages;
+	return CTestStepMediaSvr::DoTestStepPostambleL();
+	}
+
+// --------------------------------------------
+/**
+ *
+ * Static constructor for CMediaSvrTest.
+ *
+ *
+ * @return	"CMediaSvrTest*"
+ *			The constructed CMediaSvrTest
+ *
+ * @xxxx
+ * 
+ */
+CMediaSvrTest21* CMediaSvrTest21::NewL()
+	{
+	CMediaSvrTest21* self = new(ELeave) CMediaSvrTest21;
+	return self;
+	}
+/**
+ *
+ * Test step constructor.
+ * Each test step initialises its own name.
+ *
+ * @xxxx
+ * 
+ */
+CMediaSvrTest21::CMediaSvrTest21()
+	{
+	// store the name of this test case
+	// this is the name that is used by the script file
+	iTestStepName = _L("MM-ICL-MEDIASVR-U-021");
+	}
+
+/**
+ *
+ * Pre-test setup. store the images to be used in the test in an array
+ *
+ * @return	"TVerdict"
+ *			Whether the test preamble completed successfully
+ *
+ * @xxxx
+ * 
+ */
+TVerdict CMediaSvrTest21::DoTestStepPreambleL()
+	{
+	iSourceFile = KMediaSvrGifCommentFile;
+	return CTestStepMediaSvr::DoTestStepPreambleL();
+	}
+
+/**
+ *
+ * Test CMdaImageDecoder::FrameCommentL()
+ * Decode a file with comments and verify the comments is as expected.
+ * 
+ * DEF029548  ICL breaks BC with 7.0 
+ *
+ * @return	"TVerdict"
+ *			EPass if the test did not panic
+ *
+ * @xxxx
+ * 
+ */
+TVerdict CMediaSvrTest21::DoTestStepL()
+	{
+	INFO_PRINTF1(_L("Test CMdaDataReadUtility::FrameCommentL()"));
+	INFO_PRINTF1(_L("DEF029548  ICL breaks BC with 7.0"));
+	INFO_PRINTF2(_L("%S"),&iSourceFile);
+
+	iTestStepResult = EFail;
+
+	CFbsBitmap* bmp = new(ELeave) CFbsBitmap;
+	CleanupStack::PushL(bmp);
+
+	//Create an instance of CMdaImageDescToBitmapUtility
+	CMdaImageFileToBitmapUtility* ftob = CMdaImageFileToBitmapUtility::NewL(*this);
+	CleanupStack::PushL(ftob);
+
+	// Open with complete image
+	TFileName fileName = DefaultPath();
+	fileName.Append(iSourceFile);
+	ftob->OpenL(fileName);
+	WaitForResult();
+	// We do not expect any error
+	User::LeaveIfError(iError);
+
+	// Create a bitmap from the frameInfo
+	TFrameInfo frameInfo;
+	ftob->FrameInfo(0, frameInfo);
+	User::LeaveIfError(bmp->Create(frameInfo.iOverallSizeInPixels,EColor16M));
+
+	// Convert the frame
+	ftob->ConvertL(*bmp,0);
+	WaitForResult();
+	// We do not expect any error
+	User::LeaveIfError(iError);
+
+	//Get the frame comment for the first frame
+	TPtrC comment(ftob->FrameCommentL(0));
+	INFO_PRINTF2(_L("Comment: [%S]"),&comment);
+
+	//Verify the comment
+	if(!comment.Compare(KMediaSvrGifComment))
+		iTestStepResult = EPass;
+
+	CleanupStack::PopAndDestroy(2,bmp); // ftob, bmp
+
+	return iTestStepResult;
+	}
+
+// --------------------------------------------
+/**
+ *
+ * Static constructor for CMediaSvrTest.
+ *
+ *
+ * @return	"CMediaSvrTest*"
+ *			The constructed CMediaSvrTest
+ *
+ * @xxxx
+ * 
+ */
+CMediaSvrTest22* CMediaSvrTest22::NewL()
+	{
+	CMediaSvrTest22* self = new(ELeave) CMediaSvrTest22;
+	return self;
+	}
+/**
+ *
+ * Test step constructor.
+ * Each test step initialises its own name.
+ *
+ * @xxxx
+ * 
+ */
+CMediaSvrTest22::CMediaSvrTest22()
+	{
+	// store the name of this test case
+	// this is the name that is used by the script file
+	iTestStepName = _L("MM-ICL-MEDIASVR-U-022");
+
+	// Heap size necessary for WriteImageToDescriptorL call
+	iHeapSize = 800000;
+	}