diff -r d4f567ce2e7c -r 5b6f26637ad3 phonebookengines_old/contactsmodel/tsrc/T_VExportORG.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phonebookengines_old/contactsmodel/tsrc/T_VExportORG.cpp Tue Aug 31 15:05:21 2010 +0300 @@ -0,0 +1,233 @@ +// Copyright (c) 2006-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 tests the various options for the ORG property +// This includes +// 1) ORG:company;department +// 2) ORG:Company; +// 3) ORG:;Department +// +// + +#include +#include +#include +#include +#include "T_UTILS.H" + +LOCAL_D CCntTest* CntTest=NULL; +LOCAL_D const TPtrC KDatabaseFileName=_L("C:VOrgDb.cdb"); +LOCAL_D RTest test(_L("T_VExportORG")); + +_LIT8(KOrg1, "ORG:Symbian;PIM\r\n"); +//_LIT8(KOrg2, "ORG\r\n"); +_LIT8(KOrg3, "ORG:Symbian;\r\n"); +_LIT8(KOrg4, "ORG:;PIM\r\n"); + +_LIT(KVImportFileName, "C:\\vOrgImport.vcf"); +_LIT(KVExportFileName, "C:\\vOrgExport.vcf"); +_LIT8(KBegin,"BEGIN:VCARD\r\n"); +_LIT8(KEnd,"END:VCARD\r\n"); +_LIT8(KVersion, "VERSION:2.1\r\n"); +_LIT8(KName, "N:Surname;FirstName;;;\r\n"); + +void createVcardFileL(const TDesC8& aOrgLine, RFs& aFileSession) +{ + RFile file; + User::LeaveIfError(file.Replace(aFileSession, KVImportFileName, EFileWrite|EFileShareAny)); + CleanupClosePushL(file); + + file.Write(KBegin); + file.Write(KVersion); + file.Write(KName); + file.Write(aOrgLine); + file.Write(KEnd); + + file.Flush(); + CleanupStack::PopAndDestroy(); //file.Close() + +} + +void versitDeleteVcardFilesL(RFs& aFileSession) +{ + aFileSession.Delete(KVImportFileName); + aFileSession.Delete(KVExportFileName); +} + +void EmptyDatabase() + { + TContactItemId theid; + TContactIter iter(*CntTest->Db()); + theid=iter.FirstL(); + while(theid!=KNullContactId ) + { + CntTest->Db()->DeleteContactL(theid); + theid=iter.NextL(); + } + } + +void versitImportContactL(RFs& aFileSession) +{ + RFileReadStream readStream; + + //Import vOrgImport.vcf + User::LeaveIfError(readStream.Open(aFileSession,KVImportFileName, EFileRead)); + CleanupClosePushL(readStream); + + TBool success=EFalse; + CArrayPtr* contactItems=CntTest->Db()->ImportContactsL(TUid::Uid(KUidVCardConvDefaultImpl), + readStream, success, + CContactDatabase::EImportSingleContact+CContactDatabase::ETTFormat); + + + //Should be the only contact in the database at this point + TInt count = CntTest->Db()->CountL(); + test(count == 1); + + //Store the id of the new contact - we need this later + TContactItemId contactId = (*contactItems)[0]->Id(); + CntTest->Db()->SetCurrentItem(contactId); + + readStream.Close(); + CleanupStack::PopAndDestroy(); //readStream.Close() + contactItems->ResetAndDestroy(); + delete contactItems; + +} + +void versitExportContactL(RFs& aFileSession) +{ + RFileWriteStream writeStream; + User::LeaveIfError(writeStream.Replace(aFileSession,KVExportFileName,EFileWrite)); + CleanupClosePushL(writeStream); + + CContactIdArray* idArray = CContactIdArray::NewLC(); + TInt count = CntTest->Db()->CountL(); + test(count == 1); + TContactItemId contactId = CntTest->Db()->GetCurrentItem(); + + idArray->InsertL(0, contactId); + + CntTest->Db()->ExportSelectedContactsL(TUid::Uid(KUidVCardConvDefaultImpl), *idArray, writeStream,0); + writeStream.Close(); + + CleanupStack::PopAndDestroy(2); //idArray, writeStream + + +} + +TBool versitCheckExportFilesL(const TDesC8& aOrgLine, RFs& aFileSession) +{ + RFile fileHandle; + TBool patternFound = EFalse; + fileHandle.Open(aFileSession, KVExportFileName, EFileRead|EFileStreamText); + CleanupClosePushL(fileHandle); + +// TFileText exportedfile; //Bug in TFileText so not used at the moment +// exportedfile.Set(fileHandle); +// exportedfile.Seek(ESeekStart); + TBuf8<256> line; + + while(fileHandle.Read(line) == KErrNone && line.Length() != 0) + { + if (line.Find(aOrgLine) != KErrNotFound) + { + patternFound = ETrue; + break; + } + } + + CleanupStack::PopAndDestroy(&fileHandle); + return patternFound; +} + + +void testExportOrgL(const TDesC8& aOrgLine) +{ + RFs fsSession; + TBool success = EFalse; + User::LeaveIfError(fsSession.Connect()); + CleanupClosePushL(fsSession); + + createVcardFileL(aOrgLine,fsSession); + versitImportContactL(fsSession); + versitExportContactL(fsSession); + EmptyDatabase(); + + success = versitCheckExportFilesL(aOrgLine,fsSession); + + versitDeleteVcardFilesL(fsSession); + fsSession.Close(); + CleanupStack::PopAndDestroy(&fsSession); //fsSession.Close() + RDebug::RawPrint(aOrgLine); + if(success == EFalse) + { RDebug::RawPrint(aOrgLine); + User::Leave(KErrNotFound); + } +} + +/** + +@SYMTestCaseID PIM-T-VEXPORTORG-0001 + +*/ + +void testOrgL() +{ + test.Start(_L("@SYMTESTCaseID:PIM-T-VEXPORTORG-0001 Test Versit export of ORG line")); + + + CntTest->CreateDatabaseL(); + + test.Next(_L("ORG:Company;Dept")); + + testExportOrgL(KOrg1); + + //test.Next(_L("ORG")); + + //testExportOrgL(KOrg2); + + test.Next(_L("ORG:Company")); + + testExportOrgL(KOrg3); + + test.Next(_L("ORG:;Dept")); + + testExportOrgL(KOrg4); + + + CntTest->CloseDatabase(); + + CntTest->DeleteDatabaseL(); +} + +GLDEF_C TInt E32Main() +{ + __UHEAP_MARK; + CntTest = new CCntTest; + if (!CntTest) + { + return KErrNoMemory; + } + + TRAPD(err, CntTest->ConstructL(test,KDatabaseFileName) ); + test(err == KErrNone); + + TRAP(err,testOrgL() ); + test(err == KErrNone); + + CntTest->EndTestLib(err); + + __UHEAP_MARKEND; + return KErrNone; +}