compressionlibs/ziplib/test/tef/tlibz/src/tzlibblocks.cpp
changeset 0 e4d67989cc36
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/compressionlibs/ziplib/test/tef/tlibz/src/tzlibblocks.cpp	Tue Feb 02 02:01:42 2010 +0200
@@ -0,0 +1,3329 @@
+// Copyright (c) 2007-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:
+// Name        : tzlibcases.cpp
+// 
+//
+
+#include "tzlib.h"
+
+//uLong dictId;
+
+#define CHECK_ERR(err, msg) { \
+	if (err != Z_OK) { \
+	INFO_PRINTF2(_L("Error: %d"), err); \
+	return err; \
+	} \
+}
+
+
+TInt CTestZlib::PreDeflateInit( Byte * compr, uLong comprLen, TInt flush, TInt compression)
+	{
+	z_stream c_stream; // compression stream 
+	int err;
+	const char hello[] = "hello, hello!";
+	uLong len = (uLong)strlen(hello)+1;
+
+	c_stream.zalloc = (alloc_func)0;
+	c_stream.zfree = (free_func)0;
+	c_stream.opaque = (voidpf)0;
+
+	err = deflateInit(&c_stream,compression);// Z_DEFAULT_COMPRESSION);
+
+	if (err != Z_OK) 
+		{ 
+		INFO_PRINTF2(_L("deflateInit error: %d"), err); 
+		return err; 
+		} 
+
+	c_stream.next_in  = (Bytef*)hello;
+	c_stream.next_out = compr;
+
+	while (c_stream.total_in != len && c_stream.total_out < comprLen) 
+		{
+		c_stream.avail_in = c_stream.avail_out = 1; //* force small buffers 
+		err = deflate(&c_stream, flush);
+		if (err != Z_OK) 
+			{ 
+			INFO_PRINTF2(_L("deflate return code: %d"), err); 
+			deflateEnd(&c_stream);
+			return err; 
+			} 
+		}
+	// Finish the stream, still forcing small buffers: 
+	for (;;) 
+		{
+		c_stream.avail_out = 1;
+		err = deflate(&c_stream, Z_FINISH);
+		if (err == Z_STREAM_END) break;
+		if (err != Z_OK)
+			{ 
+			INFO_PRINTF2(_L("deflate error: %d"), err); 
+			deflateEnd(&c_stream);
+			return err; 
+			} 
+		}
+
+	deflateEnd(&c_stream);
+	return KErrNone;
+	}
+
+/**
+ * Function Name : TestDeflateTest01
+ * TestCase Description: 1. Reads flush value more than Z_FINISH [i.e, 4]
+ *						2. Reads negative flush value 
+ */
+TInt CTestZlib::TestDeflateTest01( )
+	{
+	INFO_PRINTF1(_L("Zlib Test deflate"));	
+	TInt flush, compression, expRet;
+
+	Byte *comp;
+	uLong compLen;
+	compLen = 30;
+	comp    = (Byte*)calloc((uInt)compLen, 1);
+
+	ReadIntParam(flush);
+	ReadIntParam(compression);
+	ReadIntParam(expRet);
+
+	z_stream c_stream; // compression stream 
+	int err;
+	const char hello[] = "hello, hello!";
+	uLong len = (uLong)strlen(hello)+1;
+
+	c_stream.zalloc = (alloc_func)0;
+	c_stream.zfree = (free_func)0;
+	c_stream.opaque = (voidpf)0;
+
+	err = deflateInit(&c_stream,compression);// Z_DEFAULT_COMPRESSION);
+
+	if (err != Z_OK) 
+		{ 
+		INFO_PRINTF2(_L("deflateInit error: %d"), err); 
+		free(comp);
+		return err; 
+		}  
+
+	c_stream.next_in  = (Bytef*)hello;
+	c_stream.next_out = comp;
+
+	while (c_stream.total_in != len && c_stream.total_out < compLen) 
+		{
+		c_stream.avail_in = c_stream.avail_out = 1; //* force small buffers 
+		err = deflate(&c_stream, flush);
+		if (err == Z_STREAM_ERROR) 
+			{ 
+			INFO_PRINTF1(_L("Negative test case passed"));
+			deflateEnd(&c_stream);
+			free(comp);
+			return KErrNone; 
+			}
+		}
+
+	return KErrNone;
+
+	}
+
+/**
+ * Function Name : TestDeflatecopyDestNull
+ * TestCase Description: Deflate copy with Destination as NULL
+ */
+TInt CTestZlib::TestDeflatecopyDestNull()
+	{
+	uLong len = (uLong)strlen(hello)+1;
+	TInt retVal=0;
+	Byte *compr, *uncompr;
+	uLong comprLen = 20*sizeof(int); 
+	uLong uncomprLen = comprLen;
+	compr    = (Byte*)calloc((uInt)comprLen, 1);
+	if (compr == Z_NULL)
+		{
+		return KErrNoMemory;
+		}
+
+	uncompr  = (Byte*)calloc((uInt)uncomprLen, 1);
+	if (uncompr == Z_NULL) 
+		{
+		free(compr);
+		return KErrNoMemory;
+		}	
+
+
+	z_stream stream;
+	int err;
+
+	stream.zalloc = (alloc_func)0;
+	stream.zfree = (free_func)0;
+	stream.opaque = (voidpf)0;
+
+	stream.next_in = (Bytef*)hello;
+	stream.avail_in = (uInt)len;
+
+	stream.next_out = compr;
+	stream.avail_out = (uInt)comprLen;
+
+	err = deflateInit(&stream, Z_DEFAULT_COMPRESSION);
+
+	err=deflateCopy(NULL , &stream); 
+
+	if (err == Z_STREAM_ERROR )  
+		{
+		deflateEnd(&stream);
+		free(compr);
+		free(uncompr);
+		retVal = KErrNone; 
+		} 
+
+	return retVal;   
+	}
+
+/**
+ * Function Name : TestDeflateCopyStreamStateNull
+ * TestCase Description: Deflate copy with source stream state as Z_NULL
+ * Return value: KErrNone on deflateCopy retruning Z_STREAM_ERROR
+ */
+TInt CTestZlib::TestDeflateCopyStreamStateNull()
+	{
+	uLong len = (uLong)strlen(hello)+1;
+	TInt retVal=0;
+	Byte *compr, *uncompr;
+	uLong comprLen = 20*sizeof(int); 
+	uLong uncomprLen = comprLen;
+	compr = (Byte*)calloc((uInt)comprLen, 1);
+	if (compr == Z_NULL)
+		{
+		return KErrNoMemory;
+		}
+
+	uncompr = (Byte*)calloc((uInt)uncomprLen, 1);
+	if (uncompr == Z_NULL) 
+		{
+		free(compr);
+		return KErrNoMemory;
+		}	    	
+
+	z_stream stream;
+	z_stream stream1;
+	int err = KErrNone;
+
+	stream.zalloc = (alloc_func)0;
+	stream.zfree = (free_func)0;
+	stream.opaque = (voidpf)0;
+
+	stream.next_in = (Bytef*)hello;
+	stream.avail_in = (uInt)len;
+
+	stream.next_out = compr;
+	stream.avail_out = (uInt)comprLen;
+
+	err = deflateInit(&stream, Z_DEFAULT_COMPRESSION);
+
+	err=deflateCopy(&stream1, &stream);
+	deflateEnd(&stream);
+	deflateEnd(&stream1);
+
+	// Make stream state Z_NULL and call deflateCopy for coverage imrprovement
+	stream.state = Z_NULL;
+	err=deflateCopy(&stream1 , &stream); 
+
+	if (err == Z_STREAM_ERROR )
+		{
+		retVal = KErrNone; 
+		}
+	free(compr);
+	free(uncompr);
+	return retVal;   
+	}
+
+/**
+ * Function Name : TestDeflateInit2_WindowBits
+ * TestCase Description: 1. WindowBits value more than 15
+ *						2. WindowBits value less than 8
+ *						3. WindowBits 8
+ */
+TInt CTestZlib::TestDeflateInit2_WindowBits()
+	{
+	TInt res = KErrNone;
+	z_stream stream;
+	int err;
+	int level=Z_DEFAULT_COMPRESSION;
+	int WindowBits=0;
+
+	uLong sourceLen = (uLong)strlen(hello)+1;
+	Byte *compr;
+	uLong comprLen = 10*sizeof(int); 
+	compr = (Byte*)calloc((uInt)comprLen, 1);
+	if (compr == Z_NULL)
+		{
+		return KErrNoMemory;
+		}
+
+	ReadIntParam(WindowBits);
+	stream.zalloc = (alloc_func)0;
+	stream.zfree = (free_func)0;
+	stream.opaque = (voidpf)0;
+
+
+	err= deflateInit2_(&stream, level, 8, WindowBits, 8,
+			0,  zlibVersion(), sizeof(z_stream));
+
+	if (err == Z_STREAM_ERROR) 
+		{
+		res = KErrNone;
+		}
+	else if (err == Z_OK)
+		{
+		deflateEnd(&stream);
+		res = KErrNone;
+		}
+	else  
+		{    	
+		res = KErrGeneral; 
+		}       
+
+	free(compr);
+	return res;
+	}
+
+
+
+/**
+ * Function Name : TestDeflateInit2_StreamSize
+ * TestCase Description: Stream size less than sizeof(z_stream)
+ */
+TInt CTestZlib::TestDeflateInit2_StreamSize()
+	{
+	TInt res = KErrNone ;
+	z_stream stream;
+	int err;
+	int level=Z_DEFAULT_COMPRESSION;
+	int WindowBits=0;
+
+	uLong sourceLen = (uLong)strlen(hello)+1;
+	Byte *compr;
+	uLong comprLen = 10*sizeof(int); 
+	compr = (Byte*)calloc((uInt)comprLen, 1);
+	if (compr == Z_NULL)
+		{
+		return KErrNoMemory;
+		}
+
+	ReadIntParam(WindowBits);
+	stream.zalloc = (alloc_func)0;
+	stream.zfree = (free_func)0;
+	stream.opaque = (voidpf)0;
+
+	// passing stream size < sizeof(z_stream)
+	err= deflateInit2_(&stream, level, 8, 15, 8,
+			0,  zlibVersion(), sizeof(z_stream)-10);
+
+	if (err == Z_VERSION_ERROR) 
+		{
+		res = KErrNone;
+		}
+	else  
+		{    	
+		res = KErrGeneral; 
+		}       
+
+	free(compr);
+	return res;
+	}
+
+/**
+ * Function Name : TestDeflateInit2_MemLevel
+ * TestCase Description: 1. MemLevel value less than 1
+ *						2. MemLevel value more than MAX_MEM_LEVEL [i.e., 8]
+ */
+TInt CTestZlib::TestDeflateInit2_MemLevel()
+	{
+	TInt res = KErrNone ;
+	z_stream stream;
+	int err;
+	int level=Z_DEFAULT_COMPRESSION;
+	int MemLevel=0;
+
+	uLong sourceLen = (uLong)strlen(hello)+1;
+	Byte *compr;
+	uLong comprLen = 10*sizeof(int); 
+	compr    = (Byte*)calloc((uInt)comprLen, 1);
+	if (compr == Z_NULL)
+		{
+		return KErrNoMemory;
+		}
+
+	ReadIntParam(MemLevel);
+	stream.zalloc = (alloc_func)0;
+	stream.zfree = (free_func)0;
+	stream.opaque = (voidpf)0;
+
+
+	err= deflateInit2_(&stream, level, 3, 15, MemLevel,
+			0,  zlibVersion(), sizeof(z_stream));
+
+	if (err == Z_STREAM_ERROR) 
+		{
+		res = KErrNone;
+		} 
+	else  
+		{    	
+		res = KErrGeneral; 
+		}       
+
+	//deflateEnd(&stream);
+	free(compr);
+	return res;
+	}
+
+/**
+ * Function Name : TestDeflateInit2_Level
+ * TestCase Description: 1. Level value less than 0
+ *						2. Level value more than 9
+ */
+TInt CTestZlib::TestDeflateInit2_Level()
+	{
+	TInt res = KErrNone ;
+	z_stream stream;
+	int err;
+	int level=0;
+
+	uLong sourceLen = (uLong)strlen(hello)+1;
+	Byte *compr;
+	uLong comprLen = 10*sizeof(int); 
+	compr    = (Byte*)calloc((uInt)comprLen, 1);
+	if (compr == Z_NULL)
+		{
+		return KErrNoMemory;
+		}
+
+	ReadIntParam(level);
+	stream.zalloc = (alloc_func)0;
+	stream.zfree = (free_func)0;
+	stream.opaque = (voidpf)0;
+
+
+	err= deflateInit2_(&stream, level, 8, 15, 8,
+			0,  zlibVersion(), sizeof(z_stream));
+
+	if (err == Z_STREAM_ERROR) 
+		{
+		res = KErrNone;
+		} 
+	else  
+		{    	
+		res = KErrGeneral; 
+		}       
+
+	//deflateEnd(&stream);
+	free(compr);
+	return res;
+	}
+
+/**
+ * Function Name : TestDeflateInit2_Strategy
+ * TestCase Description: 1. Strategy value less than 0
+ *						2. Strategy value more than Z_FIXED
+ */
+TInt CTestZlib::TestDeflateInit2_Strategy()
+	{
+	TInt res = KErrNone ;
+	z_stream stream;
+	int err;
+	int level=Z_DEFAULT_COMPRESSION;
+	int strategy=0;
+
+	uLong sourceLen = (uLong)strlen(hello)+1;
+	Byte *compr;
+	uLong comprLen = 10*sizeof(int); 
+	compr = (Byte*)calloc((uInt)comprLen, 1);
+	if (compr == Z_NULL)
+		{
+		return KErrNoMemory;
+		}
+
+	ReadIntParam(strategy);
+	stream.zalloc = (alloc_func)0;
+	stream.zfree = (free_func)0;
+	stream.opaque = (voidpf)0;
+
+
+	err= deflateInit2_(&stream, level, 8, 15, 8,
+			strategy, zlibVersion(), sizeof(z_stream));
+
+	if (err == Z_STREAM_ERROR) 
+		{
+		res = KErrNone;
+		} 
+	else  
+		{    	
+		res = KErrGeneral; 
+		}       
+
+	free(compr);
+	return res;
+	}
+
+/**
+ * Function Name : TestDeflateInit2_Version
+ * TestCase Description: Invalid version value
+ * Return Value: returns Z_VERSION_ERROR
+ */
+TInt CTestZlib::TestDeflateInit2_Version()
+	{
+	TInt res = KErrNone ;
+	z_stream stream;
+	int err;
+	int level=Z_DEFAULT_COMPRESSION;
+	char version[5];
+
+	uLong sourceLen = (uLong)strlen(hello)+1;
+	Byte *compr;
+	uLong comprLen = 10*sizeof(int); 
+	compr = (Byte*)calloc((uInt)comprLen, 1);
+	if (compr == Z_NULL)
+		{
+		return KErrNoMemory;
+		}
+
+	ReadStringParam(version);
+	stream.zalloc = (alloc_func)0;
+	stream.zfree = (free_func)0;
+	stream.opaque = (voidpf)0;
+
+
+	err= deflateInit2_(&stream, level, 8, 15, 8,
+			0, version, sizeof(z_stream));
+
+	if (err == Z_VERSION_ERROR) 
+		{
+		res = KErrNone;
+		} 
+	else  
+		{
+		res = KErrGeneral; 
+		}       
+
+	free(compr);
+	return res;
+	}
+
+/**
+ * Function Name : TestDeflateInit2_VersionNull
+ * TestCase Description: version value is Z_NULL
+ * Return Value: Z_VERSION_ERROR
+ */
+TInt CTestZlib::TestDeflateInit2_VersionNull()
+	{
+	TInt res = KErrNone ;
+	z_stream stream;
+	int err;
+	int level=Z_DEFAULT_COMPRESSION;
+
+	uLong sourceLen = (uLong)strlen(hello)+1;
+	Byte *compr;
+	uLong comprLen = 10*sizeof(int); 
+	compr = (Byte*)calloc((uInt)comprLen, 1);
+	if (compr == Z_NULL)
+		{
+		return KErrNoMemory;
+		}
+
+	stream.zalloc = (alloc_func)0;
+	stream.zfree = (free_func)0;
+	stream.opaque = (voidpf)0;
+
+
+	err= deflateInit2_(&stream, level, 8, 15, 8,
+			0, Z_NULL, sizeof(z_stream));
+
+	if (err == Z_VERSION_ERROR) 
+		{
+		res = KErrNone;
+		} 
+	else  
+		{	
+		res = KErrGeneral; 
+		}       
+
+	free(compr);
+	return res;
+	}
+
+
+/**
+ * Function Name : TestDeflateInit2_StreamNull
+ * TestCase Description: Pass Z_NULL stream
+ */
+TInt CTestZlib::TestDeflateInit2_StreamNull()
+	{
+	TInt res = KErrNone ;
+	//z_stream stream;
+	int err;	
+	int level=Z_DEFAULT_COMPRESSION;
+
+	uLong sourceLen = (uLong)strlen(hello)+1;
+	Byte *compr;
+	uLong comprLen = 10*sizeof(int); 
+	compr = (Byte*)calloc((uInt)comprLen, 1);
+	if (compr == Z_NULL)
+		{
+		return KErrNoMemory;
+		}
+
+	//stream.zalloc = (alloc_func)0;
+	//stream.zfree = (free_func)0;
+	//stream.opaque = (voidpf)0;
+
+	err= deflateInit2_(Z_NULL, level, 8, 15, 8,
+			0,  zlibVersion(), sizeof(z_stream));
+
+	if (err == Z_STREAM_ERROR) 
+		{
+		res = KErrNone;
+		}
+	else  
+		{    	
+		res = KErrGeneral; 
+		}       
+
+	free(compr);
+	return res;
+	}
+
+/**
+ * Function Name : TestInflateInit2_Version
+ * TestCase Description: Invalid version value
+ * Return Value: returns Z_VERSION_ERROR
+ */
+TInt CTestZlib::TestInflateInit2_Version()
+	{ 
+	TInt res = KErrNone ;
+
+	z_stream d_stream; // decompression stream
+	char version[5];
+	d_stream.zalloc = (alloc_func)0;
+	d_stream.zfree = (free_func)0;
+	d_stream.opaque = (voidpf)0;
+
+	Byte *compr, *uncompr;
+	uLong comprLen = 20*sizeof(int); // don't overflow on MSDOS
+	uLong uncomprLen = comprLen;
+	compr    = (Byte*)calloc((uInt)comprLen, 1);
+	if (compr == Z_NULL)
+		{
+		return KErrNoMemory;
+		}
+	uncompr  = (Byte*)calloc((uInt)uncomprLen, 1);
+	if (uncompr == Z_NULL) 
+		{
+		free(compr);
+		return KErrNoMemory;
+		}
+	res = Test_deflate(compr, comprLen);
+	if(res<0)
+		{
+		free(compr);
+		free(uncompr);
+		return KErrNoMemory;	
+		}
+	d_stream.next_in  = compr;
+	d_stream.avail_in = 0;
+	d_stream.next_out = uncompr;
+
+	//Reading invalid version from ini file
+	ReadStringParam(version);	
+
+	int ret =  inflateInit2_(&d_stream, 15, version, sizeof(d_stream));
+	if(ret == Z_VERSION_ERROR)
+		{
+		res = KErrNone;    	
+		}
+	else
+		{    	
+		res = KErrGeneral;
+		}   
+	free(compr);
+	free(uncompr);
+	return res;   
+	}
+
+/**
+ * Function Name : TestInflateInit2_VersionNull
+ * TestCase Description: version value is Z_NULL
+ * Return Value: Z_VERSION_ERROR
+ */
+TInt CTestZlib::TestInflateInit2_VersionNull()
+	{ 
+	TInt res = KErrNone ;
+
+	z_stream d_stream; // decompression stream
+	d_stream.zalloc = (alloc_func)0;
+	d_stream.zfree = (free_func)0;
+	d_stream.opaque = (voidpf)0;
+
+	Byte *compr, *uncompr;
+	uLong comprLen = 20*sizeof(int); // don't overflow on MSDOS
+	uLong uncomprLen = comprLen;
+	compr    = (Byte*)calloc((uInt)comprLen, 1);
+	if (compr == Z_NULL)
+		{
+		return KErrNoMemory;
+		}
+	uncompr  = (Byte*)calloc((uInt)uncomprLen, 1);
+	if (uncompr == Z_NULL) 
+		{
+		free(compr);
+		return KErrNoMemory;
+		}
+	res = Test_deflate(compr, comprLen);
+	if(res<0)
+		{
+		free(compr);
+		free(uncompr);
+		return KErrNoMemory;	
+		}
+	d_stream.next_in  = compr;
+	d_stream.avail_in = 0;
+	d_stream.next_out = uncompr;
+
+	int ret =  inflateInit2_(&d_stream, 15, Z_NULL, sizeof(d_stream));
+	if(ret == Z_VERSION_ERROR)
+		{
+		res = KErrNone;    	
+		}
+	else
+		{    	
+		res = KErrGeneral;
+		}   
+	free(compr);
+	free(uncompr);
+	return res;   
+	}
+
+/**
+ * Function Name : TestInflateInit2_WindowBits
+ * TestCase Description: Window bits more than 48 to increase the conditional coverage
+ * Return Value: returns Z_STREAM_ERROR
+ */
+TInt CTestZlib::TestInflateInit2_WindowBits()
+	{ 
+	TInt res = KErrNone ;
+
+	z_stream d_stream; // decompression stream
+	int WindowBits = 0;
+	d_stream.zalloc = (alloc_func)0;
+	d_stream.zfree = (free_func)0;
+	d_stream.opaque = (voidpf)0;
+
+	Byte *compr, *uncompr;
+	uLong comprLen = 20*sizeof(int); // don't overflow on MSDOS
+	uLong uncomprLen = comprLen;
+	compr    = (Byte*)calloc((uInt)comprLen, 1);
+	if (compr == Z_NULL)
+		{
+		return KErrNoMemory;
+		}
+	uncompr  = (Byte*)calloc((uInt)uncomprLen, 1);
+	if (uncompr == Z_NULL) 
+		{
+		free(compr);
+		return KErrNoMemory;
+		}
+	res = Test_deflate(compr, comprLen);
+	if(res<0)
+		{
+		free(compr);
+		free(uncompr);
+		return KErrNoMemory;	
+		}
+	d_stream.next_in  = compr;
+	d_stream.avail_in = 0;
+	d_stream.next_out = uncompr;
+
+	//Reading window bits from ini file
+	ReadIntParam(WindowBits);	
+
+	int ret =  inflateInit2_(&d_stream, WindowBits, "1.2.4", sizeof(d_stream));
+	if(ret == Z_STREAM_ERROR)
+		{
+		res = KErrNone;    	
+		}
+	else
+		{    	
+		res = KErrGeneral;
+		}   
+	free(compr);
+	free(uncompr);
+	return res;   
+	}
+
+/**
+ * Function Name : TestInflateInit2_StreamNull
+ * TestCase Description: Stream NULL
+ * Return Value: returns Z_STREAM_ERROR
+ */
+TInt CTestZlib::TestInflateInit2_StreamNull()
+	{ 
+	TInt res = KErrNone ;
+
+	z_stream d_stream; // decompression stream
+	//d_stream.zalloc = (alloc_func)0;
+	//d_stream.zfree = (free_func)0;
+	//d_stream.opaque = (voidpf)0;
+
+	Byte *compr, *uncompr;
+	uLong comprLen = 20*sizeof(int); // don't overflow on MSDOS
+	uLong uncomprLen = comprLen;
+	compr = (Byte*)calloc((uInt)comprLen, 1);
+	if (compr == Z_NULL)
+		{
+		return KErrNoMemory;
+		}
+	uncompr  = (Byte*)calloc((uInt)uncomprLen, 1);
+	if (uncompr == Z_NULL) 
+		{
+		free(compr);
+		return KErrNoMemory;
+		}
+	res = Test_deflate(compr, comprLen);
+	if(res<0)
+		{
+		free(compr);
+		free(uncompr);
+		return KErrNoMemory;	
+		}
+	//d_stream.next_in  = compr;
+	//d_stream.avail_in = 0;
+	//d_stream.next_out = uncompr;
+
+	int ret =  inflateInit2_(Z_NULL, 15, "1.2.4", sizeof(d_stream));
+	if(ret == Z_STREAM_ERROR)
+		{
+		res = KErrNone;    	
+		}
+	else
+		{    	
+		res = KErrGeneral;
+		}   
+	free(compr);
+	free(uncompr);
+	return res;   
+	}
+
+/**
+ * Function Name : TestDeflate_HuffmanStrategy
+ * TestCase Description: Strategy is HUFFMAN
+ * Return Value: Z_OK
+ */
+TInt CTestZlib::TestDeflate_HuffmanStrategy()
+	{
+	TInt res = KErrNone ;
+	z_stream stream;
+	int err;
+	int level=Z_DEFAULT_COMPRESSION;
+
+	uLong sourceLen = (uLong)strlen(hello)+1;
+	Byte *compr;
+	uLong comprLen = 20*sizeof(int); 
+	compr = (Byte*)calloc((uInt)comprLen, 1);
+	if (compr == Z_NULL)
+		{
+		return KErrNoMemory;
+		}
+
+	stream.zalloc = (alloc_func)0;
+	stream.zfree = (free_func)0;
+	stream.opaque = (voidpf)0;
+
+
+	err= deflateInit2_(&stream, level, 8, 15, 8,
+			2, zlibVersion(), sizeof(z_stream));
+
+	if (err == Z_OK) 
+		{
+		res = KErrNone;
+		} 
+	else  
+		{	
+		res = KErrGeneral; 
+		}
+
+	stream.next_in  = (Bytef*)hello;
+	stream.next_out = compr;
+
+	while (stream.total_in != sourceLen && stream.total_out < comprLen) 
+		{
+		stream.avail_in = stream.avail_out = 1; /* force small buffers */
+		err = deflate(&stream, Z_NO_FLUSH);
+		}
+	/* Finish the stream, still forcing small buffers: */
+	for (;;) 
+		{
+		stream.avail_out = 1;
+		err = deflate(&stream, Z_FINISH);
+		if (err == Z_STREAM_END) break;
+		if(err!=Z_OK)
+			{
+			res = KErrGeneral;
+			}    
+		}
+
+	err = deflateEnd(&stream);
+	if(err!=Z_OK)
+		{
+		res = KErrGeneral;
+		}     
+
+	free(compr);
+	return res;
+	}
+
+/**
+ * Function Name : TestDeflate_AvailInZero
+ * TestCase Description: avail_in value is set to 0
+ * Return Value: Z_STREAM_ERROR
+ */
+TInt CTestZlib::TestDeflate_AvailInZero()
+	{
+	TInt res = KErrNone ;
+	z_stream stream;
+	int err;
+	int level=Z_DEFAULT_COMPRESSION;
+
+	uLong sourceLen = (uLong)strlen(hello)+1;
+	Byte *compr;
+	uLong comprLen = 20*sizeof(int); 
+	compr = (Byte*)calloc((uInt)comprLen, 1);
+	if (compr == Z_NULL)
+		{
+		return KErrNoMemory;
+		}
+
+	stream.zalloc = (alloc_func)0;
+	stream.zfree = (free_func)0;
+	stream.opaque = (voidpf)0;
+
+
+	err= deflateInit2_(&stream, level, 8, 15, 8,
+			0, zlibVersion(), sizeof(z_stream));
+
+	if (err == Z_OK) 
+		{
+		res = KErrNone;
+		} 
+	else  
+		{	
+		res = KErrGeneral; 
+		}
+
+	stream.next_in  = Z_NULL;
+	stream.next_out = Z_NULL;    
+
+	while (stream.total_in != sourceLen && stream.total_out < comprLen) 
+		{
+		stream.avail_in = 0;	// Setting avail_in to zero
+		stream.avail_out = 1; 	// force small buffers 
+		err = deflate(&stream, Z_NO_FLUSH);
+		if (err != Z_OK)
+			break;
+		}
+
+	if (err == Z_STREAM_ERROR) 
+		{
+		res = KErrNone;
+		deflateEnd(&stream);
+		free(compr);
+		return res;
+		} 
+	else  
+		{	
+		res = KErrGeneral; 
+		free(compr);
+		}	   
+
+	return res;
+	}
+
+/**
+ * Function Name : TestGzsetparamDefaultCompression
+ * TestCase Description: This test case is intended to cover the condition in
+ *						deflateParams_r. Z_DEFAULT_COMPRESSION and strategy>4 is passed
+ * Return Value: Z_STREAM_ERROR
+ */
+TInt CTestZlib::TestGzsetparamDefaultCompression()
+	{
+	TInt res = KErrNone ;
+
+	int len = (int)strlen(hello)+1;
+	gzFile file;
+
+	const char * fname = TESTFILE;
+
+	file = gzopen(fname, "wb");
+	gzputc(file, 'h');
+
+	int u = gzsetparams(file, Z_DEFAULT_COMPRESSION, 8);
+	if(u == Z_STREAM_ERROR)
+		{
+		res=KErrNone;	
+		}
+	int err=  gzclose(file);
+	if (err != Z_OK)  
+		{
+		res = KErrGeneral; 
+		} 
+
+	return res;
+	}
+
+/**
+ * Function Name : TestDeflateResetNullStream
+ * TestCase Description: Pass NULL stream
+ * Return Value: Z_STREAM_ERROR
+ */  	
+TInt CTestZlib::TestDeflateResetNullStream()
+	{ 
+	INFO_PRINTF1(_L("DeflateReset test with NULL input"));
+	TInt res = KErrNone ;
+	int level = Z_DEFAULT_COMPRESSION ;
+	uLong len = (uLong)strlen(hello)+1;
+	Byte *compr, *uncompr;
+	uLong comprLen = 20*sizeof(int); 
+	uLong uncomprLen = comprLen;
+	int err;
+	z_stream stream;
+	compr    = (Byte*)calloc((uInt)comprLen, 1);
+	if (compr == Z_NULL)
+		{
+		return KErrNoMemory;
+		}
+	uncompr  = (Byte*)calloc((uInt)uncomprLen, 1);
+	if (uncompr == Z_NULL) 
+		{
+		free(compr);
+		return KErrNoMemory;
+		}
+
+	stream.zalloc = (alloc_func)0;
+	stream.zfree = (free_func)0;
+	stream.opaque = (voidpf)0;
+
+	err = deflateInit(&stream, level);
+	if (err != Z_OK) 
+		{
+		free(compr);
+		free(uncompr);
+		return err;
+		}
+
+	Bytef *dest = compr ;
+	uLongf *destLen = &comprLen;
+	const Bytef *source = (const Bytef*)hello;
+	uLong sourceLen = len;  
+
+	stream.next_in = (Bytef*)source;
+	stream.avail_in = (uInt)sourceLen;
+
+#ifdef MAXSEG_64K
+	/* Check for source > 64K on 16-bit machine: */
+	if ((uLong)stream.avail_in != sourceLen)  
+		{
+		res = KErrGeneral; 
+		}
+#endif
+
+	stream.next_out = dest;
+	stream.avail_out = (uInt)*destLen;
+
+	if ((uLong)stream.avail_out != *destLen)  
+		{
+		res = KErrGeneral; 
+		}
+
+	err=deflateReset(Z_NULL/*&stream*/);
+	if (err == Z_STREAM_ERROR)  
+		{
+		res = KErrNone;     			
+		} 
+	else  
+		{    	
+		res = KErrGeneral;
+		}   
+	deflateEnd(&stream);
+	free(compr);
+	free(uncompr);
+	return res;
+	}
+
+/**
+ * Function Name : TestDeflateResetStreamStateNull
+ * TestCase Description: Pass NULL stream state
+ * Return Value: Z_STREAM_ERROR
+ */  	
+TInt CTestZlib::TestDeflateResetStreamStateNull()
+	{ 
+	TInt res = KErrNone ;
+	int level = Z_DEFAULT_COMPRESSION ;
+	uLong len = (uLong)strlen(hello)+1;
+	Byte *compr, *uncompr;
+	uLong comprLen = 20*sizeof(int); 
+	uLong uncomprLen = comprLen;
+	int err;
+	z_stream stream;
+	compr    = (Byte*)calloc((uInt)comprLen, 1);
+	if (compr == Z_NULL)
+		{
+		return KErrNoMemory;
+		}
+	uncompr  = (Byte*)calloc((uInt)uncomprLen, 1);
+	if (uncompr == Z_NULL) 
+		{
+		free(compr);
+		return KErrNoMemory;
+		}
+
+	stream.zalloc = (alloc_func)0;
+	stream.zfree = (free_func)0;
+	stream.opaque = (voidpf)0;
+
+	err = deflateInit(&stream, level);
+	if (err != Z_OK) 
+		{
+		free(compr);
+		free(uncompr);
+		return err;
+		}
+
+	Bytef *dest = compr ;
+	uLongf *destLen = &comprLen;
+	const Bytef *source = (const Bytef*)hello;
+	uLong sourceLen = len;  
+
+	stream.next_in = (Bytef*)source;
+	stream.avail_in = (uInt)sourceLen;
+
+#ifdef MAXSEG_64K
+	/* Check for source > 64K on 16-bit machine: */
+	if ((uLong)stream.avail_in != sourceLen)  
+		{
+		res = KErrGeneral; 
+		}
+#endif
+
+	stream.next_out = dest;
+	stream.avail_out = (uInt)*destLen;
+
+	if ((uLong)stream.avail_out != *destLen)  
+		{
+		res = KErrGeneral; 
+		}
+
+	err=deflateReset(&stream);
+	deflateEnd(&stream);
+
+	//equate stream state to Z_NULL for coverage improvement
+	stream.state = Z_NULL;
+	err=deflateReset(&stream);
+
+	if (err == Z_STREAM_ERROR)  
+		{
+		res = KErrNone;     			
+		} 
+	else  
+		{    	
+		res = KErrGeneral;
+		}   
+	free(compr);
+	free(uncompr);
+	return res;
+	}
+
+/**
+ * Function Name : TestDeflate_Scenarios
+ * TestCase Description: 1. Compression level is Z_DEFAULT_COMPRESSION, strategy is Z_RLE
+ *						2. Compression level is Z_BEST_SPEED, strategy is Z_HUFFMAN_ONLY
+ *						3. Compression level is Z_BEST_COMPRESSION, strategy is Z_FILTERED
+ *						4. Compression level is Z_BEST_COMPRESSION, strategy is Z_HUFFMAN_ONLY
+ *						5. Compression level is Z_BEST_COMPRESSION, strategy is Z_FIXED
+ * Return Value: Z_OK
+ */
+TInt CTestZlib::TestDeflate_Scenarios()
+	{
+	TInt res = KErrNone ;
+	z_stream stream;
+	int err;
+	int level=0;
+	int strategy=0;
+
+	uLong sourceLen = (uLong)strlen(hello)+1;
+	Byte *compr;
+	uLong comprLen = 20*sizeof(int); 
+	compr = (Byte*)calloc((uInt)comprLen, 1);
+	if (compr == Z_NULL)
+		{
+		return KErrNoMemory;
+		}
+
+	stream.zalloc = (alloc_func)0;
+	stream.zfree = (free_func)0;
+	stream.opaque = (voidpf)0;
+
+	ReadIntParam(level);
+	ReadIntParam(strategy);  	
+	err= deflateInit2_(&stream, level, 8, 15, 8,
+			strategy, zlibVersion(), sizeof(z_stream));
+
+	if (err == Z_OK) 
+		{
+		res = KErrNone;
+		} 
+	else  
+		{	
+		res = KErrGeneral; 
+		}
+
+	stream.next_in  = (Bytef*)hello;
+	stream.next_out = compr;
+
+	while (stream.total_in != sourceLen && stream.total_out < comprLen) 
+		{
+		stream.avail_in = stream.avail_out = 1; /* force small buffers */
+		err = deflate(&stream, Z_NO_FLUSH);
+		}
+	/* Finish the stream, still forcing small buffers: */
+	for (;;) 
+		{
+		stream.avail_out = 1;
+		err = deflate(&stream, Z_FINISH);
+		if (err == Z_STREAM_END) break;
+		if(err!=Z_OK)
+			{
+			res = KErrGeneral;
+			}    
+		}
+
+	err = deflateEnd(&stream);
+	if(err!=Z_OK)
+		{
+		res = KErrGeneral;
+		}     
+
+	free(compr);
+	return res;
+	}
+
+/**
+ * Function Name : TestDeflate_NullStream
+ * TestCase Description: NULL stream is passed for deflate
+ * Return Value: Z_STREAM_ERROR
+ */
+TInt CTestZlib::TestDeflate_NullStream()
+	{
+	TInt res = KErrNone ;
+	z_stream stream;
+	int err;
+	int level=Z_DEFAULT_COMPRESSION;
+
+	uLong sourceLen = (uLong)strlen(hello)+1;
+	Byte *compr;
+	uLong comprLen = 20*sizeof(int); 
+	compr = (Byte*)calloc((uInt)comprLen, 1);
+	if (compr == Z_NULL)
+		{
+		return KErrNoMemory;
+		}
+
+	stream.zalloc = (alloc_func)0;
+	stream.zfree = (free_func)0;
+	stream.opaque = (voidpf)0;
+
+
+	err= deflateInit2_(&stream, level, 8, 15, 8,
+			0, zlibVersion(), sizeof(z_stream));
+
+	if (err == Z_OK) 
+		{
+		res = KErrNone;
+		} 
+	else  
+		{	
+		res = KErrGeneral; 
+		}
+
+	stream.next_in  = (Bytef*)hello;
+	stream.next_out = compr;    
+
+	while (stream.total_in != sourceLen && stream.total_out < comprLen) 
+		{
+		stream.avail_in = stream.avail_out = 1; 	// force small buffers 
+		err = deflate(Z_NULL, Z_NO_FLUSH);
+		if (err != Z_OK)
+			break;
+		}
+
+	if (err == Z_STREAM_ERROR) 
+		{
+		res = KErrNone;
+		deflateEnd(&stream);
+		free(compr);
+		return res;
+		} 
+	else  
+		{	
+		res = KErrGeneral; 
+		}	
+
+	return res;
+	}
+
+/**
+ * Function Name : TestDeflate_StreamStateNull
+ * TestCase Description: stream state is made Z_NULL before calling deflate
+ * Return Value: Z_STREAM_ERROR
+ */
+TInt CTestZlib::TestDeflate_StreamStateNull()
+	{
+	TInt res = KErrNone ;
+	z_stream stream;
+	int err;
+	int level=Z_DEFAULT_COMPRESSION;
+
+	uLong sourceLen = (uLong)strlen(hello)+1;
+	Byte *compr;
+	uLong comprLen = 20*sizeof(int); 
+	compr = (Byte*)calloc((uInt)comprLen, 1);
+	if (compr == Z_NULL)
+		{
+		return KErrNoMemory;
+		}
+
+	stream.zalloc = (alloc_func)0;
+	stream.zfree = (free_func)0;
+	stream.opaque = (voidpf)0;
+
+	err= deflateInit2_(&stream, level, 8, 15, 8,
+			0, zlibVersion(), sizeof(z_stream));
+
+	if (err == Z_OK) 
+		{
+		res = KErrNone;
+		} 
+	else  
+		{	
+		res = KErrGeneral; 
+		}
+
+	stream.next_in  = (Bytef*)hello;
+	stream.next_out = compr;
+
+	while (stream.total_in != sourceLen && stream.total_out < comprLen) 
+		{
+		stream.avail_in = stream.avail_out = 1; 	// force small buffers 
+		err = deflate(&stream, Z_NO_FLUSH);
+		}
+	deflateEnd(&stream);
+
+	//equate stream state to Z_NULL for voverage improvement
+	stream.state = Z_NULL;       
+	err = deflate(&stream, Z_NO_FLUSH);
+
+	if (err == Z_STREAM_ERROR) 
+		{
+		res = KErrNone;
+		} 
+	else  
+		{	
+		res = KErrGeneral;
+		}
+	free(compr);
+	return res;
+	}
+
+/**
+ * Function Name : TestDeflateEndNull
+ * TestCase Description: Pass Z_NULL to deflateEnd
+ * Return Value: Z_STREAM_ERROR
+ */
+TInt CTestZlib::TestDeflateEndNull()
+	{
+	TInt res = KErrNone ;
+	z_stream stream;
+	int err;
+	int level=Z_DEFAULT_COMPRESSION;
+	int strategy=Z_DEFAULT_STRATEGY;
+
+	uLong sourceLen = (uLong)strlen(hello)+1;
+	Byte *compr;
+	uLong comprLen = 20*sizeof(int); 
+	compr = (Byte*)calloc((uInt)comprLen, 1);
+	if (compr == Z_NULL)
+		{
+		return KErrNoMemory;
+		}
+
+	stream.zalloc = (alloc_func)0;
+	stream.zfree = (free_func)0;
+	stream.opaque = (voidpf)0;
+
+	err= deflateInit2_(&stream, level, 8, 15, 8,
+			strategy, zlibVersion(), sizeof(z_stream));
+
+	if (err == Z_OK) 
+		{
+		res = KErrNone;
+		} 
+	else  
+		{	
+		res = KErrGeneral; 
+		}
+
+	stream.next_in  = (Bytef*)hello;
+	stream.next_out = compr;
+
+	while (stream.total_in != sourceLen && stream.total_out < comprLen) 
+		{
+		stream.avail_in = stream.avail_out = 1; /* force small buffers */
+		err = deflate(&stream, Z_NO_FLUSH);
+		}
+	/* Finish the stream, still forcing small buffers: */
+	for (;;) 
+		{
+		stream.avail_out = 1;
+		err = deflate(&stream, Z_FINISH);
+		if (err == Z_STREAM_END) break;
+		if(err!=Z_OK)
+			{
+			res = KErrGeneral;
+			}    
+		}
+
+	// Pass Z_NULL
+	err = deflateEnd(&stream);
+	err = deflateEnd(Z_NULL); // for coverage improvement
+	if(err == Z_STREAM_ERROR)
+		{
+		res = KErrNone;
+		}
+	else
+		{
+		res = KErrGeneral;
+		}
+
+	free(compr);
+	return res;
+	}
+
+/**
+ * Function Name : TestDeflateEndStreamStateNull
+ * TestCase Description: Make stream.state = Z_NULL
+ * Return Value: Z_STREAM_ERROR
+ */
+TInt CTestZlib::TestDeflateEndStreamStateNull()
+	{
+	TInt res = KErrNone ;
+	z_stream stream;
+	int err;
+	int level=Z_DEFAULT_COMPRESSION;
+	int strategy=Z_DEFAULT_STRATEGY;
+
+	uLong sourceLen = (uLong)strlen(hello)+1;
+	Byte *compr;
+	uLong comprLen = 20*sizeof(int); 
+	compr = (Byte*)calloc((uInt)comprLen, 1);
+	if (compr == Z_NULL)
+		{
+		return KErrNoMemory;
+		}
+
+	stream.zalloc = (alloc_func)0;
+	stream.zfree = (free_func)0;
+	stream.opaque = (voidpf)0;
+
+	err= deflateInit2_(&stream, level, 8, 15, 8,
+			strategy, zlibVersion(), sizeof(z_stream));
+
+	if (err == Z_OK) 
+		{
+		res = KErrNone;
+		} 
+	else  
+		{	
+		res = KErrGeneral; 
+		}
+
+	stream.next_in  = (Bytef*)hello;
+	stream.next_out = compr;
+
+	while (stream.total_in != sourceLen && stream.total_out < comprLen) 
+		{
+		stream.avail_in = stream.avail_out = 1; /* force small buffers */
+		err = deflate(&stream, Z_NO_FLUSH);
+		}
+	/* Finish the stream, still forcing small buffers: */
+	for (;;) 
+		{
+		stream.avail_out = 1;
+		err = deflate(&stream, Z_FINISH);
+		if (err == Z_STREAM_END) break;
+		if(err!=Z_OK)
+			{
+			res = KErrGeneral;
+			}    
+		}
+	err = deflateEnd(&stream);
+
+	// Make state Z_NULL
+	stream.state = Z_NULL;
+	err = deflateEnd(&stream);
+
+	if(err == Z_STREAM_ERROR)
+		{
+		res = KErrNone;
+		}
+	else
+		{
+		res = KErrGeneral;
+		}
+
+	free(compr);
+	return res;
+	}
+
+/**
+ * Function Name : TestDeflate_WindowBits
+ * TestCase Description: Window bits more than 15 is supplied for deflate init
+ * Return Value: Z_OK
+ */
+TInt CTestZlib::TestDeflate_WindowBits()
+	{
+	TInt res = KErrNone ;
+	z_stream stream;
+	int err;
+	int level=Z_BEST_COMPRESSION;
+
+	uLong sourceLen = (uLong)strlen(hello)+1;
+	Byte *compr;
+	uLong comprLen = 20*sizeof(int); 
+	compr = (Byte*)calloc((uInt)comprLen, 1);
+	if (compr == Z_NULL)
+		{
+		return KErrNoMemory;
+		}
+
+	stream.zalloc = (alloc_func)0;
+	stream.zfree = (free_func)0;
+	stream.opaque = (voidpf)0;
+
+
+	err= deflateInit2_(&stream, level, 8, 25, 8,
+			0, zlibVersion(), sizeof(z_stream));
+
+	if (err == Z_OK) 
+		{
+		res = KErrNone;
+		} 
+	else  
+		{	
+		res = KErrGeneral; 
+		}
+
+	stream.next_in  = (Bytef*)hello;
+	stream.next_out = compr;
+
+	while (stream.total_in != sourceLen && stream.total_out < comprLen) 
+		{
+		stream.avail_in = stream.avail_out = 1; /* force small buffers */
+		err = deflate(&stream, Z_NO_FLUSH);
+		}
+	/* Finish the stream, still forcing small buffers: */
+	for (;;) 
+		{
+		stream.avail_out = 1;
+		err = deflate(&stream, Z_FINISH);
+		if (err == Z_STREAM_END) break;
+		if(err!=Z_OK)
+			{
+			res = KErrGeneral;
+			}    
+		}
+
+	err = deflateEnd(&stream);
+	if(err!=Z_OK)
+		{
+		res = KErrGeneral;
+		}     
+
+	free(compr);
+	return res;
+	}
+
+/**
+ * Function Name : TestDeflateBoundStreamNotNull
+ * TestCase Description: Pass valid stream to deflatebound with memlevel=7, which 
+ *						in turn covers the decision for (s->hash_bits != 8 + 7) 
+ */
+TInt CTestZlib::TestDeflateBoundStreamNotNull()
+	{
+	TInt res = KErrNone;
+	z_stream stream;
+	int err;
+	int level=Z_DEFAULT_COMPRESSION;
+
+	uLong sourceLen = (uLong)strlen(hello)+1;
+	Byte *compr;
+	uLong comprLen = 20*sizeof(int); 
+	compr = (Byte*)calloc((uInt)comprLen, 1);
+	if (compr == Z_NULL)
+		{
+		return KErrNoMemory;
+		}
+
+	stream.next_in  = (Bytef*)hello;
+	stream.next_out = compr;
+	stream.avail_in = (uInt)sourceLen;
+	stream.avail_out = (uInt)comprLen;
+	if ((uLong)stream.avail_out != comprLen) 
+		{
+		res = KErrGeneral; 
+		}
+
+	stream.zalloc = (alloc_func)0;
+	stream.zfree = (free_func)0;
+	stream.opaque = (voidpf)0;
+
+	err= deflateInit2_(&stream, level, 8, 14, 7,
+			0,  zlibVersion(), sizeof(z_stream));
+
+	if (err == Z_OK) 
+		{
+		int y= deflateBound(&stream, sourceLen);
+		if(y > sourceLen)
+			{  
+			res = KErrNone ;
+			} 
+		else
+			{   	
+			res = KErrGeneral;      	
+			}   
+		}
+	else
+		{
+		res = KErrGeneral;      
+		return res;   
+		}       
+
+	err=deflateEnd(&stream);
+	if (err != Z_OK) 
+		{	
+		res = KErrGeneral;      
+		}
+	free(compr);
+	return res;
+	}
+
+/**
+ * Function Name : TestDeflateBoundStreamNull
+ * TestCase Description: Pass Z_NULL to deflatebound
+ */
+TInt CTestZlib::TestDeflateBoundStreamNull()
+	{
+	TInt res = KErrNone;
+	z_stream stream;
+	int err;
+	int level=Z_DEFAULT_COMPRESSION;
+
+	uLong sourceLen = (uLong)strlen(hello)+1;
+	Byte *compr;
+	uLong comprLen = 20*sizeof(int); 
+	compr = (Byte*)calloc((uInt)comprLen, 1);
+	if (compr == Z_NULL)
+		{
+		return KErrNoMemory;
+		}
+
+	stream.next_in  = (Bytef*)hello;
+	stream.next_out = compr;
+	stream.avail_in = (uInt)sourceLen;
+	stream.avail_out = (uInt)comprLen;
+	if ((uLong)stream.avail_out != comprLen) 
+		{
+		res = KErrGeneral; 
+		}
+
+	stream.zalloc = (alloc_func)0;
+	stream.zfree = (free_func)0;
+	stream.opaque = (voidpf)0;
+
+	err= deflateInit2_(&stream, level, 8, 15, 7,
+			0,  zlibVersion(), sizeof(z_stream));
+
+	if (err == Z_OK) 
+		{
+		int y= deflateBound(Z_NULL, sourceLen);
+		if(y > sourceLen)
+			{  
+			res = KErrNone ;
+			} 
+		else
+			{   	
+			res = KErrGeneral;      	
+			}   
+		}
+	else
+		{
+		res = KErrGeneral;      
+		return res;   
+		}       
+
+	err=deflateEnd(&stream);
+	if (err != Z_OK) 
+		{	
+		res = KErrGeneral;      
+		}
+	free(compr);
+	return res;
+	}
+
+/**
+ * Function Name : TestDeflateBoundStreamStateNull
+ * TestCase Description: Stream state is equated to Z_NULL 
+ *						and passed to deflatebound
+ */
+TInt CTestZlib::TestDeflateBoundStreamStateNull()
+	{
+	TInt res = KErrNone;
+	z_stream stream;
+	int err;
+	int level=Z_DEFAULT_COMPRESSION;
+
+	uLong sourceLen = (uLong)strlen(hello)+1;
+	Byte *compr;
+	uLong comprLen = 20*sizeof(int); 
+	compr = (Byte*)calloc((uInt)comprLen, 1);
+	if (compr == Z_NULL)
+		{
+		return KErrNoMemory;
+		}
+
+	stream.next_in  = (Bytef*)hello;
+	stream.next_out = compr;
+	stream.avail_in = (uInt)sourceLen;
+	stream.avail_out = (uInt)comprLen;
+	if ((uLong)stream.avail_out != comprLen) 
+		{
+		res = KErrGeneral; 
+		}
+
+	stream.zalloc = (alloc_func)0;
+	stream.zfree = (free_func)0;
+	stream.opaque = (voidpf)0;
+
+	err= deflateInit2_(&stream, level, 8, 15, 7,
+			0,  zlibVersion(), sizeof(z_stream));
+
+	if (err == Z_OK) 
+		{
+		//stream.state = Z_NULL;
+		int y= deflateBound(&stream, sourceLen);
+		if(y > sourceLen)
+			{  
+			res = KErrNone ;
+			} 
+		else
+			{   	
+			res = KErrGeneral;      	
+			}
+		err=deflateEnd(&stream);
+		if (err != Z_OK) 
+			{	
+			INFO_PRINTF1(_L("Error encountered in deflateEnd"));
+			free(compr);
+			return KErrNone;      
+			}
+
+		// for coverage improvement
+		stream.state = Z_NULL;
+		y = deflateBound(&stream, sourceLen);
+		}			// end of if
+	else
+		{
+		res = KErrGeneral;      
+		return res;   
+		}       
+
+	free(compr);
+	return res;
+	}
+
+/**
+ * Function Name : TestDeflateSetDictionaryWrap
+ * TestCase Description: 1. Pass window bits > 15 to set the stream->wrap = 2
+ *						2. Pass window bits < 0 to set the stream->wrap = 0
+ * Return Value: Z_STREAM_ERROR
+ */	
+TInt CTestZlib::TestDeflateSetDictionaryWrap()
+	{
+	int level=Z_DEFAULT_COMPRESSION;
+	int WindowBits = 0;
+
+	Byte *comp;
+	uLong compLen;
+	compLen = 30;
+	comp = (Byte*)calloc((uInt)compLen, 1);
+
+	ReadIntParam(WindowBits);
+
+	z_stream stream; // compression stream 
+	int err;
+	const char hello[] = "hello, hello!";
+	uLong len = (uLong)strlen(hello)+1;
+	const Bytef* dictionary=(const Bytef *) hello;
+	stream.zalloc = (alloc_func)0;
+	stream.zfree = (free_func)0;
+	stream.opaque = (voidpf)0;
+
+	err= deflateInit2_(&stream, level, 8, WindowBits, 8, 0,  zlibVersion(), sizeof(z_stream));
+
+	if (err != Z_OK) 
+		{ 
+		INFO_PRINTF2(_L("deflateInit error: %d"), err); 
+		free(comp);
+		return err; 
+		} 
+	err = deflateSetDictionary(&stream,dictionary,3);
+	if(err == Z_STREAM_ERROR)
+		{
+		free(comp);
+		deflateEnd(&stream);
+		return KErrNone;
+		}
+	stream.next_in  = (Bytef*)hello;
+	stream.next_out = comp;
+
+	while (stream.total_in != len && stream.total_out < compLen) 
+		{
+		stream.avail_in = stream.avail_out = 1; //* force small buffers 
+		err = deflate(&stream, Z_NO_FLUSH);
+		if (err != Z_OK) 
+			{ 
+			INFO_PRINTF2(_L("deflate return code: %d"), err); 
+			deflateEnd(&stream);
+			free(comp);
+			return err; 
+			} 
+		}
+	// Finish the stream, still forcing small buffers: 
+	for (;;) 
+		{
+		stream.avail_out = 1;
+		err = deflate(&stream, Z_FINISH);
+		if (err == Z_STREAM_END) break;
+		if (err != Z_OK)
+			{ 
+			INFO_PRINTF2(_L("deflate error: %d"), err); 
+			deflateEnd(&stream);
+			free(comp);
+			return err; 
+			} 
+		}
+
+	deflateEnd(&stream);
+	free(comp);
+	return KErrNone;
+
+	}
+
+/**
+ * Function Name : TestDeflateSetDictionaryLen
+ * TestCase Description: Supply dictLength > MAX_DIST(s)
+ * Return Value: Z_OK
+ */	
+TInt CTestZlib::TestDeflateSetDictionaryLen()
+	{
+	int level=Z_DEFAULT_COMPRESSION;
+
+	Byte *comp;
+	uLong compLen;
+	compLen = 30;
+	comp = (Byte*)calloc((uInt)compLen, 1);
+
+	z_stream stream; // compression stream 
+	int err;
+	const char hello[] = "hello, hello!";
+	uLong len = (uLong)strlen(hello)+1;
+	const Bytef* dictionary=(const Bytef *) hello;
+	stream.zalloc = (alloc_func)0;
+	stream.zfree = (free_func)0;
+	stream.opaque = (voidpf)0;
+
+	err= deflateInit2_(&stream, level, 8, 9, 8, 0,  zlibVersion(), sizeof(z_stream));
+
+	if (err != Z_OK) 
+		{ 
+		INFO_PRINTF2(_L("deflateInit error: %d"), err); 
+		free(comp);
+		return err; 
+		} 
+
+	// Pass dictLength=251 which is > MAX_DIST(s) for window bits=9
+	err = deflateSetDictionary(&stream,dictionary,251);
+	if(err != Z_OK)
+		{
+		free(comp);
+		deflateEnd(&stream);
+		return err;
+		}
+	stream.next_in  = (Bytef*)hello;
+	stream.next_out = comp;
+
+	while (stream.total_in != len && stream.total_out < compLen) 
+		{
+		stream.avail_in = stream.avail_out = 1; //* force small buffers 
+		err = deflate(&stream, Z_NO_FLUSH);
+		if (err != Z_OK) 
+			{ 
+			INFO_PRINTF2(_L("deflate return code: %d"), err); 
+			deflateEnd(&stream);
+			free(comp);
+			return err; 
+			} 
+		}
+	// Finish the stream, still forcing small buffers: 
+	for (;;) 
+		{
+		stream.avail_out = 1;
+		err = deflate(&stream, Z_FINISH);
+		if (err == Z_STREAM_END) break;
+		if (err != Z_OK)
+			{ 
+			INFO_PRINTF2(_L("deflate error: %d"), err); 
+			deflateEnd(&stream);
+			free(comp);
+			return err; 
+			} 
+		}
+
+	deflateEnd(&stream);
+	free(comp);
+	return KErrNone;
+
+	}
+
+/**
+ * Function Name : TestInflateSetDictionaryBadMode
+ * TestCase Description: Supply window bits=9 making state->mode = BAD
+ * Return Value: Z_STREAM_ERROR
+ */
+TInt CTestZlib::TestInflateSetDictionaryBadMode()
+	{
+	TInt res = KErrNone ;
+	Byte *compr, *uncompr;
+	uLong comprLen = 100*sizeof(int); 
+	uLong uncomprLen = comprLen;
+
+	compr    = (Byte*)calloc((uInt)comprLen, 1);
+	if (compr == Z_NULL)
+		{
+		return KErrNoMemory;
+		}
+	uncompr  = (Byte*)calloc((uInt)uncomprLen, 1);
+	if (uncompr == Z_NULL) 
+		{
+		free(compr);
+		return KErrNoMemory;
+		}
+	res = Test_dict_deflate(compr, comprLen);
+
+	if(res < 0)
+		{
+		free(compr);
+		free(uncompr);
+		return res;
+		}
+	if(res == 0)
+		{
+
+		int err;
+		z_stream d_stream; // decompression stream 
+
+		strcpy((char*)uncompr, "garbage");
+
+		d_stream.zalloc = (alloc_func)0;
+		d_stream.zfree = (free_func)0;
+		d_stream.opaque = (voidpf)0;
+
+		d_stream.next_in  = compr;
+		d_stream.avail_in = (uInt)comprLen;
+
+		err	= inflateInit2_(&d_stream, 9, "1.2.4", sizeof(d_stream));
+		if(err < 0 )
+			{
+			free(compr);
+			free(uncompr);
+			return Z_MEM_ERROR;    	
+			}
+
+		d_stream.next_out = uncompr;
+		d_stream.avail_out = (uInt)uncomprLen;
+
+		for (;;) 
+			{
+			err = inflate(&d_stream, Z_NO_FLUSH);
+			err = inflateSetDictionary(&d_stream, (const Bytef*)dictionary,sizeof(dictionary));
+			if(err == Z_STREAM_ERROR)
+				{
+				res = KErrNone;
+				break;
+				}
+			}		// end of for
+
+		err = inflateEnd(&d_stream);
+		}			// end of outer if
+	else
+		{
+		res=KErrGeneral;
+		}
+
+	free(compr);
+	free(uncompr);
+	return res; 
+	}
+
+/**
+ * Function Name : TestInflateSetDictionaryStreamStateNull
+ * TestCase Description: Make stream->state = Z_NULL
+ * Return Value: Z_STREAM_ERROR
+ */    
+TInt CTestZlib::TestInflateSetDictionaryStreamStateNull()
+	{
+	TInt res = KErrNone ;
+	Byte *compr, *uncompr;
+	uLong comprLen = 100*sizeof(int); 
+	uLong uncomprLen = comprLen;
+
+	compr    = (Byte*)calloc((uInt)comprLen, 1);
+	if (compr == Z_NULL)
+		{
+		return KErrNoMemory;
+		}
+	uncompr  = (Byte*)calloc((uInt)uncomprLen, 1);
+	if (uncompr == Z_NULL) 
+		{
+		free(compr);
+		return KErrNoMemory;
+		}
+	res = Test_dict_deflate(compr, comprLen);
+
+	if(res < 0)
+		{
+		free(compr);
+		free(uncompr);
+		return res;
+		}
+	if(res == 0)
+		{
+
+		int err;
+		z_stream d_stream; // decompression stream 
+
+		strcpy((char*)uncompr, "garbage");
+
+		d_stream.zalloc = (alloc_func)0;
+		d_stream.zfree = (free_func)0;
+		d_stream.opaque = (voidpf)0;
+
+		d_stream.next_in  = compr;
+		d_stream.avail_in = (uInt)comprLen;
+
+		err	= inflateInit2_(&d_stream, 15, "1.2.4", sizeof(d_stream));
+		if(err < 0 )
+			{
+			free(compr);
+			free(uncompr);
+			return Z_MEM_ERROR;    	
+			}
+
+		d_stream.next_out = uncompr;
+		d_stream.avail_out = (uInt)uncomprLen;
+
+		for (;;) 
+			{
+			err = inflate(&d_stream, Z_NO_FLUSH);
+			if (err < Z_OK)
+				{
+				INFO_PRINTF1(_L("Inflate failed"));
+				res = KErrGeneral;
+				break;
+				}
+			err = inflateSetDictionary(&d_stream, (const Bytef*)dictionary,sizeof(dictionary));
+			if(err == Z_STREAM_ERROR)
+				{
+				res = KErrNone;
+				break;
+				}
+			}
+		err = inflateEnd(&d_stream);
+
+		//for coverage improvement
+		d_stream.state = Z_NULL;
+		err = inflateSetDictionary(&d_stream, (const Bytef*)dictionary,sizeof(dictionary));
+		if(err == Z_STREAM_ERROR)
+			{
+			res = KErrNone;
+			}
+		}		// end of outer if
+	else
+		{
+		res=KErrGeneral;
+		}
+
+	free(compr);
+	free(uncompr);
+	return res; 
+	}
+
+/**
+ * Function Name : TestDeflateParamsStreamStateNull
+ * TestCase Description: Make stream state Z_NULL 
+ * Return Value: Z_STREAM_ERROR
+ */	
+TInt CTestZlib::TestDeflateParamsStreamStateNull()
+	{     
+	TInt res = KErrNone ;
+	z_stream c_stream; 		// compression stream 
+	int err;
+	Byte * compr;
+
+	uLong comprLen = 20*sizeof(int); 
+
+	compr=(Byte*)calloc((uInt)comprLen, 1);
+	if (compr == Z_NULL)
+		{
+		return KErrNoMemory;
+		}
+
+	uLong len = (uLong)strlen(hello)+1;
+
+	c_stream.zalloc = (alloc_func)0;
+	c_stream.zfree = (free_func)0;
+	c_stream.opaque = (voidpf)0;
+
+	err = deflateInit(&c_stream, Z_DEFAULT_COMPRESSION);
+	if(err <0)
+		{
+		free(compr);
+		return err;	
+		}
+
+	c_stream.next_in  = (Bytef*)hello;
+	c_stream.next_out = compr;
+
+	err= deflateParams(&c_stream, Z_NO_COMPRESSION, Z_DEFAULT_STRATEGY);
+	deflateEnd(&c_stream);
+
+	// Equate the stream state to Z_NULL for coverage improvement
+	c_stream.state = Z_NULL;
+	err= deflateParams(&c_stream, Z_NO_COMPRESSION, Z_DEFAULT_STRATEGY);
+
+	if(err == Z_STREAM_ERROR)
+		{    	
+		res=KErrNone;
+		}
+	else
+		{
+		res=KErrGeneral;
+		}
+
+	free(compr);
+	return res;
+	}
+
+/**
+ * Function Name : TestInflateSyncAvailInNull
+ * TestCase Description: Make avail in Z_NULL 
+ * Return Value: Z_BUF_ERROR
+ */  
+TInt CTestZlib::TestInflateSyncAvailInNull()
+	{   
+	TInt res = KErrNone ;
+	uLong len = (uLong)strlen(hello)+1;
+
+	Byte *compr, *uncompr;
+	uLong comprLen = 20*sizeof(int); 
+	uLong uncomprLen = comprLen;
+	compr    = (Byte*)calloc((uInt)comprLen, 1);
+	if (compr == Z_NULL)
+		{
+		return KErrNoMemory;
+		}
+	uncompr  = (Byte*)calloc((uInt)uncomprLen, 1);
+	if (uncompr == Z_NULL) 
+		{
+		free(compr);
+		return KErrNoMemory;
+		}
+
+	int err;
+	err = compress(compr, &comprLen, (const Bytef*)hello, len);
+	if(err < 0)
+		{  	
+		res = KErrNoMemory;
+		}
+	else if(err == 0)
+		{  	
+		res = KErrNone ;
+		} 
+	else
+		{    	
+		res = KErrGeneral;
+		}   
+
+	if(res<0)
+		{
+		free(compr);
+		free(uncompr);
+		return KErrNoMemory;	
+		}
+
+	Test_flush(compr, &comprLen);
+
+	z_stream d_stream; /* decompression stream */
+
+	strcpy((char*)uncompr, "garbage");
+
+	d_stream.zalloc = (alloc_func)0;
+	d_stream.zfree = (free_func)0;
+	d_stream.opaque = (voidpf)0;
+
+	d_stream.next_in  = compr;
+	d_stream.avail_in = 2; /* just read the zlib header */
+
+	err = inflateInit(&d_stream);
+	if(err!=0)
+		{
+		res=KErrGeneral;
+		}
+
+
+	d_stream.next_out = uncompr;
+	d_stream.avail_out = (uInt)uncomprLen;
+
+	err=inflate(&d_stream, Z_NO_FLUSH);
+	if(err!=0)
+		{
+		res=KErrGeneral;
+		}
+
+	// Make avail_in Z_NULL
+	d_stream.avail_in = Z_NULL;
+	err = inflateSync(&d_stream);           /* but skip the damaged part */
+	if(err == Z_BUF_ERROR)
+		{
+		res=KErrNone;
+		}
+
+	free(compr);
+	free(uncompr);
+	err = inflateEnd(&d_stream);
+	if(Z_OK != err)
+		{
+		INFO_PRINTF1(_L("Error encountered in inflateEnd"));
+		return KErrGeneral;
+		}
+	return res;
+	}
+
+/**
+ * Function Name : TestInflateSyncStreamNull
+ * TestCase Description: Pass NULL stream to InflateSync
+ * Return Value: Z_STREAM_ERROR
+ */  
+TInt CTestZlib::TestInflateSyncStreamNull()
+	{   
+	TInt res = KErrNone ;
+	uLong len = (uLong)strlen(hello)+1;
+
+	Byte *compr, *uncompr;
+	uLong comprLen = 20*sizeof(int); 
+	uLong uncomprLen = comprLen;
+	compr    = (Byte*)calloc((uInt)comprLen, 1);
+	if (compr == Z_NULL)
+		{
+		return KErrNoMemory;
+		}
+	uncompr  = (Byte*)calloc((uInt)uncomprLen, 1);
+	if (uncompr == Z_NULL) 
+		{
+		free(compr);
+		return KErrNoMemory;
+		}
+
+	int err;
+	err = compress(compr, &comprLen, (const Bytef*)hello, len);
+	if(err < 0)
+		{  	
+		res = KErrNoMemory;
+		}
+	else if(err == 0)
+		{  	
+		res = KErrNone ;
+		} 
+	else
+		{    	
+		res = KErrGeneral;
+		}   
+
+	if(res<0)
+		{
+		free(compr);
+		free(uncompr);
+		return KErrNoMemory;	
+		}
+
+	Test_flush(compr, &comprLen);
+
+	z_stream d_stream; /* decompression stream */
+
+	strcpy((char*)uncompr, "garbage");
+
+	d_stream.zalloc = (alloc_func)0;
+	d_stream.zfree = (free_func)0;
+	d_stream.opaque = (voidpf)0;
+
+	d_stream.next_in  = compr;
+	d_stream.avail_in = 2; /* just read the zlib header */
+
+	err = inflateInit(&d_stream);
+	if(err!=0)
+		{
+		res=KErrGeneral;
+		}
+
+	d_stream.next_out = uncompr;
+	d_stream.avail_out = (uInt)uncomprLen;
+
+	err=inflate(&d_stream, Z_NO_FLUSH);
+	if(err!=0)
+		{
+		res=KErrGeneral;
+		}
+
+	d_stream.avail_in = (uInt)comprLen-2;
+
+	// Make stream Z_NULL
+	err = inflateSync(Z_NULL);           
+	if(err == Z_STREAM_ERROR)
+		{
+		res=KErrNone;
+		}
+	err = inflateEnd(&d_stream);
+	if(Z_OK != err)
+		{
+		INFO_PRINTF1(_L("Error encountered in inflateEnd"));
+		return KErrGeneral;
+		}
+	free(compr);
+	free(uncompr);
+	return res;
+	}
+
+/**
+ * Function Name : TestInflateSyncStreamStateNull
+ * TestCase Description: Make stream state = Z_NULL 
+ * Return Value: Z_STREAM_ERROR
+ */  
+TInt CTestZlib::TestInflateSyncStreamStateNull()
+	{   
+	TInt res = KErrNone ;
+	uLong len = (uLong)strlen(hello)+1;
+
+	Byte *compr, *uncompr;
+	uLong comprLen = 20*sizeof(int); 
+	uLong uncomprLen = comprLen;
+	compr    = (Byte*)calloc((uInt)comprLen, 1);
+	if (compr == Z_NULL)
+		{
+		return KErrNoMemory;
+		}
+	uncompr  = (Byte*)calloc((uInt)uncomprLen, 1);
+	if (uncompr == Z_NULL) 
+		{
+		free(compr);
+		return KErrNoMemory;
+		}
+
+	int err;
+	err = compress(compr, &comprLen, (const Bytef*)hello, len);
+	if(err < 0)
+		{  	
+		res = KErrNoMemory;
+		}
+	else if(err == 0)
+		{  	
+		res = KErrNone ;
+		} 
+	else
+		{    	
+		res = KErrGeneral;
+		}   
+
+	if(res<0)
+		{
+		free(compr);
+		free(uncompr);
+		return KErrNoMemory;	
+		}
+
+	Test_flush(compr, &comprLen);
+
+	z_stream d_stream; /* decompression stream */
+
+	strcpy((char*)uncompr, "garbage");
+
+	d_stream.zalloc = (alloc_func)0;
+	d_stream.zfree = (free_func)0;
+	d_stream.opaque = (voidpf)0;
+
+	d_stream.next_in  = compr;
+	d_stream.avail_in = 2; /* just read the zlib header */
+
+	err = inflateInit(&d_stream);
+	if(err!=0)
+		{
+		res=KErrGeneral;
+		}
+	d_stream.next_out = uncompr;
+	d_stream.avail_out = (uInt)uncomprLen;
+	err=inflate(&d_stream, Z_NO_FLUSH);
+	if(err!=0)
+		{
+		res=KErrGeneral;
+		}
+
+	d_stream.avail_in = (uInt)comprLen-2;
+	err = inflateSync(&d_stream);
+	err = inflateEnd(&d_stream);
+	if(Z_OK != err)
+		{
+		INFO_PRINTF1(_L("Error encountered in inflateEnd"));
+		return KErrGeneral;
+		}
+
+	// for coverage improvement	
+	d_stream.state = Z_NULL;
+	err = inflateSync(&d_stream);
+
+	if(err == Z_STREAM_ERROR)
+		{
+		res=KErrNone;
+		}
+	free(compr);
+	free(uncompr);
+	return res;
+	}
+
+/**
+ * Function Name : TestInflateSyncPointStreamStateNull
+ * TestCase Description: Make stream state = Z_NULL 
+ * Return Value: Z_STREAM_ERROR
+ */ 
+TInt CTestZlib::TestInflateSyncPointStreamStateNull()
+	{
+	TInt res = KErrNone ;
+	uLong len = (uLong)strlen(hello)+1;
+
+	Byte *compr, *uncompr;
+	uLong comprLen = 20*sizeof(int); 
+	uLong uncomprLen = comprLen;
+	compr    = (Byte*)calloc((uInt)comprLen, 1);
+	if (compr == Z_NULL)
+		{
+		return KErrNoMemory;
+		}
+	uncompr  = (Byte*)calloc((uInt)uncomprLen, 1);
+	if (uncompr == Z_NULL) 
+		{
+		free(compr);
+		return KErrNoMemory;
+		}
+
+	z_stream stream;
+	int err;
+
+	stream.next_in = (Bytef*)hello;
+	stream.avail_in = (uInt)len;
+
+	stream.next_out = compr;
+	stream.avail_out = (uInt)comprLen;
+
+	stream.zalloc = (alloc_func)0;
+	stream.zfree = (free_func)0;
+	stream.opaque = (voidpf)0;
+
+	err = deflateInit(&stream, Z_DEFAULT_COMPRESSION);
+	if (err != Z_OK) 
+		{
+		free(compr);
+		free(uncompr);
+		return err;    
+		}
+
+	err = deflate(&stream, Z_FINISH);
+	if (err != Z_STREAM_END) 
+		{
+		deflateEnd(&stream);
+		free(compr);
+		free(uncompr);
+		return err == Z_OK ? Z_BUF_ERROR : err;
+		}
+	comprLen = stream.total_out;    
+
+	err = inflateSyncPoint(&stream);
+	err = deflateEnd(&stream);
+	if(err == Z_STREAM_ERROR)
+		{
+		INFO_PRINTF1(_L("Error encountered in inflateEnd"));
+		free(compr);
+		free(uncompr);
+		return KErrNone;
+		}
+
+	//Make stream state NULL
+	stream.state = Z_NULL;
+	err = inflateSyncPoint(&stream);
+	//err = inflateEnd(&stream);  	  	    
+	if(err == Z_STREAM_ERROR)
+		{
+		res=KErrNone;
+		}
+
+	free(compr);
+	free(uncompr);
+	return res;
+	}
+
+
+/**
+ * Function Name : TestAdlerScenarios
+ * TestCase Description: 1. len = 1, adler > BASE
+ *						2. len < 16, adler > BASE
+ *						3. len > NMAX
+ * Return Value: Adler value
+ */
+TInt CTestZlib::TestAdlerScenarios()
+	{
+	TInt res = KErrNone ;
+	//unsigned char  buffer[5]="1234";
+	unsigned char buffer[5552];
+	int len=0;
+	int adler1=0;
+
+	_LIT(KParam1, "Param1");
+	TBool ret = GetIntFromConfig(ConfigSection(), KParam1, adler1);
+	if(!ret)
+		{
+		INFO_PRINTF1(_L("Failed to read the values from ini file"));
+		}
+
+	_LIT(KParam2, "Param2");
+	ret = GetIntFromConfig(ConfigSection(), KParam2, len);
+	if(!ret)
+		{
+		INFO_PRINTF1(_L("Failed to read the values from ini file"));
+		}
+
+	long long adler = adler32((long)adler1, &buffer[0], (unsigned int)len);
+	INFO_PRINTF2(_L("buf %x"),adler);
+
+	if(adler > 0)
+		{    	
+		res=KErrNone ;    	
+		}
+	else
+		{    	
+		res = KErrGeneral;
+		}
+	return res;
+	}
+
+/**
+ * Function Name : TestGzsetparamsFileNull
+ * TestCase Description: Pass NULL pointer to gzsetparams
+ * Return Value: Z_STREAM_ERROR
+ */
+TInt CTestZlib::TestGzsetparamsFileNull()
+	{    
+	TInt res = KErrNone ;
+
+	int len = (int)strlen(hello)+1;
+	gzFile file;
+
+	const char * fname = TESTFILE;
+
+	file = gzopen(fname, "wb");
+	gzputc(file, 'h');
+
+	int err = gzsetparams(NULL, Z_BEST_SPEED, Z_DEFAULT_STRATEGY);
+	if(err == Z_STREAM_ERROR)
+		{
+		gzclose(file);
+		res = KErrNone;
+		}
+
+	return res;
+	}
+
+/**
+ * Function Name : TestGzopenWrite
+ * TestCase Description: Open a gz file in write mode, close it and
+ *						and then open again in read mode
+ */
+TInt CTestZlib::TestGzopenWrite()
+	{
+	gzFile file;
+	const char * fname = "c:\\file.txt";
+	file = gzopen(fname, "wb");
+
+	gzputs(file, "Coverage Improvement");
+
+	gzclose(file);
+
+	file = gzopen(fname, "rb");
+
+	if (file == NULL) 
+		{
+		ERR_PRINTF1(_L("gzopen error"));
+		return KErrGeneral;
+		}
+
+	gzclose(file);
+
+	return KErrNone;
+	}
+
+/**
+ * Function Name : TestGzreadLargeFile
+ * TestCase Description: Open a large gz file in read mode and read from it
+ */
+TInt CTestZlib::TestGzreadLargeFile()
+	{
+	gzFile file;
+	const char *s="\0";
+	uInt len = strlen(s);
+
+	char *buf1 = (char*)malloc(1024);
+	if (buf1 == Z_NULL)
+		{
+		return KErrNoMemory;
+		}
+
+	file = gzopen(FILETESTGZLARGE, "rb");    
+	if (file == NULL) 
+		{
+		ERR_PRINTF1(_L("gzopen error"));
+		free(buf1);
+		return KErrGeneral;
+		}
+
+	for (;;)
+		{
+		len = gzread(file, buf1, sizeof(buf1));
+		if(len<=0) break;
+		}
+
+	gzclose(file);
+	free(buf1);
+	return KErrNone;
+	}
+
+/**
+ * Function Name : TestGzopenWriteNoPath
+ * TestCase Description: Open a gz file in write mode, 
+ *						close it and then open again in read mode
+ */
+TInt CTestZlib::TestGzopenWriteNoPath()
+	{
+	gzFile file;
+	const char * fname = "c:\\file.txt";
+	file = gzopen(fname, "wb");
+
+	gzputs(file, "Coverage Improvement");
+
+	gzclose(file);
+
+	file = gzopen(fname, "rb");
+
+	if (file == NULL) 
+		{
+		ERR_PRINTF1(_L("gzopen error"));
+		return KErrGeneral;
+		}
+
+	gzclose(file);
+	return KErrNone;
+	} 
+/**
+ * Function Name : TestGzreadLenZero
+ * TestCase Description: 1. Read from a gz file specifying read buffer length=0
+ */ 	
+TInt CTestZlib::TestGzreadLenZero()
+	{
+	char * buf1 = (char*)malloc(1024);
+	if (buf1 == Z_NULL)
+		{
+		ERR_PRINTF1(_L("Heap out of memory"));
+		return KErrNoMemory;
+		}
+
+	TInt res = KErrNone ;
+	gzFile file;
+	uInt len=0;
+	const char * fname = "c:\\file.txt";
+
+	// Write some text in gz file and close it
+	file = gzopen(fname, "wb");
+	if (file == NULL) 
+		{
+		free(buf1);
+		ERR_PRINTF1(_L("Could not open the file"));
+		res = KErrGeneral;
+		return res;
+		}
+	gzputs(file, "Coverage Improvement");
+	gzclose(file);
+
+	file = gzopen(fname, "rb");         
+	if (file == NULL) 
+		{
+		free(buf1);
+		ERR_PRINTF1(_L("Could not open the file"));
+		res = KErrGeneral;
+		return res;
+		}   
+
+	for (;;)
+		{
+		len = gzread(file, buf1, len);
+		if(len<=0) break;
+		}
+
+	if (gzclose(file) != Z_OK)
+		{    	
+		ERR_PRINTF1(_L("Could not close the file"));
+		res=KErrGeneral;     
+		}
+	free(buf1);
+	return res;
+	}
+
+
+/**
+ * Function Name : TestGzreadBufZero
+ * TestCase Description: 1. Read from a gz file passing a NULL for read buffer
+ */ 	
+TInt CTestZlib::TestGzreadBufZero()
+	{
+	char * buf1 = (char*)malloc(1024);
+	if (buf1 == Z_NULL)
+		{
+		ERR_PRINTF1(_L("Heap out of memory"));
+		return KErrNoMemory;
+		}
+
+	TInt res = KErrNone ;
+	gzFile file;
+	uInt len=0;
+	const char * fname = "c:\\file.txt";
+
+	// Write some text in gz file and close it
+	file = gzopen(fname, "wb");
+	if (file == NULL) 
+		{
+		free(buf1);
+		ERR_PRINTF1(_L("Could not open the file"));
+		res = KErrGeneral;
+		return res;
+		}
+	gzputs(file, "Coverage Improvement");
+	gzclose(file);
+
+	file = gzopen(fname, "rb");         
+	if (file == NULL) 
+		{
+		free(buf1);
+		ERR_PRINTF1(_L("Could not open the file"));
+		res = KErrGeneral;
+		return res;
+		}   
+
+	for (;;)
+		{
+		len = gzread(file, NULL, sizeof(buf1));
+		if(len<=0) break;
+		}
+
+	if (gzclose(file) == Z_STREAM_ERROR)
+		{    	
+		res=KErrNone;     
+		}
+	free(buf1);
+	return res;
+
+	}
+
+/**
+ * Function Name : TestGzreadNonGzFile
+ * TestCase Description: 1. Read from a non gz file 
+ */ 
+TInt CTestZlib::TestGzreadNonGzFile()
+	{
+	char *buf1 = (char*)malloc(1024);
+	if (buf1 == Z_NULL)
+		{
+		ERR_PRINTF1(_L("Heap out of memory"));
+		return KErrNoMemory;
+		}
+
+	TInt res = KErrNone ;
+	gzFile file;
+	uInt len=0;
+	const char * fname = "c:\\file.txt";
+
+	// Write in txt file and close it
+	FILE *fp = fopen(fname,"w");
+	if(fp == NULL)
+		{
+		free(buf1);
+		ERR_PRINTF1(_L("Could not open the output file."));
+		res = KErrGeneral;
+		return res;
+		}
+	
+	fputc('\n',fp);
+	fclose(fp);
+
+	file = gzopen(fname, "rb");         
+	if (file == NULL) 
+		{
+		free(buf1);
+		ERR_PRINTF1(_L("Could not open the file"));
+		res = KErrGeneral;
+		return res;
+		}   
+
+	for (;;)
+		{
+		len = gzread(file, buf1, sizeof(buf1));
+		if(len<=0) break;
+		}
+
+	if (gzclose(file) == Z_STREAM_ERROR)
+		{    	
+		res=KErrNone;     
+		}
+	free(buf1);
+	return res;
+	}
+
+/**
+ * Function Name : TestGzrewindNonGzFile
+ * TestCase Description: 1. Rewind in a non gz file 
+ */ 
+TInt CTestZlib::TestGzrewindNonGzFile()
+	{    
+	TInt res = KErrNone ;
+	int err;
+	int len = (int)strlen(hello)+1;
+	gzFile file;
+	const char * fname = "c:\\file.txt";
+
+	FILE *fp=NULL;
+	fp=fopen(fname,"w");
+	fputc('\n',fp);
+	fclose(fp);
+
+	file = gzopen(fname, "rb");
+	if (file == NULL) 
+		{
+		res = KErrGeneral;
+		}
+	err = gzrewind(file);
+
+	if(err == 0)
+		{    	
+		res = KErrNone ;    	
+		}
+	else
+		{    	
+		res = KErrGeneral;
+		}
+	err=  gzclose(file);
+	if (err != Z_OK)  
+		{
+		res = KErrGeneral; 
+		} 
+
+	return res;
+	}
+
+/**
+ * Function Name : TestGzrewindFileNull
+ * TestCase Description: Pass NULL to gzrewind
+ */
+TInt CTestZlib::TestGzrewindFileNull()
+	{    
+	TInt res = KErrNone ;
+	int err;
+	int len = (int)strlen(hello)+1;
+	gzFile file;
+
+	const char * fname = TESTFILE;
+	file = gzopen(fname, "rb");
+	if (file == NULL) 
+		{
+		res = KErrGeneral;
+		}
+	err = gzrewind(NULL);
+
+	if(err == Z_ERRNO)
+		{    	
+		res = KErrNone ;    	
+		}
+	else
+		{    	
+		res = KErrGeneral;
+		}
+	err=  gzclose(file);
+	if (err != Z_OK)  
+		{
+		res = KErrGeneral; 
+		}
+
+	return res;
+	}
+
+/**
+ * Function Name : TestGzflushWithZFinish
+ * TestCase Description: Flush with flush = Z_FINISH
+ */
+TInt CTestZlib::TestGzflushWithZFinish()
+	{
+	TInt res = KErrNone ;
+	gzFile file;
+
+	const char * fname = TESTFILE ;
+	file = gzopen(fname, "wb");
+	if (file == Z_NULL)  
+		{
+		res = KErrNoMemory; 
+		return res;
+		}   
+	int l= gzflush(file,Z_FINISH);
+	if(l != Z_OK)  
+		{
+		res = KErrGeneral;  
+		}
+
+	l = gzclose(file);
+	if (l != Z_OK)  
+		{
+		res = KErrGeneral;     	    	
+		}
+	return res;
+	}
+
+/**
+ * Function Name : TestUncompressLenSmall
+ * TestCase Description: Supply uncompress length smaller than compress length
+ * Return value:	Z_BUF_ERROR
+ */ 	
+TInt CTestZlib::TestUncompressLenSmall()
+	{
+	TInt res = KErrNone;
+	TInt err=0;
+	Byte *compr, *uncompr;
+	uLong len = (uLong)strlen(hello)+1;
+
+	uLong comprLen = 20*sizeof(int); 
+	uLong uncomprLen = 3*sizeof(int);
+	compr = (Byte*)calloc((uInt)comprLen, 1);
+	if (compr == Z_NULL)
+		{
+		return KErrNoMemory;
+		}
+
+	uncompr  = (Byte*)calloc((uInt)uncomprLen, 1);
+	if (uncompr == Z_NULL) 
+		{
+		free(compr);
+		return KErrNoMemory;
+		}
+
+	err = compress(compr, &comprLen, (const Bytef*)hello, len);
+	if(err == 0)
+		{    	
+		strcpy((char*)uncompr, "garbage");
+		err = uncompress(uncompr, &uncomprLen, compr, comprLen);
+		if(err == Z_BUF_ERROR)
+			{
+			res = KErrNone ;
+			}    
+		else
+			{
+			res = KErrGeneral;
+			}       
+		} 
+
+	free(compr);
+	free(uncompr);
+	return res;
+	} 
+
+/**
+ * Function Name : TestUncompressBufNull
+ * TestCase Description: Supply NULL string to uncompress
+ * Return value:	Z_STREAM_ERROR
+ */ 	
+TInt CTestZlib::TestUncompressBufNull()
+	{
+	TInt res = KErrNone;
+	TInt err=0;
+	Byte *compr, *uncompr;
+	uLong len = (uLong)strlen(hello)+1;
+
+	uLong comprLen = 20*sizeof(int); 
+	uLong uncomprLen = 3*sizeof(int);
+	compr = (Byte*)calloc((uInt)comprLen, 1);
+	if (compr == Z_NULL)
+		{
+		return KErrNoMemory;
+		}
+
+	uncompr  = (Byte*)calloc((uInt)uncomprLen, 1);
+	if (uncompr == Z_NULL) 
+		{
+		free(compr);
+		return KErrNoMemory;
+		}
+
+	err = compress(compr, &comprLen, (const Bytef*)hello, len);
+	if(err == 0)
+		{    	
+		strcpy((char*)uncompr, "garbage");
+		err = uncompress(uncompr, &uncomprLen, Z_NULL, comprLen);
+		if(err == Z_STREAM_ERROR)
+			{
+			res = KErrNone ;
+			}    
+		else
+			{
+			res = KErrGeneral;
+			}
+
+		} 
+
+	free(compr);
+	free(uncompr);
+	return res;
+	} 	
+
+/**
+ * Function Name : TestUncompressLenNull
+ * TestCase Description: Supply uncompress length=0
+ * Return value:	Z_DATA_ERROR
+ */ 	
+TInt CTestZlib::TestUncompressLenNull()
+	{
+	TInt res = KErrNone;
+	TInt err=0;
+	Byte *compr, *uncompr;
+	uLong len = (uLong)strlen(hello)+1;
+
+	uLong comprLen = 20*sizeof(int); 
+	uLong uncomprLen = 3*sizeof(int);
+	compr = (Byte*)calloc((uInt)comprLen, 1);
+	if (compr == Z_NULL)
+		{
+		return KErrNoMemory;
+		}
+
+	uncompr  = (Byte*)calloc((uInt)uncomprLen, 1);
+	if (uncompr == Z_NULL) 
+		{
+		free(compr);
+		return KErrNoMemory;
+		}
+
+	err = compress(compr, &comprLen, (const Bytef*)hello, len);
+	if(err == 0)
+		{    	
+		strcpy((char*)uncompr, "garbage");
+		err = uncompress(uncompr, &uncomprLen, compr, 0);
+		if(err == Z_DATA_ERROR)
+			{
+			res = KErrNone ;
+			}    
+		else
+			{
+			res = KErrGeneral;
+			}
+		} 
+
+	free(compr);
+	free(uncompr);
+	return res;
+	}
+
+
+/**
+ * Function Name : TestInflateScenarios
+ * TestCase Description: 1. Pass Windowbits = 15 for inflateInit2_, Z_SYNC_FLUSH for inflate
+ *						2. Pass Windowbits = -15 for inflateInit2_, Z_SYNC_FLUSH for inflate
+ *						3. Pass Windowbits = 29 for inflateInit2_, Z_BLOCK for inflate
+ * Return Value: Z_OK
+ */
+TInt CTestZlib::TestInflateScenarios()
+	{
+	TInt res = KErrNone ;
+	TInt WindowBits = 0;
+	TInt flush=0;
+	Byte *compr, *uncompr;
+	uLong comprLen = 20*sizeof(int); 
+	uLong uncomprLen = comprLen;
+	compr    = (Byte*)calloc((uInt)comprLen, 1);
+	if (compr == Z_NULL)
+		{
+		return KErrNoMemory;
+		}
+	uncompr  = (Byte*)calloc((uInt)uncomprLen, 1);
+	if (uncompr == Z_NULL) 
+		{
+		free(compr);
+		return KErrNoMemory;
+		}
+	res = Test_deflate(compr, comprLen);
+	if(res<0)
+		{
+		free(compr);
+		free(uncompr);
+		return KErrNoMemory;	
+		}
+
+	int err=0;
+	z_stream d_stream; /* decompression stream */
+
+	strcpy((char*)uncompr, "garbage");
+
+	d_stream.zalloc = (alloc_func)0;
+	d_stream.zfree = (free_func)0;
+	d_stream.opaque = (voidpf)0;
+
+	d_stream.next_in  = compr;
+	d_stream.avail_in = 0;
+	d_stream.next_out = uncompr;
+
+	ReadIntParam(WindowBits);
+	res = inflateInit2_(&d_stream, WindowBits, "1.2.4", sizeof(d_stream));
+
+	if(res<0)
+		{
+		free(compr);
+		free(uncompr);
+		return KErrNoMemory;	
+		}
+
+	ReadIntParam(flush);
+	while (d_stream.total_out < uncomprLen && d_stream.total_in < comprLen) 
+		{
+		d_stream.avail_in = d_stream.avail_out = 1; /* force small buffers */
+		err = inflate(&d_stream, flush);
+
+		if (err == Z_STREAM_END || err == Z_MEM_ERROR || err == Z_DATA_ERROR) break;
+		}
+	if(err == Z_MEM_ERROR)
+		{
+		err = inflateEnd(&d_stream);
+		free(compr);
+		free(uncompr);
+
+		return err;
+		}
+
+	err = inflateEnd(&d_stream);
+	if (err != Z_OK)  
+		{
+		res = KErrGeneral;     			
+		} 
+	else
+		{
+		res=KErrNone ;
+		}
+	free(compr);
+	free(uncompr);
+	return res;
+
+	}
+
+
+/**
+ * Function Name : TestInflateStreamStateNull
+ * TestCase Description: Make stream.state = NULL and call inflate
+ * Return Value: Z_STREAM_ERROR
+ */
+TInt CTestZlib::TestInflateStreamStateNull()
+	{
+	TInt res = KErrNone ;
+	Byte *compr, *uncompr;
+	uLong comprLen = 20*sizeof(int); 
+	uLong uncomprLen = comprLen;
+	compr    = (Byte*)calloc((uInt)comprLen, 1);
+	if (compr == Z_NULL)
+		{
+		return KErrNoMemory;
+		}
+	uncompr  = (Byte*)calloc((uInt)uncomprLen, 1);
+	if (uncompr == Z_NULL) 
+		{
+		free(compr);
+		return KErrNoMemory;
+		}
+	res = Test_deflate(compr, comprLen);
+	if(res<0)
+		{
+		free(compr);
+		free(uncompr);
+		return KErrNoMemory;	
+		}
+
+	int err=0;
+	z_stream d_stream; /* decompression stream */
+
+	strcpy((char*)uncompr, "garbage");
+
+	d_stream.zalloc = (alloc_func)0;
+	d_stream.zfree = (free_func)0;
+	d_stream.opaque = (voidpf)0;
+
+	d_stream.next_in  = compr;
+	d_stream.avail_in = 0;
+	d_stream.next_out = uncompr;
+
+	res = inflateInit2_(&d_stream, 15, "1.2.4", sizeof(d_stream));
+
+	if(res<0)
+		{
+		free(compr);
+		free(uncompr);
+		return KErrNoMemory;	
+		}
+
+	while (d_stream.total_out < uncomprLen && d_stream.total_in < comprLen) 
+		{
+		d_stream.avail_in = d_stream.avail_out = 1; /* force small buffers */
+		err = inflate(&d_stream, Z_SYNC_FLUSH);
+
+		if (err == Z_STREAM_END || err == Z_STREAM_ERROR || err == Z_MEM_ERROR) break;
+		}
+
+	if(err == Z_STREAM_ERROR)
+		{
+		res=KErrNone;
+		}
+	err = inflateEnd(&d_stream);
+	if (err == Z_STREAM_ERROR)  
+		{
+		res=KErrNone;
+		} 
+
+	d_stream.state = Z_NULL;
+	err = inflate(&d_stream, Z_SYNC_FLUSH);
+	if (err == Z_STREAM_ERROR)
+		{
+		res = KErrNone;
+		}
+
+	free(compr);
+	free(uncompr);
+	return res;    
+	}
+
+/**
+ * Function Name : TestInflateResetStreamStateNull
+ * TestCase Description: Make stream.state = NULL and call inflateReset
+ * Return Value: Z_STREAM_ERROR
+ */
+TInt CTestZlib::TestInflateResetStreamStateNull()
+	{  
+	TInt res=KErrNone;
+	z_stream d_stream; 		/* decompression stream */
+	const char * version;
+	d_stream.zalloc = (alloc_func)0;
+	d_stream.zfree = (free_func)0;
+	d_stream.opaque = (voidpf)0;
+
+	Byte *compr, *uncompr;
+	uLong comprLen = 20*sizeof(int); 
+	uLong uncomprLen = comprLen;
+	compr    = (Byte*)calloc((uInt)comprLen, 1);
+	if (compr == Z_NULL)
+		{
+		return KErrNoMemory;
+		}
+	uncompr  = (Byte*)calloc((uInt)uncomprLen, 1);
+	if (uncompr == Z_NULL) 
+		{
+		free(compr);
+		return KErrNoMemory;
+		}
+
+	res = Test_deflate(compr, comprLen);
+	if(res<0)
+		{
+		free(compr);
+		free(uncompr);
+		return KErrNoMemory;	
+		}
+	d_stream.next_in  = compr;
+	d_stream.avail_in = 0;
+	d_stream.next_out = uncompr;
+	version=zlibVersion();
+	int err;
+	err = inflateInit_(&d_stream,(char*)version, sizeof(d_stream));
+
+	if(err<0)
+		{
+		free(compr);
+		free(uncompr);
+		return KErrNoMemory;	
+		}
+
+	err=inflateReset(&d_stream);
+	err=inflateEnd(&d_stream);
+	free(compr);
+	free(uncompr);
+
+	// for coverage improvement
+	d_stream.state = Z_NULL;
+	err=inflateReset(&d_stream); 
+
+	if(err == Z_STREAM_ERROR)
+		{
+		res = KErrNone;
+		}
+	else
+		{
+		res = KErrGeneral;
+		}
+	return res;
+	}