landmarks/locationlandmarks/tsrc/LandmarkTestModule/src/FT_CPosTp47.cpp
branchRCL_3
changeset 44 2b4ea9893b66
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/landmarks/locationlandmarks/tsrc/LandmarkTestModule/src/FT_CPosTp47.cpp	Tue Aug 31 15:37:04 2010 +0300
@@ -0,0 +1,1876 @@
+/*
+* Copyright (c) 2005 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: 
+*   ?description_line
+*
+*/
+
+//  INCLUDES
+#include "FT_CPosTp47.h"
+#include <EPos_CPosLandmarkDatabase.h>
+#include <EPos_CPosLandmarkParser.h>
+#include <EPos_CPosLandmarkEncoder.h>
+#include <LbsPosition.h>
+#include <e32math.h>
+#include <bautils.h>
+#include <utf.h>
+#include <xml/xmlparsererrors.h>
+
+// CONSTANTS
+_LIT(KFileName, "c:\\documents\\Tp47Data.xml");
+_LIT(KFileTrace, "c:\\documents\\LandmarksTP47Trace.txt");
+
+// See \epoc32\include\xml\XmlParserErrors.h for error codes
+
+
+_LIT(KCorrectFile, "c:\\system\\test\\TestData\\CorrectFileFor_LandmarksTP47Trace.txt");
+
+_LIT(KMimeWithNameAndTimeStampFile, "c:\\system\\test\\TestData\\Tp47Data_With_MIME_Name.xml");
+_LIT(KErronousXMLFile, "c:\\system\\test\\TestData\\Tp47ErrounousXMLData.xml");
+
+_LIT(KErronousXMLFileDataMissing1, "c:\\system\\test\\TestData\\Tp47ErrounousXMLDataMissingFields1.xml");
+_LIT(KErronousXMLFileDataMissing2, "c:\\system\\test\\TestData\\Tp47ErrounousXMLDataMissingFields2.xml");
+_LIT(KErronousXMLFileDataMissing3, "c:\\system\\test\\TestData\\Tp47ErrounousXMLDataMissingFields3.xml");
+
+_LIT(KErronousXMLFileWrongOrder1, "c:\\system\\test\\TestData\\Tp47ErrounousXMLDataWrongOrder1.xml");
+_LIT(KErronousXMLFileWrongOrder2, "c:\\system\\test\\TestData\\Tp47ErrounousXMLDataWrongOrder2.xml");
+_LIT(KErronousXMLFileWrongOrder3, "c:\\system\\test\\TestData\\Tp47ErrounousXMLDataWrongOrder3.xml");
+
+_LIT(KErronousXMLFileRepeatedTag, "c:\\system\\test\\TestData\\Tp47ErronousXMLDataRepeatedTag.xml");
+_LIT(KErronousXMLFileUnclosedTag1, "c:\\system\\test\\TestData\\Tp47ErronousXMLDataUnclosedTag1.xml");
+//_LIT(KErronousXMLFileUnclosedTag2, "c:\\system\\test\\TestData\\Tp47ErronousXMLDataUnclosedTag2.xml");
+
+_LIT(KUnknownTags, "c:\\system\\test\\TestData\\Tp47UnknownTags.xml");
+_LIT(KUnknownTrees, "c:\\system\\test\\TestData\\Tp47UnknownTrees.xml");
+
+_LIT(KNoEndTag1, "c:\\system\\test\\TestData\\Tp47ErrounousXMLNoEndTag1.xml");
+_LIT(KNoEndTag2, "c:\\system\\test\\TestData\\Tp47ErrounousXMLNoEndTag2.xml");
+
+_LIT(KNoXMLFile1, "c:\\system\\test\\TestData\\Tp47ErronousFileNoXML1.xml");
+_LIT(KNoXMLFile2, "c:\\system\\test\\TestData\\Tp47ErronousFileNoXML2.xml");
+
+_LIT(KTestXMLInput1, "c:\\system\\test\\TestData\\Tp47XMLDataTestInput1.xml");
+
+_LIT(KXMLFileWithLongCategoryName, "c:\\system\\test\\TestData\\Tp47XMLWithLongCategoryName.xml");
+_LIT(KXMLFileWithLongLandmarkName, "c:\\system\\test\\TestData\\Tp47XMLWithLongName.xml");
+_LIT(KXMLFileWithLongLatitudeField, "c:\\system\\test\\TestData\\Tp47XMLWithLongLatitudeField.xml");
+
+_LIT(KXMLFileWithEmptyCollection, "c:\\system\\test\\TestData\\Tp47ErronousXMLFileEmptyCollection.xml");
+
+_LIT(KXMLFileWithXMLTagAsDataField1, "c:\\system\\test\\TestData\\Tp47UsingXMLTagAsDataField1.xml");
+_LIT(KXMLFileWithXMLTagAsDataField2, "c:\\system\\test\\TestData\\Tp47UsingXMLTagAsDataField2.xml");
+_LIT(KXMLFileWithXMLTagAsDataField3, "c:\\system\\test\\TestData\\Tp47UsingXMLTagAsDataField3.xml");
+
+_LIT(KErronousXMLFileTagInTag, "c:\\system\\test\\TestData\\Tp47ErronousXMLDataTagInTag1.xml");
+//_LIT(KErronousXMLFileMissingLMPrefix, "c:\\system\\test\\TestData\\Tp47ErronousXMLDataMissingLMPrefix.xml");
+
+_LIT(KXMLFileUTF8, "c:\\system\\test\\TestData\\Tp47DataUTF8.xml");
+_LIT(KXMLFileUTF16, "c:\\system\\test\\TestData\\Tp47DataUTF16.xml");
+
+_LIT(KXML_UTF_16_BE, "c:\\system\\test\\TestData\\TP47_UTF-16-bigEndian.xml");
+_LIT(KXML_UTF_16_LE, "c:\\system\\test\\TestData\\TP47_UTF-16-littleEndian.xml");
+_LIT(KXML_UTF_8, "c:\\system\\test\\TestData\\TP47_UTF-8.xml");
+_LIT(KXML_UTF_CHINESE, "c:\\system\\test\\TestData\\TP47_UTF-Chinese.xml");
+
+_LIT(KXMLFileWithEmptyMedialink, "c:\\system\\test\\TestData\\Tp47EmptyMediaLink.xml");
+_LIT(KXMLFileWithEmptyCoordinates, "c:\\system\\test\\TestData\\Tp47EmptyCoordinates.xml");
+_LIT(KXMLFileWithEmptyAdresseInfo, "c:\\system\\test\\TestData\\Tp47EmptyAdresseInfo.xml");
+
+_LIT(KXMLFileWithErronousTextInTag1, "c:\\system\\test\\TestData\\Tp47ErronousTextInTag1.xml");
+_LIT(KXMLFileWithErronousTextInTag2, "c:\\system\\test\\TestData\\Tp47ErronousTextInTag2.xml");
+_LIT(KXMLFileWithErronousTextInTag3, "c:\\system\\test\\TestData\\Tp47ErronousTextInTag3.xml");
+_LIT(KXMLFileWithErronousTextInTag4, "c:\\system\\test\\TestData\\Tp47ErronousTextInTag4.xml");
+_LIT(KXMLFileWithErronousTextInTag5, "c:\\system\\test\\TestData\\Tp47ErronousTextInTag5.xml");
+_LIT(KXMLFileWithErronousTextInTag6, "c:\\system\\test\\TestData\\Tp47ErronousTextInTag6.xml");
+
+//KML test files
+_LIT(KKMLFile, "c:\\system\\test\\TestData\\Tp47KML.kml");
+_LIT(KKMLFile1, "c:\\system\\test\\TestData\\Tp47KMLfile1.kml");
+_LIT(KKMLFile2, "c:\\system\\test\\TestData\\Tp47KMLfile2.kml");
+_LIT(KKMLFile3, "c:\\system\\test\\TestData\\Tp47KMLfile3.kml");
+
+_LIT(KKMLLongName, "c:\\system\\test\\TestData\\Tp47KMLlongName.kml");
+_LIT(KKMLNameCaps, "c:\\system\\test\\TestData\\Tp47KMLNameCaps.kml");
+_LIT(KKMLErroneousNameTag, "c:\\system\\test\\TestData\\Tp47KMLErroneousNameTag.kml");
+_LIT(KKMLErroneousNameTagPosition1, "c:\\system\\test\\TestData\\Tp47KMLErroneousNameTagPosition1.kml");
+_LIT(KKMLErroneousNameTagPosition2, "c:\\system\\test\\TestData\\Tp47KMLErroneousNameTagPosition2.kml");
+_LIT(KKMLEmptyName, "c:\\system\\test\\TestData\\Tp47KMLEmptyName.kml");
+_LIT(KKMLMissingNameTag1, "c:\\system\\test\\TestData\\Tp47KMLMissingNameTag1.kml");
+_LIT(KKMLMissingNameTag2, "c:\\system\\test\\TestData\\Tp47KMLMissingNameTag2.kml");
+_LIT(KKMLNameWithSpecialCharacters1, "c:\\system\\test\\TestData\\Tp47KMLNameWithSpecialCharacters1.kml");
+_LIT(KKMLNameWithSpecialCharacters2, "c:\\system\\test\\TestData\\Tp47KMLNameWithSpecialCharacters2.kml");
+
+_LIT(KKMLEmptyPhoneNumber, "c:\\system\\test\\TestData\\Tp47KMLEmptyPhoneNumber.kml");
+_LIT(KKMLErroneousPhoneNumberTag, "c:\\system\\test\\TestData\\Tp47KMLErroneousPhoneNumberTag.kml");
+_LIT(KKMLErroneousPhoneNumberTagPosition, "c:\\system\\test\\TestData\\Tp47KMLErroneousPhoneNumberTagPosition.kml");
+_LIT(KKMLLongPhoneNumer, "c:\\system\\test\\TestData\\Tp47KMLLongPhoneNumer.kml");
+_LIT(KKMLMissingPhoneTag1, "c:\\system\\test\\TestData\\Tp47KMLMissingPhoneTag1.kml");
+_LIT(KKMLMissingPhoneTag2, "c:\\system\\test\\TestData\\Tp47KMLMissingPhoneTag2.kml");
+_LIT(KKMLPhoneNumberCaps, "c:\\system\\test\\TestData\\Tp47KMLPhoneNumberCaps.kml");
+_LIT(KKMLPhoneNumberWithText, "c:\\system\\test\\TestData\\Tp47KMLPhoneNumberWithText.kml");
+_LIT(KKMLPhoneNumberWithSpecialCharacters1, "c:\\system\\test\\TestData\\Tp47KMLPhoneNumberWithSpecialCharacters1.kml");
+_LIT(KKMLPhoneNumberWithSpecialCharacters2, "c:\\system\\test\\TestData\\Tp47KMLPhoneNumberWithSpecialCharacters2.kml");
+
+_LIT(KKMLEmptyPoint, "c:\\system\\test\\TestData\\Tp47KMLEmptyPoint.kml");
+_LIT(KKMLErroneousPointTag, "c:\\system\\test\\TestData\\Tp47KMLErroneousPointTag.kml");
+_LIT(KKMLErroneousPointTagPosition, "c:\\system\\test\\TestData\\Tp47KMLErroneousPointTagPosition.kml");
+_LIT(KKMLMissingPointTag1, "c:\\system\\test\\TestData\\Tp47KMLMissingPointTag1.kml");
+_LIT(KKMLMissingPointTag2, "c:\\system\\test\\TestData\\Tp47KMLMissingPointTag2.kml");
+_LIT(KKMLPointCaps, "c:\\system\\test\\TestData\\Tp47KMLPointCaps.kml");
+_LIT(KKMLPointTag1, "c:\\system\\test\\TestData\\Tp47KMLPointTag1.kml");
+_LIT(KKMLPointTag2, "c:\\system\\test\\TestData\\Tp47KMLPointTag2.kml");
+_LIT(KKMLPointTag3, "c:\\system\\test\\TestData\\Tp47KMLPointTag3.kml");
+
+_LIT(KKMLEmptyDescription, "c:\\system\\test\\TestData\\Tp47KMLEmptyDescription.kml");
+_LIT(KKMLDescriptionWithSpecialCharacters1, "c:\\system\\test\\TestData\\Tp47KMLDescriptionWithSpecialCharacters1.kml");
+_LIT(KKMLDescriptionWithSpecialCharacters2, "c:\\system\\test\\TestData\\Tp47KMLDescriptionWithSpecialCharacters2.kml");
+_LIT(KKMLDescriptionCaps, "c:\\system\\test\\TestData\\Tp47KMLDescriptionCaps.kml");
+_LIT(KKMLLongDescription, "c:\\system\\test\\TestData\\Tp47KMLLongDescription.kml");
+_LIT(KKMLErroneousDescriptionTag, "c:\\system\\test\\TestData\\Tp47KMLErroneousDescriptionTag.kml");
+_LIT(KKMLErroneousDescriptionTagposition, "c:\\system\\test\\TestData\\Tp47KMLErroneousDescriptionTagposition.kml");
+_LIT(KKMLMissingDescriptionTag1, "c:\\system\\test\\TestData\\Tp47KMLMissingDescriptionTag1.kml");
+_LIT(KKMLMissingDescriptionTag2, "c:\\system\\test\\TestData\\Tp47KMLMissingDescriptionTag2.kml");
+_LIT(KKMLDescriptionWithCDATA, "c:\\system\\test\\TestData\\Tp47KMLDescriptionWithCDATA.kml");
+
+_LIT(KKMLErroneousFolderTag, "c:\\system\\test\\TestData\\Tp47KMLErroneousFolderTag.kml");
+_LIT(KKMLFolderCaps, "c:\\system\\test\\TestData\\Tp47KMLFolderCaps.kml");
+_LIT(KKMLMissingFolderTag1, "c:\\system\\test\\TestData\\Tp47KMLMissingFolderTag1.kml");
+_LIT(KKMLMissingFolderTag2, "c:\\system\\test\\TestData\\Tp47KMLMissingFolderTag2.kml");
+_LIT(KKMLEmptyFolderName, "c:\\system\\test\\TestData\\Tp47KMLEmptyFolderName.kml");
+_LIT(KKMLLongFolderName, "c:\\system\\test\\TestData\\Tp47KMLLongFolderName.kml");
+_LIT(KKMLFolderNameWithSpecialCharacters1, "c:\\system\\test\\TestData\\Tp47KMLFolderNameWithSpecialCharacters1.kml");
+_LIT(KKMLFolderNameWithSpecialCharacters2, "c:\\system\\test\\TestData\\Tp47KMLFolderNameWithSpecialCharacters2.kml");
+
+_LIT(KKMLDocumentNameWithSpecialCharacters1, "c:\\system\\test\\TestData\\Tp47KMLDocumentNameWithSpecialCharacters1.kml");
+_LIT(KKMLDocumentNameWithSpecialCharacters2, "c:\\system\\test\\TestData\\Tp47KMLDocumentNameWithSpecialCharacters2.kml");
+_LIT(KKMLEmptyDocumentName, "c:\\system\\test\\TestData\\Tp47KMLEmptyDocumentName.kml");
+_LIT(KKMLLongDocumentName, "c:\\system\\test\\TestData\\Tp47KMLLongDocumentName.kml");
+_LIT(KKMLDocumentCaps, "c:\\system\\test\\TestData\\Tp47KMLDocumentCaps.kml");
+_LIT(KKMLErroneousDocumentTag, "c:\\system\\test\\TestData\\Tp47KMLErroneousDocumentTag.kml");
+_LIT(KKMLMissingDocumentTag1, "c:\\system\\test\\TestData\\Tp47KMLMissingDocumentTag1.kml");
+_LIT(KKMLMissingDocumentTag2, "c:\\system\\test\\TestData\\Tp47KMLMissingDocumentTag2.kml");
+
+_LIT(KKMLAddressCaps, "c:\\system\\test\\TestData\\Tp47KMLAddressCaps.kml");
+_LIT(KKMLAddressWithSpecialCharacters1, "c:\\system\\test\\TestData\\Tp47KMLAddressWithSpecialCharacters1.kml");
+_LIT(KKMLAddressWithSpecialCharacters2, "c:\\system\\test\\TestData\\Tp47KMLAddressWithSpecialCharacters2.kml");
+_LIT(KKMLEmptyAddress1, "c:\\system\\test\\TestData\\Tp47KMLEmptyAddress1.kml");
+_LIT(KKMLEmptyAddress2, "c:\\system\\test\\TestData\\Tp47KMLEmptyAddress2.kml");
+_LIT(KKMLLongAddress1, "c:\\system\\test\\TestData\\Tp47KMLLongAddress1.kml");
+_LIT(KKMLLongAddress2, "c:\\system\\test\\TestData\\Tp47KMLLongAddress2.kml");
+_LIT(KKMLLongAddress3, "c:\\system\\test\\TestData\\Tp47KMLLongAddress3.kml");
+_LIT(KKMLErroneousAddressTag, "c:\\system\\test\\TestData\\Tp47KMLErroneousAddressTag.kml");
+_LIT(KKMLErroneousAddressTagPosition, "c:\\system\\test\\TestData\\Tp47KMLErroneousAddressTagPosition.kml");
+_LIT(KKMLMissingAddressTag1, "c:\\system\\test\\TestData\\Tp47KMLMissingAddressTag1.kml");
+_LIT(KKMLMissingAddressTag2, "c:\\system\\test\\TestData\\Tp47KMLMissingAddressTag2.kml");
+
+_LIT(KKMLCoordinateCaps, "c:\\system\\test\\TestData\\Tp47KMLCoordinateCaps.kml");
+_LIT(KKMLMoreCoordinates, "c:\\system\\test\\TestData\\Tp47KMLMoreCoordinates.kml");
+_LIT(KKMLErroneousCoordinateTag, "c:\\system\\test\\TestData\\Tp47KMLErroneousCoordinateTag.kml");
+_LIT(KKMLErroneousCoordinateTagPosition, "c:\\system\\test\\TestData\\Tp47KMLErroneousCoordinateTagPosition.kml");
+_LIT(KKMLCoordinates1, "c:\\system\\test\\TestData\\Tp47KMLCoordinates1.kml");
+_LIT(KKMLCoordinates2, "c:\\system\\test\\TestData\\Tp47KMLCoordinates2.kml");
+_LIT(KKMLCoordinates3, "c:\\system\\test\\TestData\\Tp47KMLCoordinates3.kml");
+_LIT(KKMLCoordinates4, "c:\\system\\test\\TestData\\Tp47KMLCoordinates4.kml");
+_LIT(KKMLCoordinates5, "c:\\system\\test\\TestData\\Tp47KMLCoordinates5.kml");
+_LIT(KKMLCoordinates6, "c:\\system\\test\\TestData\\Tp47KMLCoordinates6.kml");
+_LIT(KKMLLongCoordinates1, "c:\\system\\test\\TestData\\Tp47KMLLongCoordinates1.kml");
+_LIT(KKMLLongCoordinates2, "c:\\system\\test\\TestData\\Tp47KMLLongCoordinates2.kml");
+_LIT(KKMLMissingCoordinateTag1, "c:\\system\\test\\TestData\\Tp47KMLMissingCoordinateTag1.kml");
+_LIT(KKMLMissingCoordinateTag2, "c:\\system\\test\\TestData\\Tp47KMLMissingCoordinateTag2.kml");
+_LIT(KKMLEmptyCoordinates1, "c:\\system\\test\\TestData\\Tp47KMLEmptyCoordinates1.kml");
+_LIT(KKMLEmptyCoordinates2, "c:\\system\\test\\TestData\\Tp47KMLEmptyCoordinates2.kml");
+_LIT(KKMLEmptyCoordinates3, "c:\\system\\test\\TestData\\Tp47KMLEmptyCoordinates3.kml");
+_LIT(KKMLEmptyCoordinates4, "c:\\system\\test\\TestData\\Tp47KMLEmptyCoordinates4.kml");
+_LIT(KKMLEmptyCoordinates5, "c:\\system\\test\\TestData\\Tp47KMLEmptyCoordinates5.kml");
+_LIT(KKMLEmptyCoordinates6, "c:\\system\\test\\TestData\\Tp47KMLEmptyCoordinates6.kml");
+_LIT(KKMLEmptyCoordinates7, "c:\\system\\test\\TestData\\Tp47KMLEmptyCoordinates7.kml");
+_LIT(KKMLErroneousCoordinates1, "c:\\system\\test\\TestData\\Tp47KMLErroneousCoordinates1.kml");
+_LIT(KKMLErroneousCoordinates2, "c:\\system\\test\\TestData\\Tp47KMLErroneousCoordinates2.kml");
+_LIT(KKMLErroneousCoordinates3, "c:\\system\\test\\TestData\\Tp47KMLErroneousCoordinates3.kml");
+_LIT(KKMLErroneousCoordinates4, "c:\\system\\test\\TestData\\Tp47KMLErroneousCoordinates4.kml");
+_LIT(KKMLErroneousCoordinates5, "c:\\system\\test\\TestData\\Tp47KMLErroneousCoordinates5.kml");
+_LIT(KKMLNegativeCoordinates, "c:\\system\\test\\TestData\\Tp47KMLNegativeCoordinates.kml");
+
+_LIT(KKMLErroneousTextWithinPlacemark, "c:\\system\\test\\TestData\\Tp47KMLErroneousTextWithinPlacemark.kml");
+_LIT(KKMLEmptyfile1, "c:\\system\\test\\TestData\\Tp47KMLEmptyfile1.kml");
+_LIT(KKMLEmptyfile2, "c:\\system\\test\\TestData\\Tp47KMLEmptyfile2.kml");
+_LIT(KKMLInvalidfile, "c:\\system\\test\\TestData\\Tp47KMLInvalidfile.kml");
+
+_LIT(KKMLPlacemarkCaps, "c:\\system\\test\\TestData\\Tp47KMLPlacemarkCaps.kml");
+_LIT(KKMLErroneousPlacemarkTag, "c:\\system\\test\\TestData\\Tp47KMLErroneousPlacemarkTag.kml");
+_LIT(KKMLMissingPlacemarkTag1, "c:\\system\\test\\TestData\\Tp47KMLMissingPlacemarkTag1.kml");
+_LIT(KKMLMissingPlacemarkTag2, "c:\\system\\test\\TestData\\Tp47KMLMissingPlacemarkTag2.kml");
+_LIT(KKMLEmptyPlacemarkTag, "c:\\system\\test\\TestData\\Tp47KMLEmptyPlacemarkTag.kml");
+
+_LIT(KKMLGandhiMuseum, "c:\\system\\test\\TestData\\Tp47KMLGandhi Museum.kml");
+_LIT(KKMLIndusHeritageCentreIndia, "c:\\system\\test\\TestData\\Tp47KMLIndus Heritage Centre, India.kml");
+_LIT(KKMLHiltonHotels, "c:\\system\\test\\TestData\\Tp47KMLhilton hotels near new york (1 - 10).kml");
+
+_LIT(KKMLFile4, "c:\\system\\test\\TestData\\Tp47KMLfile4.kml");
+_LIT(KKMLFile5, "c:\\system\\test\\TestData\\Tp47KMLfile5.kml");
+_LIT(KKMLFile6, "c:\\system\\test\\TestData\\Tp47KMLfile6.kml");
+_LIT(KKMLFile7, "c:\\system\\test\\TestData\\Tp47KMLfile7.kml");
+_LIT(KKMLFile8, "c:\\system\\test\\TestData\\Tp47KMLfile8.kml");
+_LIT(KKMLFile9, "c:\\system\\test\\TestData\\Tp47KMLfile9.kml");
+
+
+
+
+
+
+
+// Maxmimum size for each line in trace file
+const TInt KBufSize = 5000;
+
+// ================= MEMBER FUNCTIONS =======================
+// ---------------------------------------------------------
+// CPosTp47::CloseTest
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CPosTp47::CloseTest()
+    {
+    iLog->Log(_L("CloseTest"));
+
+    delete iEncoderBuffer;
+    iEncoderBuffer = NULL;
+
+    iLandmarks.ResetAndDestroy();
+    iLandmarks.Close();
+
+    delete iDatabase;
+    iDatabase=NULL;
+
+    delete iLandmarkEncoder;
+    iLandmarkEncoder = NULL;
+
+    delete iLandmarkParser;
+    iLandmarkParser = NULL;
+
+    delete iOperation;
+    iOperation = NULL;
+
+    TRAPD(err, RemoveGlobalCategoriesL());
+    if (err != KErrNone && err != KErrNotFound)
+        {
+        HBufC* buf = HBufC::NewLC( 128 );
+        TPtr buffer = buf->Des();
+            
+        buffer.Format(_L("RemoveGlobalCategoriesL leaved with %d"), err);
+        iLog->Log( buffer );
+        
+        CleanupStack::PopAndDestroy( buf );
+        }
+
+    iLog->Log(_L("CloseTest Done"));
+    }
+
+// ---------------------------------------------------------
+// CPosTp47::StartL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CPosTp47::StartL()
+    {
+    BaflUtils::EnsurePathExistsL( iFileSession, KFileName );
+
+    // Use same lm db as in composite search test
+    iDatabase = UseCompositeLandmarksDbFileL();
+    if (iDatabase->IsInitializingNeeded())
+       {
+       ExecuteAndDeleteLD(iDatabase->InitializeL());
+       }
+
+    // Delete the trace file
+    DeleteFileL(KFileTrace);
+
+    delete iDatabase;
+    iDatabase = NULL;
+
+    iDatabase = CPosLandmarkDatabase::OpenL();
+    	
+    if (iDatabase->IsInitializingNeeded())
+       {
+       ExecuteAndDeleteLD(iDatabase->InitializeL());
+       }
+
+    // Do reset so that global categories are included
+    CPosLmCategoryManager* categoryManager = CPosLmCategoryManager::NewL(*iDatabase);
+    CleanupStack::PushL(categoryManager);
+
+    ExecuteAndDeleteLD(categoryManager->ResetGlobalCategoriesL());
+    CleanupStack::PopAndDestroy(categoryManager);
+
+    HBufC8* emptyBuffer=NULL;
+
+    CreateXMLData(ETrue);
+
+    PrintParsedDataFromEncoderL(KFileName, *emptyBuffer, KErrNone, KLmxMimeType );
+
+    CheckXMLData(ETrue);
+
+    // Use buffer instead of file
+    CreateXMLData(EFalse);
+    CheckXMLData(EFalse);
+
+    iLandmarks.ResetAndDestroy();
+
+
+	
+    iLog->Log(_L("Mime With Name and Stamp"));
+    PrintParsedDataFromEncoderL(KMimeWithNameAndTimeStampFile, *emptyBuffer, KErrNone, KLmxMimeType );
+    PrintParsedDataFromEncoderL(KMimeWithNameAndTimeStampFile, *emptyBuffer, KErrNone, KGpxMimeType );
+
+    iLog->Log(_L("Several Landmark File"));
+    // XXX PrintParsedDataFromEncoderL(KSeveralLandmarkFile, *emptyBuffer, KErrPosLmUnknownFormat);
+
+    iLog->Log(_L("Erronous XML File"));
+    PrintParsedDataFromEncoderL(KErronousXMLFile, *emptyBuffer, KErrPosLmUnknownFormat, KLmxMimeType );
+    PrintParsedDataFromEncoderL(KErronousXMLFile, *emptyBuffer, KErrPosLmUnknownFormat, KGpxMimeType );
+
+    iLog->Log(_L("Several LandmarkCollection File"));
+    // XXX PrintParsedDataFromEncoderL(KSeveralLandmarkCollectionFile, *emptyBuffer, KErrPosLmUnknownFormat);
+
+    iLog->Log(_L("1) Wrong Order in XML File"));
+    PrintParsedDataFromEncoderL(KErronousXMLFileWrongOrder1, *emptyBuffer, KErrPosLmUnknownFormat, KLmxMimeType );
+    PrintParsedDataFromEncoderL(KErronousXMLFileWrongOrder1, *emptyBuffer, KErrPosLmUnknownFormat, KGpxMimeType );
+
+    iLog->Log(_L("2) Wrong Order in XML File"));
+    PrintParsedDataFromEncoderL(KErronousXMLFileWrongOrder2, *emptyBuffer, KErrPosLmUnknownFormat, KLmxMimeType );
+    PrintParsedDataFromEncoderL(KErronousXMLFileWrongOrder2, *emptyBuffer, KErrPosLmUnknownFormat, KGpxMimeType );
+
+    iLog->Log(_L("3) Wrong Order in XML File"));
+    // AdresseInfo can be sorted randomly without any error
+    PrintParsedDataFromEncoderL(KErronousXMLFileWrongOrder3, *emptyBuffer, KErrNone, KLmxMimeType );
+    // N/A for GPX
+
+    iLog->Log(_L("1) Data missing in XML File"));
+    PrintParsedDataFromEncoderL(KErronousXMLFileDataMissing1, *emptyBuffer, KErrPosLmUnknownFormat, KLmxMimeType );
+    PrintParsedDataFromEncoderL(KErronousXMLFileDataMissing1, *emptyBuffer, KErrPosLmUnknownFormat, KGpxMimeType );
+
+    iLog->Log(_L("2) Data missing in XML File"));
+    PrintParsedDataFromEncoderL(KErronousXMLFileDataMissing2, *emptyBuffer, KErrNone, KLmxMimeType );
+    PrintParsedDataFromEncoderL(KErronousXMLFileDataMissing2, *emptyBuffer, KErrNone, KGpxMimeType );
+
+    iLog->Log(_L("3) Data missing in XML File"));
+    PrintParsedDataFromEncoderL(KErronousXMLFileDataMissing3, *emptyBuffer, KErrNone, KLmxMimeType );
+    PrintParsedDataFromEncoderL(KErronousXMLFileDataMissing3, *emptyBuffer, KErrNone, KGpxMimeType );
+
+    iLog->Log(_L("Unknown tags in XML File"));
+    PrintParsedDataFromEncoderL(KUnknownTags, *emptyBuffer, KErrNone, KLmxMimeType );
+    PrintParsedDataFromEncoderL(KUnknownTags, *emptyBuffer, KErrNone, KGpxMimeType );
+
+    iLog->Log(_L("Unknown trees in XML File"));
+    PrintParsedDataFromEncoderL(KUnknownTrees, *emptyBuffer, KErrNone, KLmxMimeType );
+    PrintParsedDataFromEncoderL(KUnknownTrees, *emptyBuffer, KErrNone, KGpxMimeType );
+
+    iLog->Log(_L("No End landmarkCollection tag in XML File"));
+    PrintParsedDataFromEncoderL(KNoEndTag1, *emptyBuffer, -993, KLmxMimeType );
+    PrintParsedDataFromEncoderL(KNoEndTag1, *emptyBuffer, -993, KGpxMimeType );
+
+    iLog->Log(_L("No End landmark tag in XML File"));
+    PrintParsedDataFromEncoderL(KNoEndTag2, *emptyBuffer, KErrPosLmUnknownFormat, KLmxMimeType );
+    PrintParsedDataFromEncoderL(KNoEndTag2, *emptyBuffer, KErrPosLmUnknownFormat, KGpxMimeType );
+
+    iLog->Log(_L("Test with different input formats in XML File"));
+    PrintParsedDataFromEncoderL(KTestXMLInput1, *emptyBuffer, KErrNone, KLmxMimeType );
+    PrintParsedDataFromEncoderL(KTestXMLInput1, *emptyBuffer, KErrNone, KGpxMimeType );
+
+    iLog->Log(_L("Test with repeated tag XML File"));
+    PrintParsedDataFromEncoderL(KErronousXMLFileRepeatedTag, *emptyBuffer, KErrPosLmUnknownFormat, KLmxMimeType );
+    PrintParsedDataFromEncoderL(KErronousXMLFileRepeatedTag, *emptyBuffer, KErrPosLmUnknownFormat, KGpxMimeType );
+
+    iLog->Log(_L("Test with unclosed tag XML File"));
+    PrintParsedDataFromEncoderL(KErronousXMLFileUnclosedTag1, *emptyBuffer, -993, KLmxMimeType );
+    PrintParsedDataFromEncoderL(KErronousXMLFileUnclosedTag1, *emptyBuffer, -993, KGpxMimeType );
+
+//    Incorrect test
+//    iLog->Log(_L("Test with unclosed tag XML File"));
+//    PrintParsedDataFromEncoderL(KErronousXMLFileUnclosedTag2, *emptyBuffer, KErrPosLmUnknownFormat, KLmxMimeType );
+//    PrintParsedDataFromEncoderL(KErronousXMLFileUnclosedTag2, *emptyBuffer, KErrPosLmUnknownFormat, KGpxMimeType );
+
+    iLog->Log(_L("Test with a non XML File 1"));
+    PrintParsedDataFromEncoderL(KNoXMLFile1, *emptyBuffer, -982, KLmxMimeType );
+    PrintParsedDataFromEncoderL(KNoXMLFile1, *emptyBuffer, -982, KGpxMimeType );
+
+    iLog->Log(_L("Test with a non XML File 2"));
+    PrintParsedDataFromEncoderL(KNoXMLFile2, *emptyBuffer, KErrPosLmUnknownFormat, KLmxMimeType ); //temporarily changed KErrPosLmUnknownFormat to KErrNone
+    PrintParsedDataFromEncoderL(KNoXMLFile2, *emptyBuffer, KErrPosLmUnknownFormat, KGpxMimeType ); //temporarily KErrPosLmUnknownFormat to KErrNone
+
+    iLog->Log(_L("Test with a XML UTFW8 File"));
+    PrintParsedDataFromEncoderL(KXMLFileUTF8, *emptyBuffer, KErrNone, KLmxMimeType );
+    PrintParsedDataFromEncoderL(KXMLFileUTF8, *emptyBuffer, KErrNone, KGpxMimeType );
+
+    iLog->Log(_L("Test with a XML UTFW16 File"));
+    PrintParsedDataFromEncoderL(KXMLFileUTF16, *emptyBuffer, KErrNone, KLmxMimeType );
+    PrintParsedDataFromEncoderL(KXMLFileUTF16, *emptyBuffer, KErrNone, KGpxMimeType );
+
+    iLog->Log(_L("Test with a XML File with long category names"));
+    PrintParsedDataFromEncoderL(KXMLFileWithLongCategoryName, *emptyBuffer, KErrNone, KLmxMimeType );
+    PrintParsedDataFromEncoderL(KXMLFileWithLongCategoryName, *emptyBuffer, KErrNone, KGpxMimeType );
+
+    iLog->Log(_L("Test with a XML File with long landmark name"));
+    PrintParsedDataFromEncoderL(KXMLFileWithLongLandmarkName, *emptyBuffer, KErrNone, KLmxMimeType );
+    PrintParsedDataFromEncoderL(KXMLFileWithLongLandmarkName, *emptyBuffer, KErrNone, KGpxMimeType );
+
+    iLog->Log(_L("Test with a XML File with long latitude field"));
+    PrintParsedDataFromEncoderL(KXMLFileWithLongLatitudeField, *emptyBuffer, KErrNone, KLmxMimeType );
+    PrintParsedDataFromEncoderL(KXMLFileWithLongLatitudeField, *emptyBuffer, KErrNone, KGpxMimeType );
+
+    iLog->Log(_L("Test with a XML File with empty collection"));
+    PrintParsedDataFromEncoderL(KXMLFileWithEmptyCollection, *emptyBuffer, KErrPosLmUnknownFormat, KLmxMimeType );
+    // N/A for GPX
+
+    iLog->Log(_L("Test with a XML File with Landmark Tag in Landmark Tag"));
+    PrintParsedDataFromEncoderL(KErronousXMLFileTagInTag, *emptyBuffer, EXmlRecursiveEntity, KLmxMimeType );
+    PrintParsedDataFromEncoderL(KErronousXMLFileTagInTag, *emptyBuffer, EXmlRecursiveEntity, KGpxMimeType );
+
+    iLog->Log(_L("Test with a XML File with XML Tag as data field 1"));
+    PrintParsedDataFromEncoderL(KXMLFileWithXMLTagAsDataField1, *emptyBuffer, -993, KLmxMimeType );
+    PrintParsedDataFromEncoderL(KXMLFileWithXMLTagAsDataField1, *emptyBuffer, -993, KGpxMimeType );
+
+    iLog->Log(_L("Test with a XML File with XML Tag as data field 2"));
+    PrintParsedDataFromEncoderL(KXMLFileWithXMLTagAsDataField2, *emptyBuffer, -993, KLmxMimeType );
+    PrintParsedDataFromEncoderL(KXMLFileWithXMLTagAsDataField2, *emptyBuffer, -993, KGpxMimeType );
+
+    iLog->Log(_L("Test with a XML File with XML Tag as data field 3"));
+    PrintParsedDataFromEncoderL(KXMLFileWithXMLTagAsDataField3, *emptyBuffer, -993, KLmxMimeType );
+    PrintParsedDataFromEncoderL(KXMLFileWithXMLTagAsDataField3, *emptyBuffer, -993, KGpxMimeType );
+
+//    Incorrect test
+//    iLog->Log(_L("Test with a XML File with missing LM prefix"));
+//    PrintParsedDataFromEncoderL(KErronousXMLFileMissingLMPrefix, *emptyBuffer, EXmlRecursiveEntity, KLmxMimeType );
+//    PrintParsedDataFromEncoderL(KErronousXMLFileMissingLMPrefix, *emptyBuffer, EXmlRecursiveEntity, KGpxMimeType );
+//
+    iLog->Log(_L("Test with UTF-16-bigEndian.xml"));
+    PrintParsedDataFromEncoderL(KXML_UTF_16_BE, *emptyBuffer, KErrNone, KLmxMimeType );
+    PrintParsedDataFromEncoderL(KXML_UTF_16_BE, *emptyBuffer, KErrNone, KGpxMimeType );
+
+    iLog->Log(_L("Test with UTF-16-littleEndian.xml"));
+    PrintParsedDataFromEncoderL(KXML_UTF_16_LE, *emptyBuffer, KErrNone, KLmxMimeType );
+    PrintParsedDataFromEncoderL(KXML_UTF_16_LE, *emptyBuffer, KErrNone, KGpxMimeType );
+
+    iLog->Log(_L("Test with UTF-8.xml"));
+    PrintParsedDataFromEncoderL(KXML_UTF_8, *emptyBuffer, KErrNone, KLmxMimeType );
+    PrintParsedDataFromEncoderL(KXML_UTF_8, *emptyBuffer, KErrNone, KGpxMimeType );
+
+    iLog->Log(_L("Test with UTF-Chinese.xml"));
+    PrintParsedDataFromEncoderL(KXML_UTF_CHINESE, *emptyBuffer, -982, KLmxMimeType );
+    PrintParsedDataFromEncoderL(KXML_UTF_CHINESE, *emptyBuffer, -982, KGpxMimeType );
+    
+    
+    
+    //testing kml files
+    iLog->Log(_L("Test with Tp47KML.kml"));
+	PrintParsedDataFromEncoderL(KKMLFile, *emptyBuffer, KErrNone, KKmlMimeType );
+	
+	iLog->Log(_L("Test with Tp47KMLfile1.kml"));
+	PrintParsedDataFromEncoderL(KKMLFile1, *emptyBuffer, KErrNone, KKmlMimeType );
+	
+	iLog->Log(_L("Test with Tp47KMLfile2.kml"));
+	PrintParsedDataFromEncoderL(KKMLFile2, *emptyBuffer, KErrNone, KKmlMimeType );
+	
+	iLog->Log(_L("Test with Tp47KMLfile3.kml"));
+	PrintParsedDataFromEncoderL(KKMLFile3, *emptyBuffer, KErrNone, KKmlMimeType );
+	
+	//testing the name tag related cases
+	iLog->Log(_L("Test with Tp47KMLlongName.kml"));
+	PrintParsedDataFromEncoderL(KKMLLongName, *emptyBuffer, KErrNone, KKmlMimeType );
+	
+	iLog->Log(_L("Test with Tp47KMLNameCaps.kml"));
+	PrintParsedDataFromEncoderL(KKMLNameCaps, *emptyBuffer, KErrPosLmUnknownFormat, KKmlMimeType );
+
+	iLog->Log(_L("Test with Tp47KMLErroneousNameTag.kml"));
+	PrintParsedDataFromEncoderL(KKMLErroneousNameTag, *emptyBuffer, -993, KKmlMimeType );			//EXmlTagMismatch = -993
+
+	iLog->Log(_L("Test with Tp47KMLErroneousNameTagPosition1.kml"));
+	PrintParsedDataFromEncoderL(KKMLErroneousNameTagPosition1, *emptyBuffer, KErrPosLmUnknownFormat, KKmlMimeType );
+
+	iLog->Log(_L("Test with Tp47KMLErroneousNameTagPosition2.kml"));
+	PrintParsedDataFromEncoderL(KKMLErroneousNameTagPosition2, *emptyBuffer, KErrPosLmUnknownFormat, KKmlMimeType );
+
+	iLog->Log(_L("Test with Tp47KMLEmptyName.kml"));
+	PrintParsedDataFromEncoderL(KKMLEmptyName, *emptyBuffer, KErrPosLmUnknownFormat, KKmlMimeType );
+
+	iLog->Log(_L("Test with Tp47KMLMissingNameTag1.kml"));
+	PrintParsedDataFromEncoderL(KKMLMissingNameTag1, *emptyBuffer, -993, KKmlMimeType );			//EXmlTagMismatch = -993
+
+	iLog->Log(_L("Test with Tp47KMLMissingNameTag2.kml"));
+	PrintParsedDataFromEncoderL(KKMLMissingNameTag2, *emptyBuffer, KErrPosLmUnknownFormat, KKmlMimeType );
+
+	iLog->Log(_L("Test with Tp47KMLNameWithSpecialCharacters1.kml"));
+	PrintParsedDataFromEncoderL(KKMLNameWithSpecialCharacters1, *emptyBuffer, -996, KKmlMimeType ); // EXmlInvalidToken = -996
+
+	iLog->Log(_L("Test with Tp47KMLNameWithSpecialCharacters2.kml"));
+	PrintParsedDataFromEncoderL(KKMLNameWithSpecialCharacters2, *emptyBuffer, KErrNone, KKmlMimeType );
+	
+	//testing the PhoneNumber tag related cases
+	iLog->Log(_L("Test with Tp47KMLEmptyPhoneNumber.kml"));
+	PrintParsedDataFromEncoderL(KKMLEmptyPhoneNumber, *emptyBuffer, KErrNone, KKmlMimeType );
+
+	iLog->Log(_L("Test with Tp47KMLErroneousPhoneNumberTag.kml"));
+	PrintParsedDataFromEncoderL(KKMLErroneousPhoneNumberTag, *emptyBuffer, -993, KKmlMimeType ); 
+
+	iLog->Log(_L("Test with Tp47KMLErroneousPhoneNumberTagPosition.kml"));
+	PrintParsedDataFromEncoderL(KKMLErroneousPhoneNumberTagPosition, *emptyBuffer, KErrPosLmUnknownFormat, KKmlMimeType );
+
+	iLog->Log(_L("Test with Tp47KMLLongPhoneNumer.kml"));
+	PrintParsedDataFromEncoderL(KKMLLongPhoneNumer, *emptyBuffer, KErrNone, KKmlMimeType );
+
+	iLog->Log(_L("Test with Tp47KMLMissingPhoneTag1.kml"));
+	PrintParsedDataFromEncoderL(KKMLMissingPhoneTag1, *emptyBuffer, KErrPosLmUnknownFormat, KKmlMimeType );
+
+	iLog->Log(_L("Test with Tp47KMLMissingPhoneTag2.kml"));
+	PrintParsedDataFromEncoderL(KKMLMissingPhoneTag2, *emptyBuffer, -993, KKmlMimeType );
+
+	iLog->Log(_L("Test with Tp47KMLPhoneNumberCaps.kml"));
+	PrintParsedDataFromEncoderL(KKMLPhoneNumberCaps, *emptyBuffer, KErrNone, KKmlMimeType );
+
+	iLog->Log(_L("Test with Tp47KMLPhoneNumberWithText.kml"));
+	PrintParsedDataFromEncoderL(KKMLPhoneNumberWithText, *emptyBuffer, KErrNone, KKmlMimeType );
+
+	iLog->Log(_L("Test with Tp47KMLPhoneNumberWithSpecialCharacters1.kml"));
+	PrintParsedDataFromEncoderL(KKMLPhoneNumberWithSpecialCharacters1, *emptyBuffer, -996, KKmlMimeType );
+
+	iLog->Log(_L("Test with Tp47KMLPhoneNumberWithSpecialCharacters2.kml"));
+	PrintParsedDataFromEncoderL(KKMLPhoneNumberWithSpecialCharacters2, *emptyBuffer, KErrNone, KKmlMimeType );
+	
+	//testing the point tag related test cases
+	iLog->Log(_L("Test with Tp47KMLEmptyPoint.kml"));
+	PrintParsedDataFromEncoderL(KKMLEmptyPoint, *emptyBuffer, KErrNone, KKmlMimeType );
+
+	iLog->Log(_L("Test with Tp47KMLErroneousPointTag.kml"));
+	PrintParsedDataFromEncoderL(KKMLErroneousPointTag, *emptyBuffer, -993, KKmlMimeType );
+
+	iLog->Log(_L("Test with Tp47KMLErroneousPointTagPosition.kml"));
+	PrintParsedDataFromEncoderL(KKMLErroneousPointTagPosition, *emptyBuffer, KErrPosLmUnknownFormat, KKmlMimeType );
+
+	iLog->Log(_L("Test with Tp47KMLMissingPointTag1.kml"));
+	PrintParsedDataFromEncoderL(KKMLMissingPointTag1, *emptyBuffer, -993, KKmlMimeType );
+
+	iLog->Log(_L("Test with Tp47KMLMissingPointTag2.kml"));
+	PrintParsedDataFromEncoderL(KKMLMissingPointTag2, *emptyBuffer, -993, KKmlMimeType );
+
+	iLog->Log(_L("Test with Tp47KMLPointCaps.kml"));
+	PrintParsedDataFromEncoderL(KKMLPointCaps, *emptyBuffer, KErrNone, KKmlMimeType );
+
+	iLog->Log(_L("Test with Tp47KMLPointTag1.kml"));
+	PrintParsedDataFromEncoderL(KKMLPointTag1, *emptyBuffer, KErrNone, KKmlMimeType );
+
+	iLog->Log(_L("Test with Tp47KMLPointTag2.kml"));
+	PrintParsedDataFromEncoderL(KKMLPointTag2, *emptyBuffer, KErrNone, KKmlMimeType );
+
+	iLog->Log(_L("Test with Tp47KMLPointTag3.kml"));
+	PrintParsedDataFromEncoderL(KKMLPointTag3, *emptyBuffer, KErrNone, KKmlMimeType );
+
+	
+	//testing the description tag related cases
+	iLog->Log(_L("Test with Tp47KMLEmptyDescription.kml"));
+	PrintParsedDataFromEncoderL(KKMLEmptyDescription, *emptyBuffer, KErrNone, KKmlMimeType );
+
+	iLog->Log(_L("Test with Tp47KMLDescriptionWithSpecialCharacters1.kml"));
+	PrintParsedDataFromEncoderL(KKMLDescriptionWithSpecialCharacters1, *emptyBuffer, KErrNone, KKmlMimeType );
+
+	iLog->Log(_L("Test with Tp47KMLDescriptionWithSpecialCharacters2.kml"));
+	PrintParsedDataFromEncoderL(KKMLDescriptionWithSpecialCharacters2, *emptyBuffer, -996, KKmlMimeType );
+
+	iLog->Log(_L("Test with Tp47KMLDescriptionCaps.kml"));
+	PrintParsedDataFromEncoderL(KKMLDescriptionCaps, *emptyBuffer, KErrNone, KKmlMimeType );
+
+	iLog->Log(_L("Test with Tp47KMLLongDescription.kml"));
+	PrintParsedDataFromEncoderL(KKMLLongDescription, *emptyBuffer, KErrNone, KKmlMimeType );
+
+	iLog->Log(_L("Test with Tp47KMLErroneousDescriptionTag.kml"));
+	PrintParsedDataFromEncoderL(KKMLErroneousDescriptionTag, *emptyBuffer, -993, KKmlMimeType );
+
+	iLog->Log(_L("Test with Tp47KMLErroneousDescriptionTagposition.kml"));
+	PrintParsedDataFromEncoderL(KKMLErroneousDescriptionTagposition, *emptyBuffer, KErrPosLmUnknownFormat, KKmlMimeType );
+
+	iLog->Log(_L("Test with Tp47KMLMissingDescriptionTag1.kml"));
+	PrintParsedDataFromEncoderL(KKMLMissingDescriptionTag1, *emptyBuffer, KErrPosLmUnknownFormat, KKmlMimeType );
+
+	iLog->Log(_L("Test with Tp47KMLMissingDescriptionTag2.kml"));
+	PrintParsedDataFromEncoderL(KKMLMissingDescriptionTag2, *emptyBuffer, -993, KKmlMimeType );
+
+	iLog->Log(_L("Test with Tp47KMLDescriptionWithCDATA.kml"));
+	PrintParsedDataFromEncoderL(KKMLDescriptionWithCDATA, *emptyBuffer, KErrNone, KKmlMimeType );
+	
+	//testing the folder tag related cases
+	iLog->Log(_L("Test with Tp47KMLErroneousFolderTag.kml"));
+	PrintParsedDataFromEncoderL(KKMLErroneousFolderTag, *emptyBuffer, -993, KKmlMimeType );
+
+	iLog->Log(_L("Test with Tp47KMLFolderCaps.kml"));
+	PrintParsedDataFromEncoderL(KKMLFolderCaps, *emptyBuffer, KErrPosLmUnknownFormat, KKmlMimeType );
+
+	iLog->Log(_L("Test with Tp47KMLMissingFolderTag1.kml"));
+	PrintParsedDataFromEncoderL(KKMLMissingFolderTag1, *emptyBuffer, KErrPosLmUnknownFormat, KKmlMimeType );
+
+	iLog->Log(_L("Test with Tp47KMLMissingFolderTag2.kml"));
+	PrintParsedDataFromEncoderL(KKMLMissingFolderTag2, *emptyBuffer, -993, KKmlMimeType );
+
+	iLog->Log(_L("Test with Tp47KMLEmptyFolderName.kml"));
+	PrintParsedDataFromEncoderL(KKMLEmptyFolderName, *emptyBuffer, KErrNone, KKmlMimeType );
+
+	iLog->Log(_L("Test with Tp47KMLLongFolderName.kml"));
+	PrintParsedDataFromEncoderL(KKMLLongFolderName, *emptyBuffer, KErrNone, KKmlMimeType );
+
+	iLog->Log(_L("Test with Tp47KMLFolderNameWithSpecialCharacters1.kml"));
+	PrintParsedDataFromEncoderL(KKMLFolderNameWithSpecialCharacters1, *emptyBuffer, -996, KKmlMimeType );
+
+	iLog->Log(_L("Test with Tp47KMLFolderNameWithSpecialCharacters2.kml"));
+	PrintParsedDataFromEncoderL(KKMLFolderNameWithSpecialCharacters2, *emptyBuffer, KErrNone, KKmlMimeType );
+
+
+	//testing the document tag related cases
+	iLog->Log(_L("Test with Tp47KMLDocumentNameWithSpecialCharacters1.kml"));
+	PrintParsedDataFromEncoderL(KKMLDocumentNameWithSpecialCharacters1, *emptyBuffer, -996, KKmlMimeType );
+
+	iLog->Log(_L("Test with Tp47KMLDocumentNameWithSpecialCharacters2.kml"));
+	PrintParsedDataFromEncoderL(KKMLDocumentNameWithSpecialCharacters2, *emptyBuffer, KErrNone, KKmlMimeType );
+
+	iLog->Log(_L("Test with Tp47KMLEmptyDocumentName.kml"));
+	PrintParsedDataFromEncoderL(KKMLEmptyDocumentName, *emptyBuffer, KErrNone, KKmlMimeType );
+
+	iLog->Log(_L("Test with Tp47KMLLongDocumentName.kml"));
+	PrintParsedDataFromEncoderL(KKMLLongDocumentName, *emptyBuffer, KErrNone, KKmlMimeType );
+
+	iLog->Log(_L("Test with Tp47KMLDocumentCaps.kml"));
+	PrintParsedDataFromEncoderL(KKMLDocumentCaps, *emptyBuffer, KErrPosLmUnknownFormat, KKmlMimeType );
+
+	iLog->Log(_L("Test with Tp47KMLErroneousDocumentTag.kml"));
+	PrintParsedDataFromEncoderL(KKMLErroneousDocumentTag, *emptyBuffer, -993, KKmlMimeType );
+
+	iLog->Log(_L("Test with Tp47KMLMissingDocumentTag1.kml"));
+	PrintParsedDataFromEncoderL(KKMLMissingDocumentTag1, *emptyBuffer, -993, KKmlMimeType );
+
+	iLog->Log(_L("Test with Tp47KMLMissingDocumentTag2.kml"));
+	PrintParsedDataFromEncoderL(KKMLMissingDocumentTag2, *emptyBuffer, -993, KKmlMimeType );
+	
+	
+	//testing the address tag related cases
+	iLog->Log(_L("Test with Tp47KMLAddressCaps.kml"));
+	PrintParsedDataFromEncoderL(KKMLAddressCaps, *emptyBuffer, KErrNone, KKmlMimeType );
+
+	iLog->Log(_L("Test with Tp47KMLAddressWithSpecialCharacters1.kml"));
+	PrintParsedDataFromEncoderL(KKMLAddressWithSpecialCharacters1, *emptyBuffer, -996, KKmlMimeType );
+
+	iLog->Log(_L("Test with Tp47KMLAddressWithSpecialCharacters2.kml"));
+	PrintParsedDataFromEncoderL(KKMLAddressWithSpecialCharacters2, *emptyBuffer, KErrNone, KKmlMimeType );
+
+	iLog->Log(_L("Test with Tp47KMLEmptyAddress1.kml"));
+	PrintParsedDataFromEncoderL(KKMLEmptyAddress1, *emptyBuffer, KErrNone, KKmlMimeType );
+
+	iLog->Log(_L("Test with Tp47KMLEmptyAddress2.kml"));
+	PrintParsedDataFromEncoderL(KKMLEmptyAddress2, *emptyBuffer, KErrNone, KKmlMimeType );
+
+	iLog->Log(_L("Test with Tp47KMLLongAddress1.kml"));
+	PrintParsedDataFromEncoderL(KKMLLongAddress1, *emptyBuffer, KErrNone, KKmlMimeType );
+
+	iLog->Log(_L("Test with Tp47KMLLongAddress2.kml"));
+	PrintParsedDataFromEncoderL(KKMLLongAddress2, *emptyBuffer, KErrNone, KKmlMimeType );
+
+	iLog->Log(_L("Test with Tp47KMLLongAddress3.kml"));
+	PrintParsedDataFromEncoderL(KKMLLongAddress3, *emptyBuffer, KErrNone, KKmlMimeType );
+
+	iLog->Log(_L("Test with Tp47KMLErroneousAddressTag.kml"));
+	PrintParsedDataFromEncoderL(KKMLErroneousAddressTag, *emptyBuffer, -993, KKmlMimeType );
+
+	iLog->Log(_L("Test with Tp47KMLErroneousAddressTagPosition.kml"));
+	PrintParsedDataFromEncoderL(KKMLErroneousAddressTagPosition, *emptyBuffer, KErrPosLmUnknownFormat, KKmlMimeType );
+
+	iLog->Log(_L("Test with Tp47KMLMissingAddressTag1.kml"));
+	PrintParsedDataFromEncoderL(KKMLMissingAddressTag1, *emptyBuffer, -993, KKmlMimeType );
+
+	iLog->Log(_L("Test with Tp47KMLMissingAddressTag2.kml"));
+	PrintParsedDataFromEncoderL(KKMLMissingAddressTag2, *emptyBuffer, KErrPosLmUnknownFormat, KKmlMimeType );
+
+	//testing the coordinate tag related cases
+	iLog->Log(_L("Test with Tp47KMLCoordinateCaps.kml"));
+	PrintParsedDataFromEncoderL(KKMLCoordinateCaps, *emptyBuffer, KErrNone, KKmlMimeType );
+
+	iLog->Log(_L("Test with Tp47KMLMoreCoordinates.kml"));
+	PrintParsedDataFromEncoderL(KKMLMoreCoordinates, *emptyBuffer, KErrPosLmUnknownFormat, KKmlMimeType );
+
+	iLog->Log(_L("Test with Tp47KMLErroneousCoordinateTag.kml"));
+	PrintParsedDataFromEncoderL(KKMLErroneousCoordinateTag, *emptyBuffer, -993, KKmlMimeType );
+
+	iLog->Log(_L("Test with Tp47KMLErroneousCoordinateTagPosition.kml"));
+	PrintParsedDataFromEncoderL(KKMLErroneousCoordinateTagPosition, *emptyBuffer, KErrNone, KKmlMimeType );
+
+	iLog->Log(_L("Test with Tp47KMLCoordinates1.kml"));
+	PrintParsedDataFromEncoderL(KKMLCoordinates1, *emptyBuffer, KErrNone, KKmlMimeType );
+
+	iLog->Log(_L("Test with Tp47KMLCoordinates2.kml"));
+	PrintParsedDataFromEncoderL(KKMLCoordinates2, *emptyBuffer, KErrPosLmUnknownFormat, KKmlMimeType );
+
+	iLog->Log(_L("Test with Tp47KMLCoordinates3.kml"));
+	PrintParsedDataFromEncoderL(KKMLCoordinates3, *emptyBuffer, KErrPosLmUnknownFormat, KKmlMimeType );
+
+	iLog->Log(_L("Test with Tp47KMLCoordinates4.kml"));
+	PrintParsedDataFromEncoderL(KKMLCoordinates4, *emptyBuffer, KErrPosLmUnknownFormat, KKmlMimeType );
+
+	iLog->Log(_L("Test with Tp47KMLCoordinates5.kml"));
+	PrintParsedDataFromEncoderL(KKMLCoordinates5, *emptyBuffer, KErrNone, KKmlMimeType );
+
+	iLog->Log(_L("Test with Tp47KMLCoordinates6.kml"));
+	PrintParsedDataFromEncoderL(KKMLCoordinates6, *emptyBuffer, KErrNone, KKmlMimeType );
+
+	iLog->Log(_L("Test with Tp47KMLLongCoordinates1.kml"));
+	PrintParsedDataFromEncoderL(KKMLLongCoordinates1, *emptyBuffer, KErrNone, KKmlMimeType );
+
+	iLog->Log(_L("Test with Tp47KMLLongCoordinates2.kml"));
+	PrintParsedDataFromEncoderL(KKMLLongCoordinates2, *emptyBuffer, KErrNone, KKmlMimeType );
+
+	iLog->Log(_L("Test with Tp47KMLMissingCoordinateTag1.kml"));
+	PrintParsedDataFromEncoderL(KKMLMissingCoordinateTag1, *emptyBuffer, -993, KKmlMimeType );
+
+	iLog->Log(_L("Test with Tp47KMLMissingCoordinateTag2.kml"));
+	PrintParsedDataFromEncoderL(KKMLMissingCoordinateTag2, *emptyBuffer, -993, KKmlMimeType );
+
+	iLog->Log(_L("Test with Tp47KMLEmptyCoordinates1.kml"));
+	PrintParsedDataFromEncoderL(KKMLEmptyCoordinates1, *emptyBuffer, KErrPosLmUnknownFormat, KKmlMimeType );
+
+	iLog->Log(_L("Test with Tp47KMLEmptyCoordinates2.kml"));
+	PrintParsedDataFromEncoderL(KKMLEmptyCoordinates2, *emptyBuffer, KErrNone, KKmlMimeType );
+
+	iLog->Log(_L("Test with Tp47KMLEmptyCoordinates3.kml"));
+	PrintParsedDataFromEncoderL(KKMLEmptyCoordinates3, *emptyBuffer, KErrPosLmUnknownFormat, KKmlMimeType );
+
+	iLog->Log(_L("Test with Tp47KMLEmptyCoordinates4.kml"));
+	PrintParsedDataFromEncoderL(KKMLEmptyCoordinates4, *emptyBuffer, KErrNone, KKmlMimeType );
+
+	iLog->Log(_L("Test with Tp47KMLEmptyCoordinates5.kml"));
+	PrintParsedDataFromEncoderL(KKMLEmptyCoordinates5, *emptyBuffer, KErrPosLmUnknownFormat, KKmlMimeType );
+
+	iLog->Log(_L("Test with Tp47KMLEmptyCoordinates6.kml"));
+	PrintParsedDataFromEncoderL(KKMLEmptyCoordinates6, *emptyBuffer, KErrPosLmUnknownFormat, KKmlMimeType );
+
+	iLog->Log(_L("Test with Tp47KMLEmptyCoordinates7.kml"));
+	PrintParsedDataFromEncoderL(KKMLEmptyCoordinates7, *emptyBuffer, KErrPosLmUnknownFormat, KKmlMimeType );
+
+	iLog->Log(_L("Test with Tp47KMLErroneousCoordinates1.kml"));
+	PrintParsedDataFromEncoderL(KKMLErroneousCoordinates1, *emptyBuffer, KErrPosLmUnknownFormat, KKmlMimeType );
+
+	iLog->Log(_L("Test with Tp47KMLErroneousCoordinates2.kml"));
+	PrintParsedDataFromEncoderL(KKMLErroneousCoordinates2, *emptyBuffer, KErrPosLmUnknownFormat, KKmlMimeType );
+
+	iLog->Log(_L("Test with Tp47KMLErroneousCoordinates3.kml"));
+	PrintParsedDataFromEncoderL(KKMLErroneousCoordinates3, *emptyBuffer, KErrOverflow, KKmlMimeType );
+
+	iLog->Log(_L("Test with Tp47KMLErroneousCoordinates4.kml"));
+	PrintParsedDataFromEncoderL(KKMLErroneousCoordinates4, *emptyBuffer, KErrPosLmUnknownFormat, KKmlMimeType );
+
+	iLog->Log(_L("Test with Tp47KMLErroneousCoordinates5.kml"));
+	PrintParsedDataFromEncoderL(KKMLErroneousCoordinates5, *emptyBuffer, KErrPosLmUnknownFormat, KKmlMimeType );
+
+	iLog->Log(_L("Test with Tp47KMLNegativeCoordinates.kml"));
+	PrintParsedDataFromEncoderL(KKMLNegativeCoordinates, *emptyBuffer, KErrNone, KKmlMimeType );
+	
+	//testing some invalid cases
+	iLog->Log(_L("Test with Tp47KMLErroneousTextWithinPlacemark.kml"));
+	PrintParsedDataFromEncoderL(KKMLErroneousTextWithinPlacemark, *emptyBuffer, KErrPosLmUnknownFormat, KKmlMimeType );
+
+	iLog->Log(_L("Test with Tp47KMLEmptyfile1.kml"));
+	PrintParsedDataFromEncoderL(KKMLEmptyfile1, *emptyBuffer, KErrPosLmUnknownFormat, KKmlMimeType );
+
+	iLog->Log(_L("Test with Tp47KMLEmptyfile2.kml"));
+	PrintParsedDataFromEncoderL(KKMLEmptyfile2, *emptyBuffer, KErrPosLmUnknownFormat, KKmlMimeType );
+
+	iLog->Log(_L("Test with Tp47KMLInvalidfile.kml"));
+	PrintParsedDataFromEncoderL(KKMLInvalidfile, *emptyBuffer, -983, KKmlMimeType ); //EXmlMisplacedPi =  -983
+	
+	//testing the Placemark tag related cases
+	iLog->Log(_L("Test with Tp47KMLPlacemarkCaps.kml"));
+	PrintParsedDataFromEncoderL(KKMLPlacemarkCaps, *emptyBuffer, KErrPosLmUnknownFormat, KKmlMimeType );
+
+	iLog->Log(_L("Test with Tp47KMLErroneousPlacemarkTag.kml"));
+	PrintParsedDataFromEncoderL(KKMLErroneousPlacemarkTag, *emptyBuffer, -993, KKmlMimeType );
+
+	iLog->Log(_L("Test with Tp47KMLMissingPlacemarkTag1.kml"));
+	PrintParsedDataFromEncoderL(KKMLMissingPlacemarkTag1, *emptyBuffer, -993, KKmlMimeType );
+
+	iLog->Log(_L("Test with Tp47KMLMissingPlacemarkTag2.kml"));
+	PrintParsedDataFromEncoderL(KKMLMissingPlacemarkTag2, *emptyBuffer, -993, KKmlMimeType );
+
+	iLog->Log(_L("Test with Tp47KMLEmptyPlacemarkTag.kml"));
+	PrintParsedDataFromEncoderL(KKMLEmptyPlacemarkTag, *emptyBuffer, KErrPosLmUnknownFormat, KKmlMimeType );
+	
+	//testing with kml files downloaded from google earth
+	iLog->Log(_L("Test with Tp47KMLGandhi Museum.kml"));
+	PrintParsedDataFromEncoderL(KKMLGandhiMuseum, *emptyBuffer, KErrNone, KKmlMimeType );
+
+	iLog->Log(_L("Test with Tp47KMLIndus Heritage Centre, India.kml"));
+	PrintParsedDataFromEncoderL(KKMLIndusHeritageCentreIndia, *emptyBuffer, KErrNone, KKmlMimeType );
+
+	iLog->Log(_L("Test with Tp47KMLhilton hotels near new york (1 - 10).kml"));
+	PrintParsedDataFromEncoderL(KKMLHiltonHotels, *emptyBuffer, KErrNone, KKmlMimeType );
+	
+	iLog->Log(_L("Test with Tp47KMLFile4.kml"));
+	PrintParsedDataFromEncoderL(KKMLFile4, *emptyBuffer, KErrPosLmUnknownFormat, KKmlMimeType );
+
+	iLog->Log(_L("Test with Tp47KMLFile5.kml"));
+	PrintParsedDataFromEncoderL(KKMLFile5, *emptyBuffer, KErrNone, KKmlMimeType );
+
+	iLog->Log(_L("Test with Tp47KMLFile6.kml"));
+	PrintParsedDataFromEncoderL(KKMLFile6, *emptyBuffer, KErrNone, KKmlMimeType );
+
+	iLog->Log(_L("Test with Tp47KMLFile7.kml"));
+	PrintParsedDataFromEncoderL(KKMLFile7, *emptyBuffer, KErrNone, KKmlMimeType );
+
+	iLog->Log(_L("Test with Tp47KMLFile8.kml"));
+	PrintParsedDataFromEncoderL(KKMLFile8, *emptyBuffer, KErrPosLmUnknownFormat, KKmlMimeType );
+
+	iLog->Log(_L("Test with Tp47KMLFile9.kml"));
+	PrintParsedDataFromEncoderL(KKMLFile9, *emptyBuffer, -993, KKmlMimeType );
+
+    // Now compare tha trace file against the correct one
+    RFile correctFile;
+    RFile file;
+
+    iLog->Log(_L(">>>>>>>Comparing files<<<<<"));
+    
+    TFileName filename;
+    CreateCorrectXmlFileL( KCorrectFile, filename );
+    
+    User::LeaveIfError(correctFile.Open(iFileSession, filename,  EFileRead));
+    CleanupClosePushL(correctFile);
+    User::LeaveIfError(file.Open(iFileSession, KFileTrace,  EFileRead));
+    CleanupClosePushL(file);
+
+    HBufC* correctLinebuffer = HBufC::NewLC( KBufSize );
+            TPtr correctLine = correctLinebuffer->Des();    
+            HBufC* linebuffer = HBufC::NewLC( KBufSize );
+            TPtr line = linebuffer->Des();    
+   	
+    TInt err = KErrNone;
+    TBool done = EFalse;
+    TInt lineNr = 0;
+
+    while (ReadLn(correctFile, correctLine) != KErrEof && !done)
+        {
+        lineNr++;
+        err = ReadLn(file, line);
+        if ( err == KErrEof ) 
+            {
+            done = ETrue;    
+            }
+        correctLine.Trim();
+        line.Trim();
+        if (correctLine.Compare(line) != KErrNone)
+            {
+            HBufC* buf = HBufC::NewLC( 128 );
+            TPtr buffer = buf->Des();
+            
+            buffer.Format(_L("ERROR in TraceFile on line %d: "), lineNr);
+            
+            iLog->Log( buffer );
+            iLog->Log( correctLine );
+            iLog->Log( line );
+            iErrorsFound++;
+            CleanupStack::PopAndDestroy( buf );
+            }
+        }
+		CleanupStack::PopAndDestroy(linebuffer);
+    CleanupStack::PopAndDestroy(correctLinebuffer);
+    CleanupStack::PopAndDestroy(&file);
+    CleanupStack::PopAndDestroy(&correctFile);
+
+    // EOF for trace file was reach before EOF in the correct file
+    if (done)
+        {
+        iLog->Log(_L("ERROR: EOF for Trace file was reached to early"));
+        iErrorsFound++;
+        }
+
+    iLog->Log(_L("Test with Empty MediaLink"));
+    PrintParsedDataFromEncoderL(KXMLFileWithEmptyMedialink, *emptyBuffer, KErrPosLmUnknownFormat, KLmxMimeType );
+    PrintParsedDataFromEncoderL(KXMLFileWithEmptyMedialink, *emptyBuffer, KErrPosLmUnknownFormat, KGpxMimeType );
+
+    iLog->Log(_L("Test with Empty Coordinates"));
+    PrintParsedDataFromEncoderL(KXMLFileWithEmptyCoordinates, *emptyBuffer, KErrPosLmUnknownFormat, KLmxMimeType );
+    PrintParsedDataFromEncoderL(KXMLFileWithEmptyCoordinates, *emptyBuffer, KErrPosLmUnknownFormat, KGpxMimeType );
+
+    iLog->Log(_L("Test with Empty AdresseInfo"));
+    PrintParsedDataFromEncoderL(KXMLFileWithEmptyAdresseInfo, *emptyBuffer, KErrPosLmUnknownFormat, KLmxMimeType );
+    // N/A for GPX
+
+    iLog->Log(_L("Test with Erronous Text in Tag1"));
+    PrintParsedDataFromEncoderL(KXMLFileWithErronousTextInTag1, *emptyBuffer, KErrPosLmUnknownFormat, KLmxMimeType );
+    PrintParsedDataFromEncoderL(KXMLFileWithErronousTextInTag1, *emptyBuffer, KErrPosLmUnknownFormat, KGpxMimeType );
+
+    iLog->Log(_L("Test with Erronous Text in Tag2"));
+    PrintParsedDataFromEncoderL(KXMLFileWithErronousTextInTag2, *emptyBuffer, KErrPosLmUnknownFormat, KLmxMimeType );
+    PrintParsedDataFromEncoderL(KXMLFileWithErronousTextInTag2, *emptyBuffer, KErrPosLmUnknownFormat, KGpxMimeType );
+
+    iLog->Log(_L("Test with Erronous Text in Tag3"));
+    PrintParsedDataFromEncoderL(KXMLFileWithErronousTextInTag3, *emptyBuffer, KErrPosLmUnknownFormat, KLmxMimeType );
+    PrintParsedDataFromEncoderL(KXMLFileWithErronousTextInTag3, *emptyBuffer, KErrPosLmUnknownFormat, KGpxMimeType );
+
+    iLog->Log(_L("Test with Erronous Text in Tag4"));
+    PrintParsedDataFromEncoderL(KXMLFileWithErronousTextInTag4, *emptyBuffer, KErrPosLmUnknownFormat, KLmxMimeType );
+    PrintParsedDataFromEncoderL(KXMLFileWithErronousTextInTag4, *emptyBuffer, KErrPosLmUnknownFormat, KGpxMimeType );
+
+    iLog->Log(_L("Test with Erronous Text in Tag5"));
+    PrintParsedDataFromEncoderL(KXMLFileWithErronousTextInTag5, *emptyBuffer, KErrPosLmUnknownFormat, KLmxMimeType );
+    PrintParsedDataFromEncoderL(KXMLFileWithErronousTextInTag5, *emptyBuffer, KErrPosLmUnknownFormat, KGpxMimeType );
+
+    iLog->Log(_L("Test with Erronous Text in Tag6"));
+    PrintParsedDataFromEncoderL(KXMLFileWithErronousTextInTag6, *emptyBuffer, KErrPosLmUnknownFormat, KLmxMimeType );
+    PrintParsedDataFromEncoderL(KXMLFileWithErronousTextInTag6, *emptyBuffer, KErrPosLmUnknownFormat, KGpxMimeType );
+
+    CheckIndexNotSupportedL();
+
+    DoCancelTestL();
+
+    if (iErrorsFound != KErrNone)// LogErrorAndLeave(_L("Errors found in TP47"));
+        {
+    	iLog->Log(_L("Errors found in TP47"));
+    	User::Leave(-1);
+        }
+	}
+
+// ---------------------------------------------------------
+// CPosTp47::CheckIndexNotSupportedL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CPosTp47::CheckIndexNotSupportedL()
+    {
+    iLog->Log(_L("CheckIndexNotSupportedL"));
+
+    iLandmarkParser = CPosLandmarkParser::NewL(KLmxMimeType);
+    iLandmarkParser->SetInputFileL(KFileName);
+
+    // This function should leave with KErrNotSupported
+    TRAPD(err, iOperation = iLandmarkParser->ParseContentL(ETrue));
+
+    delete iOperation;
+    iOperation = NULL;
+
+    delete iLandmarkParser;
+    iLandmarkParser = NULL;
+
+    if (err != KErrNotSupported)
+    {
+    	iLog->Log(_L("ParseContentL(ETrue) did not leave with KErrNotSupported"));
+    	User::Leave(err);
+    }
+
+    iLandmarkParser = CPosLandmarkParser::NewL(KGpxMimeType);
+    iLandmarkParser->SetInputFileL(KFileName);
+
+    // This function should leave with KErrNotSupported
+    TRAP(err, iOperation = iLandmarkParser->ParseContentL(ETrue));
+
+    delete iOperation;
+    iOperation = NULL;
+
+    delete iLandmarkParser;
+    iLandmarkParser = NULL;
+
+    if (err != KErrNotSupported)
+    {
+        iLog->Log(_L("ParseContentL(ETrue) (GPX) did not leave with KErrNotSupported"));
+        User::Leave(err);
+    }
+
+    iLog->Log(_L("CheckIndexNotSupportedL Done"));
+    }
+
+// ---------------------------------------------------------
+// CPosTp47::DoCancelTestL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CPosTp47::DoCancelTestL()
+    {
+    iLog->Log(_L("DoCancelTestL"));
+    iLandmarkParser = CPosLandmarkParser::NewL(KLmxMimeType);
+    iLandmarkParser->SetInputFileL(KFileName);
+
+    iOperation = iLandmarkParser->ParseContentL();
+
+    TRequestStatus status = KPosLmOperationNotComplete;
+    TReal32 progress;
+
+    // 1 ) Cancel parse function by deleting iOperation
+    delete iOperation;
+    iOperation = NULL;
+
+    TUint32 nr = iLandmarkParser->NumOfParsedLandmarks();
+    if ((TInt)nr != 0)
+    {
+    	iLog->Log(_L("No landmarks should be found"));
+    	User::Leave(KErrNone);
+    }
+
+    // No landmark should be found
+    TRAPD(err, iLandmarkParser->LandmarkLC());
+    if (err != KErrNotFound)
+        {
+        iLog->Log(_L("ERROR: No Landmark should be found"));
+        iErrorsFound++;
+        }
+
+    // 1 ) Cancel parse function by changing input
+    iOperation = iLandmarkParser->ParseContentL();
+
+    // Get the first landmark
+    iOperation->NextStep(status, progress);
+    // Wait for NextStep to complete
+    User::WaitForRequest(status);
+    nr = iLandmarkParser->NumOfParsedLandmarks();
+    if ((TInt)nr != 1)
+    {
+    	iLog->Log(_L("One landmark should be found"));
+    	User::Leave(KErrNone);
+    }
+
+    // Change input
+    iLandmarkParser->SetInputFileL(KFileName);
+
+    nr = iLandmarkParser->NumOfParsedLandmarks();
+    if ((TInt)nr != 0)
+    {
+    	iLog->Log(_L("No landmarks should be found"));
+    	User::Leave(KErrNone);
+    }
+
+    // No landmark should be found
+    TRAP(err, iLandmarkParser->LandmarkLC());
+    if (err != KErrNotFound)
+        {
+        iLog->Log(_L("ERROR: No Landmark should be found"));
+        iErrorsFound++;
+        }
+
+    delete iOperation;
+    iOperation = NULL;
+    delete iLandmarkParser;
+    iLandmarkParser = NULL;
+    iLog->Log(_L("DoCancelTestL Done"));
+    }
+
+// ---------------------------------------------------------
+// CPosTp47::CreateXMLData
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CPosTp47::CreateXMLData(TBool aUseFile)
+    {
+    iLog->Log(_L("CreateXMLData"));
+    // 1) Create an encoder object
+    iLandmarkEncoder = CPosLandmarkEncoder::NewL(KLmxMimeType);
+
+    CPosLmCategoryManager* categoryManager = CPosLmCategoryManager::NewL(*iDatabase);
+    CleanupStack::PushL(categoryManager);
+
+    if (aUseFile)
+        {
+        DeleteFileL(KFileName);
+        // 2) Use file for encoding, set output file
+        iLandmarkEncoder->SetOutputFileL(KFileName);
+        }
+    else
+        {
+        // 2) Use buffer for encoding
+        iEncoderBuffer = iLandmarkEncoder->SetUseOutputBufferL();
+        }
+
+    // 300 characters
+    _LIT(KLongFieldName, "123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890");
+    _LIT(KLongFieldDescription, "123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890");
+    _LIT(KLongFieldDescriptionExtra, "A________BA________BA________BA________BA________BA________BA________BA________BA________BA________BA________BA________BA________BA________BA________BA________BA________BA________BA________BA________BA________BA________BA________BA________BA________BA________BA________BA________BA________BA________B");
+    _LIT(KLongFieldDescriptionExtra2, "Extra Extra Extra Extra Extra Extra Extra Extra Extra Extra Extra Extra");
+
+    iLandmarkEncoder->AddCollectionDataL(EPosLmCollDataCollectionName, KLongFieldName);
+    iLandmarkEncoder->AddCollectionDataL(EPosLmCollDataCollectionDescription, KLongFieldDescription);
+    iLandmarkEncoder->AddCollectionDataL((TPosLmCollectionDataId)(EPosLmCollDataContentSpecificDataBegin), KLongFieldDescriptionExtra);
+    iLandmarkEncoder->AddCollectionDataL((TPosLmCollectionDataId)(EPosLmCollDataContentSpecificDataBegin + 1), KLongFieldDescriptionExtra2);
+
+    iLog->Log(_L("Create Data..."));
+
+    // 3) Add one landmark with all fields set to be encoded
+    CPosLandmark* lm1 = CreateXMLLandmarkLC(_L("TP47Landmark1"));
+    AddAllXMLFieldsL(lm1);
+
+    iLandmarkEncoder->AddLandmarkL(*lm1);
+    iLandmarks.Append(lm1);
+    CleanupStack::Pop(lm1);
+
+    // 4) Add one more landmark to be encoded (id27 "LOG9" in categories 11-17)
+    CPosLandmark* lm2 = iDatabase->ReadLandmarkLC(27);
+    iLandmarkEncoder->AddLandmarkL(*lm2);
+    // Remove field 408 which is not exported
+    lm2->RemovePositionField(408);
+    iLandmarks.Append(lm2);
+    CleanupStack::Pop(lm2);
+
+    // 5) Add one category (pizzeria) to the latest added landmark
+    CPosLandmarkCategory* landmarkCategory = categoryManager->ReadCategoryLC(1);
+
+    iLandmarkEncoder->AddCategoryForLatestLandmarkL(*landmarkCategory);
+    CleanupStack::PopAndDestroy(landmarkCategory);
+
+    // 6) Add one landmark to be encoded (id=18 "enat?r" in category 18)
+    lm1 = iDatabase->ReadLandmarkLC(18);
+    iLandmarkEncoder->AddLandmarkL(*lm1);
+    // Remove field 408 which is not exported
+    lm1->RemovePositionField(408);
+    iLandmarks.Append(lm1);
+    CleanupStack::Pop(lm1);
+
+    // 7) Add one category (Frisör) to the latest added landmark
+    landmarkCategory = categoryManager->ReadCategoryLC(18);
+
+    iLandmarkEncoder->AddCategoryForLatestLandmarkL(*landmarkCategory);
+    CleanupStack::PopAndDestroy(landmarkCategory);
+
+    // 8 ) Add one global category  (Entertainment) to the latest added landmark
+
+    TPosLmItemId globalCategoryId = categoryManager->GetGlobalCategoryL(15000);
+    if (globalCategoryId != KPosLmNullItemId)
+        {
+        landmarkCategory = categoryManager->ReadCategoryLC(globalCategoryId);
+        iLandmarkEncoder->AddCategoryForLatestLandmarkL(*landmarkCategory);
+        CleanupStack::PopAndDestroy(landmarkCategory);
+    }
+    else
+    {
+    	iLog->Log(_L("Global category was not found1"));
+    	User::Leave(-1);
+    }
+
+    // 9 ) Add one global category  (People) to the latest added landmark
+
+    globalCategoryId = categoryManager->GetGlobalCategoryL(27000);
+    if (globalCategoryId != KPosLmNullItemId)
+        {
+        landmarkCategory = categoryManager->ReadCategoryLC(globalCategoryId);
+        iLandmarkEncoder->AddCategoryForLatestLandmarkL(*landmarkCategory);
+        CleanupStack::PopAndDestroy(landmarkCategory);
+        }
+    else
+    {
+    	iLog->Log(_L("Global category was not found2"));
+    	User::Leave(-1);
+    }
+    // 11) Add one landmark with all fields set to empty (_L(""))
+    lm1 = CreateXMLLandmarkLC(_L("TP47LandmarkEmpty"));
+    AddAllEmptyXMLFieldsL(lm1);
+    iLandmarkEncoder->AddLandmarkL(*lm1);
+    // Remove field 402 (EPositionFieldCountryCode) which is not exported when empty
+    lm1->RemovePositionField(402);
+    iLandmarks.Append(lm1);
+    CleanupStack::Pop(lm1);
+
+    // 12) Add one landmark with all fields set to be encoded
+    lm1 = CreateXMLLandmarkLC(_L("TP47Landmark2"));
+    AddAllXMLFieldsL(lm1);
+    iLandmarkEncoder->AddLandmarkL(*lm1);
+
+    iLandmarks.Append(lm1);
+    CleanupStack::Pop(lm1);
+
+    // 13) Add one global category  (Shopping) to the latest added landmark
+    globalCategoryId = categoryManager->GetGlobalCategoryL(36000);
+    if (globalCategoryId != KPosLmNullItemId)
+        {
+        landmarkCategory = categoryManager->ReadCategoryLC(globalCategoryId);
+        iLandmarkEncoder->AddCategoryForLatestLandmarkL(*landmarkCategory);
+        CleanupStack::PopAndDestroy(landmarkCategory);
+    }
+    else
+    {
+    	iLog->Log(_L("Global category was not found3"));
+    	User::Leave(-1);
+    }
+
+    // 14) Add one global category  (Sports) to the latest added landmark
+      globalCategoryId = categoryManager->GetGlobalCategoryL(42000);
+    if (globalCategoryId != KPosLmNullItemId)
+        {
+        landmarkCategory = categoryManager->ReadCategoryLC(globalCategoryId);
+        iLandmarkEncoder->AddCategoryForLatestLandmarkL(*landmarkCategory);
+        CleanupStack::PopAndDestroy(landmarkCategory);
+        }
+    else
+    	{
+    	iLog->Log(_L("Global category was not found4"));
+    	User::Leave(-1);
+    	}
+
+      // ) Finalize encoding
+    iLog->Log(_L("FinalizeEncodingL"));
+    ExecuteAndDeleteLD(iLandmarkEncoder->FinalizeEncodingL());
+    iLog->Log(_L("FinalizeEncodingL Done"));
+
+    delete iLandmarkEncoder;
+    iLandmarkEncoder = NULL;
+    CleanupStack::PopAndDestroy(categoryManager);
+    }
+
+// ---------------------------------------------------------
+// CPosTp47::CheckXMLData
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CPosTp47::CheckXMLData(TBool aUseFile)
+    {
+    iLog->Log(_L("CheckXMLData"));
+
+    // This number must be updated if any more landmarks are added
+    const TInt KNrOfAddedLandmarks = 5;
+
+    iLandmarkParser = CPosLandmarkParser::NewL(KLmxMimeType);
+
+    CPosLmCategoryManager* categoryManager = CPosLmCategoryManager::NewL(*iDatabase);
+    CleanupStack::PushL(categoryManager);
+
+    RArray<TPosLmItemId> array;
+    CleanupClosePushL(array);
+
+    HBufC8* bufferContent = NULL;
+
+    if (aUseFile)
+        {
+        iLog->Log(_L("----->Using FILE<-------"));
+        iLandmarkParser->SetInputFileL(KFileName);
+        }
+    else
+        {
+        iLog->Log(_L("----->Using BUFFER<-------"));
+        bufferContent = HBufC8::NewLC(iEncoderBuffer->Size());
+        TPtr8 ptr = bufferContent->Des();
+        iEncoderBuffer->Read(0, ptr, iEncoderBuffer->Size());
+        iLandmarkParser->SetInputBuffer(*bufferContent);
+        }
+
+    iOperation = iLandmarkParser->ParseContentL();
+    TRequestStatus status = KPosLmOperationNotComplete;
+    TReal32 progress;
+    TInt number = 0;
+
+    // 1) Get the first landmark, "TP47Landmark1", no categories
+    iOperation->NextStep(status, progress);
+    // Wait for NextStep to complete
+    User::WaitForRequest(status);
+    // Get last parsed landmark
+    CPosLandmark* lm = iLandmarkParser->LandmarkLC();
+    lm->GetCategoriesL(array);
+    AssertTrueSecL(array.Count() == 0, _L("1) Wrong number of landmark categories"));
+    iErrorsFound += CompareXMLLandmarksL(*iLandmarks[number++], *lm);
+    CleanupStack::PopAndDestroy(lm);
+
+    TUint32 nr = iLandmarkParser->NumOfParsedLandmarks();
+    if ((TInt)nr != number)
+    {
+    	iLog->Log(_L("Wrong number of landmarks parsed"));
+    	User::Leave(-1);
+    }
+
+    // 2) Get landmark, "LOG9", local category Pizzeria
+    iOperation->NextStep(status, progress);
+    // Wait for NextStep to complete
+    User::WaitForRequest(status);
+    // Get last parsed landmark
+    lm = iLandmarkParser->LandmarkLC();
+    lm->GetCategoriesL(array);
+    AssertTrueSecL(array.Count() == 1, _L("2) Wrong number of landmark categories"));
+    iErrorsFound += CompareXMLLandmarksL(*iLandmarks[number++], *lm);
+    CPosLandmarkCategory* category = iLandmarkParser->LandmarkCategoryLC(array[0]);
+    CPosLandmarkCategory* cat = categoryManager->ReadCategoryLC(1);
+    iErrorsFound += CompareXMLCategoriesL(*cat, *category);
+    CleanupStack::PopAndDestroy(cat);
+    CleanupStack::PopAndDestroy(category);
+    CleanupStack::PopAndDestroy(lm);
+
+    nr = iLandmarkParser->NumOfParsedLandmarks();
+    if ((TInt)nr != number)
+    {
+    	iLog->Log(_L("Wrong number of landmarks parsed"));
+    	User::Leave(-1);
+    }
+
+    // 3) Get landmark, "enato?r", local categories Frisör, Hunddagis and global categories Sports Ground, Gas Station
+    iOperation->NextStep(status, progress);
+    // Wait for NextStep to complete
+    User::WaitForRequest(status);
+    // Get last parsed landmark
+    lm = iLandmarkParser->LandmarkLC();
+    lm->GetCategoriesL(array);
+    AssertTrueSecL(array.Count() == 3, _L("3) Wrong number of landmark categories"));
+    iErrorsFound += CompareXMLLandmarksL(*iLandmarks[number++], *lm);
+
+    // check local category Frisör here
+    category = iLandmarkParser->LandmarkCategoryLC(array[0]);
+    cat = categoryManager->ReadCategoryLC(18);
+    iErrorsFound += CompareXMLCategoriesL(*cat, *category);
+    CleanupStack::PopAndDestroy(cat);
+    CleanupStack::PopAndDestroy(category);
+
+    // check global category Sports Ground globalid=7 (id=33) here
+    category = iLandmarkParser->LandmarkCategoryLC(array[1]);
+   // cat = categoryManager->ReadCategoryLC(33);
+    cat = categoryManager->ReadCategoryLC(31);
+    iErrorsFound += CompareXMLCategoriesL(*cat, *category);
+    CleanupStack::PopAndDestroy(cat);
+    CleanupStack::PopAndDestroy(category);
+
+    //Check global category "id=3 Gas station" here
+    category = iLandmarkParser->LandmarkCategoryLC(array[2]);
+    //cat = categoryManager->ReadCategoryLC(29);
+    cat = categoryManager->ReadCategoryLC(35);
+    iErrorsFound += CompareXMLCategoriesL(*cat, *category);
+    CleanupStack::PopAndDestroy(cat);
+    CleanupStack::PopAndDestroy(category);
+
+    CleanupStack::PopAndDestroy(lm);
+    nr = iLandmarkParser->NumOfParsedLandmarks();
+    if ((TInt)nr != number)// LogErrorAndLeave(_L("Wrong number of landmarks parsed"));
+    {
+    	iLog->Log(_L("Wrong number of landmarks parsed"));
+    	User::Leave(-1);
+    }
+
+    // 4) Get landmark, TP47LandmarkEmpty, no categories
+    iOperation->NextStep(status, progress);
+    // Wait for NextStep to complete
+    User::WaitForRequest(status);
+    // Get last parsed landmark
+    lm = iLandmarkParser->LandmarkLC();
+    lm->GetCategoriesL(array);
+    AssertTrueSecL(array.Count() == 0, _L("4) Wrong number of landmark categories"));
+    iErrorsFound += CompareXMLLandmarksL(*iLandmarks[number++], *lm);
+    CleanupStack::PopAndDestroy(lm);
+
+    nr = iLandmarkParser->NumOfParsedLandmarks();
+    if ((TInt)nr != number)
+    {
+    	iLog->Log(_L("Wrong number of landmarks parsed"));
+    	User::Leave(-1);
+    }
+
+    // 5) Get landmark, TP47Landmark2, local categories Burger King and global categories Garage, Bus Stop
+    iOperation->NextStep(status, progress);
+    // Wait for NextStep to complete
+    User::WaitForRequest(status);
+    // Get last parsed landmark
+    lm = iLandmarkParser->LandmarkLC();
+    lm->GetCategoriesL(array);
+    AssertTrueSecL(array.Count() == 2, _L("5) Wrong number of landmark categories"));
+    iErrorsFound += CompareXMLLandmarksL(*iLandmarks[number++], *lm);
+
+    // check global category Garage globalid=8 (id=34) here
+    category = iLandmarkParser->LandmarkCategoryLC(array[0]);
+    //cat = categoryManager->ReadCategoryLC(34);
+    cat = categoryManager->ReadCategoryLC(38);
+    iErrorsFound += CompareXMLCategoriesL(*cat, *category);
+    CleanupStack::PopAndDestroy(cat);
+    CleanupStack::PopAndDestroy(category);
+
+    //Check global category "id=10 Bus Stop" here
+    category = iLandmarkParser->LandmarkCategoryLC(array[1]);
+   // cat = categoryManager->ReadCategoryLC(36);
+    cat = categoryManager->ReadCategoryLC(40);
+    iErrorsFound += CompareXMLCategoriesL(*cat, *category);
+    CleanupStack::PopAndDestroy(cat);
+    CleanupStack::PopAndDestroy(category);
+    CleanupStack::PopAndDestroy(lm);
+
+    // Check that correct number of landmarks has been parsed
+    if (number != KNrOfAddedLandmarks)
+    {
+    	iLog->Log(_L("Wrong number of landmarks parsed"));
+    	User::Leave(-1);
+    }
+    nr = iLandmarkParser->NumOfParsedLandmarks();
+    if ((TInt)nr != KNrOfAddedLandmarks)
+    {
+    	iLog->Log(_L("Wrong number of landmarks parsed"));
+    	User::Leave(-1);
+    }
+
+    if (!aUseFile) CleanupStack::PopAndDestroy(bufferContent);
+
+    CleanupStack::PopAndDestroy(&array);
+    CleanupStack::PopAndDestroy(categoryManager);
+
+    delete iLandmarkParser;
+    iLandmarkParser = NULL;
+
+    delete iOperation;
+    iOperation = NULL;
+
+    // iEncoderBuffer was allocated in CreateXMLData
+    delete iEncoderBuffer;
+    iEncoderBuffer = NULL;
+
+    iLog->Log(_L("CheckXMLData Done"));
+    }
+
+// ---------------------------------------------------------
+// CPosTp47::PrintParsedDataFromEncoderL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CPosTp47::PrintParsedDataFromEncoderL(
+    const TDesC& aFile, 
+    const TDesC8&  aBuffer, 
+    TInt aExpectedStatusCode,
+    const TDesC8& aMimeType)
+    {
+    iLog->Log(_L("===== PrintParsedDataFromEncoderL ======="));
+   
+   
+    iLandmarkParser = CPosLandmarkParser::NewL(aMimeType);
+
+    if (aFile != KNullDesC)
+        {
+        TFileName file( aFile );
+        if ( aMimeType == KGpxMimeType )
+            {
+            TInt pos = file.Find( KXmlFileExt );
+            file.Replace( pos, KXmlFileExt().Length(), KGpxFileExt );
+            }
+        iLog->Log(_L("FILE (%S)"), &file );
+        TraceL(_L("----->Using FILE<-------"));
+        iLog->Log(_L("Calling TraceL"));
+        TraceL(file);
+        iLog->Log(_L("Input file to be set"));
+        iLandmarkParser->SetInputFileL(file);
+        iLog->Log(_L("Input file set"));
+        }
+    else
+        {
+        iLog->Log(_L("BUFFER (size %d)"), aBuffer.Size() );
+        TraceL(_L("----->Using BUFFER<-------"));
+        iLandmarkParser->SetInputBuffer(aBuffer);
+        }
+
+    iOperation = iLandmarkParser->ParseContentL();
+    TRequestStatus status = KPosLmOperationNotComplete;
+    TReal32 progress;
+    TInt number = 0;
+
+    RArray<TPosLmItemId> array;
+    CleanupClosePushL(array);
+	iLog->Log(_L("Parse begin"));
+    while (status == KPosLmOperationNotComplete)
+        {
+        iLog->Log(_L("--- Parsing ---------------------------"));
+        TraceL(_L("------------------------------"));
+        iOperation->NextStep(status, progress);
+
+        // Wait for NextStep to complete
+        User::WaitForRequest(status);
+        if (status != KPosLmOperationNotComplete && status != KErrNone)
+            {
+            HBufC* buffer = HBufC::NewLC( 128);
+            TPtr buf = buffer->Des();
+                       
+            buf.Format(_L("\tStatus %d"), status.Int());
+            iLog->Log(buf);
+            TraceL(buf);
+            
+            CleanupStack::PopAndDestroy( buffer );
+            buffer = NULL;              
+            }
+        else
+            {
+            if ( iLandmarkParser->NumOfParsedLandmarks() )
+                {
+                // Get last parsed landmark
+                CPosLandmark* lm = iLandmarkParser->LandmarkLC();
+                TPtrC lmName;
+                TPtrC catName;
+                lm->GetLandmarkName(lmName);
+                lm->GetCategoriesL(array);
+                //iLog->Log(lmName);
+                for (TInt i=0;i<array.Count();i++)
+                    {
+                    CPosLandmarkCategory* category = iLandmarkParser->LandmarkCategoryLC(array[i]);
+                    category->GetCategoryName( catName );
+                     
+                    HBufC* buffer = HBufC::NewLC( 128 + catName.Length());
+                    TPtr buf = buffer->Des();
+                                            
+                    if ( category->GlobalCategory()) 
+                        {
+                        buf.Append(_L("\tGlobal category: "));    
+                        }
+                    else 
+                        {
+                        buf.Append(_L("\tLocal category: "));    
+                        }                        
+                    buf.Append(catName);
+                    iLog->Log(buf);
+                    TraceL(buf);
+                    CleanupStack::PopAndDestroy(buffer);
+                    buffer = NULL;
+                    CleanupStack::PopAndDestroy(category);
+                    }
+                    
+                if ( aMimeType == KKmlMimeType )
+                {
+                	PrintLandmarkFieldsWithDescriptionL(*lm, ETrue);	
+                }
+                else
+                {
+                	PrintLandmarkFieldsL(*lm, ETrue);	
+                }
+                
+                number++;
+                CleanupStack::PopAndDestroy(lm);
+                }
+            }
+        }
+
+    iLog->Log(_L("--- Parsing end ---------------------------"));
+    TraceL(_L("------------------------------"));
+    CleanupStack::PopAndDestroy(&array);
+
+    if (status.Int() != aExpectedStatusCode)
+        {
+        HBufC* buffer = HBufC::NewLC( 128 );
+        TPtr buf = buffer->Des();
+                    
+        buf.Format(_L("\tERROR: Wrong status returned, was %d, should be %d"), status.Int(), aExpectedStatusCode);
+        iLog->Log( buf );
+        iErrorsFound++;
+        
+        CleanupStack::PopAndDestroy( buffer );
+        buffer = NULL;        
+        }
+
+    TUint32 nr = iLandmarkParser->NumOfParsedLandmarks();
+    HBufC* buffer = HBufC::NewLC( 256 );
+    TPtr buf = buffer->Des();
+    buf.Format(_L("\tNr of Parsed landmarks %d, should be %d"), nr, number);
+    iLog->Log(buf);
+    TraceL(buf);
+
+    CleanupStack::PopAndDestroy( buffer );
+    buffer = NULL;
+    if (nr != (TUint32)number)
+        {
+        iLog->Log(_L("\tERROR: Wrong number of landmarks parsed returned!"));
+        iErrorsFound++;
+        }
+
+    TPosLmCollectionDataId lmId = iLandmarkParser->FirstCollectionDataId();
+
+    iLog->Log(_L("--- CollectionData ---"));
+    TraceL(_L("--- CollectionData ---"));
+
+    if (lmId != EPosLmCollDataNone)
+        {
+        TPtrC first = iLandmarkParser->CollectionData(lmId);
+        HBufC* buffer = HBufC::NewLC( first.Length() + 256 );
+        TPtr buf = buffer->Des();
+        buf.Zero();
+        buf.Format(_L("\t(1)Collection Id: %d CollectionData: "), lmId);
+        buf.Append(first);
+        iLog->Log(buf);
+        TraceL(buf);
+        CleanupStack::PopAndDestroy( buffer );
+        buffer = NULL;      
+        }
+    else 
+        {
+        iLog->Log(_L("\tNo collection data found 1"));    
+        }
+
+    while (lmId != EPosLmCollDataNone)
+        {
+        lmId = iLandmarkParser->NextCollectionDataId(lmId);
+        if (lmId != EPosLmCollDataNone)
+        {
+            TPtrC first = iLandmarkParser->CollectionData(lmId);
+            
+            HBufC* buffer = HBufC::NewLC( first.Length() + 256 );
+            TPtr buf = buffer->Des();         
+            buf.Zero();
+            buf.Format(_L("\t(2)Collection Id: %d CollectionData: "), lmId);
+            buf.Append(first);
+            iLog->Log(buf);
+            TraceL(buf);
+            
+            CleanupStack::PopAndDestroy( buffer );
+            buffer = NULL;              
+        }
+        else 
+            {
+            iLog->Log(_L("\tNo collection data found 2"));   
+            }
+        }
+
+    iLog->Log(_L("--- CollectionData ---"));
+    TraceL(_L("--- CollectionData ---"));
+    
+	
+    delete iOperation;
+    iOperation = NULL;
+    delete iLandmarkParser;
+    iLandmarkParser = NULL;
+    iLog->Log(_L("====== PrintParsedDataFromEncoderL Done ========\n"));
+    }
+
+// ---------------------------------------------------------
+// CPosTp47::PrintLandmarkFieldsL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CPosTp47::PrintLandmarkFieldsL(const CPosLandmark& aLandmark, TBool aTraceFlag)
+    {
+    TPositionFieldId sourceFieldId = aLandmark.FirstPositionFieldId();
+    TLocality loc;
+
+    TInt err;
+    TPtrC landmarkName;
+    err = aLandmark.GetLandmarkName(landmarkName);
+    if (err == KErrNone)
+        {
+        HBufC* buffer = HBufC::NewLC( landmarkName.Length() + 256 );
+        TPtr buf = buffer->Des();
+                    
+        buf.Append( _L(" \tLandmark Name: "));
+        buf.Append( landmarkName );
+        iLog->Log( buf );
+        if( aTraceFlag ) 
+            {
+            TraceL( buf );   
+            }
+            
+        CleanupStack::PopAndDestroy( buffer );
+        buffer = NULL;  
+        }
+
+    err = aLandmark.GetPosition(loc);
+    if (err == KErrNone)
+        {
+        HBufC* buffer = HBufC::NewLC( 1024 );
+        TPtr buf = buffer->Des();        
+        TRealFormat format( 12, KRealFormatFixed );
+        format.iPoint = TChar('.');
+        format.iTriLen = KDoNotUseTriads;
+        format.iPlaces = 6;
+        
+        TBuf<20> sLon, sLat, sVacc, sHacc, sAlt, sRad;
+        sLon.Num( loc.Longitude(), format );
+        sLat.Num( loc.Latitude(), format );
+        sAlt.Num( loc.Altitude(), format );
+        sVacc.Num( loc.VerticalAccuracy(), format );
+        sHacc.Num( loc.HorizontalAccuracy(), format );
+        buf.Format(
+            _L("\tLM: Long %S Lat %S vertAcc %S horAcc %S alt %S "), 
+            &sLon, &sLat, &sVacc, &sHacc, &sAlt);
+        
+        TReal32 sourceR;
+        err = aLandmark.GetCoverageRadius(sourceR);
+        if (err == KErrNone )
+            {
+            sRad.Num( sourceR, format );
+            buf.AppendFormat(_L("srcRadius %S"), &sRad);
+            }
+        iLog->Log(buf);
+        if (aTraceFlag) TraceL(buf);
+        CleanupStack::PopAndDestroy(buffer);
+        }
+
+    while (sourceFieldId != EPositionFieldNone)
+        {
+        TPtrC sourceValue;
+        aLandmark.GetPositionField(sourceFieldId, sourceValue);
+        HBufC* buffer = HBufC::NewLC( sourceValue.Length() + 256 );
+        TPtr buf = buffer->Des();  
+        buf.Format(_L("\tIdField Id: %d Value:"), sourceFieldId);
+        buf.Append(sourceValue);
+        iLog->Log(buf);
+        if ( aTraceFlag ) 
+            {
+            TraceL( buf );
+            }
+        sourceFieldId = aLandmark.NextPositionFieldId(sourceFieldId);
+        
+        CleanupStack::PopAndDestroy( buffer );
+        }
+    }
+    
+    
+ // ---------------------------------------------------------
+// CPosTp47::PrintLandmarkFieldsWithDescriptionL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CPosTp47::PrintLandmarkFieldsWithDescriptionL(const CPosLandmark& aLandmark, TBool aTraceFlag)
+    {
+    TPositionFieldId sourceFieldId = aLandmark.FirstPositionFieldId();
+    TLocality loc;
+       
+
+    TInt err;
+    TPtrC landmarkName;
+    TPtrC landmarkDescription;
+    err = aLandmark.GetLandmarkName(landmarkName);
+    if (err == KErrNone)
+        {
+        HBufC* buffer = HBufC::NewLC( landmarkName.Length() + 256 );
+        TPtr buf = buffer->Des();
+        buf.Append(_L("\tLandmark Name: "));
+        buf.Append(landmarkName);
+        iLog->Log(buf);
+        if( aTraceFlag ) 
+            {
+            TraceL( buf );   
+            }
+            
+        CleanupStack::PopAndDestroy( buffer );
+        buffer = NULL;  
+        }
+
+    err = aLandmark.GetPosition(loc);
+    if (err == KErrNone)
+        {
+        HBufC* buffer = HBufC::NewLC( 1024 );
+        TPtr buf = buffer->Des(); 
+        TRealFormat format( 12, KRealFormatFixed );
+        format.iPoint = TChar('.');
+        format.iTriLen = KDoNotUseTriads;
+        format.iPlaces = 6;
+        
+        TBuf<20> sLon, sLat, sVacc, sHacc, sAlt, sRad;
+        sLon.Num( loc.Longitude(), format );
+        sLat.Num( loc.Latitude(), format );
+        sAlt.Num( loc.Altitude(), format );
+        sVacc.Num( loc.VerticalAccuracy(), format );
+        sHacc.Num( loc.HorizontalAccuracy(), format );
+        buf.Format(
+            _L("\tLM: Long %S Lat %S vertAcc %S horAcc %S alt %S "), 
+            &sLon, &sLat, &sVacc, &sHacc, &sAlt);
+        
+        TReal32 sourceR;
+        err = aLandmark.GetCoverageRadius(sourceR);
+        if (err == KErrNone )
+            {
+            sRad.Num( sourceR, format );
+            buf.AppendFormat(_L("srcRadius %S"), &sRad);
+            }
+        iLog->Log(buf);
+        if (aTraceFlag) TraceL(buf);
+        CleanupStack::PopAndDestroy( buffer );
+        buffer = NULL;  
+        }
+        
+      //Get landmark description  
+      err = aLandmark.GetLandmarkDescription(landmarkDescription);
+      if (err == KErrNone)
+        {
+        HBufC* buffer = HBufC::NewLC( landmarkDescription.Length() + 256 );
+        TPtr buf = buffer->Des();         
+        buf.Format(_L("\tLandmark Description: "));
+        buf.Append(landmarkDescription);
+        iLog->Log(buf);
+        if ( aTraceFlag ) 
+            {
+            TraceL( buf );    
+            }
+        
+        CleanupStack::PopAndDestroy( buffer );
+        buffer = NULL;         
+        }  
+    
+
+    while (sourceFieldId != EPositionFieldNone)
+        {
+        TPtrC sourceValue;
+        aLandmark.GetPositionField(sourceFieldId, sourceValue);
+        
+        HBufC* buffer = HBufC::NewLC( sourceValue.Length() + 256 );
+        TPtr buf = buffer->Des();  
+        buf.Format(_L("\tIdField Id: %d Value:"), sourceFieldId);
+        buf.Append(sourceValue);
+        iLog->Log(buf);
+        if ( aTraceFlag ) 
+            {
+            TraceL( buf );
+            }
+        sourceFieldId = aLandmark.NextPositionFieldId(sourceFieldId);
+        
+		    CleanupStack::PopAndDestroy(buffer);    
+		    }
+}
+// ---------------------------------------------------------
+// CPosTp47::TraceL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CPosTp47::TraceL(const TDesC& msg)
+    {
+    _LIT8( KEnd, "\r\n" );
+
+    RFile file;
+    TInt err = file.Open(iFileSession, KFileTrace, EFileWrite);
+    if (err == KErrNotFound)
+        {
+        file.Create(iFileSession, KFileTrace, EFileWrite);
+        }
+
+    HBufC8* line8 = CnvUtfConverter::ConvertFromUnicodeToUtf8L( msg );
+    
+    TInt pos( 0 );
+    file.Seek( ESeekEnd, pos );
+    file.Write( *line8 );
+    file.Write( KEnd );
+    file.Close();
+
+    delete line8;
+    }
+
+void CPosTp47::MakeEmptyLmDatabaseL( CPosLandmarkDatabase& aLdb,
+                                     CPosLmCategoryManager& aCatMgr )
+    {
+
+    CPosLmOperation* operation1 = aLdb.RemoveAllLandmarksL();
+    //Remove all landmarks from default db : Sync call
+    ExecuteAndDeleteLD( operation1 );
+
+    RArray<TPosLmItemId> catArray;
+    CleanupClosePushL( catArray );
+
+    // Get all the categories from the database and delete them if necessary
+    CPosLmItemIterator* iter = aCatMgr.CategoryIteratorL();
+    CleanupStack::PushL( iter );
+
+    TUint count = iter->NumOfItemsL();
+    if ( count > 0 )
+        { // can only be called if there are some items
+        iter->GetItemIdsL( catArray, 0, count );
+        }
+
+    // Remove all the categories here Sync call
+    ExecuteAndDeleteLD(aCatMgr.RemoveCategoriesL( catArray ));
+    CleanupStack::PopAndDestroy( 2 ); // catArray, iter
+    }
+//  End of File