phonebookengines/contactsmodel/tsrc/t_wrongfieldmatch.cpp
changeset 0 e686773b3f54
child 24 0ba2181d7c28
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phonebookengines/contactsmodel/tsrc/t_wrongfieldmatch.cpp	Tue Feb 02 10:12:17 2010 +0200
@@ -0,0 +1,612 @@
+// 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:
+// Test for Wrong Field module
+// 
+//
+
+//#include <e32def.h>
+#include <e32test.h>
+#include <cntdef.h>
+#include <cntfield.h>
+#include <e32svr.h>
+#include "T_UTILS.H"
+
+_LIT(KTestName, "T_WRONGFIELDMATCH");
+LOCAL_D RTest test(KTestName);
+
+/*
+class CBenchMarker
+	{
+public:
+	static void StartProfile();
+	static void EndProfile();
+	};
+
+	//User::LeaveIfError(iFs.Connect());
+	//iLog=CLog::NewL(iTest,iFs,KLogFileName);
+
+void CBenchMarker::StartProfile()
+	{
+	CCntTest::ProfileReset(0,1);
+	CCntTest::ProfileStart(0);
+	}
+
+void CBenchMarker::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);
+	}*/
+
+
+//KUidContactFieldPhoneNumber
+//KUidContactFieldVCardMapTEL
+//KUidContactFieldVCardMapVOICE
+
+LOCAL_C void DoTestVoiceDialIgnoreL()
+	{
+	//Create a calypso general phone number content type
+	CContentType* phoneNumber=CContentType::NewL(KUidContactFieldPhoneNumber,KUidContactFieldVCardMapTEL);
+	CleanupStack::PushL(phoneNumber);
+	phoneNumber->AddFieldTypeL(KUidContactFieldVCardMapVOICE);
+
+	//Create a calypso general phone number content type
+	CContentType* voiceDial=CContentType::NewL(KUidContactFieldPhoneNumber,KUidContactFieldVCardMapTEL);
+	CleanupStack::PushL(voiceDial);
+	voiceDial->AddFieldTypeL(KUidContactFieldVCardMapVOICE);
+	voiceDial->AddFieldTypeL(KUidContactsVoiceDialField);
+	
+	if (!voiceDial->IsEqualForSyncUpdate(*phoneNumber))
+		{
+		User::Leave(KErrGeneral); 
+		}
+	
+	//Behavior due to algorithm optimisation
+	if (phoneNumber->IsEqualForSyncUpdate(*voiceDial))
+		{
+		User::Leave(KErrGeneral); 
+		}
+
+	CleanupStack::PopAndDestroy(2,phoneNumber);
+	}
+
+
+
+
+
+LOCAL_C void DoTestSpeedDialIgnoreL()
+	{
+	//Create a calypso general phone number content type
+	CContentType* phoneNumber=CContentType::NewL(KUidContactFieldPhoneNumber,KUidContactFieldVCardMapTEL);
+	CleanupStack::PushL(phoneNumber);
+	phoneNumber->AddFieldTypeL(KUidContactFieldVCardMapVOICE);
+
+	//Create a calypso general phone number content type
+	CContentType* speedDial=CContentType::NewL(KUidContactFieldPhoneNumber,KUidContactFieldVCardMapTEL);
+	CleanupStack::PushL(speedDial);
+	speedDial->AddFieldTypeL(KUidContactFieldVCardMapVOICE);
+	speedDial->AddFieldTypeL(KUidSpeedDialOne);
+
+	///////////////////////////////////////////
+
+	if (!speedDial->IsEqualForSyncUpdate(*phoneNumber))
+		{
+		User::Leave(KErrGeneral); 
+		}
+	//Behavior due to algorithm optimisation
+	if (phoneNumber->IsEqualForSyncUpdate(*speedDial))
+		{
+		User::Leave(KErrGeneral); 
+		}
+
+	speedDial->RemoveFieldType(KUidSpeedDialOne);
+
+	////////////////////////////////////////////
+
+	speedDial->AddFieldTypeL(KUidSpeedDialTwo);
+
+	if (!speedDial->IsEqualForSyncUpdate(*phoneNumber))
+		{
+		User::Leave(KErrGeneral); 
+		}
+	//Behavior due to algorithm optimisation
+	if (phoneNumber->IsEqualForSyncUpdate(*speedDial))
+		{
+		User::Leave(KErrGeneral); 
+		}
+
+	speedDial->RemoveFieldType(KUidSpeedDialTwo);
+
+	////////////////////////////////////////////
+
+	speedDial->AddFieldTypeL(KUidSpeedDialThree);
+
+	if (!speedDial->IsEqualForSyncUpdate(*phoneNumber))
+		{
+		User::Leave(KErrGeneral); 
+		}
+	//Behavior due to algorithm optimisation
+	if (phoneNumber->IsEqualForSyncUpdate(*speedDial))
+		{
+		User::Leave(KErrGeneral); 
+		}
+
+	speedDial->RemoveFieldType(KUidSpeedDialThree);
+
+	////////////////////////////////////////////
+
+	speedDial->AddFieldTypeL(KUidSpeedDialFour);
+	//Behavior due to algorithm optimisation
+	if (!speedDial->IsEqualForSyncUpdate(*phoneNumber))
+		{
+		User::Leave(KErrGeneral); 
+		}
+
+	if (phoneNumber->IsEqualForSyncUpdate(*speedDial))
+		{
+		User::Leave(KErrGeneral); 
+		}
+
+	speedDial->RemoveFieldType(KUidSpeedDialFour);
+
+	////////////////////////////////////////////
+
+	speedDial->AddFieldTypeL(KUidSpeedDialFive);
+
+	if (!speedDial->IsEqualForSyncUpdate(*phoneNumber))
+		{
+		User::Leave(KErrGeneral); 
+		}
+	//Behavior due to algorithm optimisation
+	if (phoneNumber->IsEqualForSyncUpdate(*speedDial))
+		{
+		User::Leave(KErrGeneral); 
+		}
+
+	speedDial->RemoveFieldType(KUidSpeedDialFive);
+
+	////////////////////////////////////////////
+	
+	speedDial->AddFieldTypeL(KUidSpeedDialSix);
+
+	if (!speedDial->IsEqualForSyncUpdate(*phoneNumber))
+		{
+		User::Leave(KErrGeneral); 
+		}
+	//Behavior due to algorithm optimisation
+	if (phoneNumber->IsEqualForSyncUpdate(*speedDial))
+		{
+		User::Leave(KErrGeneral); 
+		}
+
+	speedDial->RemoveFieldType(KUidSpeedDialSix);
+
+	////////////////////////////////////////////
+	
+	speedDial->AddFieldTypeL(KUidSpeedDialSeven);
+
+	if (!speedDial->IsEqualForSyncUpdate(*phoneNumber))
+		{
+		User::Leave(KErrGeneral); 
+		}
+	//Behavior due to algorithm optimisation
+	if (phoneNumber->IsEqualForSyncUpdate(*speedDial))
+		{
+		User::Leave(KErrGeneral); 
+		}
+
+	speedDial->RemoveFieldType(KUidSpeedDialSeven);
+
+	////////////////////////////////////////////
+
+	speedDial->AddFieldTypeL(KUidSpeedDialEight);
+
+	if (!speedDial->IsEqualForSyncUpdate(*phoneNumber))
+		{
+		User::Leave(KErrGeneral); 
+		}
+	//Behavior due to algorithm optimisation
+	if (phoneNumber->IsEqualForSyncUpdate(*speedDial))
+		{
+		User::Leave(KErrGeneral); 
+		}
+
+	speedDial->RemoveFieldType(KUidSpeedDialEight);
+
+	////////////////////////////////////////////
+
+	speedDial->AddFieldTypeL(KUidSpeedDialNine);
+
+	if (!speedDial->IsEqualForSyncUpdate(*phoneNumber))
+		{
+		User::Leave(KErrGeneral); 
+		}
+	//Behavior due to algorithm optimisation
+	if (phoneNumber->IsEqualForSyncUpdate(*speedDial))
+		{
+		User::Leave(KErrGeneral); 
+		}
+
+	speedDial->RemoveFieldType(KUidSpeedDialNine);
+
+	////////////////////////////////////////////
+
+	CleanupStack::PopAndDestroy(2,phoneNumber); //type1, type2
+	}
+
+
+
+LOCAL_C void DoTestDifferentPhoneNumberL()
+	{
+	//Create a calypso general phone number content type
+	CContentType* calypsoGeneralPhoneNumber=CContentType::NewL(KUidContactFieldPhoneNumber,KUidContactFieldVCardMapTEL);
+	CleanupStack::PushL(calypsoGeneralPhoneNumber);
+	calypsoGeneralPhoneNumber->AddFieldTypeL(KUidContactFieldVCardMapVOICE);
+	
+	//Create a calypso general mobile number content type
+	CContentType* calypsoGeneralMobileNumber=CContentType::NewL(KUidContactFieldPhoneNumber,KUidContactFieldVCardMapTEL);
+	CleanupStack::PushL(calypsoGeneralMobileNumber);
+	calypsoGeneralMobileNumber->AddFieldTypeL(KUidContactFieldVCardMapVOICE);
+	calypsoGeneralMobileNumber->AddFieldTypeL(KUidContactFieldVCardMapCELL);
+
+	if (calypsoGeneralPhoneNumber->IsEqualForSyncUpdate(*calypsoGeneralMobileNumber))
+		{
+		User::Leave(KErrGeneral); //Leave if equal 
+		}
+
+	if (calypsoGeneralMobileNumber->IsEqualForSyncUpdate(*calypsoGeneralPhoneNumber))
+		{
+		User::Leave(KErrGeneral); //Leave if equal	
+		}
+
+	//Must be equal to itself
+	if (!calypsoGeneralMobileNumber->IsEqualForSyncUpdate(*calypsoGeneralMobileNumber))
+		{
+		User::Leave(KErrGeneral); //Leave if not equal	
+		}
+
+	//Must be equal to itself
+	if (!calypsoGeneralPhoneNumber->IsEqualForSyncUpdate(*calypsoGeneralPhoneNumber))
+		{
+		User::Leave(KErrGeneral); //Leave if not equal	
+		}
+
+	/////////Now test if the voice property exception does not create any side effect //////////
+
+	calypsoGeneralMobileNumber->RemoveFieldType(KUidContactFieldVCardMapVOICE);
+
+	if (calypsoGeneralPhoneNumber->IsEqualForSyncUpdate(*calypsoGeneralMobileNumber))
+		{
+		User::Leave(KErrGeneral); //Leave if equal 
+		}
+
+	if (calypsoGeneralMobileNumber->IsEqualForSyncUpdate(*calypsoGeneralPhoneNumber))
+		{
+		User::Leave(KErrGeneral); //Leave if equal	
+		}
+
+	//Must be equal to itself
+	if (!calypsoGeneralMobileNumber->IsEqualForSyncUpdate(*calypsoGeneralMobileNumber))
+		{
+		User::Leave(KErrGeneral); //Leave if not equal	
+		}
+
+	////////////////////////////////////////////////////////////////////////////////
+	
+	/////////Now test if the pref property exception does not create any side effect //////////
+
+	calypsoGeneralMobileNumber->AddFieldTypeL(KUidContactFieldVCardMapPREF);
+
+	if (calypsoGeneralPhoneNumber->IsEqualForSyncUpdate(*calypsoGeneralMobileNumber))
+		{
+		User::Leave(KErrGeneral); //Leave if equal 
+		}
+
+	if (calypsoGeneralMobileNumber->IsEqualForSyncUpdate(*calypsoGeneralPhoneNumber))
+		{
+		User::Leave(KErrGeneral); //Leave if equal	
+		}
+
+	//Must be equal to itself
+	if (!calypsoGeneralMobileNumber->IsEqualForSyncUpdate(*calypsoGeneralMobileNumber))
+		{
+		User::Leave(KErrGeneral); //Leave if not equal	
+		}
+
+	calypsoGeneralPhoneNumber->AddFieldTypeL(KUidContactFieldVCardMapPREF);
+
+	if (calypsoGeneralPhoneNumber->IsEqualForSyncUpdate(*calypsoGeneralMobileNumber))
+		{
+		User::Leave(KErrGeneral); //Leave if equal 
+		}
+
+	if (calypsoGeneralMobileNumber->IsEqualForSyncUpdate(*calypsoGeneralPhoneNumber))
+		{
+		User::Leave(KErrGeneral); //Leave if equal	
+		}
+
+	//Must be equal to itself
+	if (!calypsoGeneralPhoneNumber->IsEqualForSyncUpdate(*calypsoGeneralPhoneNumber))
+		{
+		User::Leave(KErrGeneral); //Leave if not equal	
+		}
+
+	////////////////////////////////////////////////////////////////////////////////
+	
+	CleanupStack::PopAndDestroy(2); //type1, type2
+	}
+
+
+LOCAL_C void DoTestEqualPhoneNumberL()
+	{
+	//Create a calypso general phone number content type
+	CContentType* samePhoneNumber=CContentType::NewL(KUidContactFieldPhoneNumber,KUidContactFieldVCardMapTEL);
+	CleanupStack::PushL(samePhoneNumber);
+	samePhoneNumber->AddFieldTypeL(KUidContactFieldVCardMapVOICE);
+	
+	//Create a calypso general phone number content type
+	CContentType* samePhoneNumberBis=CContentType::NewL(KUidContactFieldPhoneNumber,KUidContactFieldVCardMapTEL);
+	CleanupStack::PushL(samePhoneNumberBis);
+	samePhoneNumberBis->AddFieldTypeL(KUidContactFieldVCardMapVOICE);
+	
+	
+	if (!samePhoneNumber->IsEqualForSyncUpdate(*samePhoneNumberBis))
+		{
+		User::Leave(KErrGeneral); //Leave if not equal	
+		}
+
+
+	if (!samePhoneNumberBis->IsEqualForSyncUpdate(*samePhoneNumber))
+		{
+		User::Leave(KErrGeneral); //Leave if not equal	
+		}
+
+	//////////////////Check voice property exception////////////////////
+
+	samePhoneNumber->AddFieldTypeL(KUidContactFieldVCardMapPREF);
+
+	if (!samePhoneNumber->IsEqualForSyncUpdate(*samePhoneNumberBis))
+		{
+		User::Leave(KErrGeneral); //Leave if not equal	
+		}
+
+
+	if (!samePhoneNumberBis->IsEqualForSyncUpdate(*samePhoneNumber))
+		{
+		User::Leave(KErrGeneral); //Leave if not equal	
+		}
+
+	samePhoneNumber->RemoveFieldType(KUidContactFieldVCardMapPREF);
+
+
+	//////////////////Check pref property exception////////////////////
+
+	samePhoneNumber->RemoveFieldType(KUidContactFieldVCardMapVOICE);
+
+	if (!samePhoneNumber->IsEqualForSyncUpdate(*samePhoneNumberBis))
+		{
+		User::Leave(KErrGeneral); //Leave if not equal	
+		}
+
+	if (!samePhoneNumberBis->IsEqualForSyncUpdate(*samePhoneNumber))
+		{
+		User::Leave(KErrGeneral); //Leave if not equal	
+		}
+
+	samePhoneNumber->AddFieldTypeL(KUidContactFieldVCardMapVOICE);
+
+	//////////////////Check pref and voice property exception together////////////////////
+	
+	samePhoneNumber->AddFieldTypeL(KUidContactFieldVCardMapPREF);
+	samePhoneNumber->RemoveFieldType(KUidContactFieldVCardMapVOICE);
+
+
+	if (!samePhoneNumber->IsEqualForSyncUpdate(*samePhoneNumberBis))
+		{
+		User::Leave(KErrGeneral); //Leave if not equal	
+		}
+
+
+	if (!samePhoneNumberBis->IsEqualForSyncUpdate(*samePhoneNumber))
+		{
+		User::Leave(KErrGeneral); //Leave if not equal	
+		}
+
+	samePhoneNumber->RemoveFieldType(KUidContactFieldVCardMapPREF);
+	samePhoneNumber->AddFieldTypeL(KUidContactFieldVCardMapVOICE);
+
+
+	//////////////////Check pref and voice property exception together when set in both content type////////////////////
+	
+	samePhoneNumber->AddFieldTypeL(KUidContactFieldVCardMapPREF);
+	samePhoneNumber->RemoveFieldType(KUidContactFieldVCardMapVOICE);
+	samePhoneNumberBis->AddFieldTypeL(KUidContactFieldVCardMapPREF);
+	samePhoneNumberBis->RemoveFieldType(KUidContactFieldVCardMapVOICE);
+
+	if (!samePhoneNumber->IsEqualForSyncUpdate(*samePhoneNumberBis))
+		{
+		User::Leave(KErrGeneral); //Leave if not equal	
+		}
+
+
+	if (!samePhoneNumberBis->IsEqualForSyncUpdate(*samePhoneNumber))
+		{
+		User::Leave(KErrGeneral); //Leave if not equal	
+		}
+
+	/////////////////////////////////////////////////////////////////////////////////////////
+
+
+	CleanupStack::PopAndDestroy(2); //type1, type2
+	}
+
+
+LOCAL_C void DoTestDifferentEmailL()
+	{
+	//Create a calypso email general 
+	CContentType* emailGeneral=CContentType::NewL(KUidContactFieldEMail,KUidContactFieldVCardMapEMAILINTERNET);
+	CleanupStack::PushL(emailGeneral);
+		
+	//Create a calypso email work
+	CContentType* emailWork=CContentType::NewL(KUidContactFieldEMail,KUidContactFieldVCardMapEMAILINTERNET);
+	CleanupStack::PushL(emailWork);
+	emailWork->AddFieldTypeL(KUidContactFieldVCardMapWORK);
+	
+	///////// Check  ///////////
+
+	if (emailGeneral->IsEqualForSyncUpdate(*emailWork))
+		{
+		User::Leave(KErrGeneral); //Leave if equal	
+		}
+
+	if (emailWork->IsEqualForSyncUpdate(*emailGeneral))
+		{
+		User::Leave(KErrGeneral); //Leave if equal	
+		}
+
+	//Check if equal to itself
+	if (!emailGeneral->IsEqualForSyncUpdate(*emailGeneral))
+		{
+		User::Leave(KErrGeneral); //Leave if not equal	
+		}
+	
+	//Check if equal to itself
+	if (!emailWork->IsEqualForSyncUpdate(*emailWork))
+		{
+		User::Leave(KErrGeneral); //Leave if equal	
+		}
+
+	///////// Check pref not create side effect ///////////
+
+	emailWork->AddFieldTypeL(KUidContactFieldVCardMapPREF);
+
+	if (emailGeneral->IsEqualForSyncUpdate(*emailWork))
+		{
+		User::Leave(KErrGeneral); //Leave if equal	
+		}
+
+	if (emailWork->IsEqualForSyncUpdate(*emailGeneral))
+		{
+		User::Leave(KErrGeneral); //Leave if equal	
+		}
+
+	//Check if equal to itself
+	if (!emailWork->IsEqualForSyncUpdate(*emailWork))
+		{
+		User::Leave(KErrGeneral); //Leave if equal	
+		}
+	
+	emailWork->RemoveFieldType(KUidContactFieldVCardMapPREF);
+
+	CleanupStack::PopAndDestroy(2); //type1, type2
+	}
+	
+LOCAL_C void DoTestEqualEmailL()
+	{
+	//Create a calypso email general 
+	CContentType* sameEmail=CContentType::NewL(KUidContactFieldEMail,KUidContactFieldVCardMapEMAILINTERNET);
+	CleanupStack::PushL(sameEmail);
+		
+	//Create a calypso email work
+	CContentType* sameEmailBis=CContentType::NewL(KUidContactFieldEMail,KUidContactFieldVCardMapEMAILINTERNET);
+	CleanupStack::PushL(sameEmailBis);
+
+
+	if (!sameEmailBis->IsEqualForSyncUpdate(*sameEmail))
+		{
+		User::Leave(KErrGeneral); //Leave if not equal	
+		}
+
+	if (!sameEmail->IsEqualForSyncUpdate(*sameEmailBis))
+		{
+		User::Leave(KErrGeneral); //Leave if not equal	
+		}
+
+
+	///////// Check pref is ignore ///////////
+	sameEmail->AddFieldTypeL(KUidContactFieldVCardMapPREF);
+
+	if (!sameEmailBis->IsEqualForSyncUpdate(*sameEmail))
+		{
+		User::Leave(KErrGeneral); //Leave if not equal	
+		}
+
+	if (!sameEmail->IsEqualForSyncUpdate(*sameEmailBis))
+		{
+		User::Leave(KErrGeneral); //Leave if not equal	
+		}
+	
+	sameEmail->RemoveFieldType(KUidContactFieldVCardMapPREF);
+
+	CleanupStack::PopAndDestroy(2); //type1, type2
+	}
+
+
+
+void DoBenchMarkL()
+	{
+	}
+
+/**
+
+@SYMTestCaseID     PIM-T-WRONGFIELDMATCH-0001
+
+*/
+
+LOCAL_C void DoTestsL()
+    {
+	DoBenchMarkL();
+	
+
+	test.Start(_L("@SYMTESTCaseID:PIM-T-WRONGFIELDMATCH-0001 T_WRONGFIELDMATCH"));
+
+	
+	DoTestDifferentEmailL();
+	DoTestEqualEmailL();
+	DoTestSpeedDialIgnoreL();
+	DoTestVoiceDialIgnoreL();
+	DoTestDifferentPhoneNumberL();
+	DoTestEqualPhoneNumberL();
+	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_WrongFieldMatch  Failed"),err);
+		}
+
+
+
+    delete cleanupStack;
+	return err;
+    }