phonebookengines_old/contactsmodel/tsrc/T_VExportBirthday.cpp
changeset 40 b46a585f6909
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phonebookengines_old/contactsmodel/tsrc/T_VExportBirthday.cpp	Fri Jun 11 13:29:23 2010 +0300
@@ -0,0 +1,121 @@
+// 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 harness Creates a Contact Item and adds a single field to it (a birthday)
+// This is then exported to a vcard and the date from this export is checked.
+// This is to prove that INC038574 that time is not exported with the birthday and therefore
+// time differences from UTC do not affect the birthday date.
+// 
+//
+
+#include <vutil.h>
+#include <e32test.h>
+#include <cntdb.h>
+#include <cntvcard.h>
+#include <cntitem.h>
+#include <cntfield.h>
+#include <cntfldst.h>
+#include "T_UTILS.H"
+
+LOCAL_D CCntTest* CntTest=NULL;
+LOCAL_D const TPtrC KDatabaseFileName=_L("C:VBirthdayDb.cdb");
+
+LOCAL_D RTest test(_L("T_VExportBirthday"));
+
+LOCAL_C void MainTestsL()
+/**
+ *Testing the vcard export of a birthday field from the contact model.
+ *
+ */
+	{
+	CContactDatabase *db=CntTest->CreateDatabaseL();
+	
+	// Versit treats months and days as being numbers from 0, therefore EAugust is 7, and the 
+	// day here (0) represents the first day.  Some seconds are added to this date,
+	// but the birthday should only be exported as a date without time.
+	TDateTime date(1976,EAugust,0,22,0,0,0);
+	_LIT8(KExpectedExportDateStr,"19760801");
+		
+	//Create a contact with just a birthday date
+	const TContactItemId templateId = db->TemplateId();
+	CContactItem* templateCard = db->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);
+		}
+	
+	//Create contact now
+	const TContactItemId id = db->AddNewContactL(*card);
+	CleanupStack::PopAndDestroy(2, templateCard); 
+	CContactIdArray* idArray = CContactIdArray::NewLC();
+	idArray->AddL(id);
+	
+	//export contact to buf
+	TBuf8<256> buf;
+	RDesWriteStream vCardWriteStream(buf);
+	vCardWriteStream.PushL();
+	db->ExportSelectedContactsL(TUid::Uid(KUidVCardConvDefaultImpl),*idArray,vCardWriteStream,CContactVCardConverter::EDefault);
+	vCardWriteStream.CommitL();
+	CleanupStack::PopAndDestroy(&vCardWriteStream);
+	CleanupStack::PopAndDestroy(idArray); 
+	
+	//check there is no date in export
+	pos=buf.Find(KVersitTokenBDAY);
+	test(pos>0);
+	pos+=5;
+	_LIT8(KEndOfLine,"\r\n");
+	TInt datePos = buf.Mid(pos).Find(KEndOfLine);
+	TPtrC8 extractedDate = buf.Mid(pos,datePos);
+	test(TPtrC8(KExpectedExportDateStr)==extractedDate);
+	
+	CntTest->CloseDatabase();
+	}
+
+/**
+
+@SYMTestCaseID     PIM-T-VEXPORTBIRTHDAY-0001
+
+*/
+
+void DoTestsL()
+    {
+	test.Start(_L("@SYMTESTCaseID:PIM-T-VEXPORTBIRTHDAY-0001 Test Versit Export of a Birthday Date"));
+
+	TRAPD(ret,MainTestsL());
+	test(ret==KErrNone);
+
+	test.Next(_L("Delete database"));
+
+	TRAPD(ret2,CntTest->DeleteDatabaseL());
+	test(ret2==KErrNone);
+    }
+
+GLDEF_C TInt E32Main()
+	{
+	__UHEAP_MARK;
+    CntTest=new(ELeave) CCntTest;
+	CntTest->ConstructL(test,KDatabaseFileName);
+    TRAPD(err,DoTestsL());
+	CntTest->EndTestLib(err);
+	__UHEAP_MARKEND;
+	return KErrNone;
+    }
+
+