--- /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;
+ }