--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/xml/libxml2libs/test/xmlengtester/xmlengtester_target/src/xmlengtesterblockssergzip.cpp Thu Dec 17 09:29:21 2009 +0200
@@ -0,0 +1,336 @@
+/*
+* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+#include "TestContentHandler.h"
+#include "TestBufferManager.h"
+#include "xmlengtester.h"
+
+#include <e32svr.h>
+#include <domain/osextensions/StifParser.h>
+#include <domain/osextensions/Stiftestinterface.h>
+
+#include <XmlEngSerializer.h>
+#include <XmlEngBinaryContainer.h>
+#include "xmlengtesterdef.h"
+
+#include <InetProtTextUtils.h>
+#include <libc\string.h>
+#include <charconv.h>
+#include <UTF.H>
+
+#include <EZDecompressor.h>
+#include <EZCompressor.h>
+#include <EZGzip.h>
+
+
+/************************************** SerGZIP ***************************************/
+// -----------------------------------------------------------------------------
+// CLibxml2Tester::SerializeGZIPL
+// test GZIP Serialize
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CLibxml2Tester::SerializeGZIPL(CStifItemParser& aItem)
+ {
+ TInt error(KErrGeneral);
+
+ //get test controls, input&output paths
+ TPtrC pControl;
+ aItem.GetNextString( pControl );
+
+ TPtrC pBinary;
+ aItem.GetNextString( pBinary );
+
+ TPtrC pXml;
+ aItem.GetNextString( pXml );
+
+ TPtrC pSerialized;
+ aItem.GetNextString( pSerialized );
+
+ TPtrC pGzipSerialized;
+ aItem.GetNextString( pGzipSerialized );
+
+ TPtrC pOptions;
+ aItem.GetNextString( pOptions );
+
+ // saves xml file with binary data added ( default serialize )
+ RXmlEngDocument iDocument;
+ CleanupClosePushL( iDocument );
+ if( pControl.FindF( SINGLE ) != KErrNotFound )
+ {
+ error = SaveXmlWithBinaryDataL( iDocument, pOptions, pBinary, pXml, EMPTY_STRING() );
+ }
+ else if ( pControl.FindF( MULTI ) != KErrNotFound )
+ {
+ error = SaveXmlWithBinaryDataL( iDocument, pOptions, pBinary, pXml, EMPTY_STRING(), TRUE );
+ }
+ else
+ {
+ User::Leave(KErrArgument);
+ }
+
+ if ( pControl.FindF( ONE_PARA ) != KErrNotFound )
+ {
+ User::LeaveIfError( TestSerialize1paraToFileL( iDocument, pGzipSerialized, pOptions, ESerializerGZip ) );
+ }
+
+ if ( pControl.FindF( THREE_PARA ) != KErrNotFound )
+ {
+ User::LeaveIfError ( TestSerialize3paraToFileL( iDocument, pGzipSerialized, pOptions, ESerializerGZip ) );
+ }
+
+ if ( pControl.FindF( TO_RFS ) != KErrNotFound )
+ {
+ User::LeaveIfError( TestSerializeRFsL( iDocument, pGzipSerialized, pOptions, ESerializerGZip ) );
+ }
+
+ if ( pControl.FindF( BUFFER ) != KErrNotFound )
+ {
+ User::LeaveIfError( TestSerializeToBufferL( iDocument, pGzipSerialized, pOptions, ESerializerGZip ) );
+ }
+ CleanupStack::PopAndDestroy( 1 );
+ return error;
+ }
+
+// -----------------------------------------------------------------------------
+// CLibxml2Tester::DecompressGZIPL
+// test GZIP Decompress
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CLibxml2Tester::DecompressGZIPL(CStifItemParser& aItem)
+ {
+ TBool unzipLoop = TRUE;
+
+ TPtrC pInput;
+ aItem.GetNextString( pInput );
+
+ TPtrC pOutput;
+ aItem.GetNextString( pOutput );
+ HBufC8* bufferOutput = CnvUtfConverter::ConvertFromUnicodeToUtf8L(pOutput);
+ CleanupStack::PushL( bufferOutput );
+ TPtr8 pOutput8 = bufferOutput->Des();
+
+ RFs aRFs;
+ User::LeaveIfError(aRFs.Connect());
+ CleanupClosePushL(aRFs);
+
+ RFile fileHandle;
+ User::LeaveIfError(fileHandle.Replace(aRFs, pOutput, EFileRead | EFileWrite));
+ CleanupClosePushL(fileHandle);
+
+
+ CEZGZipToFile* decompressFile = CEZGZipToFile::NewLC(aRFs, pInput, fileHandle);
+
+ while ( unzipLoop )
+ {
+ unzipLoop = decompressFile->InflateL();
+ }
+
+
+ CleanupStack::PopAndDestroy( 4 );
+ return KErrNone;
+ }
+
+// -----------------------------------------------------------------------------
+// CLibxml2Tester::DecompressBufferGZIPL
+// test GZIP Decompress
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CLibxml2Tester::DecompressBufferGZIPL(CStifItemParser& aItem)
+ {
+ TPtrC pInput;
+ aItem.GetNextString( pInput );
+
+ TPtrC pOutput;
+ aItem.GetNextString( pOutput );
+ HBufC8* bufferOutput = CnvUtfConverter::ConvertFromUnicodeToUtf8L(pOutput);
+ CleanupStack::PushL( bufferOutput );
+ TPtr8 pOutput8 = bufferOutput->Des();
+
+
+ HBufC8* buffer = ReadFileToBufferL( pInput );
+ CleanupStack::PushL( buffer );
+
+ // CVtcpBufferManager::NewL( in.Ptr() ,in.Length());
+
+
+ CTestBufferManager* bm = CTestBufferManager::NewLC( buffer->Ptr(), buffer->Size() );
+ CEZDecompressor* decompressor = CEZDecompressor::NewLC( *bm );
+
+// decompressor->DecompressL( pOutput8, buffer->Des() );
+
+while ( decompressor->InflateL() )
+ {
+ /* empty */
+ }
+
+TPtrC8 out=bm->OutputData();
+
+ RFs aRFs;
+ User::LeaveIfError(aRFs.Connect());
+ CleanupClosePushL(aRFs);
+
+ RFile fOut;
+ User::LeaveIfError ( fOut.Replace( aRFs, pOutput, EFileWrite ) );
+ CleanupClosePushL( fOut );
+ User::LeaveIfError ( fOut.Write(out ) );
+
+
+//WriteFileFromBufferL(pOutput,out)
+
+ CleanupStack::PopAndDestroy( 6 );
+ return KErrNone;
+ }
+// -----------------------------------------------------------------------------
+// CLibxml2Tester::CompressBufferGZIPL
+// test GZIP Compress to buffer
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CLibxml2Tester::CompressBufferGZIPL(CStifItemParser& aItem)
+ {
+ _LIT(tem,"Error in code");
+
+ // resize heap
+ he = UserHeap::ChunkHeap(&KNullDesC(), 0, 20000000);
+ if(!he)
+ {
+ User::Leave(100);
+ }
+ oldHeap = User::SwitchHeap(he);// Change heaps
+ cleanup=CTrapCleanup::New();
+ //--
+ TInt trapResult;
+
+ // start trap
+ TRAP(trapResult,
+
+ TPtrC pInput;
+ aItem.GetNextString( pInput );
+
+ TPtrC pOutput;
+ aItem.GetNextString( pOutput );
+ HBufC8* bufferOutput = CnvUtfConverter::ConvertFromUnicodeToUtf8L(pOutput);
+ CleanupStack::PushL( bufferOutput );
+ TPtr8 pOutput8 = bufferOutput->Des();
+
+
+ HBufC8* buffer = ReadFileToBufferL( pInput );
+ CleanupStack::PushL( buffer );
+
+ // CVtcpBufferManager::NewL( in.Ptr() ,in.Length());
+
+
+ CTestBufferManager* bm = CTestBufferManager::NewLC( buffer->Ptr(), buffer->Size() );
+ CEZCompressor* compressor = CEZCompressor::NewLC( *bm );
+
+// decompressor->DecompressL( pOutput8, buffer->Des() );
+
+while ( compressor->DeflateL() )
+ {
+ /* empty */
+ }
+
+TPtrC8 out=bm->OutputData();
+
+ RFs aRFs;
+ User::LeaveIfError(aRFs.Connect());
+ CleanupClosePushL(aRFs);
+
+ RFile fOut;
+ User::LeaveIfError ( fOut.Replace( aRFs, pOutput, EFileWrite ) );
+ CleanupClosePushL( fOut );
+ User::LeaveIfError ( fOut.Write(out ) );
+
+
+//WriteFileFromBufferL(pOutput,out)
+
+ CleanupStack::PopAndDestroy( 6 );
+ );
+ // end trap
+
+
+ if (trapResult)
+ User::Panic(tem,trapResult);
+
+
+ // delete cheap
+ delete cleanup; // destroy clean-up stack
+ User::SwitchHeap(oldHeap); // Change to old heap
+ he->Close();
+ he = NULL;
+ // --
+ return KErrNone;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CLibxml2Tester::SerializeDirtyGzipL
+// test serialize to file GZIP, error code trapping
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+ TInt CLibxml2Tester::SerializeDirtyGzipL(CStifItemParser& aItem)
+ {
+ TInt nResult = KErrNone;
+
+ TPtrC pDocument;
+ aItem.GetNextString(pDocument);
+
+ TPtrC pOut;
+ aItem.GetNextString(pOut);
+
+ TPtrC pDirtyReturn;
+ aItem.GetNextString(pDirtyReturn);
+
+ TLex inputNum (pDirtyReturn);
+ TInt dirtyReturn;
+ inputNum.Val(dirtyReturn);
+
+
+ TRAPD(trapResult,
+ iDoc = parser.ParseFileL(pDocument);
+
+ // procesing
+ // create serializer
+ CXmlEngSerializer* serializer = CXmlEngSerializer::NewL(ESerializerGZip);
+ CleanupStack::PushL(serializer);
+
+ // set output
+ TFileName srcFileName( pOut );
+ serializer->SetOutputL( srcFileName );
+
+ // set serialization options
+ TXmlEngSerializationOptions options ( TXmlEngSerializationOptions::KOptionStandalone );
+ serializer->SetSerializationOptions( options );
+
+ // serialize
+ serializer->SerializeL( iDoc );
+ CleanupStack::PopAndDestroy( 1 );
+ );
+
+ if (trapResult == dirtyReturn ) nResult = KErrNone;
+ else if (trapResult != KErrNone) nResult = trapResult;
+ else nResult = KErrGeneral;
+
+
+
+ return nResult;
+ }
+// End of file