commonappservices/alarmserver/Test/TBitwiseOps.cpp
changeset 0 2e3d3ce01487
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commonappservices/alarmserver/Test/TBitwiseOps.cpp	Tue Feb 02 10:12:00 2010 +0200
@@ -0,0 +1,204 @@
+// Copyright (c) 1999-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:
+//
+
+// System includes
+#include <e32base.h>
+#include <e32test.h>
+#include <f32file.h>
+
+// Literal constants
+_LIT(KTestTitle, "TBitwiseOps");
+
+// Globals
+RTest TheTest(KTestTitle);
+
+void DoSetAndClearL()
+	{
+	TInt iTestFlags   = 0;
+	TInt iFlagIsSet   = 0;
+	TInt iFlagIsClear = 0;
+
+	//set "color" flags
+	iTestFlags |= 0x00000001; //set blue color (0)
+	iTestFlags |= 0x00000002; //set red color (1)
+	iTestFlags |= 0x00000004; //set green color (2)
+	iTestFlags |= 0x00000008; //set yellow color (3)  
+	iTestFlags |= 0x00000010; //set purple color (4)
+	iTestFlags |= 0x00000020; //set black color (5)
+	iTestFlags |= 0x00000040; //set white color (6)
+	iTestFlags |= 0x00000080; //set grey color (7)
+
+
+	//Is the "color" flag set?
+	//If yes, iFlagIsSet = the actual data value of the color
+	//If not, iFlagIsSet = 0
+	iFlagIsSet = iTestFlags & 0x00000001; //blue color (0)
+	if (iFlagIsSet != 1) User::Leave(KErrGeneral);
+	TheTest(iFlagIsSet == 1, __LINE__);
+
+	iFlagIsSet = iTestFlags & 0x00000002; //red color (1)
+	TheTest(iFlagIsSet == 2, __LINE__);
+
+	iFlagIsSet = iTestFlags & 0x00000004; //green color (2)
+	TheTest(iFlagIsSet == 4, __LINE__);
+
+	iFlagIsSet = iTestFlags & 0x00000008; //yellow color (3)
+	TheTest(iFlagIsSet == 8, __LINE__);
+
+	iFlagIsSet = iTestFlags & 0x00000010; //purple color (4)
+	TheTest(iFlagIsSet == 16, __LINE__);
+
+	iFlagIsSet = iTestFlags & 0x00000020; //black color (5)
+	TheTest(iFlagIsSet == 32, __LINE__);
+
+	iFlagIsSet = iTestFlags & 0x00000040; //white color (6)
+	TheTest(iFlagIsSet == 64, __LINE__);
+
+	iFlagIsSet = iTestFlags & 0x00000080; //grey color (7)
+	TheTest(iFlagIsSet == 128, __LINE__);
+
+
+	//clear "color" flags
+	iTestFlags &= ~0x00000001; //clear blue color (0)
+	iTestFlags &= ~0x00000002; //clear red color (1)
+	iTestFlags &= ~0x00000004; //clear green color (2)
+	iTestFlags &= ~0x00000008; //clear yellow color (3)  
+	iTestFlags &= ~0x00000010; //clear purple color (4)
+	iTestFlags &= ~0x00000020; //clear black color (5)
+	iTestFlags &= ~0x00000040; //clear white color (6)
+	iTestFlags &= ~0x00000080; //clear grey color (7)
+
+	//Is the "color" flag clear?
+	//If yes, iFlagIsClear = 1
+	//If not, iFlagIsClear = 0
+	iFlagIsClear = !(iTestFlags & 0x00000001); //blue color (0)
+	TheTest(iFlagIsClear == 1, __LINE__);
+
+	iFlagIsClear = !(iTestFlags & 0x00000002); //red color (1)
+	TheTest(iFlagIsClear == 1, __LINE__);
+  
+	iFlagIsClear = !(iTestFlags & 0x00000004); //green color (2)
+	TheTest(iFlagIsClear == 1, __LINE__);
+
+	iFlagIsClear = !(iTestFlags & 0x00000008); //yellow color (3)
+	TheTest(iFlagIsClear == 1, __LINE__);
+
+	iFlagIsClear = !(iTestFlags & 0x00000010); //purple color (4)
+	TheTest(iFlagIsClear == 1, __LINE__);
+
+	iFlagIsClear = !(iTestFlags & 0x00000020); //black color (5)
+	TheTest(iFlagIsClear == 1, __LINE__);
+
+	iFlagIsClear = !(iTestFlags & 0x00000040); //white color (6)
+	TheTest(iFlagIsClear == 1, __LINE__);
+
+	iFlagIsClear = !(iTestFlags & 0x00000080); //grey color (7)
+	TheTest(iFlagIsClear == 1, __LINE__);
+	}
+
+void DoToggle()
+	{
+	TInt iTestFlags = 0;
+
+	iTestFlags ^= 0x00000001; // switch on blue color (1)
+	iTestFlags ^= 0x00000001; // switch off blue color
+	iTestFlags ^= 0x00000001; // switch on blue color
+	TheTest(iTestFlags == 1, __LINE__);
+
+	iTestFlags ^= 0x00000002; // switch on and off red color (2)
+	iTestFlags ^= 0x00000002;
+	iTestFlags ^= 0x00000002;
+	TheTest(iTestFlags == 3, __LINE__);
+
+	iTestFlags ^= 0x00000004; // switch on and off green color (3)
+	iTestFlags ^= 0x00000004;
+	iTestFlags ^= 0x00000004;
+	TheTest(iTestFlags == 7, __LINE__);
+
+	iTestFlags ^= 0x00000008; // switch on and off yellow color (4)
+	iTestFlags ^= 0x00000008;
+	iTestFlags ^= 0x00000008;
+	TheTest(iTestFlags == 15, __LINE__);
+
+	iTestFlags ^= 0x00000010; // switch on and off purple color (5)
+	iTestFlags ^= 0x00000010;
+	iTestFlags ^= 0x00000010;
+	TheTest(iTestFlags == 31, __LINE__);
+
+	iTestFlags ^= 0x00000020; // switch on and off black color (6)
+	iTestFlags ^= 0x00000020;
+	iTestFlags ^= 0x00000020;
+	TheTest(iTestFlags == 63, __LINE__);
+
+	iTestFlags ^= 0x00000040; // switch on and off white color (7)
+	iTestFlags ^= 0x00000040;
+	iTestFlags ^= 0x00000040;
+	TheTest(iTestFlags == 127, __LINE__);
+	}
+
+void DoOperators()
+	{
+	TInt iTestFlags1 = 0;
+	TInt iTestFlags2 = 0;
+  
+	//test equality sign
+	iTestFlags1 |= 0x00000040;
+	iTestFlags2 |= 0x00000040;
+	TheTest(iTestFlags1 == iTestFlags2, __LINE__);
+
+	//test assignment sign
+	iTestFlags1 ^= 0x00000040;
+	iTestFlags2 = iTestFlags1;
+	TheTest(iTestFlags1 == iTestFlags2, __LINE__);
+	}
+
+void RunTestsL()
+	{
+	CActiveScheduler* scheduler = new (ELeave) CActiveScheduler;
+	CleanupStack::PushL(scheduler);
+	CActiveScheduler::Install(scheduler);
+
+	DoSetAndClearL();
+	DoToggle();
+	DoOperators();
+	
+	CleanupStack::PopAndDestroy(scheduler);
+	}
+
+/**
+@SYMTestCaseID PIM-TBITWISEOPS-0001
+*/
+TInt E32Main()
+	{
+	__UHEAP_MARK;
+	//
+	TheTest.Title();
+	CTrapCleanup* cleanup = CTrapCleanup::New();
+	if (!cleanup)
+	return KErrNoMemory;
+	//
+	TheTest.Start(_L("@SYMTestCaseID PIM-TBITWISEOPS-0001 TBITWISEOPS"));
+	TheTest.Title();
+	
+	TRAPD(err, RunTestsL());
+	TheTest(err == KErrNone, __LINE__);
+
+	delete cleanup;
+	TheTest.End();
+	TheTest.Close();
+
+	__UHEAP_MARKEND;
+	return KErrNone;
+	}