phoneclientserver/phoneclient/tsrc/public/basic/ut_ussd/ut_testenv.h
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Tue, 31 Aug 2010 15:45:17 +0300
branchRCL_3
changeset 19 7d48bed6ce0c
permissions -rw-r--r--
Revision: 201033 Kit: 201035



// include files
#include <e32cmn.h>
#include <e32base.h>
#include <f32file.h>
#include "mphsrvphoneinterface.h" // base class

// forward declarations
class RTelServer;
class RMobilePhone;
class RMmCustomAPI;
class CPhSrvResourceManager;
class CPhSrvUssdManager;

/**
 * Mode for current test execution
 */
class TestMode
{
public:
	enum {Immediate=50};
	enum Event{Normal,NoResp,NetworkRelease};

	TestMode(Event event,int error=KErrNone,int timeout=Immediate)
		{m_event=event;m_error=error;m_timeout=timeout;}
	TestMode(int error,int timeout=Immediate)
		{m_event=Normal;m_error=error;m_timeout=timeout;}
	TestMode()
		{m_event=Normal;m_error=KErrNone;m_timeout=Immediate;}
	Event m_event;
	int m_error;
	int m_timeout;
};

/**
 * ETEL message loop
 */
class EtelMsgLoop
{
public:
	EtelMsgLoop();

	// methods
	void receive( const TDesC8& msg, const TDesC8& attr );
	void networkRelease( const TDesC8& msg, const TDesC8& attr );

	//data
	TRequestStatus* mSendMessageReqStatus;

	TRequestStatus* mReceiveMessageReqStatus;
	TDes8* mReceiveMessageData;
	TDes8* mReceiveMessageAttributes;

	TRequestStatus* mNetworkReleaseReqStatus;
	TDes8* mNetworkReleaseMessageData;
	TDes8* mNetworkReleaseMessageAttributes;

};



/**
 * test environment
 */
class TestEnv: public MPhSrvPhoneInterface
{
	public:

		static void create();
		static void destroy();
		static TestEnv& env(); // the singleton

		TestEnv();
		void construct();
		~TestEnv();

		CPhSrvUssdManager& ussdManager() {return *m_ussdManager;}

		void setTestMode(const TestMode& testMode) {m_testMode = testMode;}
		const TestMode& testMode() {return m_testMode;}

		EtelMsgLoop& etelMsgLoop() {return m_etelMsgLoop;}
		
		RMessage2& fakeMessage() {return *m_fakeMessage;}
		
	protected: // stubbed MPhSrvPhoneInterface

		RTelServer& PhSrvETelServer();
		RMobilePhone& PhSrvMobilePhone();
		RMmCustomAPI& PhSrvCustomPhone();

	private:
		
		// file manager. Never actually connected to
		RFs m_fs;

		// resource manager mock
		CPhSrvResourceManager* m_resourceManager;

		// ussd manager (server main ussd class)
		CPhSrvUssdManager* m_ussdManager;

		// test mode
		TestMode m_testMode;

		// etel msg loop
		EtelMsgLoop m_etelMsgLoop;
		
		// temp message
		RMessage2* m_fakeMessage;

	    static TestEnv* m_singleton;

};