sl@0: // Copyright (c) 2003-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: // sl@0: sl@0: #include sl@0: #include sl@0: sl@0: #if !defined(__WINS__) sl@0: _LIT(KPath, "Z:\\test\\gzip\\"); sl@0: #else sl@0: _LIT(KPath, "C:\\test\\gzip\\"); sl@0: #endif sl@0: sl@0: _LIT(KOutputFilePath, "C:\\test\\gzip\\"); sl@0: sl@0: _LIT(KInputFile, "Hello.txt"); sl@0: _LIT(KCompressFile,"Hello.gz"); sl@0: _LIT(KDecompressFile,"Hello_Decompress.txt"); sl@0: sl@0: sl@0: static RTest test(_L("gziptest.exe")); sl@0: static RFs TheFs; sl@0: static CTrapCleanup* TheTrapCleanup = NULL; sl@0: static TInt TheBufferSize = 500; sl@0: static TFileName TheInputFile(KInputFile); sl@0: static TFileName TheCompressFile(KCompressFile); sl@0: static TFileName TheDecompressFile(KDecompressFile); sl@0: sl@0: static void CompressFileL(TFileName& aInputFile, TFileName& aCompressFile, TInt aBufferSize = TheBufferSize); sl@0: static void DecompressFileL(TFileName& aInputFile, TFileName& aDecompressFile, TInt aBufferSize = TheBufferSize); sl@0: static void CompareFileDataL(TFileName& aSourceFile, TFileName& aDestFile, TInt& aCompare); sl@0: static void ThreadForPanicTest(TThreadFunction aPanicThreadFunc); sl@0: sl@0: inline void DeleteFile(TFileName& aFileName, TBool aPathSpecified = EFalse) sl@0: { sl@0: TFileName deleteFilePath; sl@0: if(!aPathSpecified) sl@0: { sl@0: deleteFilePath.Append(KOutputFilePath); sl@0: } sl@0: deleteFilePath.Append(aFileName); sl@0: sl@0: TRAPD(error, TheFs.Delete(deleteFilePath)); sl@0: if(error != KErrNone) sl@0: test.Printf(_L("File not deleted: %S"), &deleteFilePath); sl@0: } sl@0: sl@0: static void CompressFileL(TFileName& aInputFile, TFileName& aCompressFile, TInt aBufferSize) sl@0: { sl@0: TFileName inputFilePath(KPath); sl@0: inputFilePath.Append(aInputFile); sl@0: sl@0: TFileName compressFilePath(KOutputFilePath); sl@0: compressFilePath.Append(aCompressFile); sl@0: sl@0: RFile input; sl@0: User::LeaveIfError(input.Open(TheFs,inputFilePath, EFileStream | EFileRead | EFileShareReadersOnly)); sl@0: CleanupClosePushL(input); sl@0: sl@0: CEZFileToGZip *fileToGzip = NULL; sl@0: TRAPD(error, fileToGzip = CEZFileToGZip::NewL(TheFs, compressFilePath, input, aBufferSize)); sl@0: test(error == KErrNone); sl@0: CleanupStack::PushL(fileToGzip); sl@0: sl@0: while(fileToGzip->DeflateL()){/*do nothing*/} sl@0: sl@0: CleanupStack::PopAndDestroy(2); sl@0: } sl@0: sl@0: static void DecompressFileL(TFileName& aCompressFile, TFileName& aDecompressFile, TInt aBufferSize) sl@0: { sl@0: sl@0: TFileName compressFilePath(KPath); sl@0: compressFilePath.Append(aCompressFile); sl@0: sl@0: TFileName decompressFilePath(KOutputFilePath); sl@0: decompressFilePath.Append(aDecompressFile); sl@0: sl@0: RFile output; sl@0: User::LeaveIfError(output.Replace(TheFs, decompressFilePath, EFileStream | EFileWrite | EFileShareExclusive)); sl@0: CleanupClosePushL(output); sl@0: sl@0: CEZGZipToFile *gzipToFile = NULL; sl@0: TRAPD(error, gzipToFile = CEZGZipToFile::NewL(TheFs, compressFilePath, output, aBufferSize)); sl@0: test(error == KErrNone); sl@0: CleanupStack::PushL(gzipToFile); sl@0: sl@0: while (gzipToFile->InflateL()){/*do nothing*/} sl@0: sl@0: CleanupStack::PopAndDestroy(2); sl@0: sl@0: } sl@0: sl@0: static void CompareFileDataL(TFileName& aSourceFile, TFileName& aDestFile, TInt& aCompare) sl@0: { sl@0: sl@0: TFileName sourceFilePath(KPath); sl@0: sourceFilePath.Append(aSourceFile); sl@0: sl@0: TFileName destFilePath(KOutputFilePath); sl@0: destFilePath.Append(aDestFile); sl@0: sl@0: RFile source; sl@0: User::LeaveIfError(source.Open(TheFs,sourceFilePath, EFileStream | EFileRead | EFileShareReadersOnly)); sl@0: CleanupClosePushL(source); sl@0: sl@0: TInt sourceSize; sl@0: source.Size(sourceSize); sl@0: test(sourceSize > 0); sl@0: sl@0: HBufC8* sourceData = NULL; sl@0: TRAPD(error, sourceData = HBufC8::NewMaxL(sourceSize)); sl@0: test(error == KErrNone); sl@0: CleanupStack::PushL(sourceData); sl@0: sl@0: TPtr8 tSourceBufPtr = sourceData->Des(); sl@0: User::LeaveIfError(source.Read(0, tSourceBufPtr, sourceSize)); sl@0: sl@0: RFile dest; sl@0: User::LeaveIfError(dest.Open(TheFs,destFilePath, EFileStream | EFileWrite | EFileShareExclusive)); sl@0: CleanupClosePushL(dest); sl@0: sl@0: TInt destSize; sl@0: dest.Size(destSize); sl@0: test(destSize > 0); sl@0: sl@0: HBufC8* destData = NULL; sl@0: TRAP(error, destData = HBufC8::NewMaxL(destSize)); sl@0: test(error == KErrNone); sl@0: CleanupStack::PushL(destData); sl@0: sl@0: TPtr8 tDestBufPtr = destData->Des(); sl@0: User::LeaveIfError(dest.Read(0, tDestBufPtr, destSize)); sl@0: sl@0: aCompare = sourceData->Compare(*destData); sl@0: sl@0: CleanupStack::PopAndDestroy(4); sl@0: sl@0: } sl@0: sl@0: static void ThreadForPanicTest(TThreadFunction aPanicThreadFunc) sl@0: { sl@0: TRequestStatus threadStatus(KRequestPending); sl@0: TRequestStatus threadStatus1(KRequestPending); sl@0: sl@0: RThread thread; sl@0: TBool justInTime = User::JustInTime(); sl@0: User::SetJustInTime(EFalse); sl@0: sl@0: test.Printf(_L("Starting thread for invalid panic test...\n")); sl@0: TInt err=thread.Create( _L("Panic thread"),aPanicThreadFunc,KDefaultStackSize,0x1000,0x1000,NULL,EOwnerThread ); sl@0: sl@0: test.Printf(_L("Thread Creation returned following error code: %d \n"), err); sl@0: test(err == KErrNone); sl@0: sl@0: thread.Logon(threadStatus); sl@0: thread.Resume(); sl@0: User::WaitForRequest(threadStatus); sl@0: sl@0: #ifdef _DEBUG sl@0: __ASSERT_ALWAYS(thread.ExitType() == EExitPanic,User::Panic(_L("Thread panic mismatch."),KErrGeneral)); sl@0: test.Printf(_L("Invalid Panic test completed successfully for udeb build.\n")); sl@0: #else sl@0: test.Printf(_L("Invalid Panic test completed successfully for urel build.\n")); sl@0: #endif sl@0: sl@0: thread.Logon(threadStatus1); sl@0: thread.Kill(KErrNone); sl@0: User::WaitForRequest(threadStatus1); sl@0: test(threadStatus1 == KErrNone); sl@0: sl@0: CLOSE_AND_WAIT(thread); sl@0: sl@0: User::SetJustInTime(justInTime); sl@0: } sl@0: sl@0: /** sl@0: @SYMTestCaseID SYSLIB-EZLIB2-UT-4286 sl@0: @SYMTestCaseDesc To ensure a file can be compressed to a gzip file and then correctly sl@0: decompressed back to its original state using classes from gzip.cpp. sl@0: Overwrite output file to verify existing file can be re-used. sl@0: @SYMTestPriority High sl@0: @SYMTestActions 1. Open existing test file and pass it to CEZFileToGZip::NewL() & sl@0: compress using CEZFileToGZip::DeflateL() function sl@0: 2. Create or open output decompressed file and pass compressed file to sl@0: CEZGZipToFile::NewL() & decompress using CEZGZipToFile::InflateL() function sl@0: 3. Compare original and new file, they should be identical sl@0: 4. Repeat Steps 1 - 3 overwriting existing compressed output file sl@0: @SYMTestExpectedResults Original test file should be the same as the file generated sl@0: after decompressing it & the test must not fail sl@0: @SYMDEF REQ8024 sl@0: */ sl@0: void TestCompressDecompressGzip() sl@0: { sl@0: TRAPD(error, CompressFileL(TheInputFile, TheCompressFile)); sl@0: test(error == KErrNone); sl@0: TRAP(error, DecompressFileL(TheCompressFile, TheDecompressFile)); sl@0: test(error == KErrNone); sl@0: sl@0: TInt compare; sl@0: //compare the files sl@0: TRAP(error, CompareFileDataL(TheInputFile, TheDecompressFile, compare)); sl@0: test(error == KErrNone); sl@0: sl@0: if(compare == 0) sl@0: RDebug::Printf("Input file data is same as the Decompressed file data"); sl@0: else sl@0: RDebug::Printf("Input file data differs from Decompressed file data"); sl@0: sl@0: #if !defined(__WINS__) sl@0: DeleteFile(TheCompressFile); sl@0: DeleteFile(TheDecompressFile); sl@0: #endif sl@0: sl@0: //Compress & decompress the same file again to overwrite the existing file & sl@0: //..to verify that the existing files can be re-used sl@0: TRAP(error, CompressFileL(TheInputFile, TheCompressFile)); sl@0: test(error == KErrNone); sl@0: TRAP(error, DecompressFileL(TheCompressFile, TheDecompressFile)); sl@0: test(error == KErrNone); sl@0: sl@0: #if !defined(__WINS__) sl@0: DeleteFile(TheCompressFile); sl@0: DeleteFile(TheDecompressFile); sl@0: #endif sl@0: } sl@0: sl@0: /** sl@0: @SYMTestCaseID SYSLIB-EZLIB2-UT-4287 sl@0: @SYMTestCaseDesc To ensure a file can be compressed to a gzip file and then correctly sl@0: decompressed back using buffer size as small & big. sl@0: sl@0: @SYMTestPriority High sl@0: @SYMTestActions 1. Open existing test file and pass it to CEZFileToGZip::NewL() & sl@0: compress using CEZFileToGZip::DeflateL() with buffer size as "11" sl@0: 2. Create or open output decompressed file and pass compressed file sl@0: to CEZGZipToFile::NewL() & decompress using CEZGZipToFile::InflateL() sl@0: with buffer size as "10" sl@0: 3. Repeat Steps 1 & 2 using buffer size as 10 times the file size sl@0: @SYMTestExpectedResults Files should be compressed with no errors i.e. KErrNone & the test must not fail sl@0: @SYMDEF REQ8024 sl@0: */ sl@0: void TestOutputBuffSize() sl@0: { sl@0: sl@0: TRAPD(error, CompressFileL(TheInputFile, TheCompressFile, 10)); sl@0: test(error == KErrNone); sl@0: sl@0: TRAP(error, DecompressFileL(TheCompressFile, TheDecompressFile, 10)); sl@0: test(error == KErrNone); sl@0: sl@0: TInt bufferSize = 10 * TheBufferSize; sl@0: sl@0: #if !defined(__WINS__) sl@0: DeleteFile(TheCompressFile); sl@0: DeleteFile(TheDecompressFile); sl@0: #endif sl@0: sl@0: //Compress & decompress the same file again to overwrite the existing file & sl@0: //..to verify that the existing files can be re-used & with buffer size as big sl@0: TRAP(error, CompressFileL(TheInputFile, TheCompressFile, bufferSize)); sl@0: test(error == KErrNone); sl@0: sl@0: TRAP(error, DecompressFileL(TheCompressFile, TheDecompressFile, bufferSize)); sl@0: test(error == KErrNone); sl@0: sl@0: #if !defined(__WINS__) sl@0: DeleteFile(TheCompressFile); sl@0: DeleteFile(TheDecompressFile); sl@0: #endif sl@0: sl@0: } sl@0: sl@0: TInt RfileInitForCEZFileToGZip(TAny*) sl@0: { sl@0: RFile rfile; sl@0: TFileName compressFilePath(KOutputFilePath); sl@0: compressFilePath.Append(TheCompressFile); sl@0: sl@0: CTrapCleanup* cleanup = CTrapCleanup::New(); sl@0: TRAPD(error, CEZFileToGZip::NewL(TheFs, compressFilePath, rfile, TheBufferSize)); sl@0: delete cleanup; sl@0: sl@0: return error; sl@0: } sl@0: sl@0: TInt RfileInitForCEZGZipToFile(TAny*) sl@0: { sl@0: RFile rfile; sl@0: TFileName compressFilePath(KOutputFilePath); sl@0: compressFilePath.Append(TheCompressFile); sl@0: sl@0: CTrapCleanup* cleanup = CTrapCleanup::New(); sl@0: TRAPD(error, CEZGZipToFile::NewL(TheFs, compressFilePath, rfile, TheBufferSize)); sl@0: delete cleanup; sl@0: sl@0: return error; sl@0: sl@0: } sl@0: sl@0: /** sl@0: @SYMTestCaseID SYSLIB-EZLIB2-UT-4288 sl@0: @SYMTestCaseDesc CEZFileToGZip & CEZGZipToFile class initialisation fails when sl@0: invalid input RFile object supplied sl@0: @SYMTestPriority High sl@0: @SYMTestActions 1. Pass NULL RFile input parameter to CEZFileToGZip::NewL() sl@0: 2. Pass NULL RFile input parameter to CEZGZipToFile::NewL() sl@0: @SYMTestExpectedResults NewL() method should panic & the test must not fail sl@0: @SYMDEF REQ8024 sl@0: */ sl@0: void TestRFileInitialisation() sl@0: { sl@0: test.Printf(_L("Panic Thread: CEZFileToGzip Class initialisation fails when invalid input rfile supplied")); sl@0: ThreadForPanicTest(RfileInitForCEZFileToGZip); sl@0: test.Printf(_L("Panic Thread: CEZGZipToFile Class initialisation fails when invalid input rfile supplied")); sl@0: ThreadForPanicTest(RfileInitForCEZGZipToFile); sl@0: } sl@0: sl@0: /** sl@0: @SYMTestCaseID SYSLIB-EZLIB2-UT-4289 sl@0: @SYMTestCaseDesc CEZFileToGZip, CEZGZipToFile class initialisation fails sl@0: when invalid output filename supplied sl@0: @SYMTestPriority High sl@0: @SYMTestActions 1. Pass invalid filename output parameter to CEZFileToGZip::NewL() sl@0: 2. Pass invalid filename output parameter to CEZGZipToFile::NewL() sl@0: Note: Filename contains invalid characters sl@0: @SYMTestExpectedResults NewL() method should leave with error message & the test must not fail sl@0: @SYMDEF REQ8024 sl@0: */ sl@0: void TestInvalidFilenameL() sl@0: { sl@0: sl@0: _LIT(KInvalidGzip, "*******.gz"); sl@0: TFileName invalidGzip(KOutputFilePath); sl@0: invalidGzip.Append(KInvalidGzip); sl@0: sl@0: _LIT(KInvalidFile, "*******.txt"); sl@0: TFileName invalidFile(KOutputFilePath); sl@0: invalidFile.Append(KInvalidFile); sl@0: sl@0: TFileName inputFilePath(KPath); sl@0: inputFilePath.Append(TheInputFile); sl@0: sl@0: RFile input; sl@0: User::LeaveIfError(input.Open(TheFs,inputFilePath,EFileStream | EFileRead | EFileShareReadersOnly)); sl@0: CleanupClosePushL(input); sl@0: sl@0: TRAPD(error, CEZFileToGZip::NewL(TheFs, invalidGzip, input, TheBufferSize)); sl@0: test(error != KErrNone); sl@0: sl@0: CleanupStack::PopAndDestroy(1); sl@0: sl@0: RFile output; sl@0: TInt err = output.Create(TheFs, invalidFile,EFileStream | EFileWrite | EFileShareExclusive); sl@0: test(error != KErrNone); sl@0: sl@0: } sl@0: sl@0: /** sl@0: @SYMTestCaseID SYSLIB-EZLIB2-UT-4290 sl@0: @SYMTestCaseDesc Ensure if output file exists and is read only then it cannot be sl@0: overwritten with CEZFileToGZip & CEZGZipToFile class sl@0: @SYMTestPriority High sl@0: @SYMTestActions 1. Pass existing read only output filename parameter to CEZFileToGZip::NewL() sl@0: 2. Pass existing read only output filename parameter to CEZGZipToFile::NewL() sl@0: & decompress using CEZGZipToFile::InflateL() sl@0: @SYMTestExpectedResults CEZFileToGZip::NewL() method should leave with error message, CEZGZipToFile::Inflate() sl@0: should leave with error message & the test must not fail sl@0: @SYMDEF REQ8024 sl@0: */ sl@0: void TestOverwriteOutputFileL() sl@0: { sl@0: _LIT(KReadOnlyGzip, "Hello_Read_Only.gz"); sl@0: TFileName readOnlyNewGZip(KOutputFilePath); sl@0: readOnlyNewGZip.Append(KReadOnlyGzip); sl@0: sl@0: _LIT(KReadOnlyFile, "Hello_Read_Only.txt"); sl@0: TFileName readOnlyNewFile(KOutputFilePath); sl@0: readOnlyNewFile.Append(KReadOnlyFile); sl@0: sl@0: CFileMan* fMan=CFileMan::NewL(TheFs); sl@0: test(fMan!=NULL); sl@0: CleanupStack::PushL(fMan); sl@0: sl@0: #if !defined(__WINS__) sl@0: TFileName readOnlyOldGZip(KPath); sl@0: readOnlyOldGZip.Append(KReadOnlyGzip); sl@0: TFileName readOnlyOldFile(KPath); sl@0: readOnlyOldFile.Append(KReadOnlyFile); sl@0: sl@0: RFile source; sl@0: User::LeaveIfError(source.Open(TheFs,readOnlyOldGZip, EFileStream | EFileRead | EFileShareReadersOnly)); sl@0: CleanupClosePushL(source); sl@0: TRAPD(error, fMan->Copy(source, readOnlyNewGZip)); sl@0: test(error == KErrNone); sl@0: sl@0: RFile source1; sl@0: User::LeaveIfError(source1.Open(TheFs,readOnlyOldFile, EFileStream | EFileRead | EFileShareReadersOnly)); sl@0: CleanupClosePushL(source1); sl@0: TRAP(error, fMan->Copy(source1, readOnlyNewFile)); sl@0: test(error == KErrNone); sl@0: sl@0: CleanupStack::PopAndDestroy(2); sl@0: #endif sl@0: sl@0: TFileName inputFilePath(KPath); sl@0: inputFilePath.Append(TheInputFile); sl@0: sl@0: RFile input; sl@0: User::LeaveIfError(input.Open(TheFs,inputFilePath,EFileStream | EFileRead | EFileShareReadersOnly)); sl@0: CleanupClosePushL(input); sl@0: sl@0: //setting attributes to read only for readOnlyGZip & readOnlyFile sl@0: TInt err = fMan->Attribs(readOnlyNewGZip, KEntryAttReadOnly, 0, 0); sl@0: test(err == KErrNone); sl@0: err = fMan->Attribs(readOnlyNewFile, KEntryAttReadOnly, 0, 0); sl@0: test(err == KErrNone); sl@0: sl@0: TRAP(err, CEZFileToGZip::NewL(TheFs, readOnlyNewGZip, input, TheBufferSize)); sl@0: test(err != KErrNone); sl@0: sl@0: RFile output; sl@0: User::LeaveIfError(output.Open(TheFs,readOnlyNewFile,EFileStream | EFileRead | EFileShareReadersOnly)); sl@0: CleanupClosePushL(output); sl@0: sl@0: CEZGZipToFile * gzipToFile = NULL; sl@0: TRAP(err, gzipToFile = CEZGZipToFile::NewL(TheFs, readOnlyNewGZip, output, TheBufferSize)); sl@0: test(err == KErrNone); sl@0: CleanupStack::PushL(gzipToFile); sl@0: sl@0: while (err == KErrNone) sl@0: { sl@0: TRAP(err, gzipToFile->InflateL()); sl@0: } sl@0: sl@0: test(err != KErrNone); sl@0: sl@0: CleanupStack::PopAndDestroy(4); sl@0: sl@0: //removing the read only attrib before deleting the file sl@0: fMan=CFileMan::NewL(TheFs); sl@0: test(fMan!=NULL); sl@0: CleanupStack::PushL(fMan); sl@0: err = fMan->Attribs(readOnlyNewGZip, 0, KEntryAttReadOnly, 0); sl@0: test(err == KErrNone); sl@0: err = fMan->Attribs(readOnlyNewFile, 0, KEntryAttReadOnly, 0); sl@0: test(err == KErrNone); sl@0: sl@0: CleanupStack::PopAndDestroy(1); sl@0: sl@0: #if !defined(__WINS__) sl@0: DeleteFile(readOnlyNewGZip, ETrue); sl@0: DeleteFile(readOnlyNewFile, ETrue); sl@0: #endif sl@0: } sl@0: sl@0: TInt RFSInitForCEZFileToGZipL(TAny*) sl@0: { sl@0: TFileName inputFilePath(KPath); sl@0: inputFilePath.Append(TheInputFile); sl@0: sl@0: RFile input; sl@0: User::LeaveIfError(input.Open(TheFs,inputFilePath,EFileStream | EFileRead | EFileShareReadersOnly)); sl@0: CleanupClosePushL(input); sl@0: sl@0: TFileName compressFilePath(KOutputFilePath); sl@0: compressFilePath.Append(TheCompressFile); sl@0: sl@0: CTrapCleanup* cleanup = CTrapCleanup::New(); sl@0: RFs rfs; sl@0: TRAPD(error, CEZFileToGZip::NewL(rfs, compressFilePath, input, TheBufferSize)); sl@0: delete cleanup; sl@0: sl@0: CleanupStack::PopAndDestroy(1); sl@0: return error; sl@0: sl@0: } sl@0: sl@0: TInt RFSInitForCEZGZipToFileL(TAny*) sl@0: { sl@0: TFileName compressFilePath(KPath); sl@0: compressFilePath.Append(TheCompressFile); sl@0: sl@0: TFileName decompressFilePath(KOutputFilePath); sl@0: decompressFilePath.Append(TheDecompressFile); sl@0: sl@0: RFile output; sl@0: User::LeaveIfError(output.Replace(TheFs,decompressFilePath,EFileStream | EFileRead | EFileShareReadersOnly)); sl@0: CleanupClosePushL(output); sl@0: sl@0: CTrapCleanup* cleanup = CTrapCleanup::New(); sl@0: RFs rfs; sl@0: TRAPD(error, CEZGZipToFile::NewL(rfs, compressFilePath, output, TheBufferSize)); sl@0: delete cleanup; sl@0: sl@0: CleanupStack::PopAndDestroy(1); sl@0: return error; sl@0: sl@0: } sl@0: sl@0: /** sl@0: @SYMTestCaseID SYSLIB-EZLIB2-UT-4291 sl@0: @SYMTestCaseDesc CEZFileToGZip & CEZGZipToFile class initialisation fails when sl@0: invalid RFs object is passed sl@0: @SYMTestPriority High sl@0: @SYMTestActions 1. Pass NULL RFs input parameter to CEZFileToGZip::NewL() sl@0: 2. Pass NULL RFs input parameter to CEZGZipToFile::NewL() sl@0: @SYMTestExpectedResults NewL() method should panic & the test must not fail sl@0: @SYMDEF REQ8024 sl@0: */ sl@0: void TestRFSInitialisation() sl@0: { sl@0: test.Printf(_L("Panic Thread: CEZFileToGZip Class initialisation fails when invalid RFS object is passed")); sl@0: ThreadForPanicTest(RFSInitForCEZFileToGZipL); sl@0: test.Printf(_L("Panic Thread: CEZGZipToFile Class initialisation fails when invalid RFS object is passed")); sl@0: ThreadForPanicTest(RFSInitForCEZGZipToFileL); sl@0: } sl@0: sl@0: TInt BuffForEZFileToGZipAsZeroL(TAny*) sl@0: { sl@0: CTrapCleanup* cleanup = CTrapCleanup::New(); sl@0: CompressFileL(TheInputFile, TheCompressFile, 0); sl@0: delete cleanup; sl@0: return KErrNone; sl@0: } sl@0: sl@0: TInt BuffForEZFileToGZipAsNegativeL(TAny*) sl@0: { sl@0: CTrapCleanup* cleanup = CTrapCleanup::New(); sl@0: CompressFileL(TheInputFile, TheCompressFile, -1); sl@0: delete cleanup; sl@0: return KErrNone; sl@0: } sl@0: sl@0: TInt BuffForEZGZipToFileAsZeroL(TAny*) sl@0: { sl@0: CTrapCleanup* cleanup = CTrapCleanup::New(); sl@0: DecompressFileL(TheCompressFile, TheDecompressFile, 0); sl@0: delete cleanup; sl@0: return KErrNone; sl@0: } sl@0: sl@0: TInt BuffForEZGZipToFileAsNegativeL(TAny*) sl@0: { sl@0: CTrapCleanup* cleanup = CTrapCleanup::New(); sl@0: DecompressFileL(TheCompressFile, TheDecompressFile, -1); sl@0: delete cleanup; sl@0: return KErrNone; sl@0: } sl@0: sl@0: /** sl@0: @SYMTestCaseID SYSLIB-EZLIB2-UT-4292 sl@0: @SYMTestCaseDesc CEZFileToGZip & CEZGZipToFile class initialisation sl@0: fails when invalid buffer size parameter passed in sl@0: @SYMTestPriority High sl@0: @SYMTestActions 1. Pass buffer size parameter value as 0 to CEZFileToGZip::NewL() sl@0: 2. Pass buffer size parameter as a negative value to CEZFileToGZip::NewL() sl@0: 3. Pass buffer size parameter value as 0 to CEZGZipToFile::NewL() sl@0: 4. Pass buffer size parameter as a negative value to CEZGZipToFile::NewL() sl@0: @SYMTestExpectedResults NewL() method should panic & the test must not fail sl@0: @SYMDEF REQ8024 sl@0: */ sl@0: void TestInvalidBufferSize() sl@0: { sl@0: sl@0: test.Printf(_L("Panic Thread: CEZFileToGZip Class initialisation fails when buffer size is passed as Zero")); sl@0: ThreadForPanicTest(BuffForEZFileToGZipAsZeroL); sl@0: test.Printf(_L("Panic Thread: CEZFileToGZip Class initialisation fails when buffer size is passed as Negative")); sl@0: ThreadForPanicTest(BuffForEZFileToGZipAsNegativeL); sl@0: test.Printf(_L("Panic Thread: CEZGZipToFile Class initialisation fails when buffer size is passed as Zero")); sl@0: ThreadForPanicTest(BuffForEZGZipToFileAsZeroL); sl@0: test.Printf(_L("Panic Thread: CEZGZipToFile Class initialisation fails when buffer size is passed as Negative")); sl@0: ThreadForPanicTest(BuffForEZGZipToFileAsNegativeL); sl@0: sl@0: } sl@0: sl@0: /** sl@0: @SYMTestCaseID SYSLIB-EZLIB2-UT-4293 sl@0: @SYMTestCaseDesc Compress & Decompress another file with CEZFileToGZip & CEZGZipToFile sl@0: after calling ResetL method sl@0: @SYMTestPriority High sl@0: @SYMTestActions 1. Open existing test file and pass it to CEZFileToGZip::NewL() & compress using CEZFileToGZip::DeflateL function sl@0: 2. Call CEZFileToGZip::ResetL() with new file parameters sl@0: 3. Compress the new file with CEZFileToGZip::DeflateL() sl@0: 4. Create or open output decompressed file and pass compressed file to CEZGZipToFile::NewL() & decompress using CEZGZipToFile::InflateL() function sl@0: 5. Call CEZGZipToFile::ResetL() with new compressed file parameters sl@0: 6. Decompress the new compressed file with CEZGZipToFile::InflateL() sl@0: @SYMTestExpectedResults Files should be compressed with no errors i.e. KErrNone & the test must not fail sl@0: @SYMDEF REQ8024 sl@0: */ sl@0: void TestCompressDecompressResetL() sl@0: { sl@0: sl@0: TFileName inputFilePath(KPath); sl@0: inputFilePath.Append(TheInputFile); sl@0: sl@0: _LIT(KGzipFile,"Hello_Reset.gz"); sl@0: TFileName gzipFileName(KGzipFile); sl@0: TFileName compressfile(KOutputFilePath); sl@0: compressfile.Append(gzipFileName); sl@0: sl@0: RFile input; sl@0: User::LeaveIfError(input.Open(TheFs,inputFilePath,EFileStream | EFileRead | EFileShareReadersOnly)); sl@0: CleanupClosePushL(input); sl@0: sl@0: CEZFileToGZip *fileToGzip = CEZFileToGZip::NewLC(TheFs, compressfile, input, TheBufferSize); sl@0: while(fileToGzip->DeflateL()){/*do nothing*/} sl@0: sl@0: fileToGzip->ResetL(TheFs, compressfile, input, TheBufferSize); sl@0: while(fileToGzip->DeflateL()){/*do nothing*/} sl@0: sl@0: CleanupStack::PopAndDestroy(2); sl@0: sl@0: #if !defined(__WINS__) sl@0: DeleteFile(gzipFileName); sl@0: #endif sl@0: sl@0: TFileName compressFilePath(KPath); sl@0: compressFilePath.Append(TheCompressFile); sl@0: sl@0: _LIT(KTxtFile,"Hello_Reset.txt"); sl@0: TFileName txtFileName(KTxtFile); sl@0: TFileName decompressfile(KOutputFilePath); sl@0: decompressfile.Append(txtFileName); sl@0: sl@0: RFile output; sl@0: User::LeaveIfError(output.Replace(TheFs, decompressfile,EFileStream | EFileWrite | EFileShareExclusive)); sl@0: CleanupClosePushL(output); sl@0: sl@0: CEZGZipToFile *gzipToFile = CEZGZipToFile::NewLC(TheFs, compressFilePath, output, TheBufferSize); sl@0: while(gzipToFile->InflateL()){/*do nothing*/} sl@0: sl@0: gzipToFile->ResetL(TheFs, compressFilePath, output, TheBufferSize); sl@0: while(gzipToFile->InflateL()){/*do nothing*/} sl@0: sl@0: CleanupStack::PopAndDestroy(2); sl@0: sl@0: #if !defined(__WINS__) sl@0: DeleteFile(txtFileName); sl@0: #endif sl@0: sl@0: } sl@0: sl@0: /** sl@0: @SYMTestCaseID SYSLIB-EZLIB2-UT-4294 sl@0: @SYMTestCaseDesc CEZGZipToFile class initialisation fails when source sl@0: gzip file header is malformed: Header is too small sl@0: @SYMTestPriority High sl@0: @SYMTestActions Pass corrupted gzip file as an input parameter to CEZGZipToFile::NewL() sl@0: Note: Change the header of existing gzip file by removing few characters sl@0: @SYMTestExpectedResults NewL() method should leave with error message KEZlibErrBadGZipHeader sl@0: & the test must not fail sl@0: @SYMDEF REQ8024 sl@0: */ sl@0: void TestGzipHeaderSmallL() sl@0: { sl@0: sl@0: _LIT(KGzFile,"Hello_HeaderChanged.gz"); sl@0: TFileName compressfile(KPath); sl@0: compressfile.Append(KGzFile); sl@0: sl@0: TFileName decompressFilePath(KOutputFilePath); sl@0: decompressFilePath.Append(TheDecompressFile); sl@0: sl@0: RFile output; sl@0: User::LeaveIfError(output.Replace(TheFs, decompressFilePath,EFileStream | EFileWrite | EFileShareExclusive)); sl@0: CleanupClosePushL(output); sl@0: sl@0: TRAPD(error, CEZGZipToFile::NewL(TheFs, compressfile, output, TheBufferSize)); sl@0: test(error == KEZlibErrBadGZipHeader); sl@0: sl@0: CleanupStack::PopAndDestroy(1); sl@0: sl@0: } sl@0: sl@0: /** sl@0: @SYMTestCaseID SYSLIB-EZLIB2-UT-4295 sl@0: @SYMTestCaseDesc CEZGZipToFile class initialisation fails when source gzip file sl@0: header is malformed: Header ID number is incorrect sl@0: @SYMTestPriority High sl@0: @SYMTestActions Pass corrupted gzip file as an input parameter to CEZGZipToFile::NewL() sl@0: Note: Change the header ID of existing gzip file sl@0: @SYMTestExpectedResults NewL() method should leave with error message KEZlibErrBadGZipHeader sl@0: & the test must not fail sl@0: @SYMDEF REQ8024 sl@0: */ sl@0: void TestGzipHeaderIdIncorrectL() sl@0: { sl@0: sl@0: _LIT(KGzFile,"Hello_HeaderIdChanged.gz"); sl@0: TFileName compressfile(KPath); sl@0: compressfile.Append(KGzFile); sl@0: sl@0: TFileName decompressFilePath(KOutputFilePath); sl@0: decompressFilePath.Append(TheDecompressFile); sl@0: sl@0: RFile output; sl@0: User::LeaveIfError(output.Replace(TheFs, decompressFilePath,EFileStream | EFileWrite | EFileShareExclusive)); sl@0: CleanupClosePushL(output); sl@0: sl@0: TRAPD(error, CEZGZipToFile::NewL(TheFs, compressfile, output, TheBufferSize)); sl@0: test(error == KEZlibErrBadGZipHeader); sl@0: sl@0: CleanupStack::PopAndDestroy(1); sl@0: sl@0: } sl@0: sl@0: /** sl@0: @SYMTestCaseID SYSLIB-EZLIB2-UT-4296 sl@0: @SYMTestCaseDesc CEZGZipToFile class fails while decompressing the gzip sl@0: file with the CRC changed in the trailer sl@0: @SYMTestPriority High sl@0: @SYMTestActions Pass corrupted gzip file as an input parameter to CEZGZipToFile::NewL() sl@0: Note: Change the CRC within the Trailer of existing gzip file sl@0: @SYMTestExpectedResults NewL() method should leave with error message KErrNotFound & the test must not fail sl@0: Note: KErrNotFound error is fired while opening the corrupted gzip file sl@0: @SYMDEF REQ8024 sl@0: */ sl@0: void TestGzipTrailerCRCL() sl@0: { sl@0: sl@0: _LIT(KGzFile,"Hello_TrailerIdChanged.gz"); sl@0: TFileName compressfile(KPath); sl@0: compressfile.Append(KGzFile); sl@0: sl@0: TFileName decompressFilePath(KOutputFilePath); sl@0: decompressFilePath.Append(TheDecompressFile); sl@0: sl@0: RFile output; sl@0: User::LeaveIfError(output.Replace(TheFs, decompressFilePath,EFileStream | EFileWrite | EFileShareExclusive)); sl@0: CleanupClosePushL(output); sl@0: sl@0: TRAPD(error, CEZGZipToFile::NewL(TheFs, compressfile, output, TheBufferSize)); sl@0: test(error == KErrNotFound); sl@0: sl@0: CleanupStack::PopAndDestroy(1); sl@0: sl@0: } sl@0: sl@0: void TestCompressDecompressL() sl@0: { sl@0: sl@0: TFileName inputFilePath(KPath); sl@0: inputFilePath.Append(TheInputFile); sl@0: sl@0: TFileName compressFilePath(KOutputFilePath); sl@0: compressFilePath.Append(TheCompressFile); sl@0: sl@0: RFile input; sl@0: User::LeaveIfError(input.Open(TheFs,inputFilePath,EFileStream | EFileRead | EFileShareReadersOnly)); sl@0: CleanupClosePushL(input); sl@0: sl@0: CEZFileToGZip *fileToGzip = CEZFileToGZip::NewLC(TheFs, compressFilePath, input, TheBufferSize); sl@0: while(fileToGzip->DeflateL()){/*do nothing*/} sl@0: sl@0: TFileName decompressFilePath(KOutputFilePath); sl@0: decompressFilePath.Append(TheDecompressFile); sl@0: sl@0: TFileName compressFilePath1(KPath); sl@0: compressFilePath1.Append(TheCompressFile); sl@0: sl@0: RFile output; sl@0: User::LeaveIfError(output.Replace(TheFs, decompressFilePath,EFileStream | EFileWrite | EFileShareExclusive)); sl@0: CleanupClosePushL(output); sl@0: sl@0: CEZGZipToFile *gzipToFile = CEZGZipToFile::NewLC(TheFs, compressFilePath1, output, TheBufferSize); sl@0: while(gzipToFile->InflateL()){/*do nothing*/} sl@0: sl@0: CleanupStack::PopAndDestroy(4); sl@0: sl@0: #if !defined(__WINS__) sl@0: DeleteFile(TheCompressFile); sl@0: DeleteFile(TheDecompressFile); sl@0: #endif sl@0: } sl@0: sl@0: /** sl@0: @SYMTestCaseID SYSLIB-EZLIB2-UT-4297 sl@0: @SYMTestCaseDesc Out of Memory(OOM) test for CEZFileToGZip & CEZGZipToFile class sl@0: @SYMTestPriority High sl@0: @SYMTestActions 1. Set Heap Failure using the macro as: sl@0: __UHEAP_SETFAIL(RHeap::EDeterministic, count) sl@0: 2. Mark the heap using macro: __UHEAP_MARK sl@0: 3. Open existing test file and pass it to CEZFileToGZip::NewL() compress using CEZFileToGZip::DeflateL() function sl@0: 4. Create or open output decompressed file and pass compressed file to CEZGZipToFile::NewL() & decompress using CEZGZipToFile::InflateL() function sl@0: 5. Check there is no memory leak using the macro: __UHEAP_MARKEND sl@0: 6. Repeat the Steps 1-5 increasing the heap value rate i.e. count sl@0: @SYMTestExpectedResults The test succeeds with no memory leak on the heap as well as no errors (i.e. KErrNone) sl@0: & the test must not fail sl@0: @SYMDEF REQ8024 sl@0: */ sl@0: void TestOOMGzipL() sl@0: { sl@0: TInt processHandlesS = 0; sl@0: TInt threadHandlesS = 0; sl@0: TInt processHandlesE = 0; sl@0: TInt threadHandlesE = 0; sl@0: TInt err = KErrNone; sl@0: RThread().HandleCount(processHandlesS, threadHandlesS); sl@0: for(TInt count=1; count<=100; ++count) sl@0: { sl@0: // Setting Heap failure for OOM test sl@0: __UHEAP_SETFAIL(RHeap::EDeterministic, count); sl@0: __UHEAP_MARK; sl@0: sl@0: TRAP(err,TestCompressDecompressL()); sl@0: __UHEAP_MARKEND; sl@0: if(err == KErrNone) sl@0: { sl@0: RDebug::Print(_L("The test succeeded at heap failure rate=%d.\n"), count); sl@0: break; sl@0: } sl@0: else sl@0: { sl@0: test(err == KErrNoMemory); sl@0: } sl@0: __UHEAP_RESET; sl@0: } sl@0: sl@0: test(err == KErrNone); sl@0: __UHEAP_RESET; sl@0: sl@0: RThread().HandleCount(processHandlesE, threadHandlesE); sl@0: sl@0: test(processHandlesS == processHandlesE); sl@0: test(threadHandlesS == threadHandlesE); sl@0: sl@0: } sl@0: /* sl@0: * Helper function for TestDEF117325ToGZipL sl@0: * Deflates a file and then calls ResetL() sl@0: */ sl@0: void DeflateResetL() sl@0: { sl@0: _LIT(KGzipFile,"Hello_Reset.gz"); sl@0: TFileName compressFile(KOutputFilePath); sl@0: compressFile.Append(KGzipFile); sl@0: sl@0: TFileName inputFilePath(KPath); sl@0: inputFilePath.Append(TheInputFile); sl@0: sl@0: RFile input; sl@0: User::LeaveIfError(input.Open(TheFs, inputFilePath, EFileStream | EFileRead | EFileShareReadersOnly)); sl@0: CleanupClosePushL(input); sl@0: sl@0: CEZFileToGZip *fileToGzip = CEZFileToGZip::NewLC(TheFs, compressFile, input, TheBufferSize); sl@0: while(fileToGzip->DeflateL()) {/*do nothing*/} sl@0: sl@0: fileToGzip->ResetL(TheFs, compressFile, input, TheBufferSize); sl@0: sl@0: CleanupStack::PopAndDestroy(2); sl@0: sl@0: #if !defined(__WINS__) sl@0: DeleteFile(TheInputFile); sl@0: #endif sl@0: } sl@0: sl@0: /* sl@0: * Helper function for TestDEF117325ToFileL sl@0: * Inflates a GZip file and then calls ResetL() sl@0: */ sl@0: void InflateResetL() sl@0: { sl@0: _LIT(KTxtFile, "Hello_Reset.txt"); sl@0: TFileName decompressFile(KOutputFilePath); sl@0: decompressFile.Append(KTxtFile); sl@0: sl@0: TFileName compressFilePath(KPath); sl@0: compressFilePath.Append(TheCompressFile); sl@0: sl@0: RFile output; sl@0: User::LeaveIfError(output.Replace(TheFs, decompressFile, EFileStream | EFileWrite | EFileShareExclusive)); sl@0: CleanupClosePushL(output); sl@0: sl@0: CEZGZipToFile *gzipToFile = CEZGZipToFile::NewLC(TheFs, compressFilePath, output, TheBufferSize); sl@0: while(gzipToFile->InflateL()){/*do nothing*/} sl@0: sl@0: gzipToFile->ResetL(TheFs, compressFilePath, output, TheBufferSize); sl@0: sl@0: CleanupStack::PopAndDestroy(2); sl@0: sl@0: #if !defined(__WINS__) sl@0: DeleteFile(TheCompressFile); sl@0: #endif sl@0: } sl@0: sl@0: /* sl@0: * Helper function for TestDEF117325ToGZipL and TestDEF117325ToFileL. sl@0: * Checks for memory leaks in OOM situations. sl@0: */ sl@0: void DEF117325L(void (*aResetL)()) sl@0: { sl@0: TInt err = KErrNone; sl@0: for(TInt count = 0; count <= 100; count++) sl@0: { sl@0: // Setting Heap failure for OOM test sl@0: __UHEAP_SETFAIL(RHeap::EDeterministic, count); sl@0: __UHEAP_MARK; sl@0: sl@0: TRAP(err, aResetL()); sl@0: sl@0: __UHEAP_MARKEND; sl@0: __UHEAP_RESET; sl@0: sl@0: if(err == KErrNone) sl@0: { sl@0: RDebug::Print(_L("The test succeeded at heap failure rate = %d.\n"), count); sl@0: break; sl@0: } sl@0: else sl@0: { sl@0: test(err == KErrNoMemory); sl@0: } sl@0: } sl@0: } sl@0: sl@0: /** sl@0: @SYMTestCaseID SYSLIB-EZLIB2-UT-4319 sl@0: @SYMTestCaseDesc To test that there are no memory leaks when calling ResetL from CEZFileToGZip sl@0: @SYMTestPriority Medium sl@0: @SYMTestActions 1. Set Heap Failure using the macro __UHEAP_SETFAIL(RHeap::EDeterministic, count) sl@0: 2. Mark the heap using macro __UHEAP_MARK sl@0: 3. Open an existing test file and pass it to CEZFileToGZip::NewL() and compress it using CEZFileToGZip::DeflateL function sl@0: 4. Call CEZFileToGZip::ResetL() with new file parameters sl@0: 5. Check there is no memory leak using the macro __UHEAP_MARKEND sl@0: 6. Repeat steps 1 - 5 increasing the heap value rate i.e. count sl@0: @SYMTestExpectedResults The test succeeds with no memory leak on the heap as well as no errors (i.e. KErrNone) sl@0: @SYMDEF REQ8024 sl@0: */ sl@0: void TestDEF117325ToGZipL() sl@0: { sl@0: DEF117325L(&DeflateResetL); sl@0: } sl@0: sl@0: /** sl@0: @SYMTestCaseID SYSLIB-EZLIB2-UT-4320 sl@0: @SYMTestCaseDesc To test that there are no memory leaks when calling ResetL from CEZGZipToFile sl@0: @SYMTestPriority Medium sl@0: @SYMTestActions 1. Open an existing test file and pass it to CEZFileToGZip::NewL() and compress it using CEZFileToGZip::DeflateL sl@0: 2. Set Heap Failure using the macro __UHEAP_SETFAIL(RHeap::EDeterministic, count) sl@0: 3. Mark the heap using macro __UHEAP_MARK sl@0: 4. Open the compressed test file and pass it to CEZGZipToFile::NewL() and decompress it using CEZGZipToFile::InflateL function sl@0: 5. Call CEZGZipToFile::ResetL() with new file parameters sl@0: 6. Check there is no memory leak using the macro __UHEAP_MARKEND sl@0: 7. Repeat steps 2 - 6 increasing the heap value rate i.e. count sl@0: @SYMTestExpectedResults The test succeeds with no memory leak on the heap as well as no errors (i.e. KErrNone) sl@0: @SYMDEF REQ8024 sl@0: */ sl@0: void TestDEF117325ToFileL() sl@0: { sl@0: sl@0: // Create a GZip file that can be used by CEZGZipToFile sl@0: CompressFileL(TheInputFile, TheCompressFile); sl@0: sl@0: DEF117325L(&InflateResetL); sl@0: sl@0: #if !defined(__WINS__) sl@0: DeleteFile(TheCompressFile); sl@0: #endif sl@0: } sl@0: sl@0: sl@0: sl@0: void RunTestL() sl@0: { sl@0: sl@0: User::LeaveIfError(TheFs.Connect()); //Connect to file session sl@0: CleanupClosePushL(TheFs); sl@0: sl@0: #if !defined(__WINS__) sl@0: TInt err = TheFs.MkDirAll(KOutputFilePath); sl@0: if(err != KErrNone && err != KErrAlreadyExists) sl@0: { sl@0: test.Printf(_L("Error while creating dir => Error: %d"), err); sl@0: User::Leave(err); sl@0: } sl@0: #endif sl@0: sl@0: test.Next(_L(" @SYMTestCaseID:SYSLIB-EZLIB2-UT-4286 Compression - Decompression of Gzip file ")); sl@0: TestCompressDecompressGzip(); sl@0: test.Next(_L(" @SYMTestCaseID:SYSLIB-EZLIB2-UT-4287 Compression - Decompression of Gzip file with big & small buffer size ")); sl@0: TestOutputBuffSize(); sl@0: test.Next(_L(" @SYMTestCaseID:SYSLIB-EZLIB2-UT-4288 Class initialisation fails when invalid input rfile supplied ")); sl@0: TestRFileInitialisation(); sl@0: test.Next(_L(" @SYMTestCaseID:SYSLIB-EZLIB2-UT-4289 Class initialisation fails when invalid output filename supplied ")); sl@0: TestInvalidFilenameL(); sl@0: test.Next(_L(" @SYMTestCaseID:SYSLIB-EZLIB2-UT-4290 Class initialisation fails while overwriting the read only output file ")); sl@0: TestOverwriteOutputFileL(); sl@0: test.Next(_L(" @SYMTestCaseID:SYSLIB-EZLIB2-UT-4291 Class initialisation fails when invalid RFS object is passed ")); sl@0: TestRFSInitialisation(); sl@0: test.Next(_L(" @SYMTestCaseID:SYSLIB-EZLIB2-UT-4292 Panic Thread: Class initialisation fails when invalid buffer size parameter passed in ")); sl@0: TestInvalidBufferSize(); sl@0: test.Next(_L(" @SYMTestCaseID:SYSLIB-EZLIB2-UT-4293 Compress another file with CEZFileToGZip & CEZGZipToFile after calling ResetL method ")); sl@0: TestCompressDecompressResetL(); sl@0: test.Next(_L(" @SYMTestCaseID:SYSLIB-EZLIB2-UT-4294 CEZGZipToFile class initialisation fails when source gzip file header is malformed: Header is too small ")); sl@0: TestGzipHeaderSmallL(); sl@0: test.Next(_L(" @SYMTestCaseID:SYSLIB-EZLIB2-UT-4295 CEZGZipToFile class initialisation fails when source gzip file header is malformed: Header ID number is incorrect ")); sl@0: TestGzipHeaderIdIncorrectL(); sl@0: test.Next(_L(" @SYMTestCaseID:SYSLIB-EZLIB2-UT-4296 CEZGZipToFile class fails while decompressing the gzip file with the CRC changed in the trailer ")); sl@0: TestGzipTrailerCRCL(); sl@0: test.Next(_L(" @SYMTestCaseID:SYSLIB-EZLIB2-UT-4297 Out of Memory(OOM) test for CEZFileToGZip & CEZGZipToFile class ")); sl@0: TestOOMGzipL(); sl@0: test.Next(_L(" @SYMTestCaseID:SYSLIB-EZLIB2-UT-4319 Out of Memory(OOM) test for DEF117325: Ezlib: ResetL() in gzip.cpp - a member variable can be deleted twice (CEZFileToGZip) ")); sl@0: TestDEF117325ToGZipL(); sl@0: test.Next(_L(" @SYMTestCaseID:SYSLIB-EZLIB2-UT-4320 Out of Memory(OOM) test for DEF117325: Ezlib: ResetL() in gzip.cpp - a member variable can be deleted twice (CEZGZipToFile) ")); sl@0: TestDEF117325ToFileL(); sl@0: sl@0: sl@0: #if !defined(__WINS__) sl@0: CFileMan* fMan=CFileMan::NewL(TheFs); sl@0: test(fMan!=NULL); sl@0: CleanupStack::PushL(fMan); sl@0: err = fMan->RmDir(_L("C:\\test\\gzip")); sl@0: CleanupStack::PopAndDestroy(1); sl@0: #endif sl@0: sl@0: CleanupStack::PopAndDestroy(1); sl@0: sl@0: } sl@0: sl@0: GLDEF_C TInt E32Main() sl@0: { sl@0: sl@0: __UHEAP_MARK; sl@0: sl@0: test.Printf(_L("\n")); sl@0: test.Title(); sl@0: test.Start( _L("Starting Gzip Tests..") ); sl@0: sl@0: TheTrapCleanup=CTrapCleanup::New(); sl@0: sl@0: TRAPD(err,RunTestL()); sl@0: test (err==KErrNone); sl@0: sl@0: test.End(); sl@0: test.Close(); sl@0: sl@0: delete TheTrapCleanup; sl@0: sl@0: __UHEAP_MARKEND; sl@0: return KErrNone; sl@0: sl@0: }