diff -r 1f776524b15c -r 244d7c5f118e smsprotocols/smsstack/test/smsstackbaseteststeps.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/smsprotocols/smsstack/test/smsstackbaseteststeps.h Fri Apr 16 16:12:37 2010 +0300 @@ -0,0 +1,211 @@ +// Copyright (c) 2009-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: +// + +#ifndef SMSSTACKBASETESTSTEPS_H +#define SMSSTACKBASETESTSTEPS_H + +#include +#include +#include +#include +#include +#include +#include +#include + +class RSocketServ; +class RSocket; +class CSmsMessage; +class CSmsBuffer; +class CSmsPduDbMessage; +class CSmsStackTestUtils; +class TTestCase; + +/** + Base class housing SMS test Steps +*/ +class CSmsBaseTestStep : public CTestStep + { +public: + IMPORT_C virtual TVerdict doTestStepPreambleL(); + IMPORT_C virtual TVerdict doTestStepPostambleL(); + + IMPORT_C virtual ~CSmsBaseTestStep(); + + enum TCodingScheme{ESevenBit=7, EEightBit}; + + /* Functions grabbed from SMS Stack Test Utils */ + // Socket utils + IMPORT_C void OpenSmsSocketL(RSocketServ& aSocketServer, RSocket& aSocket, TSmsAddr& aSmsAddr); + IMPORT_C void OpenSmsSocketL(RSocketServ& aSocketServer, RSocket& aSocket, TSmsAddrFamily aFamily); + + IMPORT_C void ParseSettingsFromFileL(); + + IMPORT_C void SetSimTSYTestNumberL(TInt aTestNumber); + IMPORT_C void SetTestNumberL(TInt aTestNumberProperty, TInt aTestNumber); + IMPORT_C void SetTestNumberFromConfigurationFileL(); + + IMPORT_C TInt GetIntegerFromConfigL(const TDesC& aKey); + IMPORT_C TPtrC GetStringFromConfigL(const TDesC& aKey); + + IMPORT_C void ConnectSocketServerL(RSocketServ& aSocketServer); + IMPORT_C void ConnectSocketServerLC(RSocketServ& aSocketServer); + + IMPORT_C void WaitForRecvL(RSocket& aSocket); + IMPORT_C TBool TimedWaitForRecvL(RSocket& aSocket, TUint aDelay); + + IMPORT_C CSmsMessage* RecvSmsL(RSocket& aSocket, TInt aIoctl = KIoctlReadMessageSucceeded); + IMPORT_C CSmsMessage* RecvSmsFailedL(RSocket& aSocket); + + IMPORT_C TSmsStatus::TSmsStatusValue RecvStatusReportL(TSmsServiceCenterAddress& aRecipientNumber, RSocket& aSocket); + + IMPORT_C CSmsMessage* CreateSmsMessageLC(CSmsPDU::TSmsPDUType aType, CSmsBuffer* aBuffer, const TDesC& aAddress); + IMPORT_C CSmsMessage* CreateSmsMessageL(const TDesC& aDes, TSmsDataCodingScheme::TSmsAlphabet aAlphabet, CSmsPDU::TSmsPDUType aType = CSmsPDU::ESmsSubmit); + IMPORT_C CSmsMessage* CreateSmsMessageLC(const TDesC& aDes, TSmsDataCodingScheme::TSmsAlphabet aAlphabet, CSmsPDU::TSmsPDUType aType = CSmsPDU::ESmsSubmit); + //This method is used to create SMS message from test data + IMPORT_C CSmsMessage* CreateSMSL(); + IMPORT_C CSmsMessage* CreateSmsWithStatusReportReqL(const TDesC& aDes, TSmsDataCodingScheme::TSmsAlphabet aAlphabet); + + IMPORT_C TUint64 SetHighLowLimitsAndDiskSpaceLevelL(TUint aHighDrop, TUint aLowDrop, TUint aFreeDrop, TUint64 aMax=0x7fffffff); + IMPORT_C void SetFreeDiskSpaceFromDropLevelL(TUint aFreeDrop, TUint64 aMax=0x7fffffff); + IMPORT_C void SetFreeDiskSpaceL(TInt64 aNewFreeValue); + IMPORT_C void ReleaseDiskSpaceL(); + IMPORT_C void SetLowHighLimitsInSmsuRscL(TInt64 aLowLimit, TInt64 aHighLimit); + IMPORT_C void RemoveLowHighLimitsFromSmsuRscL(); + + IMPORT_C void SendSmsL(const CSmsMessage* aSms, RSocket& aSocket, TInt aExpectedError=KErrNone, TInt aMaxRetries=3); + IMPORT_C void SendSmsCancelL(CSmsMessage* aSms, RSocket& aSocket1, RSocket& aSocket2); + IMPORT_C TInt SendSmsErrorL(CSmsMessage* aSms, RSocket& aSocket); + IMPORT_C void SendCommandSmsL(CSmsMessage* aSms, RSocket& aSocket); + IMPORT_C void SendTestMessageL(const TTestCase& aTestCase, RSocket& aSocket); + IMPORT_C void SendSmsDontCheckReturnValueL(CSmsMessage* aSms, RSocket& aSocket); + + IMPORT_C void SendAndRecvTestMessageL(const TTestCase& aTestCase, RSocket& aSocket); + IMPORT_C void SendAndRecvSms7BitL(const TDesC& aDes, RSocket& aSocket); + IMPORT_C void DoSendAndRecvSmsL(const TDesC& aDes, TSmsDataCodingScheme::TSmsAlphabet aAlphabet, RSocket& aSocket); + + IMPORT_C void PrintMessageDetailedL(const CSmsMessage* aSms); + IMPORT_C void PrintMessageL(const CSmsMessage* aSms); + + IMPORT_C void TestSmsContentsL(CSmsMessage* aSms, const TDesC& aDes, TBool aIgnorePrintOutput = EFalse); + IMPORT_C void TestMessageContentsL(CSmsMessage* aSms, const TTestCase& aTestCase); + + IMPORT_C void WriteSmsToSimL(CSmsMessage& aSms, RSocket& aSocket); + IMPORT_C void WriteSmsLeaveIfErrorL(const CSmsMessage& aSms, RSocket& aSocket); + IMPORT_C TInt CancelWriteSmsToSimL(CSmsMessage& aSms, RSocket& aSocket, TInt aDelay); + + IMPORT_C void ReadSmsStoreL(RSocket& aSocket, RPointerArray& aMessages); + IMPORT_C void ReadSmsStoreL(RSocket& aSocket, RPointerArray& aMessages, TRequestStatus &aStatus); + IMPORT_C TInt MakeReadSmsStoreRequestL(RSocket& aSocket); + + IMPORT_C TInt DeleteSmsL(const CSmsMessage& aSms, RSocket& aSocket, TInt aExpectedError=KErrNone); + IMPORT_C void DeleteSmsLeaveIfErrorL(const CSmsMessage& aSms, RSocket& aSocket); + + IMPORT_C void SetIndicatorL(const TTestCase& aTestCase, CSmsMessage* aSms); + IMPORT_C void FillDes(TDes& aDes,TInt aLength); + + IMPORT_C TBool DoSingleTestCaseL( const TDesC8& aSection, TInt aCount ); + IMPORT_C void ReadPduL( TBuf8<64> aSectionName, RPointerArray& aArray ); + IMPORT_C void TestSendAndRecvMsgsWithDifferentTONL( const RPointerArray& aArray, + const CArrayFixFlat* aAlphabetArray, + const CArrayFixFlat* aTypeOfNumberArray ); + IMPORT_C void TestSendAndReceiveIndicatorMsgsL( const RPointerArray& aArray, + const CArrayFixFlat* aIndicationStateArray, + const CArrayFixFlat* aDcsBits7To4Array, + const CArrayFixFlat* aIndicationTypeArray ); + + IMPORT_C void ChangeReceiveModeL(RMobileSmsMessaging::TMobileSmsReceiveMode aNewRcvMode); + + IMPORT_C void UpdatePhonePowerStatusL(RProperty& aPhonePowerProperty, TSAPhoneStatus aNewStatus); + + IMPORT_C void DoESockMemoryLeakTestL(); + +public: + CActiveScheduler* iScheduler; + CSmsStackTestUtils* iSmsStackTestUtils; + TSmsServiceCenterAddress iTelephoneNumber; // Test SIM + TSmsServiceCenterAddress iServiceCenterNumber; // Radiolinja + RSocketServ iSocketServer; + +protected: + IMPORT_C CSmsBaseTestStep(); + +protected: + RFs iFs; + TBool iPartOfMultiStepTestCase; + TBool iNotLastTestStep; + +private: + class TESockSvrUnloadInfo + { + public: + TCFModuleName iName; + RootServer::TRSModuleState iState; + TRequestStatus iStatus; + }; + + typedef RPointerArray RUnloadInfoArray; + +private: + void BuildESockCPMListL(RRootServ& aRootServer, RUnloadInfoArray& aInfo, TDes8& aDispList); + +}; + +/* + * Logging Macros + */ +#define TESTCHECKL(a, b, s) \ + { \ + if((a)!=(b)) \ + { \ + _LIT(KTemp, s); \ + ERR_PRINTF4(_L("%S failed: Got %d while expecting %d, leaving "), &KTemp, a, b); \ + SetTestStepResult(EFail); \ + User::Leave(EFail); \ + } \ + } + +#define TESTCHECKCONDITIONL(a, s) \ + { \ + if (!(a)) \ + { \ + _LIT(KTemp, s); \ + ERR_PRINTF2(_L("%S failed: Condition was false, leaving"), &KTemp); \ + SetTestStepResult(EFail); \ + User::Leave(EFail); \ + } \ + } + +#define TESTCHECK(a, b, s) \ + { \ + if((a)!=(b)) \ + { \ + _LIT(KTemp3, s); \ + ERR_PRINTF4(_L("%S failed: Got %d while expecting %d"), &KTemp3, a, b); \ + SetTestStepResult(EFail); \ + } \ + } + +#define TESTCHECKCONDITION(a, s) \ + { \ + if (!(a)) \ + { \ + _LIT(KTemp4, s); \ + ERR_PRINTF2(_L("%S failed: Condition was false"), &KTemp4); \ + SetTestStepResult(EFail); \ + } \ + } + +#endif // SMSSTACKBASETESTSTEPS_H