diff -r 7fdc9a71d314 -r 8ad140f3dd41 stif/stif_plat/inc/StifUnitMacros.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/stif/stif_plat/inc/StifUnitMacros.h Wed Oct 13 16:17:58 2010 +0300 @@ -0,0 +1,217 @@ +/* +* Copyright (c) 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: STIFUnit macros declarations +* +*/ + +#ifndef STIFUnit_MACROS_H +#define STIFUnit_MACROS_H + +// Enumeration types +// Reason for running test method +enum TCallReason + { + EEnumerateTestCases, + ERunTestCase, + ECountTestCases, //Used to count test cases. + //This should be already done by enumerating procedure, + //however in case of test crash all internal data are + //being lost. + }; + + +// Strings +_LIT( KAssertFailedEquals, "AssertEquals Failed [F:%s][L:%d]" ); +_LIT( KAssertFailedNotEquals, "AssertNotEquals Failed [F:%s][L:%d]" ); +_LIT( KAssertFailedNull, "AssertNull Failed [F:%s][L:%d]" ); +_LIT( KAssertFailedNotNull, "AssertNotNull Failed [F:%s][L:%d]" ); +_LIT( KAssertFailedSame, "AssertSame Failed [F:%s][L:%d]" ); +_LIT( KAssertFailedNotSame, "AssertNotSame Failed [F:%s][L:%d]" ); +_LIT( KAssertFailedTrue, "AssertTrue Failed [F:%s][L:%d]" ); +_LIT( KAssertFailedFalse, "AssertFalse Failed [F:%s][L:%d]" ); +_LIT( KAssertFailedNotLeaves, "AssertNotLeaves Failed [F:%s][L:%d]" ); +_LIT( KAssertFailedLeaves, "AssertLeaves Failed [F:%s][L:%d]" ); +_LIT( KAssertFailedLeavesWith, "AssertLeavesWith Failed [F:%s][L:%d]" ); + + +#ifdef _UNICODE + #define __STIF_WIDEN2(x) L ## x + #define __STIF_WIDEN(x) __STIF_WIDEN2(x) + #define __STIF_DBG_FILE__ __STIF_WIDEN(__FILE__) +#else + #define __STIF_DBG_FILE__ __FILE__ +#endif + + +// Logs to the STIF log file AND to the RDebug +#define STIF_LOG( aMessage ) \ + iLog->Log( _L( aMessage ) ); RDebug::Print( _L( aMessage ) ); + + +// Defines a separate test case which consists of two blocks - one for enumeration of test cases +// second for running the testcase. +#define STIF_TESTDEFINE( aTestName ) \ +_test_case_no++; \ +if( aRunReason == EEnumerateTestCases ) \ + { \ + TTestCaseInfo* newCase = new( ELeave ) TTestCaseInfo(); \ + CleanupStack::PushL( newCase ); \ + newCase->iCaseNumber = _test_case_no; \ + newCase->iTitle.Copy( _L( #aTestName ) ); \ + User::LeaveIfError(aTestCases.Append ( newCase ) ); \ + CleanupStack::Pop( newCase ); \ + } \ +else if(aRunReason == ERunTestCase && _test_case_no == aTestToRun) + +#define STIF_RUN_SETUP -1 +#define STIF_RUN_TEARDOWN -2 + +// Defines a setup section of MainTestL method +#define STIF_SETUP \ + if( aRunReason == ERunTestCase && aTestToRun == STIF_RUN_SETUP ) + +// Defines a teardown section of MainTestL method +#define STIF_TEARDOWN \ + if( aRunReason == ERunTestCase && aTestToRun == STIF_RUN_TEARDOWN ) + +/********************************************************************************* + * Assert Macros + *********************************************************************************/ +#define __STIF_ASSERT_SHARED( aFunction, aMessage ) \ + if(!aFunction) \ + { \ + iLog->Log( aMessage, __STIF_DBG_FILE__, __LINE__ );\ + aResult.SetResult( KErrGeneral, _L("Testcase failed"));\ + User::Leave( KErrGeneral );\ + } + +#define __STIF_ASSERT_SHARED_DESC( aFunction, aMessage, aDesc ) \ + if(!aFunction) \ + { \ + iLog->Log( aMessage, __STIF_DBG_FILE__, __LINE__ );\ + aResult.SetResult( KErrGeneral, aDesc );\ + User::Leave( KErrGeneral );\ + } \ + else \ + { \ + aResult.SetResult( KErrNone, aDesc ); \ + } + + + +#define STIF_ASSERT_EQUALS( aExpected, aActual ) \ + __STIF_ASSERT_SHARED( AssertEquals( aExpected, aActual ) , KAssertFailedEquals ); + +#define STIF_ASSERT_EQUALS_DESC( aExpected, aActual, aDescription ) \ + __STIF_ASSERT_SHARED_DESC( AssertEquals( aExpected, aActual ) , KAssertFailedEquals, aDescription ); + +#define STIF_ASSERT_NOT_EQUALS( aExpected, aActual ) \ + __STIF_ASSERT_SHARED( !AssertEquals( aExpected, aActual ) , KAssertFailedNotEquals ); + +#define STIF_ASSERT_NOT_EQUALS_DESC( aExpected, aActual, aDescription ) \ + __STIF_ASSERT_SHARED_DESC( !AssertEquals( aExpected, aActual ) , KAssertFailedNotEquals, aDescription ); + +#define STIF_ASSERT_NULL( aPtr ) \ + __STIF_ASSERT_SHARED( AssertNull( aPtr ), KAssertFailedNull ); + +#define STIF_ASSERT_NULL_DESC( aPtr, aDescription ) \ + __STIF_ASSERT_SHARED_DESC( AssertNull( aPtr ), KAssertFailedNull, aDescription ); + +#define STIF_ASSERT_NOT_NULL( aPtr ) \ + __STIF_ASSERT_SHARED( !AssertNull( aPtr ), KAssertFailedNotNull ); + +#define STIF_ASSERT_NOT_NULL_DESC( aPtr, aDescription ) \ + __STIF_ASSERT_SHARED_DESC( !AssertNull( aPtr ), KAssertFailedNotNull, aDescription ); + +#define STIF_ASSERT_SAME( aExpectedPtr, aActualPtr ) \ + __STIF_ASSERT_SHARED( AssertSame( aExpectedPtr, aActualPtr ), KAssertFailedSame ); + +#define STIF_ASSERT_SAME_DESC( aExpectedPtr, aActualPtr, aDescription ) \ + __STIF_ASSERT_SHARED_DESC( AssertSame( aExpectedPtr, aActualPtr ), KAssertFailedSame, aDescription ); + +#define STIF_ASSERT_NOT_SAME( aExpectedPtr, aActualPtr) \ + __STIF_ASSERT_SHARED( !AssertSame( aExpectedPtr, aActualPtr ), KAssertFailedNotSame ); + +#define STIF_ASSERT_NOT_SAME_DESC( aExpectedPtr, aActualPtr, aDescription ) \ + __STIF_ASSERT_SHARED_DESC( !AssertSame( aExpectedPtr, aActualPtr ), KAssertFailedNotSame, aDescription ); + +#define STIF_ASSERT_TRUE( aCondition ) \ + __STIF_ASSERT_SHARED( AssertTrue( aCondition ), KAssertFailedTrue ); + +#define STIF_ASSERT_TRUE_DESC( aCondition, aDescription ) \ + __STIF_ASSERT_SHARED_DESC( AssertTrue( aCondition ), KAssertFailedTrue, aDescription ); + +#define STIF_ASSERT_FALSE( aCondition ) \ + __STIF_ASSERT_SHARED( !AssertTrue( aCondition ), KAssertFailedFalse ); + +#define STIF_ASSERT_FALSE_DESC( aCondition, aDescription ) \ + __STIF_ASSERT_SHARED_DESC( !AssertTrue( aCondition), KAssertFailedFalse, aDescription ); + +// Eclosing block is used to create the scope for the __leaveValue +#define STIF_ASSERT_NOT_LEAVES( aStatement ) \ + { \ + TRAPD( __leaveValue, aStatement ); \ + __STIF_ASSERT_SHARED( AssertEquals( __leaveValue, KErrNone ), KAssertFailedNotLeaves ); \ + } + +#define STIF_ASSERT_NOT_LEAVES_DESC( aStatement, aDescription ) \ + { \ + TRAPD( __leaveValue, aStatement ); \ + __STIF_ASSERT_SHARED_DESC( AssertEquals( __leaveValue, KErrNone ), KAssertFailedNotLeaves, aDescription ); \ + } + +// Eclosing block is used to create the scope for the __leaveValue +#define STIF_ASSERT_LEAVES( aStatement ) \ + { \ + TRAPD( __leaveValue, aStatement ); \ + __STIF_ASSERT_SHARED( !AssertEquals( __leaveValue, KErrNone ), KAssertFailedLeaves ); \ + } + +#define STIF_ASSERT_LEAVES_DESC( aStatement, aDescription ) \ + { \ + TRAPD( __leaveValue, aStatement ); \ + __STIF_ASSERT_SHARED_DESC( !AssertEquals( __leaveValue, KErrNone ), KAssertFailedLeaves, aDescription ); \ + } + +// Eclosing block is used to create the scope for the __leaveValue +#define STIF_ASSERT_LEAVES_WITH( aLeaveCode, aStatement ) \ + { \ + TRAPD( __leaveValue, aStatement ); \ + __STIF_ASSERT_SHARED( AssertEquals( __leaveValue, aLeaveCode ), KAssertFailedLeaves ); \ + } + +#define STIF_ASSERT_LEAVES_WITH_DESC( aLeaveCode, aStatement, aDescription ) \ + { \ + TRAPD( __leaveValue, aStatement ); \ + __STIF_ASSERT_SHARED_DESC( AssertEquals( __leaveValue, aLeaveCode ), KAssertFailedLeaves, aDescription ); \ + } + +#define STIF_ASSERT_PANIC( aPanicCode, aStatement ) \ + { \ + TestModuleIf().SetExitReason( CTestModuleIf::EPanic, aPanicCode ); \ + aStatement; \ + } + +#define STIF_ASSERT_PANIC_DESC( aPanicCode, aStatement, aDescription ) \ + { \ + TestModuleIf().SetExitReason( CTestModuleIf::EPanic, aPanicCode ); \ + aResult.SetResult(KErrNone, aDescription); \ + aStatement; \ + } + +#include + +#endif + +// End of File