--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/phonebookengines_old/contactsmodel/tsrc/t_updateforsync.cpp Tue Aug 31 15:05:21 2010 +0300
@@ -0,0 +1,335 @@
+// 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:
+// UpdateForSync Test module
+//
+//
+
+
+//#include <e32def.h>
+#include <e32test.h>
+#include <cntdef.hrh>
+#include <cntdef.h>
+#include <cntitem.h>
+#include <cntfield.h>
+#include <cntfldst.h>
+#include <e32svr.h>
+#include <f32file.h>
+#include "t_utils2.h"
+#include "T_UTILS.H"
+
+_LIT(KTestName, "T_UPDATEFORSYNC");
+_LIT(KLogFileName, "UpdateForSyncProfile.log");
+
+LOCAL_D RTest test(KTestName);
+
+
+class CProfiler : public CBase
+ {
+public:
+ static CProfiler* NewLC(RTest& aTest);
+ ~CProfiler();
+
+ void StartProfile();
+ void EndProfile();
+private:
+ RFs iFs;
+ CLog* iLog;
+ };
+
+CProfiler* CProfiler::NewLC(RTest& aTest)
+ {
+ CProfiler* self=new(ELeave) CProfiler();
+ CleanupStack::PushL(self);
+ User::LeaveIfError(self->iFs.Connect());
+ self->iLog=CLog::NewL(aTest,KLogFileName);
+ return self;
+ }
+
+CProfiler::~CProfiler()
+ {
+ delete iLog;
+ iFs.Close();
+ }
+
+void CProfiler::StartProfile()
+ {
+ CCntTest::ProfileReset(0,1);
+ CCntTest::ProfileStart(0);
+ }
+
+void CProfiler::EndProfile()
+ {
+ CCntTest::ProfileEnd(0);
+ TCntProfile profile[1];
+ CCntTest::ProfileResult(profile,0,1);
+ _LIT(KProfileFormat,"Total %d.%03d sec (%d hits)\n");
+ RDebug::Print(KProfileFormat,profile[0].iTime/1000000, profile[0].iTime%1000000, profile[0].iCount);
+ iLog->LogLine(KProfileFormat,profile[0].iTime/1000000, profile[0].iTime%1000000, profile[0].iCount);
+ }
+
+
+
+
+LOCAL_C void DoTestEmailKeepDefaultPropertyL()
+ {
+ _LIT(KFieldValue,"email@dummy.com");
+ _LIT(KNewFieldValue,"newemail@dummy.com");
+
+
+ CContactItemFieldSet* fieldSet=CContactItemFieldSet::NewLC();
+
+ CContactItemField* field=CContactItemField::NewLC(KStorageTypeText);
+ field->TextStorage()->SetTextL(KFieldValue());
+ field->SetMapping(KUidContactFieldVCardMapEMAILINTERNET);
+ field->AddFieldTypeL(KUidContactFieldEMail);
+ field->AddFieldTypeL(KUidContactFieldVCardMapPREF);
+ fieldSet->AddL(*field); //take ownership
+ CleanupStack::Pop(field);
+
+ field=CContactItemField::NewLC(KStorageTypeText);
+ field->TextStorage()->SetTextL(KNewFieldValue());
+ field->SetMapping(KUidContactFieldVCardMapEMAILINTERNET);
+ field->AddFieldTypeL(KUidContactFieldEMail);
+
+
+ fieldSet->UpdateFieldSyncL(*field,1);
+
+ //Check that default property was not dropped
+ __ASSERT_ALWAYS((*fieldSet)[0].ContentType().ContainsFieldType(KUidContactFieldVCardMapPREF),User::Leave(KErrGeneral));
+ //Check that field was updated properly
+ __ASSERT_ALWAYS((*fieldSet)[0].TextStorage()->Text()==KNewFieldValue(),User::Leave(KErrGeneral));
+
+
+ CleanupStack::PopAndDestroy(2,fieldSet); //field
+ }
+
+
+LOCAL_C void DoTestPhoneKeepDefaultPropertyL()
+ {
+ _LIT(KFieldValue,"+447700900000");
+ _LIT(KNewFieldValue,"+447700900001");
+
+ CContactItemFieldSet* fieldSet=CContactItemFieldSet::NewLC();
+
+ CContactItemField* field=CContactItemField::NewLC(KStorageTypeText);
+ field->TextStorage()->SetTextL(KFieldValue());
+ field->SetMapping(KUidContactFieldVCardMapTEL);
+ field->AddFieldTypeL(KUidContactFieldPhoneNumber);
+ field->AddFieldTypeL(KUidContactFieldVCardMapVOICE);
+ field->AddFieldTypeL(KUidContactFieldVCardMapPREF);
+ fieldSet->AddL(*field); //take ownership
+ CleanupStack::Pop(field);
+
+ field=CContactItemField::NewLC(KStorageTypeText);
+ field->TextStorage()->SetTextL(KNewFieldValue());
+ field->SetMapping(KUidContactFieldVCardMapTEL);
+ field->AddFieldTypeL(KUidContactFieldPhoneNumber);
+ field->AddFieldTypeL(KUidContactFieldVCardMapVOICE);
+
+ fieldSet->UpdateFieldSyncL(*field,1);
+
+ //Check that default property was not dropped
+ __ASSERT_ALWAYS((*fieldSet)[0].ContentType().ContainsFieldType(KUidContactFieldVCardMapPREF),User::Leave(KErrGeneral));
+ //Check that field was updated properly
+ __ASSERT_ALWAYS((*fieldSet)[0].TextStorage()->Text()==KNewFieldValue(),User::Leave(KErrGeneral));
+
+ CleanupStack::PopAndDestroy(2,fieldSet); //field
+ }
+
+LOCAL_C void DoTestPhoneKeepSpeedDialPropertyL()
+ {
+ _LIT(KFieldValue,"+447700900002");
+ _LIT(KNewFieldValue,"+447700900003");
+
+ CContactItemFieldSet* fieldSet=CContactItemFieldSet::NewLC();
+
+ CContactItemField* field=CContactItemField::NewLC(KStorageTypeText);
+ field->TextStorage()->SetTextL(KFieldValue());
+ field->SetMapping(KUidContactFieldVCardMapTEL);
+ field->AddFieldTypeL(KUidContactFieldPhoneNumber);
+ field->AddFieldTypeL(KUidContactFieldVCardMapVOICE);
+ field->AddFieldTypeL(KUidContactFieldVCardMapPREF);
+ field->AddFieldTypeL(KUidSpeedDialFive);
+ fieldSet->AddL(*field); //take ownership
+ CleanupStack::Pop(field);
+
+ field=CContactItemField::NewLC(KStorageTypeText);
+ field->TextStorage()->SetTextL(KNewFieldValue());
+ field->SetMapping(KUidContactFieldVCardMapTEL);
+ field->AddFieldTypeL(KUidContactFieldPhoneNumber);
+ field->AddFieldTypeL(KUidContactFieldVCardMapVOICE);
+
+ fieldSet->UpdateFieldSyncL(*field,1);
+
+ //Check that default property was not dropped
+ __ASSERT_ALWAYS((*fieldSet)[0].ContentType().ContainsFieldType(KUidContactFieldVCardMapPREF),User::Leave(KErrGeneral));
+ //Check that speed dial property was not dropped
+ __ASSERT_ALWAYS((*fieldSet)[0].ContentType().ContainsFieldType(KUidSpeedDialFive),User::Leave(KErrGeneral));
+ //Check that field was updated properly
+ __ASSERT_ALWAYS((*fieldSet)[0].TextStorage()->Text()==KNewFieldValue(),User::Leave(KErrGeneral));
+
+ CleanupStack::PopAndDestroy(2,fieldSet); //field
+ }
+
+void DoTestPhoneKeepVoiceDialPropertyL()
+ {
+ _LIT(KFieldValue,"+447700900004");
+ _LIT(KNewFieldValue,"+447700900005");
+
+ CContactItemFieldSet* fieldSet=CContactItemFieldSet::NewLC();
+
+ CContactItemField* field=CContactItemField::NewLC(KStorageTypeText);
+ field->TextStorage()->SetTextL(KFieldValue());
+ field->SetMapping(KUidContactFieldVCardMapTEL);
+ field->AddFieldTypeL(KUidContactFieldPhoneNumber);
+ field->AddFieldTypeL(KUidContactFieldVCardMapVOICE);
+ //field->AddFieldTypeL(KUidContactFieldVCardMapPREF);
+ field->AddFieldTypeL(KUidContactsVoiceDialField);
+ fieldSet->AddL(*field); //take ownership
+ CleanupStack::Pop(field);
+
+ field=CContactItemField::NewLC(KStorageTypeText);
+ field->TextStorage()->SetTextL(KNewFieldValue());
+ field->SetMapping(KUidContactFieldVCardMapTEL);
+ field->AddFieldTypeL(KUidContactFieldPhoneNumber);
+ field->AddFieldTypeL(KUidContactFieldVCardMapVOICE);
+
+ fieldSet->UpdateFieldSyncL(*field,1);
+
+ //Check that default property was not dropped
+ //__ASSERT_ALWAYS((*fieldSet)[0].ContentType().ContainsFieldType(KUidContactFieldVCardMapPREF),User::Leave(KErrGeneral));
+ //Check that speed dial property was not dropped
+ __ASSERT_ALWAYS((*fieldSet)[0].ContentType().ContainsFieldType(KUidContactsVoiceDialField),User::Leave(KErrGeneral));
+ //Check that field was updated properly
+ __ASSERT_ALWAYS((*fieldSet)[0].TextStorage()->Text()==KNewFieldValue(),User::Leave(KErrGeneral));
+
+ CleanupStack::PopAndDestroy(2,fieldSet); //field
+
+ }
+
+
+void DoProfilingL()
+ {
+ _LIT(KFieldValue,"+447700900006");
+ _LIT(KNewFieldValue,"+447700900007");
+
+ CProfiler* profiler=CProfiler::NewLC(test);
+
+ CContactItemFieldSet* fieldSet=CContactItemFieldSet::NewLC();
+
+ CContactItemField* field=CContactItemField::NewLC(KStorageTypeText);
+ field->TextStorage()->SetTextL(KFieldValue());
+ field->SetMapping(KUidContactFieldVCardMapTEL);
+ field->AddFieldTypeL(KUidContactFieldPhoneNumber);
+ field->AddFieldTypeL(KUidContactFieldVCardMapVOICE);
+ field->AddFieldTypeL(KUidContactFieldVCardMapPREF);
+ fieldSet->AddL(*field); //take ownership
+ CleanupStack::Pop(field);
+
+ field=CContactItemField::NewLC(KStorageTypeText);
+ field->TextStorage()->SetTextL(KFieldValue());
+ field->SetMapping(KUidContactFieldVCardMapTEL);
+ field->AddFieldTypeL(KUidContactFieldPhoneNumber);
+ field->AddFieldTypeL(KUidContactFieldVCardMapVOICE);
+ field->AddFieldTypeL(KUidContactFieldVCardMapCELL);
+ field->AddFieldTypeL(KUidContactFieldVCardMapPREF);
+ fieldSet->AddL(*field); //take ownership
+ CleanupStack::Pop(field);
+
+ field=CContactItemField::NewLC(KStorageTypeText);
+ field->TextStorage()->SetTextL(KFieldValue());
+ field->SetMapping(KUidContactFieldVCardMapTEL);
+ field->AddFieldTypeL(KUidContactFieldPhoneNumber);
+ field->AddFieldTypeL(KUidContactFieldVCardMapVOICE);
+ field->AddFieldTypeL(KUidContactFieldVCardMapCELL);
+ field->AddFieldTypeL(KUidContactFieldVCardMapWORK);
+ field->AddFieldTypeL(KUidContactFieldVCardMapPREF);
+ fieldSet->AddL(*field); //take ownership
+ CleanupStack::Pop(field);
+
+ field=CContactItemField::NewLC(KStorageTypeText);
+ field->TextStorage()->SetTextL(KFieldValue());
+ field->SetMapping(KUidContactFieldVCardMapTEL);
+ field->AddFieldTypeL(KUidContactFieldPhoneNumber);
+ field->AddFieldTypeL(KUidContactFieldVCardMapVOICE);
+ field->AddFieldTypeL(KUidContactFieldVCardMapWORK);
+ field->AddFieldTypeL(KUidContactFieldVCardMapPREF);
+ fieldSet->AddL(*field); //take ownership
+ CleanupStack::Pop(field);
+
+
+ field=CContactItemField::NewLC(KStorageTypeText);
+ field->TextStorage()->SetTextL(KNewFieldValue());
+ field->SetMapping(KUidContactFieldVCardMapTEL);
+ field->AddFieldTypeL(KUidContactFieldPhoneNumber);
+ //field->AddFieldTypeL(KUidContactFieldVCardMapVOICE);
+ field->AddFieldTypeL(KUidContactFieldVCardMapWORK);
+
+
+
+ profiler->StartProfile();
+ for (TInt i=0;i<1000;i++)
+ {
+ fieldSet->UpdateFieldSyncL(*field,1);
+ }
+ profiler->EndProfile();
+ CleanupStack::PopAndDestroy(3,profiler); //fieldset, field
+ }
+
+/**
+
+@SYMTestCaseID PIM-T-UPDATEFORSYNC-0001
+
+*/
+
+LOCAL_C void DoTestsL()
+ {
+ test.Start(_L("@SYMTESTCaseID:PIM-T-UPDATEFORSYNC-0001 T_UPDATEFORSYNC"));
+
+
+ DoProfilingL();
+
+ DoTestEmailKeepDefaultPropertyL();
+ DoTestPhoneKeepDefaultPropertyL();
+ DoTestPhoneKeepSpeedDialPropertyL();
+ DoTestPhoneKeepVoiceDialPropertyL();
+
+
+ test.End();
+ }
+
+GLDEF_C TInt E32Main()
+ {
+ // Init
+ CTrapCleanup* cleanupStack = CTrapCleanup::New();
+ if (!cleanupStack)
+ {
+ return KErrNoMemory;
+ }
+
+ // Run the tests
+ __UHEAP_MARK;
+ TRAPD(err, DoTestsL());
+ test.Close(); //avoid memory leak
+ __UHEAP_MARKEND;
+ // Cleanup
+
+ if (err)
+ {
+ User::Panic(_L("T_UpdateForSync Failed !"),err);
+ }
+
+ delete cleanupStack;
+ return err;
+ }