diff -r b12ea03c50a3 -r 834e27cad510 landmarks/locationlandmarks/tsrc/LandmarkTestModule/src/FT_CPosTp47.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/landmarks/locationlandmarks/tsrc/LandmarkTestModule/src/FT_CPosTp47.cpp Tue Jul 06 14:44:11 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 the License "Symbian Foundation License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* ?description_line +* +*/ + +// INCLUDES +#include "FT_CPosTp47.h" +#include +#include +#include +#include +#include +#include +#include +#include + +// 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 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 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;iLandmarkCategoryLC(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 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