diff -r 000000000000 -r e686773b3f54 phonebookengines/contactsmodel/tsrc/T_TimeIS.CPP --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phonebookengines/contactsmodel/tsrc/T_TimeIS.CPP Tue Feb 02 10:12:17 2010 +0200 @@ -0,0 +1,872 @@ +// Copyright (c) 2003-2009 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: +// This test code tests the vCard import / export functionality that was introduced as a result of the +// defect DEF023159. This defect requires the implementation of a flag which tells the import/export +// routines to ignore white-space only valued properties within a Contact Entry / vCard file. +// +// + +#include "t_timeis.h" +#include +#include +// include templates for CleanupResetAndDestroyPushL(T) +#include "cntviewprivate.h" + + +RTest test(_L("T_TimeIS - exp/importing using TimeIS protocol")); + +const TPtrC KDatabaseName=_L("C:TimeISdb.cdb"); + +const TPtrC KTestFile4_1=_L("Z:\\t_TimeIS\\Connectivity.vcf"); + +const TPtrC KTestFile1_1=_L("C:\\Test1_1.vcf"); +const TPtrC KTestFile1_2=_L("C:\\Test1_2.vcf"); +const TPtrC KTestFile1_3=_L("C:\\Test1_3.vcf"); +const TPtrC KTestFile3_1=_L("C:\\Test3_1.vcf"); +const TPtrC KTestFile5_1=_L("C:\\Test5_1.vcf"); +const TPtrC KTestFile5_2=_L("C:\\Test5_2.vcf"); +const TPtrC KTestFile5_3=_L("C:\\Test5_3.vcf"); +const TPtrC KTestFile6_1=_L("C:\\Test6_1.vcf"); +const TPtrC KTestFile6_2=_L("C:\\Test6_2.vcf"); +const TPtrC KTestFile7_1=_L("C:\\Test7_1.vcf"); +const TPtrC KTestFile7_2=_L("C:\\Test7_2.vcf"); +const TPtrC KTestFile7_3=_L("C:\\Test7_3.vcf"); +const TPtrC KTestFile8_1=_L("C:\\Test8_1.vcf"); +const TPtrC KTestFile8_2=_L("C:\\Test8_2.vcf"); +const TPtrC KTestFile8_3=_L("C:\\Test8_3.vcf"); + + +CTimeISTest::CTimeISTest() + { + + } // Contructor + + +CTimeISTest::~CTimeISTest() + { + delete iDb; + CActiveScheduler* scheduler=CActiveScheduler::Current(); //get current + CActiveScheduler::Install(NULL); //uninstall + delete scheduler; // delete uninstalled scheduler + iFs.Close(); + } // Destructor + +CTimeISTest* CTimeISTest::NewLC(RTest& aTest) + { + CTimeISTest* self=new(ELeave) CTimeISTest(); + CleanupStack::PushL(self); + self->ConstructL(aTest); + return(self); + } //NewLC + +void CTimeISTest::CloseDb() + { + delete iDb; + iDb = 0; + } + +void CTimeISTest::ConstructL(RTest& aTest) + { + User::LeaveIfError(iFs.Connect()); + CActiveScheduler::Install(new(ELeave) CActiveScheduler); + iTest = &aTest; + iDb = CContactDatabase::ReplaceL(KDatabaseName); + }; // ConstructL + +// ---------------- Utility Methods + +// Using a text string, create a vCard. Return the pointer to the newly created instance +// The caller will take ownership of it. + +CParserVCard* CTimeISTest::CreateVCardLC(const TDesC8& aContents) + { + CParserVCard* vCardParser=CParserVCard::NewL(); + CleanupStack::PushL(vCardParser); + + RDesReadStream stream(aContents); + stream.PushL(); + vCardParser->InternalizeL(stream); + CleanupStack::PopAndDestroy(); // stream + return vCardParser; + } + +// Externalise the VCard to the file. If the file does not exist it is created, if the +// file already exists it is overwritted. +void CTimeISTest::WriteVCardL(const TDesC& aFileName, CParserVCard& aVCard) + { + RFileWriteStream vCardWrite; + vCardWrite.PushL(); + User::LeaveIfError(vCardWrite.Replace(iFs,aFileName,EFileWrite)); + aVCard.ExternalizeL(vCardWrite); + vCardWrite.CommitL(); + CleanupStack::PopAndDestroy(); //vCardWrite + } + +// Find a field value of type aFieldType and return true if it matches the aExpected value. +TBool CTimeISTest::CheckSingleFieldValue(CContactItemFieldSet& aFieldSet, TFieldType aFieldType, const TDesC& aExpectedValue) + { + TBool correctValue = EFalse; + + TInt pos = aFieldSet.Find(aFieldType); + if (pos != KErrNotFound) + { + // Verify + CContactItemField& field = aFieldSet[pos]; + CContactTextField* storage = field.TextStorage(); + correctValue = (storage->Text().CompareF(aExpectedValue) == 0); + } + // + return correctValue; + } + +// Find a parameter and field value of type aFieldType and return true if it matches the aExpected value. +TBool CTimeISTest::CheckSingleParameterFieldValues(CContactItemFieldSet& aFieldSet, TFieldType aFieldType, TUid aMapping, const TDesC& aExpectedValue, TBool aFieldPresent) + { + TBool correctValue = EFalse; + TInt pos = 0; + + TBool fieldFound = EFalse; + TInt startPos = KContactFieldSetSearchAll; + + while(!fieldFound && !(pos == KErrNotFound)) + { + pos = aFieldSet.FindNext(aFieldType, startPos); + startPos = pos + 1; + if (pos != KErrNotFound ) + { + CContactItemField& tempField = aFieldSet[pos]; + const CContentType& tempContentType = tempField.ContentType(); + + if (aMapping == KNullUid) + { + TBool additionalMapFound = EFalse; + additionalMapFound |= tempContentType.ContainsFieldType(KUidContactFieldVCardMapHOME); + additionalMapFound |= tempContentType.ContainsFieldType(KUidContactFieldVCardMapWORK); + additionalMapFound |= tempContentType.ContainsFieldType(KUidContactFieldVCardMapPREF); + if (!additionalMapFound) + { + fieldFound = ETrue; + } + } + else + { + fieldFound = tempContentType.ContainsFieldType(aMapping); + } + } + } + + if (fieldFound) + { + CContactItemField& aItemField = aFieldSet[pos]; + + // Verify + CContactTextField* storage = aItemField.TextStorage(); + correctValue = (storage->Text().CompareF(aExpectedValue) == 0); + } + if (!aFieldPresent && !fieldFound) + { + correctValue = ETrue; + } + + return correctValue; + } + +// Create a contact entry in the Contact Database and return the ID + +TContactItemId CTimeISTest::CreateContactL() + { + const TContactItemId templateId = iDb->TemplateId(); + CContactItem* templateCard = iDb->ReadContactLC(templateId); + CContactCard* card = CContactCard::NewL(templateCard); + CleanupStack::PushL(card); + // + CContactItemFieldSet& cardFields=card->CardFields(); + // Set the telephone number + TInt pos=cardFields.Find(KUidContactFieldPhoneNumber); + if (pos!=KErrNotFound) + { + cardFields[pos].SetMapping(KUidContactFieldVCardMapTEL); + cardFields[pos].TextStorage()->SetTextL(_L("1234")); + } + // Set the label + pos=cardFields.Find(KUidContactFieldNote); + if (pos!=KErrNotFound) + { + cardFields[pos].SetMapping(KUidContactFieldVCardMapLABEL); + cardFields[pos].TextStorage()->SetTextL(_L(" ")); + } + // + const TContactItemId id = iDb->AddNewContactL(*card); + CleanupStack::PopAndDestroy(2, templateCard); + return id; + } + + +// Read in the file and parse it using Versit +CParserVCard* CTimeISTest::ParseVCardLC(const TDesC& aFilename) + { + CParserVCard* vCardParser=CParserVCard::NewL(); + CleanupStack::PushL(vCardParser); + // + RFile readFile; + const TInt error = readFile.Open(iFs, aFilename, EFileRead); + User::LeaveIfError(error); + CleanupClosePushL(readFile); + // + RFileReadStream stream(readFile); + stream.PushL(); + vCardParser->InternalizeL(stream); + CleanupStack::PopAndDestroy(); // stream + CleanupStack::PopAndDestroy(); // readFile + return vCardParser; + } + + +// ---------------- Test Methods + +CArrayPtr* CTimeISTest::ImportVCardLC(const TDesC& aFilename, TBool aConnectWhitespaceOption) + { + CArrayPtr* contactItems; + RFileReadStream vCardRead; + TBool importOK; + + vCardRead.PushL(); + User::LeaveIfError(vCardRead.Open(iFs,aFilename,EFileRead)); + // Just a precaution. This array must be empty before we go and add more data + if (aConnectWhitespaceOption) + { + contactItems = iDb->ImportContactsL(TUid::Uid(KUidVCardConvDefaultImpl),vCardRead,importOK,(CContactVCardConverter::EImportSingleContact | CContactVCardConverter::EConnectWhitespace)); + } + else + { + contactItems = iDb->ImportContactsL(TUid::Uid(KUidVCardConvDefaultImpl),vCardRead,importOK,(CContactVCardConverter::EImportSingleContact)); + } + CleanupStack::PopAndDestroy(); // vCardRead + CleanupStack::PushL(contactItems); + return contactItems; + } + +void CTimeISTest::TestOneL() + { + // Create a vCard with actual telephone number + iTest->Printf(_L("Creating test vCard Files\n")); + _LIT8(KRealTel, "BEGIN:VCARD\r\nVERSION:2.1\r\nUID:1\r\nNOTE:text\r\nEND:VCARD\r\n"); + CParserVCard* vCard = CreateVCardLC(KRealTel); + WriteVCardL(KTestFile1_1,*vCard); + CleanupStack::PopAndDestroy(vCard); + // Create a vCard with spaced telephone number + _LIT8(KSpaceTel, "BEGIN:VCARD\r\nVERSION:2.1\r\nUID:1\r\nNOTE: \r\nTEL:1\r\nEND:VCARD\r\n"); + vCard = CreateVCardLC(KSpaceTel); + WriteVCardL(KTestFile1_2,*vCard); + CleanupStack::PopAndDestroy(vCard); + // Create a vCard with null telephone number + _LIT8(KNULLTel, "BEGIN:VCARD\r\nVERSION:2.1\r\nUID:1\r\nNOTE:\r\nTEL:1\r\nEND:VCARD\r\n"); + vCard = CreateVCardLC(KNULLTel); + WriteVCardL(KTestFile1_3,*vCard); + CleanupStack::PopAndDestroy(vCard); + + + // Now import the files and check the behaviour + iTest->Printf(_L("Importing vCard files to contacts\n")); + iTest->Printf(_L("New File\n")); + CArrayPtr* contactItems = ImportVCardLC(KTestFile1_1); + (*iTest)(contactItems->Count() == 1); + CContactItem* cItem = iDb->ReadContactLC(contactItems->At(0)->Id()); + (*iTest)(CheckSingleFieldValue(cItem->CardFields(),KUidContactFieldNote,_L("text"))); + contactItems->ResetAndDestroy(); + CleanupStack::PopAndDestroy(cItem); + CleanupStack::PopAndDestroy(contactItems); + + + iTest->Printf(_L("Spaced value field\n")); + contactItems = ImportVCardLC(KTestFile1_2); + (*iTest)(contactItems->Count() == 1); + cItem = iDb->ReadContactLC(contactItems->At(0)->Id()); + (*iTest)(CheckSingleFieldValue(cItem->CardFields(),KUidContactFieldNote,_L("text"))); + contactItems->ResetAndDestroy(); + CleanupStack::PopAndDestroy(cItem); + CleanupStack::PopAndDestroy(contactItems); + + iTest->Printf(_L("NULL value field\n")); + contactItems = ImportVCardLC(KTestFile1_3); + (*iTest)(contactItems->Count() == 1); + cItem = iDb->ReadContactLC(contactItems->At(0)->Id()); + (*iTest)(CheckSingleFieldValue(cItem->CardFields(),KUidContactFieldNote,_L(""))); + contactItems->ResetAndDestroy(); + CleanupStack::PopAndDestroy(cItem); + CleanupStack::PopAndDestroy(contactItems); + + iTest->Printf(_L("Behaviour correct\n")); + } + +void CTimeISTest::TestTwoL() + { + // Create a vCard with actual telephone number, Home Work Preferred and default addresses. + iTest->Printf(_L("Creating test vCard Files\n")); + _LIT8(KNewN, "BEGIN:VCARD\r\nVERSION:2.1\r\nUID:1\r\nN:A;B;C\r\nEND:VCARD\r\n"); + CParserVCard* vCard = CreateVCardLC(KNewN); + WriteVCardL(KTestFile1_1,*vCard); + CleanupStack::PopAndDestroy(vCard); + // Create a vCard with spaced telephone number, null address regions. + _LIT8(KModN, "BEGIN:VCARD\r\nVERSION:2.1\r\nUID:1\r\nN:A;;C\r\nTEL:1\r\nEND:VCARD\r\n"); + vCard = CreateVCardLC(KModN); + WriteVCardL(KTestFile1_2,*vCard); + CleanupStack::PopAndDestroy(vCard); + // Create a vCard with null telephone number, spaced address localities. + _LIT8(KDelN, "BEGIN:VCARD\r\nVERSION:2.1\r\nUID:1\r\nN: ;;C\r\nTEL:2\r\nEND:VCARD\r\n"); + vCard = CreateVCardLC(KDelN); + WriteVCardL(KTestFile1_3,*vCard); + CleanupStack::PopAndDestroy(vCard); + + // Now import the files and check the behaviour + iTest->Printf(_L("Importing vCard files to contacts\n")); + iTest->Printf(_L("New File\n")); + CArrayPtr* contactItems = ImportVCardLC(KTestFile1_1); + (*iTest)(contactItems->Count() == 1); + CContactItem* cItem = iDb->ReadContactLC(contactItems->At(0)->Id()); + + (*iTest)(CheckSingleFieldValue(cItem->CardFields(),KUidContactFieldFamilyName,_L("A"))); + (*iTest)(CheckSingleFieldValue(cItem->CardFields(),KUidContactFieldGivenName,_L("B"))); + (*iTest)(CheckSingleFieldValue(cItem->CardFields(),KUidContactFieldAdditionalName,_L("C"))); + + contactItems->ResetAndDestroy(); + CleanupStack::PopAndDestroy(cItem); + CleanupStack::PopAndDestroy(contactItems); + + + iTest->Printf(_L("A non supported field\n")); + contactItems = ImportVCardLC(KTestFile1_2); + (*iTest)(contactItems->Count() == 1); + cItem = iDb->ReadContactLC(contactItems->At(0)->Id()); + (*iTest)(CheckSingleFieldValue(cItem->CardFields(),KUidContactFieldFamilyName,_L("A"))); + (*iTest)(CheckSingleFieldValue(cItem->CardFields(),KUidContactFieldGivenName,_L("B"))); + (*iTest)(CheckSingleFieldValue(cItem->CardFields(),KUidContactFieldAdditionalName,_L("C"))); + contactItems->ResetAndDestroy(); + CleanupStack::PopAndDestroy(cItem); + CleanupStack::PopAndDestroy(contactItems); + + + iTest->Printf(_L("Empty field\n")); + contactItems = ImportVCardLC(KTestFile1_3); + (*iTest)(contactItems->Count() == 1); + cItem = iDb->ReadContactLC(contactItems->At(0)->Id()); + (*iTest)(CheckSingleFieldValue(cItem->CardFields(),KUidContactFieldFamilyName,_L(""))); + (*iTest)(CheckSingleFieldValue(cItem->CardFields(),KUidContactFieldGivenName,_L("B"))); + (*iTest)(CheckSingleFieldValue(cItem->CardFields(),KUidContactFieldAdditionalName,_L("C"))); + contactItems->ResetAndDestroy(); + CleanupStack::PopAndDestroy(cItem); + CleanupStack::PopAndDestroy(contactItems); + } + + +void CTimeISTest::TestThree() + { + iTest->Printf(_L("Testing Export\n")); + // Create a contacts entry and export it via CntVCard + iTest->Printf(_L("Creating the Contact and exporting it\n")); + CContactIdArray* idArray = CContactIdArray::NewLC(); + TContactItemId contactID = CreateContactL(); + idArray->AddL(contactID); + RFileWriteStream vCardWrite; + vCardWrite.PushL(); + User::LeaveIfError(vCardWrite.Replace(iFs,KTestFile3_1,EFileWrite)); + iDb->ExportSelectedContactsL(TUid::Uid(KUidVCardConvDefaultImpl),*idArray,vCardWrite,(CContactVCardConverter::EImportSingleContact | CContactVCardConverter::EConnectWhitespace)); + vCardWrite.CommitL(); + CleanupStack::PopAndDestroy(); //vCardWrite + CleanupStack::PopAndDestroy(idArray); + // Verify that the card contains a telephone field and NOT a LABEL field. + iTest->Printf(_L("Checking its contents\n")); + const TUid KVersitTELPropertyValueType = { KVersitPropertyHBufCUid }; + const TUid KVersitLABELPropertyValueType = { KVersitPropertyHBufCUid }; + CParserVCard* parser = ParseVCardLC(KTestFile3_1); + CArrayPtr* properties = parser->PropertyL(KVersitTokenTEL,KVersitTELPropertyValueType, EFalse); + // If properties were found this will have a value + (*iTest)(!(properties == NULL)); + delete properties; + properties = parser->PropertyL(KVersitTokenLABEL,KVersitLABELPropertyValueType, EFalse); + // If properties were found this will have a value + (*iTest)(properties == NULL); + CleanupStack::PopAndDestroy(parser); + } + +void CTimeISTest::TestFour() + { + // Create a badly formatted vCard. + iTest->Printf(_L("Importing bad vCard to contacts\n")); + CArrayPtr* contactItems = ImportVCardLC(KTestFile4_1); + + (*iTest)(contactItems->Count() == 1); + contactItems->ResetAndDestroy(); + CleanupStack::PopAndDestroy(contactItems); + } + +void CTimeISTest::TestFiveL() + { + // Create a vCard with actual telephone number, Home Work Preferred and default addresses. + iTest->Printf(_L("Creating test vCard Files\n")); + _LIT8(KNewN, "BEGIN:VCARD\r\nVERSION:2.1\r\nUID:3\r\nADR;HOME:;;;HLocal;HRegion;HPost;\r\nADR;WORK:;;;WLocal;WRegion;WPost;\r\nADR:;;;Local;Region;Post;\r\nADR;PREF:;;;PLocal;PRegion;PPost;\r\nEND:VCARD\r\n"); + CParserVCard* vCard = CreateVCardLC(KNewN); + WriteVCardL(KTestFile5_1,*vCard); + CleanupStack::PopAndDestroy(vCard); + // Create a vCard with spaced telephone number, null address regions. + _LIT8(KModN, "BEGIN:VCARD\r\nVERSION:2.1\r\nUID:3\r\nADR;HOME:;;;HLocal;;HPost;\r\nADR;WORK:;;;WLocal;;WPost;\r\nADR:;;;Local;;Post;\r\nADR;PREF:;;;PLocal;;PPost;\r\nEND:VCARD\r\n"); + vCard = CreateVCardLC(KModN); + WriteVCardL(KTestFile5_2,*vCard); + CleanupStack::PopAndDestroy(vCard); + // Create a vCard with null telephone number, spaced address localities. + _LIT8(KDelN, "BEGIN:VCARD\r\nVERSION:2.1\r\nUID:3\r\nADR;HOME:;;; ;;HPost;\r\nADR;WORK:;;; ;;WPost;\r\nADR:;;; ;;Post;\r\nADR;PREF:;;; ;;PPost;\r\nEND:VCARD\r\n"); + vCard = CreateVCardLC(KDelN); + WriteVCardL(KTestFile5_3,*vCard); + CleanupStack::PopAndDestroy(vCard); + + // Now import the files and check the behaviour + iTest->Printf(_L("Importing vCard files to contacts -Test 5\n")); + iTest->Printf(_L("New File -Test 5\n\r")); + CArrayPtr* contactItems = ImportVCardLC(KTestFile5_1); + (*iTest)(contactItems->Count() == 1); + CContactItem* cItem = iDb->ReadContactLC(contactItems->At(0)->Id()); + + (*iTest)(CheckSingleParameterFieldValues(cItem->CardFields(),KUidContactFieldLocality,KUidContactFieldVCardMapHOME,_L("HLocal"))); + (*iTest)(CheckSingleParameterFieldValues(cItem->CardFields(),KUidContactFieldLocality,KUidContactFieldVCardMapWORK,_L("WLocal"))); + (*iTest)(CheckSingleParameterFieldValues(cItem->CardFields(),KUidContactFieldLocality,KNullUid,_L("Local"))); + (*iTest)(CheckSingleParameterFieldValues(cItem->CardFields(),KUidContactFieldLocality,KUidContactFieldVCardMapPREF,_L("PLocal"))); + (*iTest)(CheckSingleParameterFieldValues(cItem->CardFields(),KUidContactFieldRegion,KUidContactFieldVCardMapHOME,_L("HRegion"))); + (*iTest)(CheckSingleParameterFieldValues(cItem->CardFields(),KUidContactFieldRegion,KUidContactFieldVCardMapWORK,_L("WRegion"))); + (*iTest)(CheckSingleParameterFieldValues(cItem->CardFields(),KUidContactFieldRegion,KNullUid,_L("Region"))); + (*iTest)(CheckSingleParameterFieldValues(cItem->CardFields(),KUidContactFieldRegion,KUidContactFieldVCardMapPREF,_L("PRegion"))); + (*iTest)(CheckSingleParameterFieldValues(cItem->CardFields(),KUidContactFieldPostcode,KUidContactFieldVCardMapHOME,_L("HPost"))); + (*iTest)(CheckSingleParameterFieldValues(cItem->CardFields(),KUidContactFieldPostcode,KUidContactFieldVCardMapWORK,_L("WPost"))); + (*iTest)(CheckSingleParameterFieldValues(cItem->CardFields(),KUidContactFieldPostcode,KNullUid,_L("Post"))); + (*iTest)(CheckSingleParameterFieldValues(cItem->CardFields(),KUidContactFieldPostcode,KUidContactFieldVCardMapPREF,_L("PPost"))); + + contactItems->ResetAndDestroy(); + CleanupStack::PopAndDestroy(cItem); + CleanupStack::PopAndDestroy(contactItems); + + iTest->Printf(_L("A non supported field -Test 5\n\r")); + contactItems = ImportVCardLC(KTestFile5_2); + (*iTest)(contactItems->Count() == 1); + cItem = iDb->ReadContactLC(contactItems->At(0)->Id()); + + (*iTest)(CheckSingleParameterFieldValues(cItem->CardFields(),KUidContactFieldLocality,KUidContactFieldVCardMapHOME,_L("HLocal"))); + (*iTest)(CheckSingleParameterFieldValues(cItem->CardFields(),KUidContactFieldLocality,KUidContactFieldVCardMapWORK,_L("WLocal"))); + (*iTest)(CheckSingleParameterFieldValues(cItem->CardFields(),KUidContactFieldLocality,KNullUid,_L("Local"))); + (*iTest)(CheckSingleParameterFieldValues(cItem->CardFields(),KUidContactFieldLocality,KUidContactFieldVCardMapPREF,_L("PLocal"))); + (*iTest)(CheckSingleParameterFieldValues(cItem->CardFields(),KUidContactFieldRegion,KUidContactFieldVCardMapHOME,_L("HRegion"))); + (*iTest)(CheckSingleParameterFieldValues(cItem->CardFields(),KUidContactFieldRegion,KUidContactFieldVCardMapWORK,_L("WRegion"))); + (*iTest)(CheckSingleParameterFieldValues(cItem->CardFields(),KUidContactFieldRegion,KNullUid,_L("Region"))); + (*iTest)(CheckSingleParameterFieldValues(cItem->CardFields(),KUidContactFieldRegion,KUidContactFieldVCardMapPREF,_L("PRegion"))); + (*iTest)(CheckSingleParameterFieldValues(cItem->CardFields(),KUidContactFieldPostcode,KUidContactFieldVCardMapHOME,_L("HPost"))); + (*iTest)(CheckSingleParameterFieldValues(cItem->CardFields(),KUidContactFieldPostcode,KUidContactFieldVCardMapWORK,_L("WPost"))); + (*iTest)(CheckSingleParameterFieldValues(cItem->CardFields(),KUidContactFieldPostcode,KNullUid,_L("Post"))); + (*iTest)(CheckSingleParameterFieldValues(cItem->CardFields(),KUidContactFieldPostcode,KUidContactFieldVCardMapPREF,_L("PPost"))); + + contactItems->ResetAndDestroy(); + CleanupStack::PopAndDestroy(cItem); + CleanupStack::PopAndDestroy(contactItems); + + + iTest->Printf(_L("Empty field -Test 5\n\r")); + contactItems = ImportVCardLC(KTestFile5_3); + (*iTest)(contactItems->Count() == 1); + cItem = iDb->ReadContactLC(contactItems->At(0)->Id()); + + (*iTest)(CheckSingleParameterFieldValues(cItem->CardFields(),KUidContactFieldLocality,KUidContactFieldVCardMapHOME,_L(""))); + (*iTest)(CheckSingleParameterFieldValues(cItem->CardFields(),KUidContactFieldLocality,KUidContactFieldVCardMapWORK,_L(""))); + (*iTest)(CheckSingleParameterFieldValues(cItem->CardFields(),KUidContactFieldLocality,KNullUid,_L(""), EFalse)); + (*iTest)(CheckSingleParameterFieldValues(cItem->CardFields(),KUidContactFieldLocality,KUidContactFieldVCardMapPREF,_L(""), EFalse)); + (*iTest)(CheckSingleParameterFieldValues(cItem->CardFields(),KUidContactFieldRegion,KUidContactFieldVCardMapHOME,_L("HRegion"))); + (*iTest)(CheckSingleParameterFieldValues(cItem->CardFields(),KUidContactFieldRegion,KUidContactFieldVCardMapWORK,_L("WRegion"))); + (*iTest)(CheckSingleParameterFieldValues(cItem->CardFields(),KUidContactFieldRegion,KNullUid,_L("Region"))); + (*iTest)(CheckSingleParameterFieldValues(cItem->CardFields(),KUidContactFieldRegion,KUidContactFieldVCardMapPREF,_L("PRegion"))); + (*iTest)(CheckSingleParameterFieldValues(cItem->CardFields(),KUidContactFieldPostcode,KUidContactFieldVCardMapHOME,_L("HPost"))); + (*iTest)(CheckSingleParameterFieldValues(cItem->CardFields(),KUidContactFieldPostcode,KUidContactFieldVCardMapWORK,_L("WPost"))); + (*iTest)(CheckSingleParameterFieldValues(cItem->CardFields(),KUidContactFieldPostcode,KNullUid,_L("Post"))); + (*iTest)(CheckSingleParameterFieldValues(cItem->CardFields(),KUidContactFieldPostcode,KUidContactFieldVCardMapPREF,_L("PPost"))); + + contactItems->ResetAndDestroy(); + CleanupStack::PopAndDestroy(cItem); + CleanupStack::PopAndDestroy(contactItems); + } + + +void CTimeISTest::TestSixL() + { + // Create a vCard with actual telephone number, Home Work Preferred and default addresses. + iTest->Printf(_L("Creating test vCard Files\n")); + _LIT8(KNewN, "BEGIN:VCARD\r\nVERSION:2.1\r\nUID:5\r\nADR;HOME:;;;HLocal;HRegion;HPost;\r\nEND:VCARD\r\n"); + CParserVCard* vCard = CreateVCardLC(KNewN); + WriteVCardL(KTestFile6_1,*vCard); + CleanupStack::PopAndDestroy(vCard); + // Create a vCard with spaced telephone number, null address regions. + _LIT8(KModN, "BEGIN:VCARD\r\nVERSION:2.1\r\nUID:5\r\nADR;WORK:;;;WLocal;WRegion;WPost;\r\nEND:VCARD\r\n"); + vCard = CreateVCardLC(KModN); + WriteVCardL(KTestFile6_2,*vCard); + CleanupStack::PopAndDestroy(vCard); + + // Now import the files and check the behaviour + iTest->Printf(_L("Importing vCard files to contacts -Test 6\n")); + iTest->Printf(_L("New File -Test 6\n\r")); + CArrayPtr* contactItems = ImportVCardLC(KTestFile6_1); + (*iTest)(contactItems->Count() == 1); + CContactItem* cItem = iDb->ReadContactLC(contactItems->At(0)->Id()); + + (*iTest)(CheckSingleParameterFieldValues(cItem->CardFields(),KUidContactFieldLocality,KUidContactFieldVCardMapHOME,_L("HLocal"))); + (*iTest)(CheckSingleParameterFieldValues(cItem->CardFields(),KUidContactFieldRegion,KUidContactFieldVCardMapHOME,_L("HRegion"))); + (*iTest)(CheckSingleParameterFieldValues(cItem->CardFields(),KUidContactFieldPostcode,KUidContactFieldVCardMapHOME,_L("HPost"))); + + contactItems->ResetAndDestroy(); + CleanupStack::PopAndDestroy(cItem); + CleanupStack::PopAndDestroy(contactItems); + + iTest->Printf(_L("A non supported field -Test 6\n\r")); + contactItems = ImportVCardLC(KTestFile6_2); + (*iTest)(contactItems->Count() == 1); + cItem = iDb->ReadContactLC(contactItems->At(0)->Id()); + + (*iTest)(CheckSingleParameterFieldValues(cItem->CardFields(),KUidContactFieldLocality,KUidContactFieldVCardMapHOME,_L("HLocal"))); + (*iTest)(CheckSingleParameterFieldValues(cItem->CardFields(),KUidContactFieldRegion,KUidContactFieldVCardMapHOME,_L("HRegion"))); + (*iTest)(CheckSingleParameterFieldValues(cItem->CardFields(),KUidContactFieldPostcode,KUidContactFieldVCardMapHOME,_L("HPost"))); + (*iTest)(CheckSingleParameterFieldValues(cItem->CardFields(),KUidContactFieldLocality,KUidContactFieldVCardMapWORK,_L("WLocal"))); + (*iTest)(CheckSingleParameterFieldValues(cItem->CardFields(),KUidContactFieldRegion,KUidContactFieldVCardMapWORK,_L("WRegion"))); + (*iTest)(CheckSingleParameterFieldValues(cItem->CardFields(),KUidContactFieldPostcode,KUidContactFieldVCardMapWORK,_L("WPost"))); + + contactItems->ResetAndDestroy(); + CleanupStack::PopAndDestroy(cItem); + CleanupStack::PopAndDestroy(contactItems); + } + +void CTimeISTest::TestSevenL() + { + // Create a vCard with actual telephone number, Home Work Preferred and default addresses. + iTest->Printf(_L("Creating test vCard Files -Test 7\n")); + _LIT8(KNewN, "BEGIN:VCARD\r\nVERSION:2.1\r\nUID:7\r\nN:A;B;C\r\nEND:VCARD\r\n"); + CParserVCard* vCard = CreateVCardLC(KNewN); + WriteVCardL(KTestFile7_1,*vCard); + CleanupStack::PopAndDestroy(vCard); + // Create a vCard with spaced telephone number, null address regions. + _LIT8(KModN, "BEGIN:VCARD\r\nVERSION:2.1\r\nUID:7\r\nN:A;;C\r\nTEL:1\r\nEND:VCARD\r\n"); + vCard = CreateVCardLC(KModN); + WriteVCardL(KTestFile7_2,*vCard); + CleanupStack::PopAndDestroy(vCard); + // Create a vCard with null telephone number, spaced address localities. + _LIT8(KDelN, "BEGIN:VCARD\r\nVERSION:2.1\r\nUID:7\r\nN: ;;C\r\nTEL:2\r\nEND:VCARD\r\n"); + vCard = CreateVCardLC(KDelN); + WriteVCardL(KTestFile7_3,*vCard); + CleanupStack::PopAndDestroy(vCard); + + // Now import the files and check the behaviour + iTest->Printf(_L("Importing vCard files to contacts -Test 7\n")); + iTest->Printf(_L("New File -Test 7\n")); + CArrayPtr* contactItems = ImportVCardLC(KTestFile7_1, 0); + (*iTest)(contactItems->Count() == 1); + CContactItem* cItem = iDb->ReadContactLC(contactItems->At(0)->Id()); + + (*iTest)(CheckSingleFieldValue(cItem->CardFields(),KUidContactFieldFamilyName,_L("A"))); + (*iTest)(CheckSingleFieldValue(cItem->CardFields(),KUidContactFieldGivenName,_L("B"))); + (*iTest)(CheckSingleFieldValue(cItem->CardFields(),KUidContactFieldAdditionalName,_L("C"))); + + contactItems->ResetAndDestroy(); + CleanupStack::PopAndDestroy(cItem); + CleanupStack::PopAndDestroy(contactItems); + + + iTest->Printf(_L("A non supported field -Test 7\n")); + contactItems = ImportVCardLC(KTestFile7_2, 0); + (*iTest)(contactItems->Count() == 1); + cItem = iDb->ReadContactLC(contactItems->At(0)->Id()); + + (*iTest)(CheckSingleFieldValue(cItem->CardFields(),KUidContactFieldFamilyName,_L("A"))); + (*iTest)(CheckSingleFieldValue(cItem->CardFields(),KUidContactFieldGivenName,_L(""))); + (*iTest)(CheckSingleFieldValue(cItem->CardFields(),KUidContactFieldAdditionalName,_L("C"))); + contactItems->ResetAndDestroy(); + CleanupStack::PopAndDestroy(cItem); + CleanupStack::PopAndDestroy(contactItems); + + + iTest->Printf(_L("Empty field -Test 7\n")); + contactItems = ImportVCardLC(KTestFile7_3, 0); + (*iTest)(contactItems->Count() == 1); + cItem = iDb->ReadContactLC(contactItems->At(0)->Id()); + + (*iTest)(CheckSingleFieldValue(cItem->CardFields(),KUidContactFieldFamilyName,_L(" "))); + (*iTest)(CheckSingleFieldValue(cItem->CardFields(),KUidContactFieldGivenName,_L(""))); + (*iTest)(CheckSingleFieldValue(cItem->CardFields(),KUidContactFieldAdditionalName,_L("C"))); + contactItems->ResetAndDestroy(); + CleanupStack::PopAndDestroy(cItem); + CleanupStack::PopAndDestroy(contactItems); + } + + +void CTimeISTest::TestEightL() + { + // Create a vCard with actual telephone number, Home Work Preferred and default addresses. + iTest->Printf(_L("Creating test vCard Files - Test 8\n")); + _LIT8(KNewN, "BEGIN:VCARD\r\nVERSION:2.1\r\nUID:8\r\nADR;HOME:;;;HLocal;HRegion;HPost;\r\nADR;WORK:;;;WLocal;WRegion;WPost;\r\nADR:;;;Local;Region;Post;\r\nADR;PREF:;;;PLocal;PRegion;PPost;\r\nEND:VCARD\r\n"); + CParserVCard* vCard = CreateVCardLC(KNewN); + WriteVCardL(KTestFile8_1,*vCard); + CleanupStack::PopAndDestroy(vCard); + // Create a vCard with spaced telephone number, null address regions. + _LIT8(KModN, "BEGIN:VCARD\r\nVERSION:2.1\r\nUID:8\r\nADR;HOME:;;;HLocal;;HPost;\r\nADR;WORK:;;;WLocal;;WPost;\r\nADR:;;;Local;;Post;\r\nADR;PREF:;;;PLocal;;PPost;\r\nEND:VCARD\r\n"); + vCard = CreateVCardLC(KModN); + WriteVCardL(KTestFile8_2,*vCard); + CleanupStack::PopAndDestroy(vCard); + // Create a vCard with null telephone number, spaced address localities. + _LIT8(KDelN, "BEGIN:VCARD\r\nVERSION:2.1\r\nUID:8\r\nADR;HOME:;;; ;;HPost;\r\nADR;WORK:;;; ;;WPost;\r\nADR:;;; ;;Post;\r\nADR;PREF:;;; ;;PPost;\r\nEND:VCARD\r\n"); + vCard = CreateVCardLC(KDelN); + WriteVCardL(KTestFile8_3,*vCard); + CleanupStack::PopAndDestroy(vCard); + + // Now import the files and check the behaviour + iTest->Printf(_L("Importing vCard files to contacts -Test 8\n")); + iTest->Printf(_L("New File -Test 8\n\r")); + CArrayPtr* contactItems = ImportVCardLC(KTestFile8_1, 0); + (*iTest)(contactItems->Count() == 1); + CContactItem* cItem = iDb->ReadContactLC(contactItems->At(0)->Id()); + + (*iTest)(CheckSingleParameterFieldValues(cItem->CardFields(),KUidContactFieldLocality,KUidContactFieldVCardMapHOME,_L("HLocal"))); + (*iTest)(CheckSingleParameterFieldValues(cItem->CardFields(),KUidContactFieldLocality,KUidContactFieldVCardMapWORK,_L("WLocal"))); + (*iTest)(CheckSingleParameterFieldValues(cItem->CardFields(),KUidContactFieldLocality,KNullUid,_L("Local"))); + (*iTest)(CheckSingleParameterFieldValues(cItem->CardFields(),KUidContactFieldLocality,KUidContactFieldVCardMapPREF,_L("PLocal"))); + (*iTest)(CheckSingleParameterFieldValues(cItem->CardFields(),KUidContactFieldRegion,KUidContactFieldVCardMapHOME,_L("HRegion"))); + (*iTest)(CheckSingleParameterFieldValues(cItem->CardFields(),KUidContactFieldRegion,KUidContactFieldVCardMapWORK,_L("WRegion"))); + (*iTest)(CheckSingleParameterFieldValues(cItem->CardFields(),KUidContactFieldRegion,KNullUid,_L("Region"))); + (*iTest)(CheckSingleParameterFieldValues(cItem->CardFields(),KUidContactFieldRegion,KUidContactFieldVCardMapPREF,_L("PRegion"))); + (*iTest)(CheckSingleParameterFieldValues(cItem->CardFields(),KUidContactFieldPostcode,KUidContactFieldVCardMapHOME,_L("HPost"))); + (*iTest)(CheckSingleParameterFieldValues(cItem->CardFields(),KUidContactFieldPostcode,KUidContactFieldVCardMapWORK,_L("WPost"))); + (*iTest)(CheckSingleParameterFieldValues(cItem->CardFields(),KUidContactFieldPostcode,KNullUid,_L("Post"))); + (*iTest)(CheckSingleParameterFieldValues(cItem->CardFields(),KUidContactFieldPostcode,KUidContactFieldVCardMapPREF,_L("PPost"))); + + contactItems->ResetAndDestroy(); + CleanupStack::PopAndDestroy(cItem); + CleanupStack::PopAndDestroy(contactItems); + + iTest->Printf(_L("A non supported field -Test 8\n\r")); + contactItems = ImportVCardLC(KTestFile8_2, 0); + (*iTest)(contactItems->Count() == 1); + cItem = iDb->ReadContactLC(contactItems->At(0)->Id()); + + (*iTest)(CheckSingleParameterFieldValues(cItem->CardFields(),KUidContactFieldLocality,KUidContactFieldVCardMapHOME,_L("HLocal"))); + (*iTest)(CheckSingleParameterFieldValues(cItem->CardFields(),KUidContactFieldLocality,KUidContactFieldVCardMapWORK,_L("WLocal"))); + (*iTest)(CheckSingleParameterFieldValues(cItem->CardFields(),KUidContactFieldLocality,KNullUid,_L("Local"))); + (*iTest)(CheckSingleParameterFieldValues(cItem->CardFields(),KUidContactFieldLocality,KUidContactFieldVCardMapPREF,_L("PLocal"))); + (*iTest)(CheckSingleParameterFieldValues(cItem->CardFields(),KUidContactFieldRegion,KUidContactFieldVCardMapHOME,_L(""))); + (*iTest)(CheckSingleParameterFieldValues(cItem->CardFields(),KUidContactFieldRegion,KUidContactFieldVCardMapWORK,_L(""))); + (*iTest)(CheckSingleParameterFieldValues(cItem->CardFields(),KUidContactFieldRegion,KNullUid,_L(""), EFalse)); + (*iTest)(CheckSingleParameterFieldValues(cItem->CardFields(),KUidContactFieldRegion,KUidContactFieldVCardMapPREF,_L(""), EFalse)); + (*iTest)(CheckSingleParameterFieldValues(cItem->CardFields(),KUidContactFieldPostcode,KUidContactFieldVCardMapHOME,_L("HPost"))); + (*iTest)(CheckSingleParameterFieldValues(cItem->CardFields(),KUidContactFieldPostcode,KUidContactFieldVCardMapWORK,_L("WPost"))); + (*iTest)(CheckSingleParameterFieldValues(cItem->CardFields(),KUidContactFieldPostcode,KNullUid,_L("Post"))); + (*iTest)(CheckSingleParameterFieldValues(cItem->CardFields(),KUidContactFieldPostcode,KUidContactFieldVCardMapPREF,_L("PPost"))); + + contactItems->ResetAndDestroy(); + CleanupStack::PopAndDestroy(cItem); + CleanupStack::PopAndDestroy(contactItems); + + + iTest->Printf(_L("Empty field -Test 8\n\r")); + contactItems = ImportVCardLC(KTestFile8_3, 0); + (*iTest)(contactItems->Count() == 1); + cItem = iDb->ReadContactLC(contactItems->At(0)->Id()); + + (*iTest)(CheckSingleParameterFieldValues(cItem->CardFields(),KUidContactFieldLocality,KUidContactFieldVCardMapHOME,_L(" "))); + (*iTest)(CheckSingleParameterFieldValues(cItem->CardFields(),KUidContactFieldLocality,KUidContactFieldVCardMapWORK,_L(" "))); + (*iTest)(CheckSingleParameterFieldValues(cItem->CardFields(),KUidContactFieldLocality,KNullUid,_L(" "))); + (*iTest)(CheckSingleParameterFieldValues(cItem->CardFields(),KUidContactFieldLocality,KUidContactFieldVCardMapPREF,_L(" "))); + (*iTest)(CheckSingleParameterFieldValues(cItem->CardFields(),KUidContactFieldRegion,KUidContactFieldVCardMapHOME,_L(""))); + (*iTest)(CheckSingleParameterFieldValues(cItem->CardFields(),KUidContactFieldRegion,KUidContactFieldVCardMapWORK,_L(""))); + (*iTest)(CheckSingleParameterFieldValues(cItem->CardFields(),KUidContactFieldRegion,KNullUid,_L(""), EFalse)); + (*iTest)(CheckSingleParameterFieldValues(cItem->CardFields(),KUidContactFieldRegion,KUidContactFieldVCardMapPREF,_L(""), EFalse)); + (*iTest)(CheckSingleParameterFieldValues(cItem->CardFields(),KUidContactFieldPostcode,KUidContactFieldVCardMapHOME,_L("HPost"))); + (*iTest)(CheckSingleParameterFieldValues(cItem->CardFields(),KUidContactFieldPostcode,KUidContactFieldVCardMapWORK,_L("WPost"))); + (*iTest)(CheckSingleParameterFieldValues(cItem->CardFields(),KUidContactFieldPostcode,KNullUid,_L("Post"))); + (*iTest)(CheckSingleParameterFieldValues(cItem->CardFields(),KUidContactFieldPostcode,KUidContactFieldVCardMapPREF,_L("PPost"))); + + contactItems->ResetAndDestroy(); + CleanupStack::PopAndDestroy(cItem); + CleanupStack::PopAndDestroy(contactItems); + } + + +void CTimeISTest::TestBirthdayDeletionL(TBool aAddNameField) +/** + *Testing the deletion of a birthday field in a contact card through the time IS protocol + *@param TBool aAddNameField specify whether or not adding a name field to the contact card + */ + { + TDateTime date(1976,EAugust,28,22,0,0,0); + TTime time(date); + + //Create a contact with just a birthday date + const TContactItemId templateId = iDb->TemplateId(); + CContactItem* templateCard = iDb->ReadContactLC(templateId); + CContactCard* card = CContactCard::NewL(templateCard); + CleanupStack::PushL(card); + // + CContactItemFieldSet& cardFields=card->CardFields(); + // Set the birthday + TInt pos=cardFields.Find(KUidContactFieldBirthday); + if (pos!=KErrNotFound) + { + cardFields[pos].SetMapping(KUidContactFieldVCardMapBDAY); + cardFields[pos].DateTimeStorage()->SetTime(date); + } + + if (aAddNameField) + { + pos=cardFields.Find(KUidContactFieldFamilyName); + if (pos!=KErrNotFound) + { + cardFields[pos].TextStorage()->SetTextL(_L("MyName")); + } + } + + //Create contact now + const TContactItemId id = iDb->AddNewContactL(*card); + CleanupStack::PopAndDestroy(2, templateCard); + CContactIdArray* idArray = CContactIdArray::NewLC(); + idArray->AddL(id); + + //export contact to buf + TBuf8<256> buf;//256 bytes should be ok + RDesWriteStream vCardWriteStream(buf); + vCardWriteStream.PushL(); + iDb->ExportSelectedContactsL(TUid::Uid(KUidVCardConvDefaultImpl),*idArray,vCardWriteStream,CContactVCardConverter::EConnectWhitespace); + vCardWriteStream.CommitL(); + CleanupStack::PopAndDestroy(&vCardWriteStream); + CleanupStack::PopAndDestroy(idArray); + + //modify the exported vcard to remove birthday date and add a white space + pos=buf.Find(KVersitTokenBDAY); + (*iTest)(pos>0); + pos+=5; //jump over the token and colon + _LIT8(KEndOfLine,"\n"); + TInt charToDelete=buf.Mid(pos).Find(KEndOfLine); //search for the next 0A + charToDelete--; // don't delete the 0A + buf.Delete(pos,charToDelete); //delete now + //Now add white space in vcard + _LIT8(KWhiteSpace," "); + buf.Insert(pos,KWhiteSpace); //insert now + + //now import back that vcard it should not change user data + CArrayPtr* contactItems; + RDesReadStream vCardReadStream(buf); + TBool importOK; + vCardReadStream.PushL(); + contactItems = iDb->ImportContactsL(TUid::Uid(KUidVCardConvDefaultImpl),vCardReadStream,importOK,CContactVCardConverter::EConnectWhitespace); + CleanupStack::PopAndDestroy(); // vCardReadStream + CleanupStack::PushL(contactItems); + CleanupResetAndDestroyPushL(*contactItems); + //make sure contact is imported + (*iTest)(contactItems->Count()==1); + + TInt fieldPos=contactItems->At(0)->CardFields().Find(KUidContactFieldBirthday); + //make sure field has not been deleted + (*iTest)(fieldPos!=KErrNotFound); + //make sure birthday date as not changed + (*iTest)(contactItems->At(0)->CardFields()[fieldPos].DateTimeStorage()->Time()==time); + + CleanupStack::PopAndDestroy(2,contactItems); // ResetAndDestroy + + //Now try to delete that field through the symbian connect timeIS protocol by importing a NULL field + //First delete that space in vcard + buf.Delete(pos,1); + //now import back that vcard it should delete the birthday field + vCardReadStream.PushL(); + vCardReadStream.Open(buf); + contactItems = iDb->ImportContactsL(TUid::Uid(KUidVCardConvDefaultImpl),vCardReadStream,importOK,CContactVCardConverter::EConnectWhitespace); + CleanupStack::PopAndDestroy(); // vCardReadStream + CleanupStack::PushL(contactItems); + CleanupResetAndDestroyPushL(*contactItems); + (*iTest)(contactItems->Count()==1); //make sure one contact is imported + + //Make sure birthday has been deleted + /*TInt*/ fieldPos=contactItems->At(0)->CardFields().Find(KUidContactFieldBirthday); + (*iTest)(fieldPos==KErrNotFound); //make sure field has been deleted + + CleanupStack::PopAndDestroy(2,contactItems); // ResetAndDestroy + } + +void CTimeISTest::RunTestsL() + { + iTest->Printf(_L("Time IS Tests Starting\n")); + + TestBirthdayDeletionL(ETrue); + + TestOneL(); + TestTwoL(); + TestThree(); + TestFour(); + TestFiveL(); + TestSixL(); + TestSevenL(); + TestEightL(); + } + + +void DoTestsL() + { + CTimeISTest* theTest = CTimeISTest::NewLC(test); + + CTestRegister * TempFiles = CTestRegister::NewLC(); + + TempFiles->RegisterL(KDatabaseName, EFileTypeCnt); + TempFiles->RegisterL(KTestFile1_1); + TempFiles->RegisterL(KTestFile1_2); + TempFiles->RegisterL(KTestFile1_3); + TempFiles->RegisterL(KTestFile3_1); + TempFiles->RegisterL(KTestFile5_1); + TempFiles->RegisterL(KTestFile5_2); + TempFiles->RegisterL(KTestFile5_3); + TempFiles->RegisterL(KTestFile6_1); + TempFiles->RegisterL(KTestFile6_2); + TempFiles->RegisterL(KTestFile7_1); + TempFiles->RegisterL(KTestFile7_2); + TempFiles->RegisterL(KTestFile7_3); + TempFiles->RegisterL(KTestFile8_1); + TempFiles->RegisterL(KTestFile8_2); + TempFiles->RegisterL(KTestFile8_3); + + theTest->RunTestsL(); + + theTest->CloseDb(); + CleanupStack::PopAndDestroy(2, theTest); + } //DoTestsL + + +/** + +@SYMTestCaseID PIM-T-TIMEIS-0001 + +*/ + +GLDEF_C TInt E32Main() + { + __UHEAP_MARK; + test.Title(); + test.Start(_L("@SYMTESTCaseID:PIM-T-TIMEIS-0001 CNTVCard - Check TimeIS import / export support")); + + CTrapCleanup* theCleanup = CTrapCleanup::New(); + if (!theCleanup) + return KErrNoMemory; + TRAPD(ret, DoTestsL()); + test(ret == KErrNone); + delete theCleanup; + test.End(); + test.Close(); + __UHEAP_MARKEND; + return(0); + } + +