diff -r 000000000000 -r 2e3d3ce01487 commonappservices/alarmserver/Test/TBitwiseOps.cpp --- /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 +#include +#include + +// 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; + }