// Copyright (c) 2000-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:
// This file contains the declaration of the CWapPushBaseMessageTest which implement the stack observer
// to allow communication with the stack
//
//
/**
@file PUSHTESTS.H
*/
#ifndef __PUSHTESTS_H__
#define __PUSHTESTS_H__
#include "t_wappush.h"
#include "dummywapstack.h" // MDummyWapStackObserver
#include <push/pushlog.h> // for test engine Rfs/Cwatcherlog
#include "ConnMan.h" // for connection manager
#include "testscripts.h"
//const TInt KBufferSize = 256; // imitates KReceiveBufferSize from CLWatcher
//const TInt KBufferSize = 1024;
const TInt KBufferSize = 2048;
class MWapPushLog;
class CWapPushMsgGen;
class MTimeoutCallback
{
public:
virtual void Timeout() = 0;
};
class CTestTimer : public CTimer
{
public:
static CTestTimer* NewL(MTimeoutCallback* callback)
{
CTestTimer* self = new(ELeave) CTestTimer(callback);
CleanupStack::PushL(self);
self->ConstructL(); // CTimer
CActiveScheduler::Add(self);
CleanupStack::Pop();
return self;
}
protected:
virtual void RunL()
{
iCallback->Timeout();
}
private:
CTestTimer(MTimeoutCallback* callback): CTimer(EPriorityLow), iCallback(callback)
{};
MTimeoutCallback* iCallback;
};
/**
* Derived test case class which implement the stack observer
* to allow communication with the stack
*
* This class has been made abstract to allow different derived classes
* to implement creating multiple test messages via PrepareTestMessageL()
* and the support of NumberTestCasesToRun()
* BOTH must be implimented in any derived class.
* ConfirmMessagesSavedL provides confirmation of message storage and
* reports on number of messages found in store.
*/
class CWapPushBaseMessageTest : public CWapPushTest, public MDummyWapStackObserver
{
public:
virtual ~CWapPushBaseMessageTest();
virtual void RunL();
virtual void RunError();
virtual void DoCancel();
/** set the test name for this test case
@param void
@return string
returns test name
*/
virtual const TDesC& TestName();
virtual void NumberTestCasesToRun() = 0;
virtual void PrepareTestMessageL(TInt aCurrentTestCase) = 0; // abstract class now!!!
virtual TBool ConfirmMessagesSavedL() = 0;
// from MDummyWapStackObserver
virtual void DWSOUnitWaitPushL(CDummyWSPCLConn& aDummyCLConn);
virtual void DWSOCancelUnitWaitPush(CDummyWSPCLConn& aDummyCLConn);
virtual void DWSOServerShutDown();
virtual void DWSOError(const TDesC& aDes, TInt aLineNum);
virtual void DWSOConnect(CDummyWSPCOConn& aDummyCOConn);
virtual void DWSOGetEvent(CDummyWSPCOConn& aDummyCOConn);
virtual void DWSOCancelGetEvent(CDummyWSPCOConn& aDummyCOConn);
virtual void DWSOAckTransaction(CDummyWSPCOTrans& aDummyCOTrans);
protected:
void MoveToNextState();
void CompleteOwnRequest();
void InitialiseMsgService();
protected:
enum TState
{
EInitialisation,
EWaitForPush,
EFinished
};
protected:
TState iState;
TBuf8<KBufferSize> iBodyBuf;
TBuf8<KBufferSize> iHeadersBuf;
HBufC8* iBody;
HBufC8* iHeaders;
CScriptFile* iIniFile;
CDummyWapStack* iWapStack;
CConnectionManager* iConnMan;
TBool iHasMsgBeenCompleted;
TBool iHasTestBeenCompleted;
TInt iNumberOfTestCases;
TInt iCurrentTestCase;
};
/**
* Script Handler derived test case
*/
class CWapScriptTest : public CWapPushBaseMessageTest
{
virtual const TDesC& TestName();
virtual void NumberTestCasesToRun();
virtual void PrepareTestMessageL(TInt aCurrentTestCase);
virtual TBool ConfirmMessagesSavedL();
~CWapScriptTest();
void SetupAddressL();
};
#endif