--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/appfw/apparchitecture/tef/testableapalssession.h Tue Feb 02 10:12:00 2010 +0200
@@ -0,0 +1,112 @@
+// Copyright (c) 2006-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
+ @internalComponent - Internal Symbian test code
+*/
+
+#ifndef __TESTABLEAPALSSESSION_H__
+#define __TESTABLEAPALSSESSION_H__
+
+#include <apgcli.h>
+
+class RTestableApaLsSession : public RApaLsSession
+ {
+public: //from RApaLsSession
+ TInt Connect();
+public:
+ TInt ConnectWithoutWaitingForListPopulation();
+ TInt HeapMark() const;
+ TInt HeapMarkEnd() const;
+ TInt HeapMarkEnd(TInt aCount) const;
+ TInt HeapFailNext(TInt aCount) const;
+ TInt ClearAppInfoArray() const;
+ TInt FlushRecognitionCache() const;
+ TInt SetLoadRecognizersOnDemand(TBool aLoadRecognizersOnDemand) const;
+ TInt PerformOutstandingRecognizerUnloading() const;
+ void DeleteExtension();
+ TInt WaitForTypeStoreUpdate();
+ TInt AddFailingNonNativeApplicationsUpdate();
+ TInt AddPanicingNonNativeApplicationsUpdate();
+ TInt AddRollbackPanicingNonNativeApplicationsUpdate();
+ };
+
+/**
+Use as @c aCleanup argument to @c HEAP_TEST_LS_SESSION if the test doesn't need
+any cleanup in order to be heap checkable.
+*/
+#define NO_CLEANUP
+/**
+Use as @c aClientCount or @c aServerCount arguments to @c HEAP_TEST_LS_SESSION
+if you don't want the heap to be checked
+*/
+#define DONT_CHECK -1
+
+/**
+Heap tests a RTestableApaLsSession by calling __UHEAP_MARK before some test code
+and __UHEAP_MARKEND after.
+
+@param aApaLsSession A reference to a RTestableApaLsSession
+@param aClientCount The value sent to __UHEAP_MARKENDC() on the client side.
+ Usually 0. DONT_CHECK if no check shall be made.
+@param aServerCount The value sent to __UHEAP_MARKENDC() on the server side.
+ Usually 0. DONT_CHECK if no check shall be made.
+@param aTest The test code
+@param aCleanup Any cleanup that is needed before the heap check is made.
+ NO_CLEANUP if no cleanup is needed.
+*/
+#define HEAP_TEST_LS_SESSION(aApaLsSession, aClientCount, aServerCount, aTest, aCleanup) \
+ if(aClientCount != DONT_CHECK) \
+ { \
+ __UHEAP_MARK; \
+ } \
+ if(aServerCount != DONT_CHECK) \
+ { \
+ const TInt _error = aApaLsSession.HeapMark(); \
+ if(_error != KErrNone) \
+ { \
+ INFO_PRINTF2(_L("__UHEAP_MARK failed on the server (error=%d)"), _error); \
+ } \
+ TESTL(KErrNone == _error); \
+ } \
+ { \
+ TRAPD(_error, aTest); /* execute the test code */ \
+ if(_error != KErrNone) \
+ { \
+ INFO_PRINTF2(_L("Test code issued a leave (%d)"), _error); \
+ } \
+ TESTL(KErrNone == _error); \
+ } \
+ aCleanup; /* execute the cleanup */ \
+ aApaLsSession.DeleteExtension(); \
+ aApaLsSession.PerformOutstandingRecognizerUnloading(); \
+ if(aServerCount != DONT_CHECK) \
+ { \
+ const TInt _error = aApaLsSession.HeapMarkEnd(aServerCount); \
+ if(_error != KErrNone) \
+ { \
+ INFO_PRINTF2(_L("__UHEAP_MARKEND failed on the server (error=%d)"), _error);\
+ } \
+ TESTL(KErrNone == _error); \
+ } \
+ if(aClientCount != DONT_CHECK) \
+ { \
+ __UHEAP_MARKENDC(aClientCount); \
+ } \
+
+
+
+#endif //__TESTABLEAPALSSESSION_H__