localisation/apparchitecture/tef/testableapalssession.h
branchSymbian2
changeset 1 8758140453c0
child 6 c108117318cb
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/localisation/apparchitecture/tef/testableapalssession.h	Thu Jan 21 12:53:44 2010 +0000
@@ -0,0 +1,114 @@
+// 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 the License "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-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__