diff -r bbd31066657e -r 8bb370ba6d1d testexecfw/stf/stfext/testmodules/teftestmod/teftestmodulefw/tefunit/inc/tefunit.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/testexecfw/stf/stfext/testmodules/teftestmod/teftestmodulefw/tefunit/inc/tefunit.h Fri Apr 09 10:46:28 2010 +0800 @@ -0,0 +1,374 @@ +/* +* Copyright (c) 2005-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: +* +*/ + + + +/** + @file TEFUnit.h +*/ + +#ifndef __TEF_UNIT__ +#define __TEF_UNIT__ + +#include +#include +#include + +/********************************************************************************* + * Assert Macros + *********************************************************************************/ +#define __ASSERT_SHARED(aFunction, aMessage) \ + if(!aFunction) \ + { \ + Logger().LogExtra(((TText8*)__FILE__), __LINE__, ESevrAll, aMessage );\ + User::Leave(KErrTEFUnitFail);\ + } + +#define ASSERT_EQUALS(aExpected, aActual) \ + __ASSERT_SHARED(AssertEquals(aExpected, aActual) , KTEFAssertFailedEquals); + +#define ASSERT_NULL(aPtr) \ + __ASSERT_SHARED(AssertNull(aPtr), KTEFAssertFailedNull); + +#define ASSERT_NOT_NULL(aPtr) \ + __ASSERT_SHARED(!AssertNull(aPtr), KTEFAssertFailedNotNull); + +#define ASSERT_SAME(aExpectedPtr, aActualPtr) \ + __ASSERT_SHARED(AssertSame(aExpectedPtr, aActualPtr), KTEFAssertFailedSame); + +#define ASSERT_NOT_SAME(aExpectedPtr, aActualPtr) \ + __ASSERT_SHARED(!AssertSame(aExpectedPtr, aActualPtr), KTEFAssertFailedNotSame); + +#define ASSERT_TRUE(aCondition) \ + __ASSERT_SHARED(AssertTrue(aCondition), KTEFAssertFailedTrue); + +#define ASSERT_FALSE(aCondition) \ + __ASSERT_SHARED(!AssertTrue(aCondition), KTEFAssertFailedFalse); + +/********************************************************************************* + * CTestConfig class + *********************************************************************************/ + +class CTestConfig +/** +@publishedPartner +@test +*/ + { +public: + CTestConfig(); + CTestConfig(const CTestConfig& aTestConfig ); + CTestConfig( CTestStep* aTestStep ); + ~CTestConfig(); + + TBool GetBool(const TDesC& aSectionName, const TDesC& aKey, TBool& aResult) const; + TBool GetInt(const TDesC& aSectionName, const TDesC& aKey, TInt& aResult) const; + TBool GetHex(const TDesC& aSectionName, const TDesC& aKey, TInt& aResult) const; + TBool GetString(const TDesC& aSectionName, const TDesC& aKey, TPtrC& aResult) const; + + // Use the section name passed in via the script + TBool GetBool(const TDesC& aKey, TBool& aResult) const; + TBool GetInt(const TDesC& aKey, TInt& aResult) const; + TBool GetHex(const TDesC& aKey, TInt& aResult) const; + TBool GetString(const TDesC& aKey, TPtrC& aResult) const; + + TBool WriteBool(const TDesC& aSectionName, const TDesC& aKey, TBool& aValue) const; + TBool WriteInt(const TDesC& aSectionName, const TDesC& aKey, TInt& aValue) const; + TBool WriteHex(const TDesC& aSectionName, const TDesC& aKey, TInt& aValue) const; + TBool WriteString(const TDesC& aSectionName, const TDesC& aKey, TPtrC& aValue) const; + + // Use the section name passed in via the script + TBool WriteBool(const TDesC& aKey, TBool& aValue) const; + TBool WriteInt(const TDesC& aKey, TInt& aValue) const; + TBool WriteHex(const TDesC& aKey, TInt& aValue) const; + TBool WriteString(const TDesC& aKey, TPtrC& aValue) const; + + TBool GetInt(const TDesC& aSectionName, const TDesC& aKey, TInt64& aResult) const; + TBool GetInt(const TDesC& aKey, TInt64& aResult) const; + TBool WriteInt(const TDesC& aSectionName, const TDesC& aKey, TInt64& aValue) const; + TBool WriteInt(const TDesC& aKey, TInt64& aValue) const; + +private: + CTestStep* iTestStep; + }; + + +/********************************************************************************* + * CTestFixture class + *********************************************************************************/ + +class CTestFixture : public CBase +/** +@publishedPartner +@test +*/ + { +public: + virtual ~CTestFixture(); + + virtual void SetupL(); + virtual void TearDownL(); + + void SetConfigL(CTestConfig& aConfig); + void SetLoggerL( CTestExecuteLogger& aLogger ); + inline CTestExecuteLogger& Logger() { return iLogger; } + +protected: + CTestConfig iConfig; + CTestExecuteLogger iLogger; + }; + +/********************************************************************************* + * CActiveTestFixture class + *********************************************************************************/ + +class CActiveTestFixture : public CTestFixture +/** +@publishedPartner +@test +*/ + { +public: + virtual ~CActiveTestFixture(); + virtual void SetupL(); + virtual void TearDownL(); + // Construct the active environment + virtual void ConstructEnvL(); + // Destroy the active environment + virtual void DestroyEnvL(); + // Start the active environnment + virtual void StartEnvL(); + // Stop the active environnment + virtual void StopEnvL(); + CActiveScheduler* iSched; + }; + +class CTestCase; +class CTestSuite; + +/********************************************************************************* + * MVisitor class + *********************************************************************************/ +class MVisitor + { +public: + virtual void VisitL(CTestCase* aTestCase) = 0; + virtual void VisitL(CTestSuite* aTestSuite) = 0; + }; + + +const TInt KMaxTestName = 256; +typedef TBuf TTestName; + +const TInt KMaxPathSize = KMaxTestName*10; +typedef TBuf TTestPath; + +/********************************************************************************* + * CTestBase class + *********************************************************************************/ +class CTestBase : public CBase + { +public: + CTestBase(const TTestName &aName); + virtual ~CTestBase(); + + const TTestName& Name() const; + virtual void RunL(CTestConfig& aConfig, CTestExecuteLogger& aLogger) = 0; + virtual void AcceptL(MVisitor &aVisitor) = 0; + +protected: + TTestName iName; + }; + + +/********************************************************************************* + * CTestCase class + *********************************************************************************/ +class CTestCase : public CTestBase + { +public: + CTestCase(const TTestName& aName); + virtual ~CTestCase(); + + virtual void RunL(CTestConfig& aConfig, CTestExecuteLogger& aLogger) = 0; + virtual void AcceptL(MVisitor &aVisitor); + }; + +/********************************************************************************* + * Test Suite Macros + *********************************************************************************/ +#define START_SUITE \ + CTestSuite* lTestSuite = CTestSuite::NewL(); + +#define SUB_SUITE \ + CTestSuite* lTestSuite = CTestSuite::NewL(aName); + +#define END_SUITE \ + return lTestSuite; +//PDEF115446 start +// By adding a condition marco to reconginize different compiler +#ifndef __GCCXML__ + // this means using gcc or armcc or mwccsym2 + #define ADD_TEST_STEP(name) \ + _LIT( KTest ## name, #name); \ + AddTestCase(lTestSuite, KTest ## name, &name); + + #define ADD_ASYNC_TEST_STEP(name) \ + _LIT( KTest ## name, #name); \ + AddAsyncTestCase(lTestSuite, KTest ## name, &name); +#endif +#ifdef __GCCXML__ + // this means using gccxml + // GCCXML compiler NOT use ADD_TEST_STEP + // Please use 2 parameter Macro ADD_(ASYNC)_TEST_STEP_CLASS +#endif + +//PDEF115446 +//new version marco +//For both GCCXML and Non-GCCXML compiler +#define ADD_TEST_STEP_CLASS(classname, callback) \ + _LIT( KTest ## callback, #callback);\ + AddTestCase(lTestSuite, KTest ## callback, & classname::callback); + +#define ADD_ASYNC_TEST_STEP_CLASS(classname, callback) \ + _LIT( KTest ## callback, #callback);\ + AddAsyncTestCase (lTestSuite, KTest ## callback, & classname::callback); +//PDEF115446 end + +#define ADD_TEST_SUITE(name) \ + _LIT( KTest ## name, #name); \ + lTestSuite->AddL( name::CreateSuiteL( KTest##name)); + + +/********************************************************************************* + * CTestSuite class + *********************************************************************************/ + +class CTestSuite : public CTestBase +/** +@publishedPartner +@test +*/ + { +public: + CTestSuite(const TTestName& aName); + CTestSuite(CTestSuite &rhs); + void ConstructL(); + static CTestSuite* NewL(); + static CTestSuite* NewL(const TTestName& aName); + virtual ~CTestSuite(); + + // Add a test to the suite + virtual void AddL(CTestBase* aTest); + + // Run all the tests in the suite + virtual void RunL(CTestConfig& aConfig, CTestExecuteLogger& aLogger); + + virtual void AcceptL(MVisitor &aVisitor); + + TInt Count(); + TTestName NameL( TInt anIndex ); + CTestBase* TestL( TInt anIndex ); + +private: + RPointerArray iTests; + TInt iError; + }; + + +/********************************************************************************* + * CTestCaseTemplate class + *********************************************************************************/ +template +class CTestCaseTemplate : public CTestCase + { +private: + typedef void (Fixture::*TestMethod)(); + +public: + CTestCaseTemplate(const TDesC &aName, TestMethod aTestMethod ); + virtual ~CTestCaseTemplate(); + + virtual void RunL(CTestConfig& aConfig, CTestExecuteLogger& aLogger); + +protected: + TestMethod iTest; + }; + +/********************************************************************************* + * CActiveTester class + *********************************************************************************/ +const TInt KNumberOfDelays = 3; + +template +class CActiveTester : public CTimer + { +private: + typedef void (Fixture::*TestMethod)(); + +public: + CActiveTester(Fixture* aFixture, TestMethod aTestMethod, TTimeIntervalMicroSeconds32 /*aDelays[KNumberOfDelays]*/ ); + virtual ~CActiveTester(); + + virtual void RunL(); + virtual TInt RunError(TInt /*aError*/); + TInt Error(); + virtual void ConstructEnvL(); + void DestroyEnvL(); + void StartEnvL(); + void SetLoggerL(CTestExecuteLogger& aLogger); + void SetConfigL(CTestConfig& aConfig); + +protected: + enum TTestState + { + EConstruct = 0, + ERunTest, + EDestroy, + EExit + }; + + TTestState iState; + Fixture* iFixture; + TestMethod iTest; + TTimeIntervalMicroSeconds32 iDelays[KNumberOfDelays]; + TInt iError; + }; + + +/********************************************************************************* + * CAsyncTestCase class + *********************************************************************************/ +template +class CAsyncTestCase : public CTestCase + { +private: + typedef void (Fixture::*TestMethod)(); + +public: + CAsyncTestCase(const TDesC &aName, TestMethod aTestMethod ); + virtual ~CAsyncTestCase(); + + virtual void RunL(CTestConfig& aConfig, CTestExecuteLogger& aLogger); + +protected: + TestMethod iTest; + }; + +#include + +#endif // __TEF_UNIT__