xml/libxml2libs/test/xmlengtester/xmlengtester_target/src/xmlengtesterblocksdeserialize.cpp
changeset 0 e35f40988205
child 17 ed3155dbd163
child 32 889504eac4fb
equal deleted inserted replaced
-1:000000000000 0:e35f40988205
       
     1 /*
       
     2 * Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:
       
    15 *
       
    16 */
       
    17 
       
    18 #include "TestContentHandler.h"
       
    19 #include "xmlengtester.h"
       
    20 
       
    21 #include <e32svr.h>
       
    22 #include <e32std.h>
       
    23 #include <domain/osextensions/StifParser.h>
       
    24 #include <domain/osextensions/Stiftestinterface.h>
       
    25 
       
    26 #include <XmlEngDeserializer.h>
       
    27 #include <Xml\ParserFeature.h>
       
    28 #include "xmlengtesterdef.h"
       
    29 
       
    30 #include <InetProtTextUtils.h>
       
    31 #include <libc\string.h>
       
    32 #include <charconv.h>
       
    33 #include <UTF.H>
       
    34 
       
    35 #include "XmlEngBinaryContainer.h"
       
    36 #include "XmlEngChunkContainer.h"
       
    37 #include "XmlEngFileContainer.h"
       
    38 #include "XmlEngDataContainer.h"
       
    39 #include <xmlengparsingoptions.h>
       
    40 
       
    41 
       
    42 // -----------------------------------------------------------------------------
       
    43 // CLibxml2Tester::DeserializeL
       
    44 // deserialize from file, using setter SetInputFileL
       
    45 // (other items were commented in a header).
       
    46 // -----------------------------------------------------------------------------
       
    47 //
       
    48 TInt CLibxml2Tester::DeserializeL( CStifItemParser& aItem)
       
    49     {
       
    50     TInt err;
       
    51     TPtrC pDeserializerType;
       
    52     aItem.GetNextString( pDeserializerType );
       
    53 	
       
    54     TPtrC pInputFile;
       
    55     aItem.GetNextString( pInputFile );
       
    56 	
       
    57     TPtrC pOutputFile;
       
    58     aItem.GetNextString( pOutputFile );
       
    59     
       
    60     TPtrC pDirtyReturn;
       
    61     aItem.GetNextString( pDirtyReturn );
       
    62     
       
    63     TLex inputNum (pDirtyReturn);
       
    64     TInt dirtyReturn;
       
    65      inputNum.Val(dirtyReturn);	
       
    66     
       
    67     RFile fileHandle;
       
    68     RFs aRFs;
       
    69     aRFs.Connect();
       
    70     CleanupClosePushL( aRFs );
       
    71 	
       
    72     User::LeaveIfError( fileHandle.Replace( aRFs, pOutputFile, EFileStream | EFileWrite | EFileShareExclusive));
       
    73     CleanupClosePushL( fileHandle );
       
    74 	
       
    75     CTestHandler* testHandle = CTestHandler::NewLC( fileHandle );
       
    76     
       
    77     if( pDeserializerType.FindF( DEFAULT ) != KErrNotFound )
       
    78         {
       
    79         CXmlEngDeserializer* des = CXmlEngDeserializer::NewL( *testHandle, EDeserializerDefault );
       
    80         CleanupStack::PushL( des );
       
    81         des->SetInputFileL( pInputFile );
       
    82         TRAP(err,des->DeserializeL());
       
    83         }
       
    84     else if( pDeserializerType.FindF( XOP ) != KErrNotFound )     
       
    85         {
       
    86         CXmlEngDeserializer* des = CXmlEngDeserializer::NewL( *testHandle, EDeserializerXOP );
       
    87         CleanupStack::PushL( des );
       
    88         des->SetInputFileL( pInputFile );
       
    89         TRAP(err,des->DeserializeL());
       
    90         }
       
    91     else if( pDeserializerType.FindF( INFOSET ) != KErrNotFound )     
       
    92         {
       
    93         CXmlEngDeserializer* des = CXmlEngDeserializer::NewL( *testHandle, EDeserializerXOPInfoset );
       
    94         CleanupStack::PushL( des );
       
    95         des->SetInputFileL( pInputFile );
       
    96         TRAP(err,des->DeserializeL());
       
    97         }    
       
    98     else if( pDeserializerType.FindF( GZIP ) != KErrNotFound )     
       
    99         {
       
   100         CXmlEngDeserializer* des = CXmlEngDeserializer::NewL( *testHandle, EDeserializerGZip );
       
   101         CleanupStack::PushL( des );
       
   102         des->SetInputFileL( pInputFile );
       
   103         TRAP(err,des->DeserializeL());
       
   104         }
       
   105     	
       
   106     CleanupStack::PopAndDestroy( 4 );
       
   107     if ( err == dirtyReturn ) return KErrNone;		
       
   108     else return err;
       
   109     }
       
   110 // -----------------------------------------------------------------------------
       
   111 // CLibxml2Tester::Deserialize2L
       
   112 // deserialize from buffer, using setter SetInputBuffer
       
   113 // (other items were commented in a header).
       
   114 // -----------------------------------------------------------------------------
       
   115 //    
       
   116 TInt CLibxml2Tester::Deserialize2L( CStifItemParser& aItem)
       
   117     {
       
   118     TInt err;
       
   119     TPtrC pDeserializerType;
       
   120     aItem.GetNextString( pDeserializerType );
       
   121 	
       
   122     TPtrC pInputFile;
       
   123     aItem.GetNextString( pInputFile );
       
   124 	
       
   125     TPtrC pOutputFile;
       
   126     aItem.GetNextString( pOutputFile );
       
   127 
       
   128     TPtrC pDirtyReturn;
       
   129     aItem.GetNextString( pDirtyReturn );
       
   130     
       
   131     TLex inputNum (pDirtyReturn);
       
   132     TInt dirtyReturn;
       
   133      inputNum.Val(dirtyReturn);
       
   134      	
       
   135     RFile fileHandle;
       
   136     RFs aRFs;
       
   137     aRFs.Connect();
       
   138     CleanupClosePushL( aRFs );
       
   139 	
       
   140     User::LeaveIfError( fileHandle.Replace( aRFs, pOutputFile, EFileStream | EFileWrite | EFileShareExclusive));
       
   141     CleanupClosePushL( fileHandle );
       
   142     
       
   143      HBufC8* buf = ReadFileL(pInputFile);
       
   144     CleanupStack::PushL(buf);
       
   145 		
       
   146     CTestHandler* testHandle = CTestHandler::NewLC( fileHandle );
       
   147     
       
   148     if( pDeserializerType.FindF( DEFAULT ) != KErrNotFound )
       
   149         {
       
   150         CXmlEngDeserializer* des = CXmlEngDeserializer::NewL( *testHandle, EDeserializerDefault );
       
   151         CleanupStack::PushL( des );
       
   152         des->SetInputBuffer(buf->Des());
       
   153         TRAP(err,des->DeserializeL());
       
   154         }
       
   155     else if( pDeserializerType.FindF( XOP ) != KErrNotFound )     
       
   156         {
       
   157         CXmlEngDeserializer* des = CXmlEngDeserializer::NewL( *testHandle, EDeserializerXOP );
       
   158         CleanupStack::PushL( des );
       
   159         des->SetInputBuffer(buf->Des());
       
   160         TRAP(err,des->DeserializeL());
       
   161         }
       
   162     else if( pDeserializerType.FindF( INFOSET ) != KErrNotFound )     
       
   163         {
       
   164         CXmlEngDeserializer* des = CXmlEngDeserializer::NewL( *testHandle, EDeserializerXOPInfoset );
       
   165         CleanupStack::PushL( des );
       
   166         des->SetInputBuffer(buf->Des());
       
   167         TRAP(err,des->DeserializeL());
       
   168         }
       
   169     else if( pDeserializerType.FindF( GZIP ) != KErrNotFound )     
       
   170         {
       
   171         CXmlEngDeserializer* des = CXmlEngDeserializer::NewL( *testHandle,EDeserializerGZip );
       
   172         CleanupStack::PushL( des );
       
   173         des->SetInputBuffer(buf->Des());
       
   174         TRAP(err,des->DeserializeL());
       
   175         }
       
   176     	
       
   177     CleanupStack::PopAndDestroy( 5 );		
       
   178     if ( err == dirtyReturn ) return KErrNone;		
       
   179     else return err;
       
   180     }    
       
   181 
       
   182 // -----------------------------------------------------------------------------
       
   183 // CLibxml2Tester::DeserializeFromFileL
       
   184 // deserialize from file, convinience function
       
   185 // (other items were commented in a header).
       
   186 // -----------------------------------------------------------------------------
       
   187 // 
       
   188 TInt CLibxml2Tester::DeserializeFromFileL( CStifItemParser& aItem)
       
   189     {
       
   190     TInt err;
       
   191     TPtrC pDeserializerType;
       
   192     aItem.GetNextString( pDeserializerType );
       
   193 	
       
   194     TPtrC pInputFile;
       
   195     aItem.GetNextString( pInputFile );
       
   196 	
       
   197     TPtrC pOutputFile;
       
   198     aItem.GetNextString( pOutputFile );
       
   199 
       
   200     TPtrC pDirtyReturn;
       
   201     aItem.GetNextString( pDirtyReturn );
       
   202     
       
   203     TLex inputNum (pDirtyReturn);
       
   204     TInt dirtyReturn;
       
   205      inputNum.Val(dirtyReturn);
       
   206      	
       
   207     RFile fileHandle;
       
   208     RFs aRFs;
       
   209     aRFs.Connect();
       
   210     CleanupClosePushL( aRFs );
       
   211 	
       
   212     User::LeaveIfError( fileHandle.Replace( aRFs, pOutputFile, EFileStream | EFileWrite | EFileShareExclusive));
       
   213     CleanupClosePushL( fileHandle );
       
   214 	
       
   215     CTestHandler* testHandle = CTestHandler::NewLC( fileHandle );
       
   216     
       
   217     if( pDeserializerType.FindF( DEFAULT ) != KErrNotFound )
       
   218         {
       
   219         CXmlEngDeserializer* des = CXmlEngDeserializer::NewL( *testHandle, EDeserializerDefault );
       
   220         CleanupStack::PushL( des );
       
   221         TRAP(err,des->DeserializeL( pInputFile ));
       
   222         }
       
   223     else if( pDeserializerType.FindF( XOP ) != KErrNotFound )     
       
   224         {
       
   225         CXmlEngDeserializer* des = CXmlEngDeserializer::NewL( *testHandle,EDeserializerXOP );
       
   226         CleanupStack::PushL( des );
       
   227         TRAP(err,des->DeserializeL( pInputFile ));
       
   228         }
       
   229     else if( pDeserializerType.FindF( INFOSET ) != KErrNotFound )     
       
   230         {
       
   231         CXmlEngDeserializer* des = CXmlEngDeserializer::NewL( *testHandle,EDeserializerXOPInfoset );
       
   232         CleanupStack::PushL( des );
       
   233         TRAP(err,des->DeserializeL( pInputFile ));
       
   234         }
       
   235     else if( pDeserializerType.FindF( GZIP ) != KErrNotFound )     
       
   236         {
       
   237         CXmlEngDeserializer* des = CXmlEngDeserializer::NewL( *testHandle, EDeserializerGZip );
       
   238         CleanupStack::PushL( des );
       
   239         RFs fs; 
       
   240         CleanupClosePushL(fs);
       
   241         User::LeaveIfError(fs.Connect());    				
       
   242         TRAP(err,des->DeserializeL( fs ,pInputFile ));			
       
   243         CleanupStack::PopAndDestroy(&fs);
       
   244         }
       
   245     	
       
   246     CleanupStack::PopAndDestroy( 4 );		
       
   247     if ( err == dirtyReturn ) return KErrNone;		
       
   248     else return err;
       
   249     }
       
   250     
       
   251 // -----------------------------------------------------------------------------
       
   252 // CLibxml2Tester::DeserializeFromBufferL
       
   253 // deserialize from buffer, convinience function
       
   254 // (other items were commented in a header).
       
   255 // -----------------------------------------------------------------------------
       
   256 // 
       
   257 TInt CLibxml2Tester::DeserializeFromBufferL(CStifItemParser& aItem)
       
   258     {    
       
   259     TInt err;    
       
   260     TPtrC pDeserializerType;
       
   261     aItem.GetNextString( pDeserializerType );
       
   262 	
       
   263     TPtrC pInputFile;
       
   264     aItem.GetNextString( pInputFile );
       
   265 	
       
   266     TPtrC pOutputFile;
       
   267     aItem.GetNextString( pOutputFile );
       
   268     
       
   269     TPtrC pDirtyReturn;
       
   270     aItem.GetNextString( pDirtyReturn );
       
   271     
       
   272     TLex lexer (pDirtyReturn);
       
   273     TInt dirtyReturn;
       
   274     lexer.Val(dirtyReturn);
       
   275     
       
   276     HBufC8* buf = ReadFileL(pInputFile);
       
   277     CleanupStack::PushL(buf);
       
   278 		
       
   279     RFile handleOutput;
       
   280     RFs rfOutput;
       
   281     rfOutput.Connect();
       
   282     CleanupClosePushL( rfOutput );
       
   283 	
       
   284     User::LeaveIfError( handleOutput.Replace( rfOutput, pOutputFile, EFileWrite));
       
   285     CleanupClosePushL( handleOutput );	
       
   286 		
       
   287     CTestHandler* testHandle = CTestHandler::NewLC( handleOutput );
       
   288     if( pDeserializerType.FindF( DEFAULT ) != KErrNotFound )
       
   289         {
       
   290         CXmlEngDeserializer* des = CXmlEngDeserializer::NewL( *testHandle, EDeserializerDefault );
       
   291         CleanupStack::PushL( des );
       
   292         TRAP(err,des->DeserializeL(buf->Des()));
       
   293         }
       
   294     else if( pDeserializerType.FindF( XOP ) != KErrNotFound )     
       
   295         {
       
   296         CXmlEngDeserializer* des = CXmlEngDeserializer::NewL( *testHandle, EDeserializerXOP );
       
   297         CleanupStack::PushL( des );
       
   298         TRAP(err,des->DeserializeL(buf->Des()));
       
   299         }
       
   300     else if( pDeserializerType.FindF( INFOSET ) != KErrNotFound )     
       
   301         {
       
   302         CXmlEngDeserializer* des = CXmlEngDeserializer::NewL( *testHandle, EDeserializerXOPInfoset );
       
   303         CleanupStack::PushL( des );
       
   304         TRAP(err,des->DeserializeL(buf->Des()));
       
   305         }
       
   306     else if( pDeserializerType.FindF( GZIP ) != KErrNotFound )     
       
   307         {
       
   308         CXmlEngDeserializer* des = CXmlEngDeserializer::NewL( *testHandle, EDeserializerGZip );
       
   309         CleanupStack::PushL( des );
       
   310         TRAP(err,des->DeserializeL(buf->Des()));
       
   311         }
       
   312 
       
   313     CleanupStack::PopAndDestroy( 5 );
       
   314     
       
   315     if ( err == dirtyReturn ) return KErrNone;		
       
   316     else return err;	
       
   317     }
       
   318 
       
   319 // -----------------------------------------------------------------------------
       
   320 // CLibxml2Tester::TestDeserializerL
       
   321 // loop test, deserialize from file, one deserializer instance
       
   322 // (other items were commented in a header).
       
   323 // -----------------------------------------------------------------------------
       
   324 // 
       
   325 TInt CLibxml2Tester::TestDeserializerL(CStifItemParser& aItem)
       
   326 	{
       
   327 	TPtrC pType;
       
   328 	aItem.GetNextString(pType);
       
   329 	
       
   330 	TPtrC pDoc;
       
   331 	aItem.GetNextString(pDoc);
       
   332 	
       
   333 	TPtrC pOut;
       
   334 	aItem.GetNextString(pOut);
       
   335 	
       
   336 	
       
   337 	RFile fileHandle;
       
   338     RFs aRFs;
       
   339     aRFs.Connect();
       
   340     CleanupClosePushL( aRFs );
       
   341 	
       
   342     User::LeaveIfError( fileHandle.Replace( aRFs, pOut, EFileStream | EFileWrite | EFileShareExclusive));
       
   343     CleanupClosePushL( fileHandle );
       
   344 	
       
   345     CTestHandler* testHandle = CTestHandler::NewLC( fileHandle );
       
   346     CXmlEngDeserializer* des = CXmlEngDeserializer::NewL( *testHandle, RetDeserializerType(pType) );
       
   347     CleanupStack::PushL( des );
       
   348     
       
   349     for (TInt i = 0; i < 20; i++ )
       
   350     	{
       
   351     	des->SetInputFileL(pDoc);
       
   352     	des->DeserializeL();
       
   353     	des->DeserializeL();
       
   354     	des->EnableFeature(	EReportNamespaces );
       
   355     	des->DeserializeL();
       
   356     	if( des->IsFeatureEnabled( EReportNamespaces )) 
       
   357     		{
       
   358     	   	des->DisableFeature( EReportNamespaces );
       
   359     		}
       
   360     		else User::Leave( KErrGeneral );
       
   361     	des->EnableFeature( EReportNamespaceMapping );
       
   362     	des->EnableFeature( EReportUnrecognisedTags );
       
   363     	}
       
   364 	
       
   365 	
       
   366 	CleanupStack::PopAndDestroy( 4 );
       
   367 	return KErrNone;	
       
   368 	}
       
   369 		
       
   370 // -----------------------------------------------------------------------------
       
   371 // CLibxml2Tester::TestSetInputFileL
       
   372 // test setting input file
       
   373 // (other items were commented in a header).
       
   374 // -----------------------------------------------------------------------------
       
   375 // 
       
   376 TInt CLibxml2Tester::TestSetInputFileL(CStifItemParser& aItem)
       
   377 	{
       
   378 	TPtrC pType;
       
   379 	aItem.GetNextString(pType);
       
   380 	
       
   381 	TPtrC pDoc;
       
   382 	aItem.GetNextString(pDoc);
       
   383 	
       
   384 	TPtrC pOut;
       
   385 	aItem.GetNextString(pOut);
       
   386 	
       
   387 	
       
   388 	RFile fileHandle;
       
   389     RFs aRFs;
       
   390     aRFs.Connect();
       
   391     CleanupClosePushL( aRFs );
       
   392 	
       
   393     User::LeaveIfError( fileHandle.Replace( aRFs, pOut, EFileStream | EFileWrite | EFileShareExclusive));
       
   394     CleanupClosePushL( fileHandle );
       
   395 	
       
   396     CTestHandler* testHandle = CTestHandler::NewLC( fileHandle );
       
   397     CXmlEngDeserializer* des = CXmlEngDeserializer::NewL( *testHandle, RetDeserializerType(pType) );
       
   398     CleanupStack::PushL( des );
       
   399 
       
   400    	des->SetInputFileL(pDoc);
       
   401    	des->DeserializeL();
       
   402     	
       
   403 	CleanupStack::PopAndDestroy( 4 );
       
   404 	return KErrNone;	
       
   405 	}
       
   406 
       
   407 // -----------------------------------------------------------------------------
       
   408 // CLibxml2Tester::TestSetInputBufferL
       
   409 // test setting input buffer
       
   410 // (other items were commented in a header).
       
   411 // -----------------------------------------------------------------------------
       
   412 // 
       
   413 TInt CLibxml2Tester::TestSetInputBufferL(CStifItemParser& aItem)
       
   414 	{
       
   415 	TPtrC pType;
       
   416 	aItem.GetNextString(pType);
       
   417 	
       
   418 	TPtrC pDoc;
       
   419 	aItem.GetNextString(pDoc);
       
   420 	
       
   421 	TPtrC pOut;
       
   422 	aItem.GetNextString(pOut);
       
   423 	
       
   424 	HBufC8* buf = ReadFileL(pDoc);
       
   425     CleanupStack::PushL(buf);
       
   426 		
       
   427 	RFile fileHandle;
       
   428     RFs aRFs;
       
   429     aRFs.Connect();
       
   430     CleanupClosePushL( aRFs );
       
   431 	
       
   432     User::LeaveIfError( fileHandle.Replace( aRFs, pOut, EFileStream | EFileWrite | EFileShareExclusive));
       
   433     CleanupClosePushL( fileHandle );
       
   434 	
       
   435     CTestHandler* testHandle = CTestHandler::NewLC( fileHandle );
       
   436     CXmlEngDeserializer* des = CXmlEngDeserializer::NewL( *testHandle, RetDeserializerType(pType) );
       
   437     CleanupStack::PushL( des );
       
   438     
       
   439    	des->SetInputBuffer(buf->Des());
       
   440    	des->DeserializeL();
       
   441 	
       
   442 	CleanupStack::PopAndDestroy( 5 );
       
   443 	return KErrNone;	
       
   444 	}
       
   445 
       
   446 // -----------------------------------------------------------------------------
       
   447 // CLibxml2Tester::TestSetContentHandlerL
       
   448 // test setting content handler
       
   449 // (other items were commented in a header).
       
   450 // -----------------------------------------------------------------------------
       
   451 // 
       
   452 TInt CLibxml2Tester::TestSetContentHandlerL(CStifItemParser& aItem)
       
   453 	{
       
   454 	TPtrC pType;
       
   455 	aItem.GetNextString(pType);
       
   456 	
       
   457 	TPtrC pDoc;
       
   458 	aItem.GetNextString(pDoc);
       
   459 	
       
   460 	TPtrC pOut1;
       
   461 	aItem.GetNextString(pOut1);
       
   462 	
       
   463 	TPtrC pOut2;
       
   464 	aItem.GetNextString(pOut2);
       
   465 	
       
   466 
       
   467 	RFile fileHandle_1;
       
   468 	RFile fileHandle_2;
       
   469 	
       
   470 	// create session 1
       
   471     RFs fs_1;
       
   472     fs_1.Connect();
       
   473     CleanupClosePushL( fs_1 );
       
   474     // create session 2
       
   475 	RFs fs_2;
       
   476     fs_2.Connect();
       
   477     CleanupClosePushL( fs_2 );
       
   478 	
       
   479 	User::LeaveIfError( fileHandle_1.Replace( fs_1, pOut1, EFileStream | EFileWrite | EFileShareExclusive ) );
       
   480 	CleanupClosePushL( fileHandle_1 );
       
   481 	CTestHandler* testHandle_1 = CTestHandler::NewLC( fileHandle_1 );
       
   482 	
       
   483 	User::LeaveIfError( fileHandle_2.Replace( fs_2, pOut2, EFileStream | EFileWrite | EFileShareExclusive ) );
       
   484 	CleanupClosePushL( fileHandle_2 );
       
   485 	CTestHandler* testHandle_2 = CTestHandler::NewLC( fileHandle_2 );
       
   486 	
       
   487 	CXmlEngDeserializer* des = CXmlEngDeserializer::NewL( *testHandle_1, RetDeserializerType(pType) );
       
   488 	CleanupStack::PushL( des );
       
   489 	des->DeserializeL( pDoc );
       
   490 	des->SetContentHandlerL( *testHandle_2 );
       
   491 	des->DeserializeL( fs_2, pDoc );
       
   492 	
       
   493 	CleanupStack::PopAndDestroy( 7 );	
       
   494 	return KErrNone;	
       
   495 	}
       
   496 	
       
   497 // -----------------------------------------------------------------------------
       
   498 // CLibxml2Tester::TestEnableFeatureL
       
   499 // test setter enable feature
       
   500 // (other items were commented in a header).
       
   501 // -----------------------------------------------------------------------------
       
   502 // 
       
   503 TInt CLibxml2Tester::TestEnableFeatureL(CStifItemParser& aItem)
       
   504 	{
       
   505 	TPtrC pType;
       
   506 	aItem.GetNextString(pType);
       
   507 	
       
   508 	TPtrC pDoc;
       
   509 	aItem.GetNextString(pDoc);
       
   510 	
       
   511 	TPtrC pOut1;
       
   512 	aItem.GetNextString(pOut1);
       
   513 	
       
   514 	TPtrC pOut2;
       
   515 	aItem.GetNextString(pOut2);
       
   516 	
       
   517 
       
   518 	RFile fileHandle_1;
       
   519 	RFile fileHandle_2;
       
   520 	
       
   521 	// create session 1
       
   522     RFs fs_1;
       
   523     fs_1.Connect();
       
   524     CleanupClosePushL( fs_1 );
       
   525     // create session 2
       
   526 	RFs fs_2;
       
   527     fs_2.Connect();
       
   528     CleanupClosePushL( fs_2 );
       
   529 	
       
   530 	User::LeaveIfError( fileHandle_1.Replace( fs_1, pOut1, EFileStream | EFileWrite | EFileShareExclusive ) );
       
   531 	CleanupClosePushL( fileHandle_1 );
       
   532 	CTestHandler* testHandle_1 = CTestHandler::NewLC( fileHandle_1 );
       
   533 	
       
   534 	User::LeaveIfError( fileHandle_2.Replace( fs_2, pOut2, EFileStream | EFileWrite | EFileShareExclusive ) );
       
   535 	CleanupClosePushL( fileHandle_2 );
       
   536 	CTestHandler* testHandle_2 = CTestHandler::NewLC( fileHandle_2 );
       
   537 	
       
   538 	CXmlEngDeserializer* des = CXmlEngDeserializer::NewL( *testHandle_1, RetDeserializerType(pType) );
       
   539 	CleanupStack::PushL( des );
       
   540 	des->DeserializeL( pDoc );
       
   541 	des->EnableFeature( EReportNamespaceMapping );
       
   542 	des->SetContentHandlerL( *testHandle_2 );
       
   543 	des->DeserializeL( fs_2, pDoc );
       
   544 	if(!des->IsFeatureEnabled(EReportNamespaceMapping)) User::Leave(KErrGeneral);
       
   545 	
       
   546 	CleanupStack::PopAndDestroy( 7 );	
       
   547 	return KErrNone;
       
   548 	}
       
   549 
       
   550 // -----------------------------------------------------------------------------
       
   551 // CLibxml2Tester::TestDisableFeatureL
       
   552 // test setter disable feature
       
   553 // (other items were commented in a header).
       
   554 // -----------------------------------------------------------------------------
       
   555 // 
       
   556 TInt CLibxml2Tester::TestDisableFeatureL(CStifItemParser& aItem)
       
   557 	{
       
   558 	TPtrC pType;
       
   559 	aItem.GetNextString(pType);
       
   560 	
       
   561 	TPtrC pDoc;
       
   562 	aItem.GetNextString(pDoc);
       
   563 	
       
   564 	TPtrC pOut1;
       
   565 	aItem.GetNextString(pOut1);
       
   566 	
       
   567 	TPtrC pOut2;
       
   568 	aItem.GetNextString(pOut2);
       
   569 	
       
   570 
       
   571 	RFile fileHandle_1;
       
   572 	RFile fileHandle_2;
       
   573 	
       
   574 	// create session 1
       
   575     RFs fs_1;
       
   576     fs_1.Connect();
       
   577     CleanupClosePushL( fs_1 );
       
   578     // create session 2
       
   579 	RFs fs_2;
       
   580     fs_2.Connect();
       
   581     CleanupClosePushL( fs_2 );
       
   582 	
       
   583 	User::LeaveIfError( fileHandle_1.Replace( fs_1, pOut1, EFileStream | EFileWrite | EFileShareExclusive ) );
       
   584 	CleanupClosePushL( fileHandle_1 );
       
   585 	CTestHandler* testHandle_1 = CTestHandler::NewLC( fileHandle_1 );
       
   586 	
       
   587 	User::LeaveIfError( fileHandle_2.Replace( fs_2, pOut2, EFileStream | EFileWrite | EFileShareExclusive ) );
       
   588 	CleanupClosePushL( fileHandle_2 );
       
   589 	CTestHandler* testHandle_2 = CTestHandler::NewLC( fileHandle_2 );
       
   590 	
       
   591 	CXmlEngDeserializer* des = CXmlEngDeserializer::NewL( *testHandle_1, RetDeserializerType(pType) );
       
   592 	CleanupStack::PushL( des );
       
   593 	des->EnableFeature( EReportNamespaceMapping );
       
   594 	des->DisableFeature( EReportNamespaceMapping );
       
   595 	des->DisableFeature( 0x1111); //attempt an invalid feature
       
   596 	if ( des->IsFeatureEnabled( EReportNamespaceMapping ) ) User::Leave(KErrGeneral);
       
   597 	des->DeserializeL( pDoc );
       
   598 	des->EnableFeature( EReportNamespaceMapping );
       
   599 	des->SetContentHandlerL( *testHandle_2 );
       
   600 	des->DisableFeature(EReportNamespaceMapping );
       
   601 	des->DeserializeL( fs_2, pDoc );
       
   602 	if(des->IsFeatureEnabled(EReportNamespaceMapping)) User::Leave(KErrGeneral);
       
   603 	
       
   604 	CleanupStack::PopAndDestroy( 7 );	
       
   605 	return KErrNone;
       
   606 	}
       
   607 	
       
   608 // -----------------------------------------------------------------------------
       
   609 // CLibxml2Tester::TestIsFeatureEnabledL
       
   610 // test is feature enabled
       
   611 // (other items were commented in a header).
       
   612 // -----------------------------------------------------------------------------
       
   613 // 	
       
   614 TInt CLibxml2Tester::TestIsFeatureEnabledL(CStifItemParser& aItem)
       
   615 	{
       
   616 	TPtrC pType;
       
   617 	aItem.GetNextString(pType);
       
   618 	
       
   619 
       
   620 	TPtrC pOut;
       
   621 	aItem.GetNextString(pOut);
       
   622 	
       
   623 	RFile fileHandle;
       
   624 	
       
   625     RFs fs;
       
   626     fs.Connect();
       
   627     CleanupClosePushL( fs );
       
   628     
       
   629 	User::LeaveIfError( fileHandle.Replace( fs, pOut, EFileStream | EFileWrite | EFileShareExclusive ) );
       
   630 	CleanupClosePushL( fileHandle );
       
   631 	CTestHandler* testHandle = CTestHandler::NewLC( fileHandle );
       
   632 	
       
   633 	CXmlEngDeserializer* des = CXmlEngDeserializer::NewL( *testHandle, RetDeserializerType(pType) );
       
   634 	CleanupStack::PushL( des );
       
   635 	
       
   636 	TBuf8<16> features = _L8("0000000000");
       
   637 
       
   638 	if(des->IsFeatureEnabled( EConvertTagsToLowerCase )) features[0] = '1';
       
   639 	if(des->IsFeatureEnabled( EErrorOnUnrecognisedTags )) features[1] = '1';
       
   640 	if(des->IsFeatureEnabled( EReportUnrecognisedTags )) features[2] = '1';
       
   641 	if(des->IsFeatureEnabled( EReportNamespaces )) features[3] = '1';
       
   642 	if(des->IsFeatureEnabled( EReportNamespacePrefixes )) features[4] = '1';
       
   643 	if(des->IsFeatureEnabled( ESendFullContentInOneChunk )) features[5] = '1';
       
   644 	if(des->IsFeatureEnabled( EReportNamespaceMapping )) features[6] = '1';
       
   645 	if(des->IsFeatureEnabled( ERawContent )) features[7] = '1';
       
   646 	if(des->IsFeatureEnabled( EReplaceIntEntityFromExtSubsetByRef )) features[8] = '1';
       
   647 	if(des->IsFeatureEnabled( EXmlVersion_1_1 )) features[9] = '1';
       
   648 	if(des->IsFeatureEnabled( ELastFeature )) features[10] = '1';
       
   649 	
       
   650 	
       
   651 	User::LeaveIfError( fileHandle.Write(features) );
       
   652 	
       
   653 
       
   654 	CleanupStack::PopAndDestroy( 4 );	
       
   655 	return KErrNone;
       
   656 	}
       
   657 	
       
   658 // -----------------------------------------------------------------------------
       
   659 // CLibxml2Tester::TestUseExternalDataL
       
   660 // test deserialize from file, using external data
       
   661 // (other items were commented in a header).
       
   662 // -----------------------------------------------------------------------------
       
   663 // 	
       
   664 TInt CLibxml2Tester::TestUseExternalDataL(CStifItemParser& aItem)
       
   665 	{
       
   666 	TInt err;
       
   667     TPtrC pDeserializerType;
       
   668     aItem.GetNextString( pDeserializerType );
       
   669 	
       
   670     TPtrC pInputFile;
       
   671     aItem.GetNextString( pInputFile );
       
   672 	
       
   673 	TPtrC pBinary;
       
   674 	aItem.GetNextString( pBinary );
       
   675 	
       
   676 	TPtrC pFile;
       
   677 	aItem.GetNextString(pFile);
       
   678 	
       
   679     TPtrC pOutputFile;
       
   680     aItem.GetNextString( pOutputFile );
       
   681     
       
   682     TPtrC pDirtyReturn;
       
   683     aItem.GetNextString( pDirtyReturn );
       
   684     
       
   685     TLex inputNum (pDirtyReturn);
       
   686     TInt dirtyReturn;
       
   687      inputNum.Val(dirtyReturn);	
       
   688     
       
   689     TInt nContainers = 3;
       
   690     RFile fileHandle;
       
   691     RFs aRFs;
       
   692     aRFs.Connect();
       
   693     CleanupClosePushL( aRFs );
       
   694 	
       
   695 	SetupDocumentL();
       
   696 	  
       
   697     HBufC8* binbuf = ReadFileToBufferL(pBinary);
       
   698 	CleanupStack::PushL(binbuf);
       
   699     
       
   700 	
       
   701 	TBufC<100> chunkName(_L("ChunkContainer") );
       
   702     TInt size = 2000;
       
   703     TInt maxSize = 10000;
       
   704     TInt offset = 0;
       
   705     TInt binarySize = CID_2().Length();
       
   706 //    TBool isReadOnly = EFalse;
       
   707     RChunk chunk;
       
   708     chunk.CreateGlobal(chunkName, size, maxSize);
       
   709     CleanupClosePushL(chunk);
       
   710 
       
   711 	
       
   712 	RFile fp;
       
   713 	User::LeaveIfError( fp.Open(aRFs, pFile, EFileRead) );
       
   714 	CleanupClosePushL(fp); 	
       
   715   
       
   716   
       
   717 	
       
   718     TXmlEngBinaryContainer bincont = iDoc.CreateBinaryContainerL(CID_1(), binbuf->Des());
       
   719     TXmlEngChunkContainer chunkcont = iDoc.CreateChunkContainerL(CID_2(), chunk, offset, binarySize);
       
   720 	TXmlEngFileContainer filecont = iDoc.CreateFileContainerL(CID_3(), fp);
       
   721 		
       
   722 	iDoc.DocumentElement().AppendChildL(bincont);
       
   723 	iDoc.DocumentElement().AppendChildL(chunkcont);
       
   724 	iDoc.DocumentElement().AppendChildL(filecont);
       
   725 	
       
   726     User::LeaveIfError( fileHandle.Replace( aRFs, pOutputFile, EFileStream | EFileWrite | EFileShareExclusive));
       
   727     CleanupClosePushL( fileHandle );
       
   728 	
       
   729     CTestHandler* testHandle = CTestHandler::NewLC( fileHandle );
       
   730     RArray<TXmlEngDataContainer> list;
       
   731 	CleanupClosePushL(list);	////
       
   732 	iDoc.GetDataContainerList(list); 
       
   733 	CXmlEngDeserializer* des;
       
   734     if( pDeserializerType.FindF( XOP ) != KErrNotFound )     
       
   735         {
       
   736         des = CXmlEngDeserializer::NewL( *testHandle, EDeserializerXOP );
       
   737         CleanupStack::PushL( des );
       
   738         des->SetInputFileL( pInputFile );
       
   739         des->UseExternalDataL( list );
       
   740         TRAP(err,des->DeserializeL());
       
   741         
       
   742         }
       
   743     else if( pDeserializerType.FindF( INFOSET ) != KErrNotFound )     
       
   744         {
       
   745         des = CXmlEngDeserializer::NewL( *testHandle, EDeserializerXOPInfoset );
       
   746         CleanupStack::PushL( des );
       
   747         des->SetInputFileL( pInputFile );
       
   748         des->UseExternalDataL( list );
       
   749         TRAP(err,des->DeserializeL());
       
   750         }
       
   751     if(list.Count() != nContainers) User::Leave(KErrGeneral);
       
   752 
       
   753     CleanupStack::PopAndDestroy( 8 );
       
   754     if ( err == dirtyReturn ) return KErrNone;		
       
   755     else return err;
       
   756 
       
   757 	}
       
   758 	
       
   759 // -----------------------------------------------------------------------------
       
   760 // CLibxml2Tester::TestExternalDataL
       
   761 // test deserialize from file, drawing external data array
       
   762 // (other items were commented in a header).
       
   763 // -----------------------------------------------------------------------------
       
   764 // 	
       
   765 TInt CLibxml2Tester::TestExternalDataL(CStifItemParser& aItem)
       
   766 	{
       
   767 	TInt err;
       
   768     TPtrC pDeserializerType;
       
   769     aItem.GetNextString( pDeserializerType );
       
   770 	
       
   771     TPtrC pInputFile;
       
   772     aItem.GetNextString( pInputFile );
       
   773 	
       
   774 	TPtrC pBinary;
       
   775 	aItem.GetNextString( pBinary );
       
   776 	
       
   777 	TPtrC pFile;
       
   778 	aItem.GetNextString(pFile);
       
   779 	
       
   780     TPtrC pOutputFile;
       
   781     aItem.GetNextString( pOutputFile );
       
   782     
       
   783     TPtrC pDirtyReturn;
       
   784     aItem.GetNextString( pDirtyReturn );
       
   785     
       
   786     TLex inputNum (pDirtyReturn);
       
   787     TInt dirtyReturn;
       
   788      inputNum.Val(dirtyReturn);	
       
   789     
       
   790     TInt nContainers = 3;
       
   791     RFile fileHandle;
       
   792     RFs aRFs;
       
   793     aRFs.Connect();
       
   794     CleanupClosePushL( aRFs );
       
   795 	
       
   796 	SetupDocumentL();
       
   797 	  
       
   798     HBufC8* binbuf = ReadFileToBufferL(pBinary);
       
   799 	CleanupStack::PushL(binbuf);
       
   800     
       
   801 	
       
   802 	TBufC<100> chunkName(_L("ChunkContainer") );
       
   803     TInt size = 2000;
       
   804     TInt maxSize = 10000;
       
   805     TInt offset = 0;
       
   806     TInt binarySize = CID_2().Length();
       
   807 //    TBool isReadOnly = EFalse;
       
   808     RChunk chunk;
       
   809     chunk.CreateGlobal(chunkName, size, maxSize);
       
   810     CleanupClosePushL(chunk);
       
   811 
       
   812 	
       
   813 	RFile fp;
       
   814 	User::LeaveIfError( fp.Open(aRFs, pFile, EFileRead) );
       
   815 	CleanupClosePushL(fp); 	
       
   816   
       
   817   
       
   818 	
       
   819     TXmlEngBinaryContainer bincont = iDoc.CreateBinaryContainerL(CID_1(), binbuf->Des());
       
   820     TXmlEngChunkContainer chunkcont = iDoc.CreateChunkContainerL(CID_2(), chunk, offset, binarySize);
       
   821 	TXmlEngFileContainer filecont = iDoc.CreateFileContainerL(CID_3(), fp);
       
   822 		
       
   823 	iDoc.DocumentElement().AppendChildL(bincont);
       
   824 	iDoc.DocumentElement().AppendChildL(chunkcont);
       
   825 	iDoc.DocumentElement().AppendChildL(filecont);
       
   826 	
       
   827     User::LeaveIfError( fileHandle.Replace( aRFs, pOutputFile, EFileStream | EFileWrite | EFileShareExclusive));
       
   828     CleanupClosePushL( fileHandle );
       
   829 	
       
   830     CTestHandler* testHandle = CTestHandler::NewLC( fileHandle );
       
   831     RArray<TXmlEngDataContainer> list;
       
   832 	CleanupClosePushL(list);	////
       
   833 	iDoc.GetDataContainerList(list); 
       
   834 	CXmlEngDeserializer* des = NULL;
       
   835     if( pDeserializerType.FindF( XOP ) != KErrNotFound )     
       
   836         {
       
   837         des = CXmlEngDeserializer::NewL( *testHandle, EDeserializerXOP );
       
   838         CleanupStack::PushL( des );
       
   839         des->SetInputFileL( pInputFile );
       
   840         des->UseExternalDataL( list );
       
   841         TRAP(err,des->DeserializeL());
       
   842         
       
   843         }
       
   844     else if( pDeserializerType.FindF( INFOSET ) != KErrNotFound )     
       
   845         {
       
   846         des = CXmlEngDeserializer::NewL( *testHandle, EDeserializerXOPInfoset );
       
   847         CleanupStack::PushL( des );
       
   848         des->SetInputFileL( pInputFile );
       
   849         des->UseExternalDataL( list );
       
   850         TRAP(err,des->DeserializeL());
       
   851         }
       
   852     if(list.Count() != nContainers) User::Leave(KErrGeneral);
       
   853 	RArray<TXmlEngDataContainer>* fromDeserializer = des->ExternalData();
       
   854 	
       
   855 	for(TInt i = 0; i < nContainers; i++ )
       
   856 		{
       
   857 		if (fromDeserializer->operator[](i).NodeType() != list.operator[](i).NodeType() ) User::Leave( KErrGeneral );
       
   858 		if (fromDeserializer->operator[](i).Size() != list.operator[](i).Size() ) User::Leave( KErrGeneral );
       
   859 		}
       
   860     CleanupStack::PopAndDestroy( 8 );
       
   861     if ( err == dirtyReturn ) return KErrNone;		
       
   862     else return err;
       
   863 
       
   864 	}	
       
   865 
       
   866 // -----------------------------------------------------------------------------
       
   867 // CLibxml2Tester::TestDesFileConvinienceL
       
   868 // test convinience function, before use set input file
       
   869 // (other items were commented in a header).
       
   870 // -----------------------------------------------------------------------------
       
   871 // 	
       
   872 TInt CLibxml2Tester::TestDesFileConvinienceL(CStifItemParser& aItem)
       
   873 	{
       
   874 	TPtrC pType;
       
   875 	aItem.GetNextString(pType);
       
   876 	
       
   877 	TPtrC pDoc1;
       
   878 	aItem.GetNextString(pDoc1);
       
   879 	
       
   880 	TPtrC pDoc2;
       
   881 	aItem.GetNextString(pDoc2);
       
   882 		
       
   883 	TPtrC pOut1;
       
   884 	aItem.GetNextString(pOut1);
       
   885 	
       
   886 	TPtrC pOut2;
       
   887 	aItem.GetNextString(pOut2);
       
   888 	
       
   889 	RFile fileHandle_1;
       
   890 	RFile fileHandle_2;
       
   891 	
       
   892 	// create session 1
       
   893     RFs fs_1;
       
   894     fs_1.Connect();
       
   895     CleanupClosePushL( fs_1 );
       
   896     // create session 2
       
   897 	RFs fs_2;
       
   898     fs_2.Connect();
       
   899     CleanupClosePushL( fs_2 );
       
   900 	
       
   901 	User::LeaveIfError( fileHandle_1.Replace( fs_1, pOut1, EFileStream | EFileWrite | EFileShareExclusive ) );
       
   902 	CleanupClosePushL( fileHandle_1 );
       
   903 	CTestHandler* testHandle_1 = CTestHandler::NewLC( fileHandle_1 );
       
   904 	
       
   905 	User::LeaveIfError( fileHandle_2.Replace( fs_2, pOut2, EFileStream | EFileWrite | EFileShareExclusive ) );
       
   906 	CleanupClosePushL( fileHandle_2 );
       
   907 	CTestHandler* testHandle_2 = CTestHandler::NewLC( fileHandle_2 );
       
   908 	
       
   909 	CXmlEngDeserializer* des = CXmlEngDeserializer::NewL( *testHandle_1, RetDeserializerType(pType) );
       
   910 	CleanupStack::PushL( des );
       
   911 	
       
   912    	des->SetInputFileL(pDoc2);
       
   913    	des->DeserializeL(pDoc1);
       
   914    	des->SetContentHandlerL( *testHandle_2 );
       
   915    	des->DeserializeL();   	
       
   916    	    	
       
   917 	CleanupStack::PopAndDestroy( 7 );
       
   918 	return KErrNone;	
       
   919 	}
       
   920 
       
   921 // -----------------------------------------------------------------------------
       
   922 // CLibxml2Tester::TestDesBufferConvinienceL
       
   923 // test convinience function, before use set input buffer
       
   924 // (other items were commented in a header).
       
   925 // -----------------------------------------------------------------------------
       
   926 // 	
       
   927 TInt CLibxml2Tester::TestDesBufferConvinienceL(CStifItemParser& aItem)
       
   928 	{
       
   929 	TPtrC pType;
       
   930 	aItem.GetNextString(pType);
       
   931 	
       
   932 	TPtrC pDoc1;
       
   933 	aItem.GetNextString(pDoc1);
       
   934 	
       
   935 	TPtrC pDoc2;
       
   936 	aItem.GetNextString(pDoc2);
       
   937 		
       
   938 	TPtrC pOut1;
       
   939 	aItem.GetNextString(pOut1);
       
   940 	
       
   941 	TPtrC pOut2;
       
   942 	aItem.GetNextString(pOut2);
       
   943 	
       
   944 	HBufC8* buffer1 = ReadFileL(pDoc1);
       
   945     CleanupStack::PushL(buffer1);
       
   946     
       
   947     HBufC8* buffer2 = ReadFileL(pDoc2);
       
   948     CleanupStack::PushL(buffer2);
       
   949 	
       
   950 	RFile fileHandle_1;
       
   951 	RFile fileHandle_2;
       
   952 	
       
   953 	// create session 1
       
   954     RFs fs_1;
       
   955     fs_1.Connect();
       
   956     CleanupClosePushL( fs_1 );
       
   957     // create session 2
       
   958 	RFs fs_2;
       
   959     fs_2.Connect();
       
   960     CleanupClosePushL( fs_2 );
       
   961 	
       
   962 	User::LeaveIfError( fileHandle_1.Replace( fs_1, pOut1, EFileStream | EFileWrite | EFileShareExclusive ) );
       
   963 	CleanupClosePushL( fileHandle_1 );
       
   964 	CTestHandler* testHandle_1 = CTestHandler::NewLC( fileHandle_1 );
       
   965 	
       
   966 	User::LeaveIfError( fileHandle_2.Replace( fs_2, pOut2, EFileStream | EFileWrite | EFileShareExclusive ) );
       
   967 	CleanupClosePushL( fileHandle_2 );
       
   968 	CTestHandler* testHandle_2 = CTestHandler::NewLC( fileHandle_2 );
       
   969 	
       
   970 	CXmlEngDeserializer* des = CXmlEngDeserializer::NewL( *testHandle_1, RetDeserializerType(pType) );
       
   971 	CleanupStack::PushL( des );
       
   972 	
       
   973    	des->SetInputFileL(pDoc2);
       
   974    	des->SetInputBuffer(buffer2->Des());
       
   975    	des->DeserializeL(buffer1->Des());
       
   976    	des->SetContentHandlerL( *testHandle_2 );
       
   977    	des->DeserializeL();   	
       
   978    	    	
       
   979 	CleanupStack::PopAndDestroy( 9 );
       
   980 	return KErrNone;	
       
   981 	}
       
   982 
       
   983 // -----------------------------------------------------------------------------
       
   984 // CLibxml2Tester::TestDeserializerBufferL
       
   985 // loop test, deserialize from buffer, one deserializer instance
       
   986 // (other items were commented in a header).
       
   987 // -----------------------------------------------------------------------------
       
   988 // 		
       
   989 TInt CLibxml2Tester::TestDeserializerBufferL(CStifItemParser& aItem)
       
   990 	{
       
   991 	TPtrC pType;
       
   992 	aItem.GetNextString(pType);
       
   993 	
       
   994 	TPtrC pDoc;
       
   995 	aItem.GetNextString(pDoc);
       
   996 	
       
   997 	TPtrC pOut;
       
   998 	aItem.GetNextString(pOut);
       
   999 	
       
  1000 	
       
  1001 	HBufC8* buffer = ReadFileL(pDoc);
       
  1002     CleanupStack::PushL(buffer);
       
  1003 	
       
  1004 	RFile fileHandle;
       
  1005     RFs aRFs;
       
  1006     aRFs.Connect();
       
  1007     CleanupClosePushL( aRFs );
       
  1008 	
       
  1009     User::LeaveIfError( fileHandle.Replace( aRFs, pOut, EFileStream | EFileWrite | EFileShareExclusive));
       
  1010     CleanupClosePushL( fileHandle );
       
  1011 	
       
  1012     CTestHandler* testHandle = CTestHandler::NewLC( fileHandle );
       
  1013     CXmlEngDeserializer* des = CXmlEngDeserializer::NewL( *testHandle, RetDeserializerType(pType) );
       
  1014     CleanupStack::PushL( des );
       
  1015 
       
  1016 	des->SetInputBuffer(buffer->Des());
       
  1017 	    
       
  1018     for (TInt i = 0; i < 20; i++ )
       
  1019     	{
       
  1020     	
       
  1021     	des->DeserializeL();
       
  1022     	des->DeserializeL();
       
  1023     	des->EnableFeature(	EReportNamespaces );
       
  1024     	des->DeserializeL();
       
  1025     	if( des->IsFeatureEnabled( EReportNamespaces )) 
       
  1026     		{
       
  1027     	   	des->DisableFeature( EReportNamespaces );
       
  1028     		}
       
  1029     		else User::Leave( KErrGeneral );
       
  1030     	des->EnableFeature( EReportNamespaceMapping );
       
  1031     	des->EnableFeature( EReportUnrecognisedTags );
       
  1032     	}
       
  1033 	
       
  1034 	
       
  1035 	CleanupStack::PopAndDestroy( 5 );
       
  1036 	return KErrNone;	
       
  1037 	}
       
  1038 
       
  1039 // -----------------------------------------------------------------------------
       
  1040 // CLibxml2Tester::TestSetParsingOptions1L
       
  1041 // test setting parsing options
       
  1042 // (other items were commented in a header).
       
  1043 // -----------------------------------------------------------------------------
       
  1044 // 		
       
  1045 TInt CLibxml2Tester::TestSetParsingOptions1L(CStifItemParser& aItem)
       
  1046 	{
       
  1047 	TPtrC pType;
       
  1048 	aItem.GetNextString(pType);
       
  1049 	
       
  1050 	TPtrC pDoc;
       
  1051 	aItem.GetNextString(pDoc);
       
  1052 	
       
  1053 	TPtrC pOut;
       
  1054 	aItem.GetNextString(pOut);
       
  1055 	
       
  1056 	HBufC8* buf = ReadFileL(pDoc);
       
  1057     CleanupStack::PushL(buf);
       
  1058 	
       
  1059 	RFile fileHandle;
       
  1060     RFs aRFs;
       
  1061     aRFs.Connect();
       
  1062     CleanupClosePushL( aRFs );
       
  1063 	
       
  1064     User::LeaveIfError( fileHandle.Replace( aRFs, pOut, EFileStream | EFileWrite | EFileShareExclusive));
       
  1065     CleanupClosePushL( fileHandle );
       
  1066 	
       
  1067     CTestHandler* testHandle = CTestHandler::NewLC( fileHandle );
       
  1068     CXmlEngDeserializer* des = CXmlEngDeserializer::NewL( *testHandle, RetDeserializerType(pType) );
       
  1069     CleanupStack::PushL( des );
       
  1070     TXmlEngParsingOptions options(TXmlEngParsingOptions::KOptionEncodeToBase64);
       
  1071     
       
  1072 	des->SetParsingOptions( options );
       
  1073 	des->SetInputBuffer(buf->Des());
       
  1074    	des->DeserializeL();
       
  1075     	
       
  1076 	CleanupStack::PopAndDestroy( 5 );
       
  1077 	return KErrNone;	
       
  1078 	
       
  1079 	}
       
  1080 	
       
  1081 // End of file