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