--- a/telephonyserverplugins/common_tsy/test/integration/src/cctsyintegrationtestussdmessaging.cpp Mon May 03 13:37:20 2010 +0300
+++ b/telephonyserverplugins/common_tsy/test/integration/src/cctsyintegrationtestussdmessaging.cpp Thu May 06 15:10:38 2010 +0100
@@ -1,1628 +1,1628 @@
-// Copyright (c) 2007-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:
-// Test step definitions for the UssdMessaging functional unit.
-//
-//
-
-/**
- @internalTechnology
-*/
-
-#include "cctsyintegrationtestussdmessaging.h"
-#include "cetelsessionmgr.h"
-
-
-
-CCTSYIntegrationTestUssdMessagingBase::CCTSYIntegrationTestUssdMessagingBase(CEtelSessionMgr& aEtelSessionMgr)
- : CCTSYIntegrationTestSuiteStepBase(aEtelSessionMgr), iSmsStoreTsyTestHelper(*this),iNetworkTsyTestHelper(*this)
-/**
- * Constructor
- */
- {
- }
-
-CCTSYIntegrationTestUssdMessagingBase::~CCTSYIntegrationTestUssdMessagingBase()
-/*
- * Destructor
- */
- {
- }
-
-
-TInt CCTSYIntegrationTestUssdMessagingBase::SimulateNetworkSendsReleaseCompleteL()
-/**
- * Helper function
- *
- * Simulate network sends a release complete message. Not implemented!
- *
- *
- * @return KErrNone if everything is OK, the error code in any other case
- */
- {
- // This function should call whatever APIs are required to tell the simulator to simulate network sends a release complete message
- DisplayUserInteractionPromptL(_L("Now we should simulate a Request Complete message. Press any key to continue."), ETimeLong);
- return KErrNone;
- }
-
-TInt CCTSYIntegrationTestUssdMessagingBase::SimulateNetworkSendsNotifyMessageL(RMobileUssdMessaging::TMobileUssdMessageType /*aType*/, TInt /*aLength*/)
-/**
- * Helper function
- *
- * Simulate network sends a USSD notify message. Not implemented!
- *
- * @param aType The message type
- * @param aLength The number of charecters in the messege
- *
- * @return KErrNone if everything is OK, the error code in any other case
- */
- {
- // This function should call whatever APIs are required to tell the simulator to simulate network sends a USSD notify message
- DisplayUserInteractionPromptL(_L("Now we should simulate a Notify message. Press any key to continue."), ETimeLong);
- return KErrNone;
- }
-
-TInt CCTSYIntegrationTestUssdMessagingBase::SendSimulateCompleteCheckCompleteL(RMobileUssdMessaging &aUssdMessaging, TDes8& aMsg,RMobileUssdMessaging::TMobileUssdMessageType aMessageType)
-/**
- * Send a message, Simulate network complete, Check RMobileUssdMessaging::NotifyNetworkRelease completes with aMsgData with length
- *
- * @param aUssdMessaging a reference to the USSD Messaging session.
- * @param aMsg The message USSD string
- * @param aMessageType The type of message; if type is EUssdMORequest, simulate requestcomplete, otherwise, simulate
- *
- * @return KErrNone if everything is OK, the error code in any other case
- */
- {
- TInt ret=KErrNone;
- TInt last;
-
- // start listening for incoming messages
- TExtEtelRequestStatus recvMsgStatus(aUssdMessaging,EMobileUssdMessagingReceiveMessage);
- CleanupStack::PushL(recvMsgStatus);
- RMobileUssdMessaging::TGsmUssdMessageData recvUssdMsg;
- RMobileUssdMessaging::TMobileUssdAttributesV1 recvAttributes;
- RMobileUssdMessaging::TMobileUssdAttributesV1Pckg recvAttributesPckg(recvAttributes);
- aUssdMessaging.ReceiveMessage(recvMsgStatus,recvUssdMsg,recvAttributesPckg);
-
- // Encode USSD string into a TGsmUssdMessageData buffer.
- TBuf8<200> sevenBitStr;
- iSmsStoreTsyTestHelper.GsmLibSmsPackMessage( sevenBitStr, aMsg, aMsg.Length());
- RMobileUssdMessaging::TGsmUssdMessageData sendUssdMsg = sevenBitStr;
-
- // Send a USSD message to the network with RMobileUssdMessaging::SendMessage with aMsgData=encoded TGsmUssdMessageData and aMsgAttributes.iDcs= 0x00 (No class, uncompressed) ,aMsgAttributes.iFlags=RMobileUssdMessaging::KUssdMessageType | RMobileUssdMessaging::KUssdDataFormat | RMobileUssdMessaging::KUssdMessageDcs , aMsgAttributes.iFormat=RMobileUssdMessaging::EFormatPackedString , aMsgAttributes.iType=aMessageType
- TExtEtelRequestStatus sendMsgStatus(aUssdMessaging,EMobileUssdMessagingSendMessage);
- CleanupStack::PushL(sendMsgStatus);
- RMobileUssdMessaging::TMobileUssdAttributesV1 sendAttributes;
- sendAttributes.iDcs=0x00;
- sendAttributes.iFlags=RMobileUssdMessaging::KUssdMessageType | RMobileUssdMessaging::KUssdDataFormat | RMobileUssdMessaging::KUssdMessageDcs;
- sendAttributes.iFormat=RMobileUssdMessaging::EFormatPackedString;
- sendAttributes.iType=aMessageType;
- RMobileUssdMessaging::TMobileUssdAttributesV1Pckg sendAttributesPckg(sendAttributes);
- aUssdMessaging.SendMessage(sendMsgStatus, sendUssdMsg, sendAttributesPckg);
- last = WaitForRequestWithTimeOut(sendMsgStatus, ETimeLong);
- ASSERT_EQUALS(last,
- KErrNone, _L("RMobileUssdMessaging::SendMessage did not complete."));
- if(last!=KErrNone)
- {
- ret=last;
- }
- last = sendMsgStatus.Int();
- ASSERT_EQUALS(last,KErrNone,
- _L("RMobileUssdMessaging::SendMessage completed with incorrect error"));
- if(last!=KErrNone)
- {
- ret=last;
- }
-
- // Post network release notification
- TExtEtelRequestStatus releaseMsgStatus(aUssdMessaging,EMobileUssdMessagingNotifyNetworkRelease);
- CleanupStack::PushL(releaseMsgStatus);
- RMobilePhone::TMobilePhoneSendSSRequestV3 ssRequest;
- RMobilePhone::TMobilePhoneSendSSRequestV3Pckg ssRequestPckg(ssRequest);
- aUssdMessaging.NotifyNetworkRelease(releaseMsgStatus,ssRequestPckg,sendAttributesPckg);
-
- // Simulated network sends a release complete
- last = SimulateNetworkSendsReleaseCompleteL();
- ASSERT_EQUALS(last,KErrNone,_L("CCTSYIntegrationTestUssdMessagingBase::SimulateNetworkSendsReleaseCompleteL returned an error"));
- if(last!=KErrNone)
- {
- ret=last;
- }
-
- // Check RMobileUssdMessaging::NotifyNetworkRelease completes with aMsgData with length > 0
- last = WaitForRequestWithTimeOut(releaseMsgStatus, ETimeLong);
- ASSERT_EQUALS(last,
- KErrNone, _L("RMobileUssdMessaging::NotifyNetworkRelease did not complete."));
- if(last!=KErrNone)
- {
- ret=last;
- }
- ASSERT_TRUE(recvUssdMsg.Length()>0,_L("RMobileUssdMessaging::NotifyNetworkRelease completed with length 0"));
- if(recvUssdMsg.Length()==0)
- {
- ret = KErrGeneral;
- }
-
- // Pop:
- // releaseMsgStatus
- // sendMsgStatus
- // recvMsgStatus
- CleanupStack::PopAndDestroy(3,&recvMsgStatus);
-
- return ret;
- }
-
-TInt CCTSYIntegrationTestUssdMessagingBase::SendSimulateNotifyCheckCompleteL(RMobileUssdMessaging &aUssdMessaging, TDes8& aMsg,RMobileUssdMessaging::TMobileUssdMessageType aMessageType,RMobileUssdMessaging::TMobileUssdMessageType aSimulateType, TInt aLength)
-/**
- * Send a message, Simulate network notify, Check RMobileUssdMessaging::NotifyNetworkRelease completes with aMsgData with length
- *
- * @param aUssdMessaging a reference to the USSD Messaging session.
- * @param aMsg The message USSD string
- * @param aMessageType The type of message; if type is EUssdMORequest, simulate requestcomplete, otherwise, simulate
- * @param aSimulateType the simulated message type
- * @param aLength the length of the simulated message.
- *
- * @return KErrNone if everything is OK, the error code in any other case
- */
- {
- TInt ret=KErrNone;
- TInt last;
-
- // start listening for incoming messages
- TExtEtelRequestStatus recvMsgStatus(aUssdMessaging,EMobileUssdMessagingReceiveMessage);
- CleanupStack::PushL(recvMsgStatus);
- RMobileUssdMessaging::TGsmUssdMessageData recvUssdMsg;
- RMobileUssdMessaging::TMobileUssdAttributesV1 recvAttributes;
- RMobileUssdMessaging::TMobileUssdAttributesV1Pckg recvAttributesPckg(recvAttributes);
- aUssdMessaging.ReceiveMessage(recvMsgStatus,recvUssdMsg,recvAttributesPckg);
-
- // Encode USSD string into a TGsmUssdMessageData buffer.
- TBuf8<200> sevenBitStr;
- iSmsStoreTsyTestHelper.GsmLibSmsPackMessage( sevenBitStr, aMsg, aMsg.Length());
- RMobileUssdMessaging::TGsmUssdMessageData sendUssdMsg = sevenBitStr;
-
- // Send a USSD message to the network with RMobileUssdMessaging::SendMessage with aMsgData=encoded TGsmUssdMessageData and aMsgAttributes.iDcs=0x00 (No class, uncompressed),aMsgAttributes.iFlags=RMobileUssdMessaging::KUssdMessageType | RMobileUssdMessaging::KUssdDataFormat | RMobileUssdMessaging::KUssdMessageDcs , aMsgAttributes.iFormat=RMobileUssdMessaging::EFormatPackedString , aMsgAttributes.iType=aMessageType
- TExtEtelRequestStatus sendMsgStatus(aUssdMessaging,EMobileUssdMessagingSendMessage);
- CleanupStack::PushL(sendMsgStatus);
- RMobileUssdMessaging::TMobileUssdAttributesV1 sendAttributes;
- sendAttributes.iDcs=0x00;
- sendAttributes.iFlags=RMobileUssdMessaging::KUssdMessageType | RMobileUssdMessaging::KUssdDataFormat | RMobileUssdMessaging::KUssdMessageDcs;
- sendAttributes.iFormat=RMobileUssdMessaging::EFormatPackedString;
- sendAttributes.iType=aMessageType;
- RMobileUssdMessaging::TMobileUssdAttributesV1Pckg sendAttributesPckg(sendAttributes);
- aUssdMessaging.SendMessage(sendMsgStatus, sendUssdMsg, sendAttributesPckg);
- last = WaitForRequestWithTimeOut(sendMsgStatus, ETimeLong);
- ASSERT_EQUALS(last,
- KErrNone, _L("RMobileUssdMessaging::SendMessage did not complete."));
- if(last!=KErrNone)
- {
- ret=last;
- }
- last = sendMsgStatus.Int();
- ASSERT_EQUALS(last,KErrNone,
- _L("RMobileUssdMessaging::SendMessage completed with incorrect error"));
- if(last!=KErrNone)
- {
- ret=last;
- }
-
- // Post network release notification
- TExtEtelRequestStatus releaseMsgStatus(aUssdMessaging,EMobileUssdMessagingNotifyNetworkRelease);
- CleanupStack::PushL(releaseMsgStatus);
- RMobilePhone::TMobilePhoneSendSSRequestV3 ssRequest;
- RMobilePhone::TMobilePhoneSendSSRequestV3Pckg ssRequestPckg(ssRequest);
- aUssdMessaging.NotifyNetworkRelease(releaseMsgStatus,ssRequestPckg,sendAttributesPckg);
-
- // Simulated network sends a release complete
- last = SimulateNetworkSendsNotifyMessageL(aSimulateType,aLength);
- ASSERT_EQUALS(last,KErrNone,_L("CCTSYIntegrationTestUssdMessagingBase::SimulateNetworkSendsReleaseCompleteL returned an error"));
- if(last!=KErrNone)
- {
- ret=last;
- }
-
- // Check RMobileUssdMessaging::NotifyNetworkRelease completes with aMsgData with length > 0
- last = WaitForRequestWithTimeOut(releaseMsgStatus, ETimeLong);
- ASSERT_EQUALS(last,
- KErrNone, _L("RMobileUssdMessaging::NotifyNetworkRelease did not complete."));
- if(last!=KErrNone)
- {
- ret=last;
- }
- last = releaseMsgStatus.Int();
- ASSERT_EQUALS(last,
- KErrNone, _L("RMobileUssdMessaging::NotifyNetworkRelease returned an error"));
- if(last!=KErrNone)
- {
- ret=last;
- }
- ASSERT_EQUALS(recvAttributes.iType,aSimulateType,
- _L("RMobileUssdMessaging::ReceiveMessage completed with incorrect USSD message type"));
- ASSERT_TRUE(recvUssdMsg.Length() > 0,
- _L("RMobileUssdMessaging::ReceiveMessage completed with msglength <=0"));
- if((recvUssdMsg.Length()==0)||(recvAttributes.iType!=aSimulateType))
- {
- ret = KErrGeneral;
- }
-
- // Pop:
- // releaseMsgStatus
- // sendMsgStatus
- // recvMsgStatus
- CleanupStack::PopAndDestroy(3,&recvMsgStatus);
-
- return ret;
-
- }
-
-TInt CCTSYIntegrationTestUssdMessagingBase::SimulateNotifyCheckReceiveL(RMobileUssdMessaging &aUssdMessaging,RMobileUssdMessaging::TMobileUssdMessageType aSimulateType, TInt aLength)
-/**
- * Simulated network sends a USSD notify message, Receive MT notify from network, Check received notification
- *
- * @param aUssdMessaging a reference to the USSD Messaging session.
- * @param aSimulateType the simulated message type
- * @param aLength the length of the simulated message.
- * @param aCheckType the type of the recived notification
- * @return KErrNone if everything is OK, the error code in any other case
- */
- {
- TInt ret=KErrNone;
- TInt last;
-
- // start listening for incoming messages
- TExtEtelRequestStatus recvMsgStatus(aUssdMessaging,EMobileUssdMessagingReceiveMessage);
- CleanupStack::PushL(recvMsgStatus);
- RMobileUssdMessaging::TGsmUssdMessageData recvUssdMsg;
- RMobileUssdMessaging::TMobileUssdAttributesV1 recvAttributes;
- RMobileUssdMessaging::TMobileUssdAttributesV1Pckg recvAttributesPckg(recvAttributes);
- aUssdMessaging.ReceiveMessage(recvMsgStatus,recvUssdMsg,recvAttributesPckg);
-
- // Simulated network sends a USSD notify message.
- last = SimulateNetworkSendsNotifyMessageL(aSimulateType,aLength);
- ASSERT_EQUALS(last,KErrNone,_L("CCTSYIntegrationTestUssdMessagingBase::SimulateNetworkSendsNotifyMessageL returned an error"));
- if(last!=KErrNone)
- {
- ret=last;
- }
-
- // === Receive MT notify from network ===
-
- // Check RMobileUssdMessaging::ReceiveMessage completes with aMsgData with length > 0
- // Check RMobileUssdMessaging::ReceiveMessage completes with aMsgAttributes.iType=aCheckType
- last = WaitForRequestWithTimeOut(recvMsgStatus, ETimeLong);
- ASSERT_EQUALS(last,
- KErrNone, _L("RMobileUssdMessaging::ReceiveMessage did not complete.")) ;
- if(last!=KErrNone)
- {
- ret=last;
- }
- last = recvMsgStatus.Int();
- ASSERT_EQUALS(last,KErrNone,
- _L("RMobileUssdMessaging::ReceiveMessage completed with incorrect error"));
- if(last!=KErrNone)
- {
- ret=last;
- }
- ASSERT_EQUALS(recvAttributes.iType,aSimulateType,
- _L("RMobileUssdMessaging::ReceiveMessage completed with incorrect USSD message type"));
- ASSERT_TRUE(recvUssdMsg.Length() > 0,
- _L("RMobileUssdMessaging::ReceiveMessage completed with msglength <=0"));
- if((recvUssdMsg.Length()==0)||(recvAttributes.iType!=aSimulateType))
- {
- ret = KErrGeneral;
- }
-
- // Pop:
- // recvMsgStatus
- CleanupStack::PopAndDestroy(1,&recvMsgStatus);
-
- return ret;
-
- }
-CCTSYIntegrationTestUssdMessaging0001::CCTSYIntegrationTestUssdMessaging0001(CEtelSessionMgr& aEtelSessionMgr)
- : CCTSYIntegrationTestUssdMessagingBase(aEtelSessionMgr)
-/**
- * Constructor.
- */
- {
- SetTestStepName(CCTSYIntegrationTestUssdMessaging0001::GetTestStepName());
- }
-
-CCTSYIntegrationTestUssdMessaging0001::~CCTSYIntegrationTestUssdMessaging0001()
-/**
- * Destructor.
- */
- {
- }
-
-TVerdict CCTSYIntegrationTestUssdMessaging0001::doTestStepL()
-/**
- * @SYMTestCaseID BA-CTSY-INT-USSDM-0001
- * @SYMFssID BA/CTSY/USSDM-0001
- * @SYMTestCaseDesc Get USSD Caps
- * @SYMTestPriority High
- * @SYMTestActions RMobileUssdMessaging::GetCaps
- * @SYMTestExpectedResults Pass - Correct caps returned.
- * @SYMTestType CIT
- * @SYMTestCaseDependencies live/automatic
- *
- * Reason for test: Verify correct USSD caps returned.
- *
- * @return - TVerdict code
- */
- {
-
- //Get USSD Caps
- //Verify correct USSD caps returned.
- //
- // SET UP
- //
- RMobileUssdMessaging& mobileUssdMessaging = iEtelSessionMgr.GetUssdMessagingL(KMainServer, KMainPhone,KMainUssdMessaging);
-
-
- //
- // SET UP END
- //
-
- StartTest();
-
- //
- // TEST START
- //
-
-
- // Check RMobileUssdMessaging::GetCaps returns iUssdFormat of KCapsPackedString
- // Check RMobileUssdMessaging::GetCaps returns iUssdTypes of KCapsMOUssd | KCapsMTUssd
- RMobileUssdMessaging::TMobileUssdCapsV1 ussdCaps;
- RMobileUssdMessaging::TMobileUssdCapsV1Pckg ussdCapsPk(ussdCaps);
- ASSERT_EQUALS(mobileUssdMessaging.GetCaps(ussdCapsPk), KErrNone, _L("RMobileUssdMessaging::GetCaps returned error"));
- ASSERT_EQUALS(ussdCaps.iUssdFormat, (TUint32)RMobileUssdMessaging::KCapsPackedString, _L("RMobileUssdMessaging::GetCaps returned incorrect iUssdFormat"));
- TUint32 expectedCaps = RMobileUssdMessaging::KCapsMOUssd | RMobileUssdMessaging::KCapsMTUssd;
- TUint32 unwantedCaps = KNoUnwantedBits;
- ASSERT_BITS_SET(ussdCapsPk().iUssdTypes, expectedCaps, unwantedCaps, _L("RMobileUssdMessaging::GetCaps returned incorrect iUssdTypes"));
-
- //
- // TEST END
- //
-
- StartCleanup();
-
-
- return TestStepResult();
- }
-
-TPtrC CCTSYIntegrationTestUssdMessaging0001::GetTestStepName()
-/**
- * @return The test step name.
- */
- {
- return _L("CCTSYIntegrationTestUssdMessaging0001");
- }
-
-
-
-CCTSYIntegrationTestUssdMessaging0002::CCTSYIntegrationTestUssdMessaging0002(CEtelSessionMgr& aEtelSessionMgr)
- : CCTSYIntegrationTestUssdMessagingBase(aEtelSessionMgr)
-/**
- * Constructor.
- */
- {
- SetTestStepName(CCTSYIntegrationTestUssdMessaging0002::GetTestStepName());
- }
-
-CCTSYIntegrationTestUssdMessaging0002::~CCTSYIntegrationTestUssdMessaging0002()
-/**
- * Destructor.
- */
- {
- }
-
-
-TVerdict CCTSYIntegrationTestUssdMessaging0002::doTestStepL()
-/**
- * @SYMTestCaseID BA-CTSY-INT-USSDM-0002
- * @SYMFssID BA/CTSY/USSDM-0002
- * @SYMTestCaseDesc Send a valid USSD request.
- * @SYMTestPriority High
- * @SYMTestActions RMobileUssdMessaging::GetCaps, RMobileUssdMessaging::SendMessage, RMobileUssdMessaging::ReceiveMessage
- * @SYMTestExpectedResults Pass - Message sent and reply received from network.
- * @SYMTestType CIT
- * @SYMTestCaseDependencies live/automatic
- *
- * Reason for test: Verify message sent and reply received.
- *
- * @return - TVerdict code
- */
- {
- //Send a valid USSD request.
- //Verify message sent and reply received..
- //
- // SET UP
- //
-
- RMobileUssdMessaging& mobileUssdMessaging = iEtelSessionMgr.GetUssdMessagingL(KMainServer, KMainPhone,KMainUssdMessaging);
- // Check RMobileUssdMessaging::GetCaps returns iUssdFormat of KCapsPackedString
- RMobileUssdMessaging::TMobileUssdCapsV1 ussdCaps;
- RMobileUssdMessaging::TMobileUssdCapsV1Pckg ussdCapsPk(ussdCaps);
- CHECK_TRUE_L(mobileUssdMessaging.GetCaps(ussdCapsPk)==KErrNone,
- _L("RMobileUssdMessaging::GetCaps returned error"));
- CHECK_TRUE_L(ussdCapsPk().iUssdFormat==RMobileUssdMessaging::KCapsPackedString ,
- _L("RMobileUssdMessaging::GetCaps returned incorrect iUssdFormat"));
-
- // Check RMobileUssdMessaging::GetCaps returns iUssdTypes of KCapsMOUssd | KCapsMTUssd
- TUint32 expectedCaps = RMobileUssdMessaging::KCapsMOUssd | RMobileUssdMessaging::KCapsMTUssd;
- TUint32 unwantedCaps = KNoUnwantedBits;
- CHECK_BITS_SET_L(ussdCapsPk().iUssdTypes, expectedCaps, unwantedCaps, _L("RMobileUssdMessaging::GetCaps returned incorrect iUssdTypes"));
-
- RMobilePhone& mobilePhone = iEtelSessionMgr.GetPhoneL(KMainServer, KMainPhone);
- TInt ret = iNetworkTsyTestHelper.WaitForRegisteredOnHomeNetworkL(mobilePhone);
- CHECK_EQUALS_L(ret, KErrNone,
- _L("RMobilePhone::NotifyNetworkRegistrationStatusChange network registration failed"));
-
- //
- // SET UP END
- //
-
- StartTest();
-
- //
- // TEST START
- //
-
-
- // === Send a valid USSD request ===
-
- // Encode a the USSD request "*#30#" (Caller ID presentation) into a TGsmUssdMessageData buffer.
- TBuf8<100> eightBitStr = _L8("*#30#");
- TBuf8<100> sevenBitStr;
- iSmsStoreTsyTestHelper.GsmLibSmsPackMessage( sevenBitStr, eightBitStr, eightBitStr.Length());
-
- RMobileUssdMessaging::TGsmUssdMessageData sendUssdMsg = sevenBitStr;
- RMobileUssdMessaging::TMobileUssdAttributesV1 sendAttributes;
-
- // Send a USSD message to the network with RMobileUssdMessaging::SendMessage with
- // aMsgData=encoded TGsmUssdMessageData and
- // aMsgAttributes.iDcs=0x00 (No class, uncompressed),
- // aMsgAttributes.iFlags=RMobileUssdMessaging::KUssdMessageType
- // | RMobileUssdMessaging::KUssdDataFormat
- // | RMobileUssdMessaging::KUssdMessageDcs ,
- // aMsgAttributes.iFormat=RMobileUssdMessaging::EFormatPackedString ,
- // aMsgAttributes.iType=RMobileUssdMessaging::EUssdMORequest
- TExtEtelRequestStatus sendMsgStatus(mobileUssdMessaging,EMobileUssdMessagingSendMessage);
- CleanupStack::PushL(sendMsgStatus);
- sendAttributes.iDcs = 0x00;
- sendAttributes.iFlags = RMobileUssdMessaging::KUssdMessageType
- | RMobileUssdMessaging::KUssdDataFormat
- | RMobileUssdMessaging::KUssdMessageDcs;
- sendAttributes.iFormat = RMobileUssdMessaging::EFormatPackedString;
- sendAttributes.iType = RMobileUssdMessaging::EUssdMORequest;
- RMobileUssdMessaging::TMobileUssdAttributesV1Pckg sendAttributesPckg(sendAttributes);
-
- // start listening for incoming messages
- TExtEtelRequestStatus recvMsgStatus(mobileUssdMessaging,EMobileUssdMessagingReceiveMessage);
- CleanupStack::PushL(recvMsgStatus);
- RMobileUssdMessaging::TGsmUssdMessageData recvUssdMsg;
- RMobileUssdMessaging::TMobileUssdAttributesV1 recvAttributes;
- RMobileUssdMessaging::TMobileUssdAttributesV1Pckg recvAttributesPckg(recvAttributes);
- mobileUssdMessaging.ReceiveMessage(recvMsgStatus,recvUssdMsg,recvAttributesPckg);
-
- // Post network release notification
- TExtEtelRequestStatus releaseMsgStatus(mobileUssdMessaging,EMobileUssdMessagingNotifyNetworkRelease);
- CleanupStack::PushL(releaseMsgStatus);
- RMobilePhone::TMobilePhoneSendSSRequestV3 ssRequest;
- RMobilePhone::TMobilePhoneSendSSRequestV3Pckg ssRequestPckg(ssRequest);
- mobileUssdMessaging.NotifyNetworkRelease(releaseMsgStatus,ssRequestPckg,sendAttributesPckg);
-
- // send message
- mobileUssdMessaging.SendMessage(sendMsgStatus, sendUssdMsg, sendAttributesPckg);
- ASSERT_EQUALS(WaitForRequestWithTimeOut(sendMsgStatus, ETimeLong),
- KErrNone, _L("RMobileUssdMessaging::SendMessage did not complete."));
- ASSERT_EQUALS(sendMsgStatus.Int(),KErrNone,
- _L("RMobileUssdMessaging::SendMessage completed with incorrect error"));
-
- // === Receive network response ===
-
- // Check RMobileUssdMessaging::ReceiveMessage completes with aMsgData with length > 0
- // Check RMobileUssdMessaging::ReceiveMessage completes with aMsgAttributes.iType=RMobileUssdMessaging::EUssdMTReply
- ASSERT_EQUALS(WaitForRequestWithTimeOut(recvMsgStatus, ETimeLong),
- KErrNone, _L("RMobileUssdMessaging::ReceiveMessage did not complete."));
- ASSERT_EQUALS(recvMsgStatus.Int(),KErrNone,
- _L("RMobileUssdMessaging::ReceiveMessage completed with incorrect error"));
- ASSERT_TRUE(recvUssdMsg.Length() > 0,
- _L("RMobileUssdMessaging::ReceiveMessage completed with msglength <=0"));
- ASSERT_EQUALS(recvAttributes.iType,RMobileUssdMessaging::EUssdMTReply,
- _L("RMobileUssdMessaging::ReceiveMessage completed with incorrect USSD message type"));
-
- // === Receive network RELEASE COMPLETE message ===
-
- // Check RMobileUssdMessaging::NotifyNetworkRelease completes with aMsgData with length > 0
- ASSERT_EQUALS(WaitForRequestWithTimeOut(releaseMsgStatus, ETimeLong),
- KErrNone, _L("RMobileUssdMessaging::NotifyNetworkRelease did not complete."));
- ASSERT_EQUALS(releaseMsgStatus.Int(),KErrNone,
- _L("RMobileUssdMessaging::NotifyNetworkRelease completed with incorrect error"));
- ASSERT_TRUE(recvUssdMsg.Length() > 0,
- _L("RMobileUssdMessaging::NotifyNetworkRelease completed with msglength <=0"));
-
- //
- // TEST END
- //
-
- StartCleanup();
-
- // Pop:
- // releaseMsgStatus
- // recvMsgStatus
- // sendMsgStatus
- CleanupStack::PopAndDestroy(3,&sendMsgStatus);
-
- return TestStepResult();
- }
-
-TPtrC CCTSYIntegrationTestUssdMessaging0002::GetTestStepName()
-/**
- * @return The test step name.
- */
- {
- return _L("CCTSYIntegrationTestUssdMessaging0002");
- }
-
-
-
-CCTSYIntegrationTestUssdMessaging0003::CCTSYIntegrationTestUssdMessaging0003(CEtelSessionMgr& aEtelSessionMgr)
- : CCTSYIntegrationTestUssdMessagingBase(aEtelSessionMgr)
-/**
- * Constructor.
- */
- {
- SetTestStepName(CCTSYIntegrationTestUssdMessaging0003::GetTestStepName());
- }
-
-CCTSYIntegrationTestUssdMessaging0003::~CCTSYIntegrationTestUssdMessaging0003()
-/**
- * Destructor.
- */
- {
- }
-
-TVerdict CCTSYIntegrationTestUssdMessaging0003::doTestStepL()
-/**
- * @SYMTestCaseID BA-CTSY-INT-USSDM-0003
- * @SYMFssID BA/CTSY/USSDM-0003
- * @SYMTestCaseDesc Send an empty USSD request.
- * @SYMTestPriority High
- * @SYMTestActions RMobileUssdMessaging::NotifyNetworkRelease
- * @SYMTestExpectedResults Pass - Message sent and reply received from network.
- * @SYMTestType CIT
- * @SYMTestCaseDependencies simulated/manual
- *
- * Reason for test: Verify message sent and reply received.
- *
- * @return - TVerdict code
- */
- {
-
- //
- // SET UP
- //
-
- //
-
- ERR_PRINTF2(_L("<font color=Orange>$CTSYKnownFailure: defect id = %d</font>"), 10068);
- User::Leave(KErrNone);
-
- // Check RMobileUssdMessaging::GetCaps returns iUssdFormat of KCapsPackedString
- // Check RMobileUssdMessaging::GetCaps returns iUssdTypes of KCapsMOUssd | KCapsMTUssd
- RMobileUssdMessaging& mobileUssdMessaging = iEtelSessionMgr.GetUssdMessagingL(KMainServer, KMainPhone,KMainUssdMessaging);
- RMobileUssdMessaging::TMobileUssdCapsV1 ussdCaps;
- RMobileUssdMessaging::TMobileUssdCapsV1Pckg ussdCapsPk(ussdCaps);
- CHECK_EQUALS_L(mobileUssdMessaging.GetCaps(ussdCapsPk), KErrNone,
- _L("RMobileUssdMessaging::GetCaps returned error"));
- CHECK_EQUALS_L(ussdCaps.iUssdFormat, (TUint32)RMobileUssdMessaging::KCapsPackedString,
- _L("RMobileUssdMessaging::GetCaps returned incorrect iUssdFormat"));
- TUint32 expectedCaps = RMobileUssdMessaging::KCapsMOUssd | RMobileUssdMessaging::KCapsMTUssd;
- CHECK_BITS_SET_L(ussdCaps.iUssdTypes, expectedCaps, KNoUnwantedBits, _L("RMobileUssdMessaging::GetCaps returned incorrect iUssdTypes"));
-
-
- //
- // SET UP END
- //
-
- StartTest();
-
- //
- // TEST START
- //
-
-
- // === Send a an empty USSD request ===
-
- // Send a USSD message to the network with RMobileUssdMessaging::SendMessage with aMsgData=empty buffer and aMsgAttributes.iDcs=0x00 (No class, uncompressed),aMsgAttributes.iFlags=RMobileUssdMessaging::KUssdMessageType | RMobileUssdMessaging::KUssdDataFormat | RMobileUssdMessaging::KUssdMessageDcs , aMsgAttributes.iFormat=RMobileUssdMessaging::EFormatPackedString , aMsgAttributes.iType=RMobileUssdMessaging::EUssdMORequest
-
- // === Receive network RELEASE COMPLETE message ===
- // Simulated network sends a release complete
- // Check RMobileUssdMessaging::NotifyNetworkRelease completes with aMsgData with length > 0
- TBuf8<100> eightBitStr = _L8("");
- ASSERT_EQUALS(SendSimulateCompleteCheckCompleteL(mobileUssdMessaging,eightBitStr,RMobileUssdMessaging::EUssdMORequest),KErrNone,_L("CCTSYIntegrationTestUssdMessagingBase::SendSimulateCompleteCheckCompleteL returned an error"));
-
- //
- // TEST END
- //
-
- StartCleanup();
-
- return TestStepResult();
- }
-
-TPtrC CCTSYIntegrationTestUssdMessaging0003::GetTestStepName()
-/**
- * @return The test step name.
- */
- {
- return _L("CCTSYIntegrationTestUssdMessaging0003");
- }
-
-
-
-CCTSYIntegrationTestUssdMessaging0004::CCTSYIntegrationTestUssdMessaging0004(CEtelSessionMgr& aEtelSessionMgr)
- : CCTSYIntegrationTestUssdMessagingBase(aEtelSessionMgr)
-/**
- * Constructor.
- */
- {
- SetTestStepName(CCTSYIntegrationTestUssdMessaging0004::GetTestStepName());
- }
-
-CCTSYIntegrationTestUssdMessaging0004::~CCTSYIntegrationTestUssdMessaging0004()
-/**
- * Destructor.
- */
- {
- }
-
-TVerdict CCTSYIntegrationTestUssdMessaging0004::doTestStepL()
-/**
- * @SYMTestCaseID BA-CTSY-INT-USSDM-0004
- * @SYMFssID BA/CTSY/USSDM-0004
- * @SYMTestCaseDesc Send a 24 character USSD request.
- * @SYMTestPriority High
- * @SYMTestActions RMobileUssdMessaging::NotifyNetworkRelease
- * @SYMTestExpectedResults Pass - Message sent and reply received from network.
- * @SYMTestType CIT
- * @SYMTestCaseDependencies simulated/manual
- *
- * Reason for test: Verify message sent and reply received.
- *
- * @return - TVerdict code
- */
- {
-
- //
- // SET UP
- //
-
- ERR_PRINTF2(_L("<font color=Orange>$CTSYKnownFailure: defect id = %d</font>"), 10069);
- User::Leave(KErrNone);
-
-
- // Check RMobileUssdMessaging::GetCaps returns iUssdFormat of KCapsPackedString
- // Check RMobileUssdMessaging::GetCaps returns iUssdTypes of KCapsMOUssd | KCapsMTUssd
- RMobileUssdMessaging& mobileUssdMessaging = iEtelSessionMgr.GetUssdMessagingL(KMainServer, KMainPhone,KMainUssdMessaging);
- RMobileUssdMessaging::TMobileUssdCapsV1 ussdCaps;
- RMobileUssdMessaging::TMobileUssdCapsV1Pckg ussdCapsPk(ussdCaps);
- CHECK_TRUE_L(mobileUssdMessaging.GetCaps(ussdCapsPk)==KErrNone,_L("RMobileUssdMessaging::GetCaps returned error"));
- CHECK_TRUE_L(ussdCapsPk().iUssdFormat==RMobileUssdMessaging::KCapsPackedString ,_L("RMobileUssdMessaging::GetCaps returned incorrect iUssdFormat"));
- TUint32 expectedCaps = RMobileUssdMessaging::KCapsMOUssd | RMobileUssdMessaging::KCapsMTUssd;
- CHECK_BITS_SET_L(ussdCaps.iUssdTypes, expectedCaps, KNoUnwantedBits, _L("RMobileUssdMessaging::GetCaps returned incorrect iUssdTypes"));
-
-
- //
- // SET UP END
- //
-
- StartTest();
-
- //
- // TEST START
- //
-
-
- // === Send a valid USSD request ===
-
- // Encode 24 character USSD string (consisting of 24 "*") into a TGsmUssdMessageData buffer.
- TBuf8<100> eightBitStr = _L8("");
- for(TInt i=0;i<23;++i)
- {
- eightBitStr.Append('*');
- }
- eightBitStr.Append('#');
-
- // Send a USSD message to the network with RMobileUssdMessaging::SendMessage with aMsgData=encoded TGsmUssdMessageData and aMsgAttributes.iDcs=0x00 (No class, uncompressed),aMsgAttributes.iFlags=RMobileUssdMessaging::KUssdMessageType | RMobileUssdMessaging::KUssdDataFormat | RMobileUssdMessaging::KUssdMessageDcs , aMsgAttributes.iFormat=RMobileUssdMessaging::EFormatPackedString , aMsgAttributes.iType=RMobileUssdMessaging::EUssdMORequest
- // === Receive network RELEASE COMPLETE message ===
- // Simulated network sends a release complete
- // Check RMobileUssdMessaging::NotifyNetworkRelease completes with aMsgData with length > 0
- ASSERT_EQUALS(SendSimulateCompleteCheckCompleteL(mobileUssdMessaging,eightBitStr,RMobileUssdMessaging::EUssdMORequest),KErrNone,_L("CCTSYIntegrationTestUssdMessagingBase::SendSimulateCompleteCheckCompleteL returned an error"));
-
- //
- // TEST END
- //
-
- StartCleanup();
-
-
- return TestStepResult();
- }
-
-TPtrC CCTSYIntegrationTestUssdMessaging0004::GetTestStepName()
-/**
- * @return The test step name.
- */
- {
- return _L("CCTSYIntegrationTestUssdMessaging0004");
- }
-
-
-
-CCTSYIntegrationTestUssdMessaging0005::CCTSYIntegrationTestUssdMessaging0005(CEtelSessionMgr& aEtelSessionMgr)
- : CCTSYIntegrationTestUssdMessagingBase(aEtelSessionMgr)
-/**
- * Constructor.
- */
- {
- SetTestStepName(CCTSYIntegrationTestUssdMessaging0005::GetTestStepName());
- }
-
-CCTSYIntegrationTestUssdMessaging0005::~CCTSYIntegrationTestUssdMessaging0005()
-/**
- * Destructor.
- */
- {
- }
-
-TVerdict CCTSYIntegrationTestUssdMessaging0005::doTestStepL()
-/**
- * @SYMTestCaseID BA-CTSY-INT-USSDM-0005
- * @SYMFssID BA/CTSY/USSDM-0005
- * @SYMTestCaseDesc Send a USSD request of length KGsmUssdDataSize
- * @SYMTestPriority High
- * @SYMTestActions RMobileUssdMessaging::NotifyNetworkRelease
- * @SYMTestExpectedResults Pass - Message sent and reply received from network.
- * @SYMTestType CIT
- * @SYMTestCaseDependencies simulated/manual
- *
- * Reason for test: Verify message sent and reply received.
- *
- * @return - TVerdict code
- */
- {
-
- //
- // SET UP
- //
-
- ERR_PRINTF2(_L("<font color=Orange>$CTSYKnownFailure: defect id = %d</font>"), 10070);
- User::Leave(KErrNone);
-
-
- // Check RMobileUssdMessaging::GetCaps returns iUssdFormat of KCapsPackedString
- // Check RMobileUssdMessaging::GetCaps returns iUssdTypes of KCapsMOUssd | KCapsMTUssd
- RMobileUssdMessaging& mobileUssdMessaging = iEtelSessionMgr.GetUssdMessagingL(KMainServer, KMainPhone,KMainUssdMessaging);
- RMobileUssdMessaging::TMobileUssdCapsV1 ussdCaps;
- RMobileUssdMessaging::TMobileUssdCapsV1Pckg ussdCapsPk(ussdCaps);
- CHECK_EQUALS_L(mobileUssdMessaging.GetCaps(ussdCapsPk), KErrNone,
- _L("RMobileUssdMessaging::GetCaps returned error"));
- CHECK_EQUALS_L(ussdCaps.iUssdFormat, (TUint32)RMobileUssdMessaging::KCapsPackedString,
- _L("RMobileUssdMessaging::GetCaps returned incorrect iUssdFormat"));
- TUint32 expectedCaps = RMobileUssdMessaging::KCapsMOUssd | RMobileUssdMessaging::KCapsMTUssd;
- CHECK_BITS_SET_L(ussdCaps.iUssdTypes, expectedCaps, KNoUnwantedBits, _L("RMobileUssdMessaging::GetCaps returned incorrect iUssdTypes"));
-
-
- //
- // SET UP END
- //
-
- StartTest();
-
- //
- // TEST START
- //
-
-
- // === Send a valid USSD request ===
-
- // Encode and fill a TGsmUssdMessageData buffer with "*" characters.
- // $CTSYProblem This test cannot be run since LTSY crash when the message size is 50 character or more
- CHECK_TRUE_L(EFalse,_L("$CTSYProblem This test cannot be run since LTSY crash when the message size is 50 character or more"));
- TBuf8<200> eightBitStr = _L8("");
- for(TInt i=0;i<181;++i)
- {
- eightBitStr.Append('*');
- }
- eightBitStr.Append('#');
-
- // Send a USSD message to the network with RMobileUssdMessaging::SendMessage with aMsgData=encoded TGsmUssdMessageData and aMsgAttributes.iDcs=0x00 (No class, uncompressed),aMsgAttributes.iFlags=RMobileUssdMessaging::KUssdMessageType | RMobileUssdMessaging::KUssdDataFormat | RMobileUssdMessaging::KUssdMessageDcs , aMsgAttributes.iFormat=RMobileUssdMessaging::EFormatPackedString , aMsgAttributes.iType=RMobileUssdMessaging::EUssdMORequest
- // === Receive network RELEASE COMPLETE message ===
- // Simulated network sends a release complete
- // Check RMobileUssdMessaging::NotifyNetworkRelease completes with aMsgData with length > 0
- ASSERT_EQUALS(SendSimulateCompleteCheckCompleteL(mobileUssdMessaging,eightBitStr,RMobileUssdMessaging::EUssdMORequest),KErrNone,_L("CCTSYIntegrationTestUssdMessagingBase::SendSimulateCompleteCheckCompleteL returned an error"));
-
- //
- // TEST END
- //
-
- StartCleanup();
-
-
- return TestStepResult();
- }
-
-TPtrC CCTSYIntegrationTestUssdMessaging0005::GetTestStepName()
-/**
- * @return The test step name.
- */
- {
- return _L("CCTSYIntegrationTestUssdMessaging0005");
- }
-
-
-
-CCTSYIntegrationTestUssdMessaging0006::CCTSYIntegrationTestUssdMessaging0006(CEtelSessionMgr& aEtelSessionMgr)
- : CCTSYIntegrationTestUssdMessagingBase(aEtelSessionMgr)
-/**
- * Constructor.
- */
- {
- SetTestStepName(CCTSYIntegrationTestUssdMessaging0006::GetTestStepName());
- }
-
-CCTSYIntegrationTestUssdMessaging0006::~CCTSYIntegrationTestUssdMessaging0006()
-/**
- * Destructor.
- */
- {
- }
-
-TVerdict CCTSYIntegrationTestUssdMessaging0006::doTestStepL()
-/**
- * @SYMTestCaseID BA-CTSY-INT-USSDM-0006
- * @SYMFssID BA/CTSY/USSDM-0006
- * @SYMTestCaseDesc Receive a USSD notify from network
- * @SYMTestPriority High
- * @SYMTestActions RMobileUssdMessaging::NotifyNetworkRelease, RMobileUssdMessaging::SendMessage
- * @SYMTestExpectedResults Pass - Network USSD message received correctly.
- * @SYMTestType CIT
- * @SYMTestCaseDependencies simulated/manual
- *
- * Reason for test: Verify message sent and reply received.
- *
- * @return - TVerdict code
- */
- {
-
- //
- // SET UP
- //
-
-
- // Check RMobileUssdMessaging::GetCaps returns iUssdFormat of KCapsPackedString
- // Check RMobileUssdMessaging::GetCaps returns iUssdTypes of KCapsMOUssd | KCapsMTUssd
- RMobileUssdMessaging& mobileUssdMessaging = iEtelSessionMgr.GetUssdMessagingL(KMainServer, KMainPhone,KMainUssdMessaging);
- RMobileUssdMessaging::TMobileUssdCapsV1 ussdCaps;
- RMobileUssdMessaging::TMobileUssdCapsV1Pckg ussdCapsPk(ussdCaps);
- CHECK_EQUALS_L(mobileUssdMessaging.GetCaps(ussdCapsPk), KErrNone,
- _L("RMobileUssdMessaging::GetCaps returned error"));
- CHECK_EQUALS_L(ussdCaps.iUssdFormat, (TUint32)RMobileUssdMessaging::KCapsPackedString,
- _L("RMobileUssdMessaging::GetCaps returned incorrect iUssdFormat"));
- TUint32 expectedCaps = RMobileUssdMessaging::KCapsMOUssd | RMobileUssdMessaging::KCapsMTUssd;
- CHECK_BITS_SET_L(ussdCaps.iUssdTypes, expectedCaps, KNoUnwantedBits, _L("RMobileUssdMessaging::GetCaps returned incorrect iUssdTypes"));
-
-
- //
- // SET UP END
- //
-
- StartTest();
-
- //
- // TEST START
- //
-
-
- // === Part 1 - Network sends a USSD notify then release complete when acknowledgement received from phone ===
-
- // Simulated network sends a USSD notify message (message type EUssdMTNotify).
-
- // === Receive MT notify from network ===
-
- // Check RMobileUssdMessaging::ReceiveMessage completes with aMsgData with length > 0
- // Check RMobileUssdMessaging::ReceiveMessage completes with aMsgAttributes.iType=RMobileUssdMessaging::EUssdMTNotify
- ASSERT_EQUALS(SimulateNotifyCheckReceiveL(mobileUssdMessaging,RMobileUssdMessaging::EUssdMTNotify),KErrNone,_L("CCTSYIntegrationTestUssdMessagingBase::SimulateNotifyCheckReceiveL returned an error"));
-
- // === Reply to network with MO acknowledgement ===
-
- // Send a USSD message to the network with RMobileUssdMessaging::SendMessage with aMsgData=empty TGsmUssdMessageData and aMsgAttributes.iDcs=0x00 (No class, uncompressed),aMsgAttributes.iFlags=RMobileUssdMessaging::KUssdMessageType | RMobileUssdMessaging::KUssdDataFormat | RMobileUssdMessaging::KUssdMessageDcs , aMsgAttributes.iFormat=RMobileUssdMessaging::EFormatPackedString , aMsgAttributes.iType=RMobileUssdMessaging::EUssdMOAcknowledgement
-
- // === Receive network RELEASE COMPLETE message ===
- // Simulated network sends a release complete
- // Check RMobileUssdMessaging::NotifyNetworkRelease completes with aMsgData with length > 0
- TBuf8<100> eightBitStr = _L8("");
- ASSERT_EQUALS(SendSimulateCompleteCheckCompleteL(mobileUssdMessaging,eightBitStr,RMobileUssdMessaging::EUssdMOAcknowledgement),KErrNone,_L("CCTSYIntegrationTestUssdMessagingBase::SendSimulateCompleteCheckCompleteL returned an error"));
-
- // === Part 2 - Network sends a USSD notify then release complete when acknowledgement received from phone ===
-
- // Simulated network sends a USSD notify message (message type EUssdMTNotify).
-
- // === Receive MT notify from network ===
-
- // Check RMobileUssdMessaging::ReceiveMessage completes with aMsgData with length > 0
- // Check RMobileUssdMessaging::ReceiveMessage completes with aMsgAttributes.iType=RMobileUssdMessaging::EUssdMTNotify
- ASSERT_EQUALS(SimulateNotifyCheckReceiveL(mobileUssdMessaging,RMobileUssdMessaging::EUssdMTNotify),KErrNone,_L("CCTSYIntegrationTestUssdMessagingBase::SimulateNotifyCheckReceiveL returned an error"));
-
- // === Reply to network with MO acknowledgement ===
-
- // Send a USSD message to the network with RMobileUssdMessaging::SendMessage with aMsgData=empty TGsmUssdMessageData and aMsgAttributes.iDcs=0x00 (No class, uncompressed),aMsgAttributes.iFlags=RMobileUssdMessaging::KUssdMessageType | RMobileUssdMessaging::KUssdDataFormat | RMobileUssdMessaging::KUssdMessageDcs , aMsgAttributes.iFormat=RMobileUssdMessaging::EFormatPackedString , aMsgAttributes.iType=RMobileUssdMessaging::EUssdMOAcknowledgement
-
- // Simulated network sends a USSD notify message (message type EUssdMTNotify).
-
- // === Receive MT notify from network ===
-
- // Check RMobileUssdMessaging::ReceiveMessage completes with aMsgData with length > 0
- // Check RMobileUssdMessaging::ReceiveMessage completes with aMsgAttributes.iType=RMobileUssdMessaging::EUssdMTNotify
- ASSERT_EQUALS(SendSimulateNotifyCheckCompleteL(mobileUssdMessaging,eightBitStr,RMobileUssdMessaging::EUssdMOAcknowledgement,RMobileUssdMessaging::EUssdMTNotify),KErrNone,_L("CCTSYIntegrationTestUssdMessagingBase::SendSimulateNotifyCheckCompleteL returned an error"));
-
- // === Reply to network with MO acknowledgement ===
-
- // Send a USSD message to the network with RMobileUssdMessaging::SendMessage with aMsgData=empty TGsmUssdMessageData and aMsgAttributes.iDcs=0x00 (No class, uncompressed),aMsgAttributes.iFlags=RMobileUssdMessaging::KUssdMessageType | RMobileUssdMessaging::KUssdDataFormat | RMobileUssdMessaging::KUssdMessageDcs , aMsgAttributes.iFormat=RMobileUssdMessaging::EFormatPackedString , aMsgAttributes.iType=RMobileUssdMessaging::EUssdMOAcknowledgement
-
- // === Receive network RELEASE COMPLETE message ===
- // Simulated network sends a release complete
- // Check RMobileUssdMessaging::NotifyNetworkRelease completes with aMsgData with length > 0
- ASSERT_EQUALS(SendSimulateCompleteCheckCompleteL(mobileUssdMessaging,eightBitStr,RMobileUssdMessaging::RMobileUssdMessaging::EUssdMOAcknowledgement),KErrNone,_L("CCTSYIntegrationTestUssdMessagingBase::SendSimulateCompleteCheckCompleteL returned an error"));
-
-
- //
- // TEST END
- //
-
- StartCleanup();
-
-
- return TestStepResult();
- }
-
-TPtrC CCTSYIntegrationTestUssdMessaging0006::GetTestStepName()
-/**
- * @return The test step name.
- */
- {
- return _L("CCTSYIntegrationTestUssdMessaging0006");
- }
-
-
-
-CCTSYIntegrationTestUssdMessaging0007::CCTSYIntegrationTestUssdMessaging0007(CEtelSessionMgr& aEtelSessionMgr)
- : CCTSYIntegrationTestUssdMessagingBase(aEtelSessionMgr)
-/**
- * Constructor.
- */
- {
- SetTestStepName(CCTSYIntegrationTestUssdMessaging0007::GetTestStepName());
- }
-
-CCTSYIntegrationTestUssdMessaging0007::~CCTSYIntegrationTestUssdMessaging0007()
-/**
- * Destructor.
- */
- {
- }
-
-TVerdict CCTSYIntegrationTestUssdMessaging0007::doTestStepL()
-/**
- * @SYMTestCaseID BA-CTSY-INT-USSDM-0007
- * @SYMFssID BA/CTSY/USSDM-0007
- * @SYMTestCaseDesc Receive a USSD notify from network of 182 characters
- * @SYMTestPriority High
- * @SYMTestActions RMobileUssdMessaging::SendRelease, RMobileUssdMessaging::SendMessage
- * @SYMTestExpectedResults Pass - Network USSD message received correctly.
- * @SYMTestType CIT
- * @SYMTestCaseDependencies simulated/manual
- *
- * Reason for test: Verify message sent and reply received.
- *
- * @return - TVerdict code
- */
- {
-
- //
- // SET UP
- //
-
-
- // Check RMobileUssdMessaging::GetCaps returns iUssdFormat of KCapsPackedString
- // Check RMobileUssdMessaging::GetCaps returns iUssdTypes of KCapsMOUssd | KCapsMTUssd
- RMobileUssdMessaging& mobileUssdMessaging = iEtelSessionMgr.GetUssdMessagingL(KMainServer, KMainPhone,KMainUssdMessaging);
- RMobileUssdMessaging::TMobileUssdCapsV1 ussdCaps;
- RMobileUssdMessaging::TMobileUssdCapsV1Pckg ussdCapsPk(ussdCaps);
- CHECK_EQUALS_L(mobileUssdMessaging.GetCaps(ussdCapsPk), KErrNone,
- _L("RMobileUssdMessaging::GetCaps returned error"));
- CHECK_EQUALS_L(ussdCaps.iUssdFormat, (TUint32)RMobileUssdMessaging::KCapsPackedString,
- _L("RMobileUssdMessaging::GetCaps returned incorrect iUssdFormat"));
- TUint32 expectedCaps = RMobileUssdMessaging::KCapsMOUssd | RMobileUssdMessaging::KCapsMTUssd;
- CHECK_BITS_SET_L(ussdCaps.iUssdTypes, expectedCaps, KNoUnwantedBits, _L("RMobileUssdMessaging::GetCaps returned incorrect iUssdTypes"));
-
-
-
- //
- // SET UP END
- //
-
- StartTest();
-
- //
- // TEST START
- //
-
- // Simulated network sends a USSD notify message (message type EUssdMTNotify) of 182 characters.
-
- // === Receive MT notify from network ===
-
- // Check RMobileUssdMessaging::ReceiveMessage completes with aMsgData with length > 0
- // Check RMobileUssdMessaging::ReceiveMessage completes with aMsgAttributes.iType=RMobileUssdMessaging::EUssdMTNotify
- ASSERT_EQUALS(SimulateNotifyCheckReceiveL(mobileUssdMessaging,RMobileUssdMessaging::EUssdMTNotify,182),KErrNone,_L("CCTSYIntegrationTestUssdMessagingBase::SimulateNotifyCheckReceiveL returned an error"));
-
- // === Reply to network with MO acknowledgement ===
-
- // Send a USSD message to the network with RMobileUssdMessaging::SendMessage with aMsgData=empty TGsmUssdMessageData and aMsgAttributes.iDcs=0x00 (No class, uncompressed),aMsgAttributes.iFlags=RMobileUssdMessaging::KUssdMessageType | RMobileUssdMessaging::KUssdDataFormat | RMobileUssdMessaging::KUssdMessageDcs , aMsgAttributes.iFormat=RMobileUssdMessaging::EFormatPackedString , aMsgAttributes.iType=RMobileUssdMessaging::EUssdMOAcknowledgement
- TExtEtelRequestStatus sendMsgStatus(mobileUssdMessaging,EMobileUssdMessagingSendMessage);
- CleanupStack::PushL(sendMsgStatus);
- RMobileUssdMessaging::TGsmUssdMessageData sendUssdMsg = _L8("");
- RMobileUssdMessaging::TMobileUssdAttributesV1 sendAttributes;
- sendAttributes.iDcs=0x00;
- sendAttributes.iFlags=RMobileUssdMessaging::KUssdMessageType | RMobileUssdMessaging::KUssdDataFormat | RMobileUssdMessaging::KUssdMessageDcs;
- sendAttributes.iFormat=RMobileUssdMessaging::EFormatPackedString;
- sendAttributes.iType=RMobileUssdMessaging::EUssdMOAcknowledgement;
- RMobileUssdMessaging::TMobileUssdAttributesV1Pckg sendAttributesPckg(sendAttributes);
- mobileUssdMessaging.SendMessage(sendMsgStatus, sendUssdMsg, sendAttributesPckg);
- ASSERT_EQUALS(WaitForRequestWithTimeOut(sendMsgStatus, ETimeLong),
- KErrNone, _L("RMobileUssdMessaging::SendMessage did not complete."));
- ASSERT_EQUALS(sendMsgStatus.Int(),KErrNone,
- _L("RMobileUssdMessaging::SendMessage completed with incorrect error"));
-
- // === Send a release complete to the network ===
-
- // Check RMobileUssdMessaging::SendRelease completes with KErrNone
- TExtEtelRequestStatus sendReleaseStatus(mobileUssdMessaging,EMobileUssdMessagingSendRelease);
- CleanupStack::PushL(sendReleaseStatus);
- RMobilePhone::TMobilePhoneSendSSRequestV3 requestInfo;
- RMobilePhone::TMobilePhoneSendSSRequestV3Pckg requestInfoPckg(requestInfo);
- mobileUssdMessaging.SendRelease(sendReleaseStatus,requestInfoPckg);
- ASSERT_EQUALS(WaitForRequestWithTimeOut(sendReleaseStatus, ETimeLong),
- KErrNone, _L("RMobileUssdMessaging::SendRelease did not complete."));
- ASSERT_EQUALS(sendReleaseStatus.Int(),KErrNone,
- _L("RMobileUssdMessaging::SendRelease completed with incorrect error"));
-
-
- //
- // TEST END
- //
-
- StartCleanup();
-
- // Pop:
- // sendReleaseStatus
- // sendMsgStatus
- CleanupStack::PopAndDestroy(2,&sendMsgStatus);
-
- return TestStepResult();
- }
-
-TPtrC CCTSYIntegrationTestUssdMessaging0007::GetTestStepName()
-/**
- * @return The test step name.
- */
- {
- return _L("CCTSYIntegrationTestUssdMessaging0007");
- }
-
-
-
-CCTSYIntegrationTestUssdMessaging0008::CCTSYIntegrationTestUssdMessaging0008(CEtelSessionMgr& aEtelSessionMgr)
- : CCTSYIntegrationTestUssdMessagingBase(aEtelSessionMgr)
-/**
- * Constructor.
- */
- {
- SetTestStepName(CCTSYIntegrationTestUssdMessaging0008::GetTestStepName());
- }
-
-CCTSYIntegrationTestUssdMessaging0008::~CCTSYIntegrationTestUssdMessaging0008()
-/**
- * Destructor.
- */
- {
- }
-
-TVerdict CCTSYIntegrationTestUssdMessaging0008::doTestStepL()
-/**
- * @SYMTestCaseID BA-CTSY-INT-USSDM-0008
- * @SYMFssID BA/CTSY/USSDM-0008
- * @SYMTestCaseDesc Receive a USSD request from the network.
- * @SYMTestPriority High
- * @SYMTestActions RMobileUssdMessaging::NotifyNetworkRelease, RMobileUssdMessaging::SendMessage
- * @SYMTestExpectedResults Pass - Network USSD message received correctly.
- * @SYMTestType CIT
- * @SYMTestCaseDependencies simulated/manual
- *
- * Reason for test: Verify messages received and replies can be sent.
- *
- * @return - TVerdict code
- */
- {
-
- //
- // SET UP
- //
-
-
- // Check RMobileUssdMessaging::GetCaps returns iUssdFormat of KCapsPackedString
- // Check RMobileUssdMessaging::GetCaps returns iUssdTypes of KCapsMOUssd | KCapsMTUssd
- RMobileUssdMessaging& mobileUssdMessaging = iEtelSessionMgr.GetUssdMessagingL(KMainServer, KMainPhone,KMainUssdMessaging);
- RMobileUssdMessaging::TMobileUssdCapsV1 ussdCaps;
- RMobileUssdMessaging::TMobileUssdCapsV1Pckg ussdCapsPk(ussdCaps);
- CHECK_EQUALS_L(mobileUssdMessaging.GetCaps(ussdCapsPk), KErrNone,
- _L("RMobileUssdMessaging::GetCaps returned error"));
- CHECK_EQUALS_L(ussdCaps.iUssdFormat, (TUint32)RMobileUssdMessaging::KCapsPackedString,
- _L("RMobileUssdMessaging::GetCaps returned incorrect iUssdFormat"));
- TUint32 expectedCaps = RMobileUssdMessaging::KCapsMOUssd | RMobileUssdMessaging::KCapsMTUssd;
- CHECK_BITS_SET_L(ussdCaps.iUssdTypes, expectedCaps, KNoUnwantedBits, _L("RMobileUssdMessaging::GetCaps returned incorrect iUssdTypes"));
-
-
- //
- // SET UP END
- //
-
- StartTest();
- //
- // TEST START
- //
-
-
- // === Part 1 - network sends USSD request, phone replies and network releases ===
-
- // Simulated network sends a USSD notify message (message type EUssdMTRequest)
-
- // === Receive MT request from network ===
-
- // Check RMobileUssdMessaging::ReceiveMessage completes with aMsgData with length > 0
- // Check RMobileUssdMessaging::ReceiveMessage completes with aMsgAttributes.iType=RMobileUssdMessaging::EUssdMTRequest
- ASSERT_EQUALS(SimulateNotifyCheckReceiveL(mobileUssdMessaging,RMobileUssdMessaging::EUssdMTRequest),KErrNone,_L("CCTSYIntegrationTestUssdMessagingBase::SimulateNotifyCheckReceiveL returned an error"));
-
- // === Send a USSD reply ===
-
- // Send a USSD message to the network with RMobileUssdMessaging::SendMessage with aMsgData=a valid encoded string and aMsgAttributes.iDcs=0x00 (No class, uncompressed),aMsgAttributes.iFlags=RMobileUssdMessaging::KUssdMessageType | RMobileUssdMessaging::KUssdDataFormat | RMobileUssdMessaging::KUssdMessageDcs , aMsgAttributes.iFormat=RMobileUssdMessaging::EFormatPackedString , aMsgAttributes.iType=RMobileUssdMessaging::EUssdMTReply
- TBuf8<100> eightBitStr = _L8("*#30#");
-
- // === Receive network RELEASE COMPLETE message ===
- // Simulated network sends a release complete
- // Check RMobileUssdMessaging::NotifyNetworkRelease completes with aMsgData with length > 0
- ERR_PRINTF2(_L("<font color=Orange>$CTSYKnownFailure: defect id2 = %d</font>"), 10035);
- CHECK_TRUE_L(EFalse, _L("This test has been made to leave intentially - ***Send message fail, and ctsy cancel it later****"));
- ASSERT_EQUALS(SendSimulateCompleteCheckCompleteL(mobileUssdMessaging,eightBitStr,RMobileUssdMessaging::EUssdMTReply),KErrNone,_L("CCTSYIntegrationTestUssdMessagingBase::SendSimulateCompleteCheckCompleteL returned an error"));
-
- // === Part 2 - network sends USSD request, phone replies, network sends another request and phone replies again, then network releases ===
-
- // Simulated network sends a USSD notify message (message type EUssdMTRequest)
-
- // === Receive MT request from network ===
-
- // Check RMobileUssdMessaging::ReceiveMessage completes with aMsgData with length > 0
- // Check RMobileUssdMessaging::ReceiveMessage completes with aMsgAttributes.iType=RMobileUssdMessaging::EUssdMTRequest
- ASSERT_EQUALS(SimulateNotifyCheckReceiveL(mobileUssdMessaging,RMobileUssdMessaging::EUssdMTRequest),KErrNone,_L("CCTSYIntegrationTestUssdMessagingBase::SimulateNotifyCheckReceiveL returned an error"));
-
- // === Send a USSD reply ===
-
- // Send a USSD message to the network with RMobileUssdMessaging::SendMessage with aMsgData=a valid encoded string and aMsgAttributes.iDcs=0x00 (No class, uncompressed),aMsgAttributes.iFlags=RMobileUssdMessaging::KUssdMessageType | RMobileUssdMessaging::KUssdDataFormat | RMobileUssdMessaging::KUssdMessageDcs , aMsgAttributes.iFormat=RMobileUssdMessaging::EFormatPackedString , aMsgAttributes.iType=RMobileUssdMessaging::EUssdMTReply
- eightBitStr = _L8("*#30#");
-
- // Simulated network sends a USSD notify message (message type EUssdMTRequest)
-
- // === Receive MT request from network ===
-
- // Check RMobileUssdMessaging::ReceiveMessage completes with aMsgData with length > 0
- // Check RMobileUssdMessaging::ReceiveMessage completes with aMsgAttributes.iType=RMobileUssdMessaging::EUssdMTRequest
- ASSERT_EQUALS(SendSimulateNotifyCheckCompleteL(mobileUssdMessaging,eightBitStr,RMobileUssdMessaging::EUssdMTReply ,RMobileUssdMessaging::EUssdMTRequest),KErrNone,_L("CCTSYIntegrationTestUssdMessagingBase::SendSimulateNotifyCheckCompleteL returned an error"));
-
- // === Send a USSD reply ===
-
- // Send a USSD message to the network with RMobileUssdMessaging::SendMessage with aMsgData=a valid encoded string and aMsgAttributes.iDcs=0x00 (No class, uncompressed),aMsgAttributes.iFlags=RMobileUssdMessaging::KUssdMessageType | RMobileUssdMessaging::KUssdDataFormat | RMobileUssdMessaging::KUssdMessageDcs , aMsgAttributes.iFormat=RMobileUssdMessaging::EFormatPackedString , aMsgAttributes.iType=RMobileUssdMessaging::EUssdMTReply
- eightBitStr = _L8("*#30#");
-
- // === Receive network RELEASE COMPLETE message ===
- // Simulated network sends a release complete
- // Check RMobileUssdMessaging::NotifyNetworkRelease completes with aMsgData with length > 0
- ASSERT_EQUALS(SendSimulateCompleteCheckCompleteL(mobileUssdMessaging,eightBitStr,RMobileUssdMessaging::EUssdMTReply ),KErrNone,_L("CCTSYIntegrationTestUssdMessagingBase::SendSimulateCompleteCheckCompleteL returned an error"));
-
-
- //
- // TEST END
- //
-
- StartCleanup();
-
- return TestStepResult();
- }
-
-TPtrC CCTSYIntegrationTestUssdMessaging0008::GetTestStepName()
-/**
- * @return The test step name.
- */
- {
- return _L("CCTSYIntegrationTestUssdMessaging0008");
- }
-
-
-
-CCTSYIntegrationTestUssdMessaging0009::CCTSYIntegrationTestUssdMessaging0009(CEtelSessionMgr& aEtelSessionMgr)
- : CCTSYIntegrationTestUssdMessagingBase(aEtelSessionMgr)
-/**
- * Constructor.
- */
- {
- SetTestStepName(CCTSYIntegrationTestUssdMessaging0009::GetTestStepName());
- }
-
-CCTSYIntegrationTestUssdMessaging0009::~CCTSYIntegrationTestUssdMessaging0009()
-/**
- * Destructor.
- */
- {
- }
-
-TVerdict CCTSYIntegrationTestUssdMessaging0009::doTestStepL()
-/**
- * @SYMTestCaseID BA-CTSY-INT-USSDM-0009
- * @SYMFssID BA/CTSY/USSDM-0009
- * @SYMTestCaseDesc Receive a USSD request from the network of 182 characters long.
- * @SYMTestPriority High
- * @SYMTestActions RMobileUssdMessaging::NotifyNetworkRelease, RMobileUssdMessaging::SendMessage
- * @SYMTestExpectedResults Pass - Network USSD message received correctly.
- * @SYMTestType CIT
- * @SYMTestCaseDependencies simulated/manual
- *
- * Reason for test: Verify message received.
- *
- * @return - TVerdict code
- */
- {
-
- //
- // SET UP
- //
-
-
- // Check RMobileUssdMessaging::GetCaps returns iUssdFormat of KCapsPackedString
- // Check RMobileUssdMessaging::GetCaps returns iUssdTypes of KCapsMOUssd | KCapsMTUssd
- RMobileUssdMessaging& mobileUssdMessaging = iEtelSessionMgr.GetUssdMessagingL(KMainServer, KMainPhone,KMainUssdMessaging);
- RMobileUssdMessaging::TMobileUssdCapsV1 ussdCaps;
- RMobileUssdMessaging::TMobileUssdCapsV1Pckg ussdCapsPk(ussdCaps);
- CHECK_EQUALS_L(mobileUssdMessaging.GetCaps(ussdCapsPk), KErrNone,
- _L("RMobileUssdMessaging::GetCaps returned error"));
- CHECK_EQUALS_L(ussdCaps.iUssdFormat, (TUint32)RMobileUssdMessaging::KCapsPackedString,
- _L("RMobileUssdMessaging::GetCaps returned incorrect iUssdFormat"));
- TUint32 expectedCaps = RMobileUssdMessaging::KCapsMOUssd | RMobileUssdMessaging::KCapsMTUssd;
- CHECK_BITS_SET_L(ussdCaps.iUssdTypes, expectedCaps, KNoUnwantedBits, _L("RMobileUssdMessaging::GetCaps returned incorrect iUssdTypes"));
-
-
-
- //
- // SET UP END
- //
-
- StartTest();
-
- //
- // TEST START
- //
-
- // Simulated network sends a USSD notify message (message type EUssdMTRequest) of 182 characters
-
- // === Receive MT request from network ===
-
- // Check RMobileUssdMessaging::ReceiveMessage completes with aMsgData with length > 0
- // Check RMobileUssdMessaging::ReceiveMessage completes with aMsgAttributes.iType=RMobileUssdMessaging::EUssdMTRequest
- ASSERT_EQUALS(SimulateNotifyCheckReceiveL(mobileUssdMessaging,RMobileUssdMessaging::EUssdMTRequest,182),KErrNone,_L("CCTSYIntegrationTestUssdMessagingBase::SimulateNotifyCheckReceiveL returned an error"));
-
-
- // === Send a USSD reply ===
-
- // Send a USSD message to the network with RMobileUssdMessaging::SendMessage with aMsgData=a valid encoded string and aMsgAttributes.iDcs=0x00 (No class, uncompressed),aMsgAttributes.iFlags=RMobileUssdMessaging::KUssdMessageType | RMobileUssdMessaging::KUssdDataFormat | RMobileUssdMessaging::KUssdMessageDcs , aMsgAttributes.iFormat=RMobileUssdMessaging::EFormatPackedString , aMsgAttributes.iType=RMobileUssdMessaging::EUssdMTReply
- TBuf8<100> eightBitStr = _L8("*#30#");
-
- // === Receive network RELEASE COMPLETE message ===
- // Simulated network sends a release complete
- // Check RMobileUssdMessaging::NotifyNetworkRelease completes with aMsgData with length > 0
- ERR_PRINTF2(_L("<font color=Orange>$CTSYKnownFailure: defect id2 = %d</font>"), 10035);
- CHECK_TRUE_L(EFalse, _L("This test has been made to leave intentially - ***Send message fail, and ctsy cancel it later****"));
- ASSERT_EQUALS(SendSimulateCompleteCheckCompleteL(mobileUssdMessaging,eightBitStr,RMobileUssdMessaging::EUssdMTReply),KErrNone,_L("CCTSYIntegrationTestUssdMessagingBase::SendSimulateCompleteCheckCompleteL returned an error"));
-
- //
- // TEST END
- //
-
- StartCleanup();
-
-
- return TestStepResult();
- }
-
-TPtrC CCTSYIntegrationTestUssdMessaging0009::GetTestStepName()
-/**
- * @return The test step name.
- */
- {
- return _L("CCTSYIntegrationTestUssdMessaging0009");
- }
-
-
-
-CCTSYIntegrationTestUssdMessaging0010::CCTSYIntegrationTestUssdMessaging0010(CEtelSessionMgr& aEtelSessionMgr)
- : CCTSYIntegrationTestUssdMessagingBase(aEtelSessionMgr)
-/**
- * Constructor.
- */
- {
- SetTestStepName(CCTSYIntegrationTestUssdMessaging0010::GetTestStepName());
- }
-
-CCTSYIntegrationTestUssdMessaging0010::~CCTSYIntegrationTestUssdMessaging0010()
-/**
- * Destructor.
- */
- {
- }
-
-TVerdict CCTSYIntegrationTestUssdMessaging0010::doTestStepL()
-/**
- * @SYMTestCaseID BA-CTSY-INT-USSDM-0010
- * @SYMFssID BA/CTSY/USSDM-0010
- * @SYMTestCaseDesc Terminate a USSD exchange.
- * @SYMTestPriority High
- * @SYMTestActions RMobileUssdMessaging::ReceiveMessage, RMobileUssdMessaging::SendRelease
- * @SYMTestExpectedResults Pass - KErrNotSupported when sending USSD to unsupported network
- * @SYMTestType CIT
- * @SYMTestCaseDependencies live/automatic
- *
- * Reason for test: Verify sending of release complete message is successful.
- *
- * @return - TVerdict code
- */
- {
-
- //
- // SET UP
- //
-
-
- // Check RMobileUssdMessaging::GetCaps returns iUssdFormat of KCapsPackedString
- // Check RMobileUssdMessaging::GetCaps returns iUssdTypes of KCapsMOUssd | KCapsMTUssd
- RMobileUssdMessaging& mobileUssdMessaging = iEtelSessionMgr.GetUssdMessagingL(KMainServer, KMainPhone,KMainUssdMessaging);
- RMobileUssdMessaging::TMobileUssdCapsV1 ussdCaps;
- RMobileUssdMessaging::TMobileUssdCapsV1Pckg ussdCapsPk(ussdCaps);
- CHECK_EQUALS_L(mobileUssdMessaging.GetCaps(ussdCapsPk), KErrNone,
- _L("RMobileUssdMessaging::GetCaps returned error"));
- CHECK_EQUALS_L(ussdCaps.iUssdFormat, (TUint32)RMobileUssdMessaging::KCapsPackedString,
- _L("RMobileUssdMessaging::GetCaps returned incorrect iUssdFormat"));
- TUint32 expectedCaps = RMobileUssdMessaging::KCapsMOUssd | RMobileUssdMessaging::KCapsMTUssd;
- CHECK_BITS_SET_L(ussdCaps.iUssdTypes, expectedCaps, KNoUnwantedBits, _L("RMobileUssdMessaging::GetCaps returned incorrect iUssdTypes"));
-
- RMobilePhone& mobilePhone = iEtelSessionMgr.GetPhoneL(KMainServer, KMainPhone);
- TInt ret = iNetworkTsyTestHelper.WaitForRegisteredOnHomeNetworkL(mobilePhone);
- CHECK_EQUALS_L(ret, KErrNone,
- _L("RMobilePhone::NotifyNetworkRegistrationStatusChange network registration failed"));
-
-
- //
- // SET UP END
- //
-
- StartTest();
-
- //
- // TEST START
- //
-
-
- // === Send a valid USSD request ===
-
- // Encode a the USSD request "*#30#" (Caller ID presentation) into a TGsmUssdMessageData buffer.
- TBuf8<100> eightBitStr = _L8("*#30#");
- TBuf8<100> sevenBitStr;
- iSmsStoreTsyTestHelper.GsmLibSmsPackMessage( sevenBitStr, eightBitStr, eightBitStr.Length());
- RMobileUssdMessaging::TGsmUssdMessageData sendUssdMsg = sevenBitStr;
-
- // start listening for incoming messages
- TExtEtelRequestStatus recvMsgStatus(mobileUssdMessaging,EMobileUssdMessagingReceiveMessage);
- CleanupStack::PushL(recvMsgStatus);
- RMobileUssdMessaging::TGsmUssdMessageData recvUssdMsg;
- RMobileUssdMessaging::TMobileUssdAttributesV1 recvAttributes;
- RMobileUssdMessaging::TMobileUssdAttributesV1Pckg recvAttributesPckg(recvAttributes);
- mobileUssdMessaging.ReceiveMessage(recvMsgStatus,recvUssdMsg,recvAttributesPckg);
-
- // Send a USSD message to the network with RMobileUssdMessaging::SendMessage with aMsgData=encoded TGsmUssdMessageData and aMsgAttributes.iDcs=0x00 (No class, uncompressed),aMsgAttributes.iFlags=RMobileUssdMessaging::KUssdMessageType | RMobileUssdMessaging::KUssdDataFormat | RMobileUssdMessaging::KUssdMessageDcs , aMsgAttributes.iFormat=RMobileUssdMessaging::EFormatPackedString , aMsgAttributes.iType=RMobileUssdMessaging::EUssdMORequest
- TExtEtelRequestStatus sendMsgStatus(mobileUssdMessaging,EMobileUssdMessagingSendMessage);
- CleanupStack::PushL(sendMsgStatus);
- RMobileUssdMessaging::TMobileUssdAttributesV1 sendAttributes;
- sendAttributes.iDcs=0x00;
- sendAttributes.iFlags=RMobileUssdMessaging::KUssdMessageType | RMobileUssdMessaging::KUssdDataFormat | RMobileUssdMessaging::KUssdMessageDcs;
- sendAttributes.iFormat=RMobileUssdMessaging::RMobileUssdMessaging::EFormatPackedString;
- sendAttributes.iType=RMobileUssdMessaging::EUssdMORequest;
- RMobileUssdMessaging::TMobileUssdAttributesV1Pckg sendAttributesPckg(sendAttributes);
- mobileUssdMessaging.SendMessage(sendMsgStatus, sendUssdMsg, sendAttributesPckg);
- ASSERT_EQUALS(WaitForRequestWithTimeOut(sendMsgStatus, ETimeLong),
- KErrNone, _L("RMobileUssdMessaging::SendMessage did not complete."));
- ASSERT_EQUALS(sendMsgStatus.Int(),KErrNone,
- _L("RMobileUssdMessaging::SendMessage completed with incorrect error"));
-
- // === Receive network response ===
-
- // Check RMobileUssdMessaging::ReceiveMessage completes with aMsgData with length > 0
- // Check RMobileUssdMessaging::ReceiveMessage completes with aMsgAttributes.iType=RMobileUssdMessaging::EUssdMTReply
- ASSERT_EQUALS(WaitForRequestWithTimeOut(recvMsgStatus, ETimeLong),
- KErrNone, _L("RMobileUssdMessaging::ReceiveMessage did not complete."));
- ASSERT_EQUALS(recvMsgStatus.Int(),KErrNone,
- _L("RMobileUssdMessaging::ReceiveMessage completed with incorrect error"));
- ASSERT_TRUE(recvUssdMsg.Length() > 0,
- _L("RMobileUssdMessaging::ReceiveMessage completed with msglength <=0"));
- ASSERT_EQUALS(recvAttributes.iType,RMobileUssdMessaging::EUssdMTReply,
- _L("RMobileUssdMessaging::ReceiveMessage completed with incorrect USSD message type"));
-
- // === Send release complete ===
-
- // Check RMobileUssdMessaging::SendRelease completes with KErrNone
- TExtEtelRequestStatus sendReleaseStatus(mobileUssdMessaging,EMobileUssdMessagingSendRelease);
- CleanupStack::PushL(sendReleaseStatus);
- RMobilePhone::TMobilePhoneSendSSRequestV3 requestInfo;
- RMobilePhone::TMobilePhoneSendSSRequestV3Pckg requestInfoPckg(requestInfo);
- mobileUssdMessaging.SendRelease(sendReleaseStatus,requestInfoPckg);
- ASSERT_EQUALS(WaitForRequestWithTimeOut(sendReleaseStatus, ETimeLong),
- KErrNone, _L("RMobileUssdMessaging::SendRelease did not complete."));
- ASSERT_EQUALS(sendReleaseStatus.Int(),KErrNone,
- _L("RMobileUssdMessaging::SendRelease completed with incorrect error"));
-
- //
- // TEST END
- //
-
- StartCleanup();
-
- // Pop:
- // sendReleaseStatus
- // sendMsgStatus
- // recvMsgStatus
- CleanupStack::PopAndDestroy(3,&recvMsgStatus);
-
- return TestStepResult();
- }
-
-TPtrC CCTSYIntegrationTestUssdMessaging0010::GetTestStepName()
-/**
- * @return The test step name.
- */
- {
- return _L("CCTSYIntegrationTestUssdMessaging0010");
- }
-
-
-
-CCTSYIntegrationTestUssdMessaging0011::CCTSYIntegrationTestUssdMessaging0011(CEtelSessionMgr& aEtelSessionMgr)
- : CCTSYIntegrationTestUssdMessagingBase(aEtelSessionMgr)
-/**
- * Constructor.
- */
- {
- SetTestStepName(CCTSYIntegrationTestUssdMessaging0011::GetTestStepName());
- }
-
-CCTSYIntegrationTestUssdMessaging0011::~CCTSYIntegrationTestUssdMessaging0011()
-/**
- * Destructor.
- */
- {
- }
-
-TVerdict CCTSYIntegrationTestUssdMessaging0011::doTestStepL()
-/**
- * @SYMTestCaseID BA-CTSY-INT-USSDM-0011
- * @SYMFssID BA/CTSY/USSDM-0011
- * @SYMTestCaseDesc Cancel receiving a USSD message.
- * @SYMTestPriority High
- * @SYMTestActions
- * @SYMTestExpectedResults Pass - KErrCancel returned.
- * @SYMTestType CIT
- * @SYMTestCaseDependencies live/automatic
- *
- * Reason for test: Verify KErrCancel returned.
- *
- * @return - TVerdict code
- */
- {
-
- //
- // SET UP
- //
-
-
- // Check RMobileUssdMessaging::GetCaps returns iUssdFormat of KCapsPackedString
- // Check RMobileUssdMessaging::GetCaps returns iUssdTypes of KCapsMOUssd | KCapsMTUssd
- RMobileUssdMessaging& mobileUssdMessaging = iEtelSessionMgr.GetUssdMessagingL(KMainServer, KMainPhone,KMainUssdMessaging);
- RMobileUssdMessaging::TMobileUssdCapsV1 ussdCaps;
- RMobileUssdMessaging::TMobileUssdCapsV1Pckg ussdCapsPk(ussdCaps);
- CHECK_EQUALS_L(mobileUssdMessaging.GetCaps(ussdCapsPk), KErrNone,
- _L("RMobileUssdMessaging::GetCaps returned error"));
- CHECK_EQUALS_L(ussdCaps.iUssdFormat, (TUint32)RMobileUssdMessaging::KCapsPackedString,
- _L("RMobileUssdMessaging::GetCaps returned incorrect iUssdFormat"));
- TUint32 expectedCaps = RMobileUssdMessaging::KCapsMOUssd | RMobileUssdMessaging::KCapsMTUssd;
- CHECK_BITS_SET_L(ussdCaps.iUssdTypes, expectedCaps, KNoUnwantedBits, _L("RMobileUssdMessaging::GetCaps returned incorrect iUssdTypes"));
-
-
- //
- // SET UP END
- //
-
- StartTest();
-
- //
- // TEST START
- //
-
-
- // Make an RMobileUssdMessaging::ReceiveMessage request
- TExtEtelRequestStatus recvMsgStatus(mobileUssdMessaging,EMobileUssdMessagingReceiveMessage);
- CleanupStack::PushL(recvMsgStatus);
- RMobileUssdMessaging::TGsmUssdMessageData recvUssdMsg;
- RMobileUssdMessaging::TMobileUssdAttributesV1 recvAttributes;
- RMobileUssdMessaging::TMobileUssdAttributesV1Pckg recvAttributesPckg(recvAttributes);
- mobileUssdMessaging.ReceiveMessage(recvMsgStatus,recvUssdMsg,recvAttributesPckg);
-
- // Cancel the request with RTelSubSession::CancelAsyncRequest(EMobileUssdMessagingReceiveMessage);
- mobileUssdMessaging.CancelAsyncRequest(EMobileUssdMessagingReceiveMessage);
-
- // Check receive message request completes with KErrCancel
- ASSERT_EQUALS(WaitForRequestWithTimeOut(recvMsgStatus, ETimeLong),
- KErrNone, _L("RMobileUssdMessaging::ReceiveMessage did not complete."));
- ASSERT_EQUALS(recvMsgStatus.Int(),KErrCancel,
- _L("RMobileUssdMessaging::ReceiveMessage did not completed with KErrCancel"));
-
-
- //
- // TEST END
- //
-
- StartCleanup();
-
- // Pop:
- // recvMsgStatus
- CleanupStack::PopAndDestroy(1,&recvMsgStatus);
-
- return TestStepResult();
- }
-
-TPtrC CCTSYIntegrationTestUssdMessaging0011::GetTestStepName()
-/**
- * @return The test step name.
- */
- {
- return _L("CCTSYIntegrationTestUssdMessaging0011");
- }
-
-
-
+// Copyright (c) 2007-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:
+// Test step definitions for the UssdMessaging functional unit.
+//
+//
+
+/**
+ @internalTechnology
+*/
+
+#include "cctsyintegrationtestussdmessaging.h"
+#include "cetelsessionmgr.h"
+
+
+
+CCTSYIntegrationTestUssdMessagingBase::CCTSYIntegrationTestUssdMessagingBase(CEtelSessionMgr& aEtelSessionMgr)
+ : CCTSYIntegrationTestSuiteStepBase(aEtelSessionMgr), iSmsStoreTsyTestHelper(*this),iNetworkTsyTestHelper(*this)
+/**
+ * Constructor
+ */
+ {
+ }
+
+CCTSYIntegrationTestUssdMessagingBase::~CCTSYIntegrationTestUssdMessagingBase()
+/*
+ * Destructor
+ */
+ {
+ }
+
+
+TInt CCTSYIntegrationTestUssdMessagingBase::SimulateNetworkSendsReleaseCompleteL()
+/**
+ * Helper function
+ *
+ * Simulate network sends a release complete message. Not implemented!
+ *
+ *
+ * @return KErrNone if everything is OK, the error code in any other case
+ */
+ {
+ // This function should call whatever APIs are required to tell the simulator to simulate network sends a release complete message
+ DisplayUserInteractionPromptL(_L("Now we should simulate a Request Complete message. Press any key to continue."), ETimeLong);
+ return KErrNone;
+ }
+
+TInt CCTSYIntegrationTestUssdMessagingBase::SimulateNetworkSendsNotifyMessageL(RMobileUssdMessaging::TMobileUssdMessageType /*aType*/, TInt /*aLength*/)
+/**
+ * Helper function
+ *
+ * Simulate network sends a USSD notify message. Not implemented!
+ *
+ * @param aType The message type
+ * @param aLength The number of charecters in the messege
+ *
+ * @return KErrNone if everything is OK, the error code in any other case
+ */
+ {
+ // This function should call whatever APIs are required to tell the simulator to simulate network sends a USSD notify message
+ DisplayUserInteractionPromptL(_L("Now we should simulate a Notify message. Press any key to continue."), ETimeLong);
+ return KErrNone;
+ }
+
+TInt CCTSYIntegrationTestUssdMessagingBase::SendSimulateCompleteCheckCompleteL(RMobileUssdMessaging &aUssdMessaging, TDes8& aMsg,RMobileUssdMessaging::TMobileUssdMessageType aMessageType)
+/**
+ * Send a message, Simulate network complete, Check RMobileUssdMessaging::NotifyNetworkRelease completes with aMsgData with length
+ *
+ * @param aUssdMessaging a reference to the USSD Messaging session.
+ * @param aMsg The message USSD string
+ * @param aMessageType The type of message; if type is EUssdMORequest, simulate requestcomplete, otherwise, simulate
+ *
+ * @return KErrNone if everything is OK, the error code in any other case
+ */
+ {
+ TInt ret=KErrNone;
+ TInt last;
+
+ // start listening for incoming messages
+ TExtEtelRequestStatus recvMsgStatus(aUssdMessaging,EMobileUssdMessagingReceiveMessage);
+ CleanupStack::PushL(recvMsgStatus);
+ RMobileUssdMessaging::TGsmUssdMessageData recvUssdMsg;
+ RMobileUssdMessaging::TMobileUssdAttributesV1 recvAttributes;
+ RMobileUssdMessaging::TMobileUssdAttributesV1Pckg recvAttributesPckg(recvAttributes);
+ aUssdMessaging.ReceiveMessage(recvMsgStatus,recvUssdMsg,recvAttributesPckg);
+
+ // Encode USSD string into a TGsmUssdMessageData buffer.
+ TBuf8<200> sevenBitStr;
+ iSmsStoreTsyTestHelper.GsmLibSmsPackMessage( sevenBitStr, aMsg, aMsg.Length());
+ RMobileUssdMessaging::TGsmUssdMessageData sendUssdMsg = sevenBitStr;
+
+ // Send a USSD message to the network with RMobileUssdMessaging::SendMessage with aMsgData=encoded TGsmUssdMessageData and aMsgAttributes.iDcs= 0x00 (No class, uncompressed) ,aMsgAttributes.iFlags=RMobileUssdMessaging::KUssdMessageType | RMobileUssdMessaging::KUssdDataFormat | RMobileUssdMessaging::KUssdMessageDcs , aMsgAttributes.iFormat=RMobileUssdMessaging::EFormatPackedString , aMsgAttributes.iType=aMessageType
+ TExtEtelRequestStatus sendMsgStatus(aUssdMessaging,EMobileUssdMessagingSendMessage);
+ CleanupStack::PushL(sendMsgStatus);
+ RMobileUssdMessaging::TMobileUssdAttributesV1 sendAttributes;
+ sendAttributes.iDcs=0x00;
+ sendAttributes.iFlags=RMobileUssdMessaging::KUssdMessageType | RMobileUssdMessaging::KUssdDataFormat | RMobileUssdMessaging::KUssdMessageDcs;
+ sendAttributes.iFormat=RMobileUssdMessaging::EFormatPackedString;
+ sendAttributes.iType=aMessageType;
+ RMobileUssdMessaging::TMobileUssdAttributesV1Pckg sendAttributesPckg(sendAttributes);
+ aUssdMessaging.SendMessage(sendMsgStatus, sendUssdMsg, sendAttributesPckg);
+ last = WaitForRequestWithTimeOut(sendMsgStatus, ETimeLong);
+ ASSERT_EQUALS(last,
+ KErrNone, _L("RMobileUssdMessaging::SendMessage did not complete."));
+ if(last!=KErrNone)
+ {
+ ret=last;
+ }
+ last = sendMsgStatus.Int();
+ ASSERT_EQUALS(last,KErrNone,
+ _L("RMobileUssdMessaging::SendMessage completed with incorrect error"));
+ if(last!=KErrNone)
+ {
+ ret=last;
+ }
+
+ // Post network release notification
+ TExtEtelRequestStatus releaseMsgStatus(aUssdMessaging,EMobileUssdMessagingNotifyNetworkRelease);
+ CleanupStack::PushL(releaseMsgStatus);
+ RMobilePhone::TMobilePhoneSendSSRequestV3 ssRequest;
+ RMobilePhone::TMobilePhoneSendSSRequestV3Pckg ssRequestPckg(ssRequest);
+ aUssdMessaging.NotifyNetworkRelease(releaseMsgStatus,ssRequestPckg,sendAttributesPckg);
+
+ // Simulated network sends a release complete
+ last = SimulateNetworkSendsReleaseCompleteL();
+ ASSERT_EQUALS(last,KErrNone,_L("CCTSYIntegrationTestUssdMessagingBase::SimulateNetworkSendsReleaseCompleteL returned an error"));
+ if(last!=KErrNone)
+ {
+ ret=last;
+ }
+
+ // Check RMobileUssdMessaging::NotifyNetworkRelease completes with aMsgData with length > 0
+ last = WaitForRequestWithTimeOut(releaseMsgStatus, ETimeLong);
+ ASSERT_EQUALS(last,
+ KErrNone, _L("RMobileUssdMessaging::NotifyNetworkRelease did not complete."));
+ if(last!=KErrNone)
+ {
+ ret=last;
+ }
+ ASSERT_TRUE(recvUssdMsg.Length()>0,_L("RMobileUssdMessaging::NotifyNetworkRelease completed with length 0"));
+ if(recvUssdMsg.Length()==0)
+ {
+ ret = KErrGeneral;
+ }
+
+ // Pop:
+ // releaseMsgStatus
+ // sendMsgStatus
+ // recvMsgStatus
+ CleanupStack::PopAndDestroy(3,&recvMsgStatus);
+
+ return ret;
+ }
+
+TInt CCTSYIntegrationTestUssdMessagingBase::SendSimulateNotifyCheckCompleteL(RMobileUssdMessaging &aUssdMessaging, TDes8& aMsg,RMobileUssdMessaging::TMobileUssdMessageType aMessageType,RMobileUssdMessaging::TMobileUssdMessageType aSimulateType, TInt aLength)
+/**
+ * Send a message, Simulate network notify, Check RMobileUssdMessaging::NotifyNetworkRelease completes with aMsgData with length
+ *
+ * @param aUssdMessaging a reference to the USSD Messaging session.
+ * @param aMsg The message USSD string
+ * @param aMessageType The type of message; if type is EUssdMORequest, simulate requestcomplete, otherwise, simulate
+ * @param aSimulateType the simulated message type
+ * @param aLength the length of the simulated message.
+ *
+ * @return KErrNone if everything is OK, the error code in any other case
+ */
+ {
+ TInt ret=KErrNone;
+ TInt last;
+
+ // start listening for incoming messages
+ TExtEtelRequestStatus recvMsgStatus(aUssdMessaging,EMobileUssdMessagingReceiveMessage);
+ CleanupStack::PushL(recvMsgStatus);
+ RMobileUssdMessaging::TGsmUssdMessageData recvUssdMsg;
+ RMobileUssdMessaging::TMobileUssdAttributesV1 recvAttributes;
+ RMobileUssdMessaging::TMobileUssdAttributesV1Pckg recvAttributesPckg(recvAttributes);
+ aUssdMessaging.ReceiveMessage(recvMsgStatus,recvUssdMsg,recvAttributesPckg);
+
+ // Encode USSD string into a TGsmUssdMessageData buffer.
+ TBuf8<200> sevenBitStr;
+ iSmsStoreTsyTestHelper.GsmLibSmsPackMessage( sevenBitStr, aMsg, aMsg.Length());
+ RMobileUssdMessaging::TGsmUssdMessageData sendUssdMsg = sevenBitStr;
+
+ // Send a USSD message to the network with RMobileUssdMessaging::SendMessage with aMsgData=encoded TGsmUssdMessageData and aMsgAttributes.iDcs=0x00 (No class, uncompressed),aMsgAttributes.iFlags=RMobileUssdMessaging::KUssdMessageType | RMobileUssdMessaging::KUssdDataFormat | RMobileUssdMessaging::KUssdMessageDcs , aMsgAttributes.iFormat=RMobileUssdMessaging::EFormatPackedString , aMsgAttributes.iType=aMessageType
+ TExtEtelRequestStatus sendMsgStatus(aUssdMessaging,EMobileUssdMessagingSendMessage);
+ CleanupStack::PushL(sendMsgStatus);
+ RMobileUssdMessaging::TMobileUssdAttributesV1 sendAttributes;
+ sendAttributes.iDcs=0x00;
+ sendAttributes.iFlags=RMobileUssdMessaging::KUssdMessageType | RMobileUssdMessaging::KUssdDataFormat | RMobileUssdMessaging::KUssdMessageDcs;
+ sendAttributes.iFormat=RMobileUssdMessaging::EFormatPackedString;
+ sendAttributes.iType=aMessageType;
+ RMobileUssdMessaging::TMobileUssdAttributesV1Pckg sendAttributesPckg(sendAttributes);
+ aUssdMessaging.SendMessage(sendMsgStatus, sendUssdMsg, sendAttributesPckg);
+ last = WaitForRequestWithTimeOut(sendMsgStatus, ETimeLong);
+ ASSERT_EQUALS(last,
+ KErrNone, _L("RMobileUssdMessaging::SendMessage did not complete."));
+ if(last!=KErrNone)
+ {
+ ret=last;
+ }
+ last = sendMsgStatus.Int();
+ ASSERT_EQUALS(last,KErrNone,
+ _L("RMobileUssdMessaging::SendMessage completed with incorrect error"));
+ if(last!=KErrNone)
+ {
+ ret=last;
+ }
+
+ // Post network release notification
+ TExtEtelRequestStatus releaseMsgStatus(aUssdMessaging,EMobileUssdMessagingNotifyNetworkRelease);
+ CleanupStack::PushL(releaseMsgStatus);
+ RMobilePhone::TMobilePhoneSendSSRequestV3 ssRequest;
+ RMobilePhone::TMobilePhoneSendSSRequestV3Pckg ssRequestPckg(ssRequest);
+ aUssdMessaging.NotifyNetworkRelease(releaseMsgStatus,ssRequestPckg,sendAttributesPckg);
+
+ // Simulated network sends a release complete
+ last = SimulateNetworkSendsNotifyMessageL(aSimulateType,aLength);
+ ASSERT_EQUALS(last,KErrNone,_L("CCTSYIntegrationTestUssdMessagingBase::SimulateNetworkSendsReleaseCompleteL returned an error"));
+ if(last!=KErrNone)
+ {
+ ret=last;
+ }
+
+ // Check RMobileUssdMessaging::NotifyNetworkRelease completes with aMsgData with length > 0
+ last = WaitForRequestWithTimeOut(releaseMsgStatus, ETimeLong);
+ ASSERT_EQUALS(last,
+ KErrNone, _L("RMobileUssdMessaging::NotifyNetworkRelease did not complete."));
+ if(last!=KErrNone)
+ {
+ ret=last;
+ }
+ last = releaseMsgStatus.Int();
+ ASSERT_EQUALS(last,
+ KErrNone, _L("RMobileUssdMessaging::NotifyNetworkRelease returned an error"));
+ if(last!=KErrNone)
+ {
+ ret=last;
+ }
+ ASSERT_EQUALS(recvAttributes.iType,aSimulateType,
+ _L("RMobileUssdMessaging::ReceiveMessage completed with incorrect USSD message type"));
+ ASSERT_TRUE(recvUssdMsg.Length() > 0,
+ _L("RMobileUssdMessaging::ReceiveMessage completed with msglength <=0"));
+ if((recvUssdMsg.Length()==0)||(recvAttributes.iType!=aSimulateType))
+ {
+ ret = KErrGeneral;
+ }
+
+ // Pop:
+ // releaseMsgStatus
+ // sendMsgStatus
+ // recvMsgStatus
+ CleanupStack::PopAndDestroy(3,&recvMsgStatus);
+
+ return ret;
+
+ }
+
+TInt CCTSYIntegrationTestUssdMessagingBase::SimulateNotifyCheckReceiveL(RMobileUssdMessaging &aUssdMessaging,RMobileUssdMessaging::TMobileUssdMessageType aSimulateType, TInt aLength)
+/**
+ * Simulated network sends a USSD notify message, Receive MT notify from network, Check received notification
+ *
+ * @param aUssdMessaging a reference to the USSD Messaging session.
+ * @param aSimulateType the simulated message type
+ * @param aLength the length of the simulated message.
+ * @param aCheckType the type of the recived notification
+ * @return KErrNone if everything is OK, the error code in any other case
+ */
+ {
+ TInt ret=KErrNone;
+ TInt last;
+
+ // start listening for incoming messages
+ TExtEtelRequestStatus recvMsgStatus(aUssdMessaging,EMobileUssdMessagingReceiveMessage);
+ CleanupStack::PushL(recvMsgStatus);
+ RMobileUssdMessaging::TGsmUssdMessageData recvUssdMsg;
+ RMobileUssdMessaging::TMobileUssdAttributesV1 recvAttributes;
+ RMobileUssdMessaging::TMobileUssdAttributesV1Pckg recvAttributesPckg(recvAttributes);
+ aUssdMessaging.ReceiveMessage(recvMsgStatus,recvUssdMsg,recvAttributesPckg);
+
+ // Simulated network sends a USSD notify message.
+ last = SimulateNetworkSendsNotifyMessageL(aSimulateType,aLength);
+ ASSERT_EQUALS(last,KErrNone,_L("CCTSYIntegrationTestUssdMessagingBase::SimulateNetworkSendsNotifyMessageL returned an error"));
+ if(last!=KErrNone)
+ {
+ ret=last;
+ }
+
+ // === Receive MT notify from network ===
+
+ // Check RMobileUssdMessaging::ReceiveMessage completes with aMsgData with length > 0
+ // Check RMobileUssdMessaging::ReceiveMessage completes with aMsgAttributes.iType=aCheckType
+ last = WaitForRequestWithTimeOut(recvMsgStatus, ETimeLong);
+ ASSERT_EQUALS(last,
+ KErrNone, _L("RMobileUssdMessaging::ReceiveMessage did not complete.")) ;
+ if(last!=KErrNone)
+ {
+ ret=last;
+ }
+ last = recvMsgStatus.Int();
+ ASSERT_EQUALS(last,KErrNone,
+ _L("RMobileUssdMessaging::ReceiveMessage completed with incorrect error"));
+ if(last!=KErrNone)
+ {
+ ret=last;
+ }
+ ASSERT_EQUALS(recvAttributes.iType,aSimulateType,
+ _L("RMobileUssdMessaging::ReceiveMessage completed with incorrect USSD message type"));
+ ASSERT_TRUE(recvUssdMsg.Length() > 0,
+ _L("RMobileUssdMessaging::ReceiveMessage completed with msglength <=0"));
+ if((recvUssdMsg.Length()==0)||(recvAttributes.iType!=aSimulateType))
+ {
+ ret = KErrGeneral;
+ }
+
+ // Pop:
+ // recvMsgStatus
+ CleanupStack::PopAndDestroy(1,&recvMsgStatus);
+
+ return ret;
+
+ }
+CCTSYIntegrationTestUssdMessaging0001::CCTSYIntegrationTestUssdMessaging0001(CEtelSessionMgr& aEtelSessionMgr)
+ : CCTSYIntegrationTestUssdMessagingBase(aEtelSessionMgr)
+/**
+ * Constructor.
+ */
+ {
+ SetTestStepName(CCTSYIntegrationTestUssdMessaging0001::GetTestStepName());
+ }
+
+CCTSYIntegrationTestUssdMessaging0001::~CCTSYIntegrationTestUssdMessaging0001()
+/**
+ * Destructor.
+ */
+ {
+ }
+
+TVerdict CCTSYIntegrationTestUssdMessaging0001::doTestStepL()
+/**
+ * @SYMTestCaseID BA-CTSY-INT-USSDM-0001
+ * @SYMFssID BA/CTSY/USSDM-0001
+ * @SYMTestCaseDesc Get USSD Caps
+ * @SYMTestPriority High
+ * @SYMTestActions RMobileUssdMessaging::GetCaps
+ * @SYMTestExpectedResults Pass - Correct caps returned.
+ * @SYMTestType CIT
+ * @SYMTestCaseDependencies live/automatic
+ *
+ * Reason for test: Verify correct USSD caps returned.
+ *
+ * @return - TVerdict code
+ */
+ {
+
+ //Get USSD Caps
+ //Verify correct USSD caps returned.
+ //
+ // SET UP
+ //
+ RMobileUssdMessaging& mobileUssdMessaging = iEtelSessionMgr.GetUssdMessagingL(KMainServer, KMainPhone,KMainUssdMessaging);
+
+
+ //
+ // SET UP END
+ //
+
+ StartTest();
+
+ //
+ // TEST START
+ //
+
+
+ // Check RMobileUssdMessaging::GetCaps returns iUssdFormat of KCapsPackedString
+ // Check RMobileUssdMessaging::GetCaps returns iUssdTypes of KCapsMOUssd | KCapsMTUssd
+ RMobileUssdMessaging::TMobileUssdCapsV1 ussdCaps;
+ RMobileUssdMessaging::TMobileUssdCapsV1Pckg ussdCapsPk(ussdCaps);
+ ASSERT_EQUALS(mobileUssdMessaging.GetCaps(ussdCapsPk), KErrNone, _L("RMobileUssdMessaging::GetCaps returned error"));
+ ASSERT_EQUALS(ussdCaps.iUssdFormat, (TUint32)RMobileUssdMessaging::KCapsPackedString, _L("RMobileUssdMessaging::GetCaps returned incorrect iUssdFormat"));
+ TUint32 expectedCaps = RMobileUssdMessaging::KCapsMOUssd | RMobileUssdMessaging::KCapsMTUssd;
+ TUint32 unwantedCaps = KNoUnwantedBits;
+ ASSERT_BITS_SET(ussdCapsPk().iUssdTypes, expectedCaps, unwantedCaps, _L("RMobileUssdMessaging::GetCaps returned incorrect iUssdTypes"));
+
+ //
+ // TEST END
+ //
+
+ StartCleanup();
+
+
+ return TestStepResult();
+ }
+
+TPtrC CCTSYIntegrationTestUssdMessaging0001::GetTestStepName()
+/**
+ * @return The test step name.
+ */
+ {
+ return _L("CCTSYIntegrationTestUssdMessaging0001");
+ }
+
+
+
+CCTSYIntegrationTestUssdMessaging0002::CCTSYIntegrationTestUssdMessaging0002(CEtelSessionMgr& aEtelSessionMgr)
+ : CCTSYIntegrationTestUssdMessagingBase(aEtelSessionMgr)
+/**
+ * Constructor.
+ */
+ {
+ SetTestStepName(CCTSYIntegrationTestUssdMessaging0002::GetTestStepName());
+ }
+
+CCTSYIntegrationTestUssdMessaging0002::~CCTSYIntegrationTestUssdMessaging0002()
+/**
+ * Destructor.
+ */
+ {
+ }
+
+
+TVerdict CCTSYIntegrationTestUssdMessaging0002::doTestStepL()
+/**
+ * @SYMTestCaseID BA-CTSY-INT-USSDM-0002
+ * @SYMFssID BA/CTSY/USSDM-0002
+ * @SYMTestCaseDesc Send a valid USSD request.
+ * @SYMTestPriority High
+ * @SYMTestActions RMobileUssdMessaging::GetCaps, RMobileUssdMessaging::SendMessage, RMobileUssdMessaging::ReceiveMessage
+ * @SYMTestExpectedResults Pass - Message sent and reply received from network.
+ * @SYMTestType CIT
+ * @SYMTestCaseDependencies live/automatic
+ *
+ * Reason for test: Verify message sent and reply received.
+ *
+ * @return - TVerdict code
+ */
+ {
+ //Send a valid USSD request.
+ //Verify message sent and reply received..
+ //
+ // SET UP
+ //
+
+ RMobileUssdMessaging& mobileUssdMessaging = iEtelSessionMgr.GetUssdMessagingL(KMainServer, KMainPhone,KMainUssdMessaging);
+ // Check RMobileUssdMessaging::GetCaps returns iUssdFormat of KCapsPackedString
+ RMobileUssdMessaging::TMobileUssdCapsV1 ussdCaps;
+ RMobileUssdMessaging::TMobileUssdCapsV1Pckg ussdCapsPk(ussdCaps);
+ CHECK_TRUE_L(mobileUssdMessaging.GetCaps(ussdCapsPk)==KErrNone,
+ _L("RMobileUssdMessaging::GetCaps returned error"));
+ CHECK_TRUE_L(ussdCapsPk().iUssdFormat==RMobileUssdMessaging::KCapsPackedString ,
+ _L("RMobileUssdMessaging::GetCaps returned incorrect iUssdFormat"));
+
+ // Check RMobileUssdMessaging::GetCaps returns iUssdTypes of KCapsMOUssd | KCapsMTUssd
+ TUint32 expectedCaps = RMobileUssdMessaging::KCapsMOUssd | RMobileUssdMessaging::KCapsMTUssd;
+ TUint32 unwantedCaps = KNoUnwantedBits;
+ CHECK_BITS_SET_L(ussdCapsPk().iUssdTypes, expectedCaps, unwantedCaps, _L("RMobileUssdMessaging::GetCaps returned incorrect iUssdTypes"));
+
+ RMobilePhone& mobilePhone = iEtelSessionMgr.GetPhoneL(KMainServer, KMainPhone);
+ TInt ret = iNetworkTsyTestHelper.WaitForRegisteredOnHomeNetworkL(mobilePhone);
+ CHECK_EQUALS_L(ret, KErrNone,
+ _L("RMobilePhone::NotifyNetworkRegistrationStatusChange network registration failed"));
+
+ //
+ // SET UP END
+ //
+
+ StartTest();
+
+ //
+ // TEST START
+ //
+
+
+ // === Send a valid USSD request ===
+
+ // Encode a the USSD request "*#30#" (Caller ID presentation) into a TGsmUssdMessageData buffer.
+ TBuf8<100> eightBitStr = _L8("*#30#");
+ TBuf8<100> sevenBitStr;
+ iSmsStoreTsyTestHelper.GsmLibSmsPackMessage( sevenBitStr, eightBitStr, eightBitStr.Length());
+
+ RMobileUssdMessaging::TGsmUssdMessageData sendUssdMsg = sevenBitStr;
+ RMobileUssdMessaging::TMobileUssdAttributesV1 sendAttributes;
+
+ // Send a USSD message to the network with RMobileUssdMessaging::SendMessage with
+ // aMsgData=encoded TGsmUssdMessageData and
+ // aMsgAttributes.iDcs=0x00 (No class, uncompressed),
+ // aMsgAttributes.iFlags=RMobileUssdMessaging::KUssdMessageType
+ // | RMobileUssdMessaging::KUssdDataFormat
+ // | RMobileUssdMessaging::KUssdMessageDcs ,
+ // aMsgAttributes.iFormat=RMobileUssdMessaging::EFormatPackedString ,
+ // aMsgAttributes.iType=RMobileUssdMessaging::EUssdMORequest
+ TExtEtelRequestStatus sendMsgStatus(mobileUssdMessaging,EMobileUssdMessagingSendMessage);
+ CleanupStack::PushL(sendMsgStatus);
+ sendAttributes.iDcs = 0x00;
+ sendAttributes.iFlags = RMobileUssdMessaging::KUssdMessageType
+ | RMobileUssdMessaging::KUssdDataFormat
+ | RMobileUssdMessaging::KUssdMessageDcs;
+ sendAttributes.iFormat = RMobileUssdMessaging::EFormatPackedString;
+ sendAttributes.iType = RMobileUssdMessaging::EUssdMORequest;
+ RMobileUssdMessaging::TMobileUssdAttributesV1Pckg sendAttributesPckg(sendAttributes);
+
+ // start listening for incoming messages
+ TExtEtelRequestStatus recvMsgStatus(mobileUssdMessaging,EMobileUssdMessagingReceiveMessage);
+ CleanupStack::PushL(recvMsgStatus);
+ RMobileUssdMessaging::TGsmUssdMessageData recvUssdMsg;
+ RMobileUssdMessaging::TMobileUssdAttributesV1 recvAttributes;
+ RMobileUssdMessaging::TMobileUssdAttributesV1Pckg recvAttributesPckg(recvAttributes);
+ mobileUssdMessaging.ReceiveMessage(recvMsgStatus,recvUssdMsg,recvAttributesPckg);
+
+ // Post network release notification
+ TExtEtelRequestStatus releaseMsgStatus(mobileUssdMessaging,EMobileUssdMessagingNotifyNetworkRelease);
+ CleanupStack::PushL(releaseMsgStatus);
+ RMobilePhone::TMobilePhoneSendSSRequestV3 ssRequest;
+ RMobilePhone::TMobilePhoneSendSSRequestV3Pckg ssRequestPckg(ssRequest);
+ mobileUssdMessaging.NotifyNetworkRelease(releaseMsgStatus,ssRequestPckg,sendAttributesPckg);
+
+ // send message
+ mobileUssdMessaging.SendMessage(sendMsgStatus, sendUssdMsg, sendAttributesPckg);
+ ASSERT_EQUALS(WaitForRequestWithTimeOut(sendMsgStatus, ETimeLong),
+ KErrNone, _L("RMobileUssdMessaging::SendMessage did not complete."));
+ ASSERT_EQUALS(sendMsgStatus.Int(),KErrNone,
+ _L("RMobileUssdMessaging::SendMessage completed with incorrect error"));
+
+ // === Receive network response ===
+
+ // Check RMobileUssdMessaging::ReceiveMessage completes with aMsgData with length > 0
+ // Check RMobileUssdMessaging::ReceiveMessage completes with aMsgAttributes.iType=RMobileUssdMessaging::EUssdMTReply
+ ASSERT_EQUALS(WaitForRequestWithTimeOut(recvMsgStatus, ETimeLong),
+ KErrNone, _L("RMobileUssdMessaging::ReceiveMessage did not complete."));
+ ASSERT_EQUALS(recvMsgStatus.Int(),KErrNone,
+ _L("RMobileUssdMessaging::ReceiveMessage completed with incorrect error"));
+ ASSERT_TRUE(recvUssdMsg.Length() > 0,
+ _L("RMobileUssdMessaging::ReceiveMessage completed with msglength <=0"));
+ ASSERT_EQUALS(recvAttributes.iType,RMobileUssdMessaging::EUssdMTReply,
+ _L("RMobileUssdMessaging::ReceiveMessage completed with incorrect USSD message type"));
+
+ // === Receive network RELEASE COMPLETE message ===
+
+ // Check RMobileUssdMessaging::NotifyNetworkRelease completes with aMsgData with length > 0
+ ASSERT_EQUALS(WaitForRequestWithTimeOut(releaseMsgStatus, ETimeLong),
+ KErrNone, _L("RMobileUssdMessaging::NotifyNetworkRelease did not complete."));
+ ASSERT_EQUALS(releaseMsgStatus.Int(),KErrNone,
+ _L("RMobileUssdMessaging::NotifyNetworkRelease completed with incorrect error"));
+ ASSERT_TRUE(recvUssdMsg.Length() > 0,
+ _L("RMobileUssdMessaging::NotifyNetworkRelease completed with msglength <=0"));
+
+ //
+ // TEST END
+ //
+
+ StartCleanup();
+
+ // Pop:
+ // releaseMsgStatus
+ // recvMsgStatus
+ // sendMsgStatus
+ CleanupStack::PopAndDestroy(3,&sendMsgStatus);
+
+ return TestStepResult();
+ }
+
+TPtrC CCTSYIntegrationTestUssdMessaging0002::GetTestStepName()
+/**
+ * @return The test step name.
+ */
+ {
+ return _L("CCTSYIntegrationTestUssdMessaging0002");
+ }
+
+
+
+CCTSYIntegrationTestUssdMessaging0003::CCTSYIntegrationTestUssdMessaging0003(CEtelSessionMgr& aEtelSessionMgr)
+ : CCTSYIntegrationTestUssdMessagingBase(aEtelSessionMgr)
+/**
+ * Constructor.
+ */
+ {
+ SetTestStepName(CCTSYIntegrationTestUssdMessaging0003::GetTestStepName());
+ }
+
+CCTSYIntegrationTestUssdMessaging0003::~CCTSYIntegrationTestUssdMessaging0003()
+/**
+ * Destructor.
+ */
+ {
+ }
+
+TVerdict CCTSYIntegrationTestUssdMessaging0003::doTestStepL()
+/**
+ * @SYMTestCaseID BA-CTSY-INT-USSDM-0003
+ * @SYMFssID BA/CTSY/USSDM-0003
+ * @SYMTestCaseDesc Send an empty USSD request.
+ * @SYMTestPriority High
+ * @SYMTestActions RMobileUssdMessaging::NotifyNetworkRelease
+ * @SYMTestExpectedResults Pass - Message sent and reply received from network.
+ * @SYMTestType CIT
+ * @SYMTestCaseDependencies simulated/manual
+ *
+ * Reason for test: Verify message sent and reply received.
+ *
+ * @return - TVerdict code
+ */
+ {
+
+ //
+ // SET UP
+ //
+
+ //
+
+ ERR_PRINTF2(_L("<font color=Orange>$CTSYKnownFailure: defect id = %d</font>"), 10068);
+ User::Leave(KErrNone);
+
+ // Check RMobileUssdMessaging::GetCaps returns iUssdFormat of KCapsPackedString
+ // Check RMobileUssdMessaging::GetCaps returns iUssdTypes of KCapsMOUssd | KCapsMTUssd
+ RMobileUssdMessaging& mobileUssdMessaging = iEtelSessionMgr.GetUssdMessagingL(KMainServer, KMainPhone,KMainUssdMessaging);
+ RMobileUssdMessaging::TMobileUssdCapsV1 ussdCaps;
+ RMobileUssdMessaging::TMobileUssdCapsV1Pckg ussdCapsPk(ussdCaps);
+ CHECK_EQUALS_L(mobileUssdMessaging.GetCaps(ussdCapsPk), KErrNone,
+ _L("RMobileUssdMessaging::GetCaps returned error"));
+ CHECK_EQUALS_L(ussdCaps.iUssdFormat, (TUint32)RMobileUssdMessaging::KCapsPackedString,
+ _L("RMobileUssdMessaging::GetCaps returned incorrect iUssdFormat"));
+ TUint32 expectedCaps = RMobileUssdMessaging::KCapsMOUssd | RMobileUssdMessaging::KCapsMTUssd;
+ CHECK_BITS_SET_L(ussdCaps.iUssdTypes, expectedCaps, KNoUnwantedBits, _L("RMobileUssdMessaging::GetCaps returned incorrect iUssdTypes"));
+
+
+ //
+ // SET UP END
+ //
+
+ StartTest();
+
+ //
+ // TEST START
+ //
+
+
+ // === Send a an empty USSD request ===
+
+ // Send a USSD message to the network with RMobileUssdMessaging::SendMessage with aMsgData=empty buffer and aMsgAttributes.iDcs=0x00 (No class, uncompressed),aMsgAttributes.iFlags=RMobileUssdMessaging::KUssdMessageType | RMobileUssdMessaging::KUssdDataFormat | RMobileUssdMessaging::KUssdMessageDcs , aMsgAttributes.iFormat=RMobileUssdMessaging::EFormatPackedString , aMsgAttributes.iType=RMobileUssdMessaging::EUssdMORequest
+
+ // === Receive network RELEASE COMPLETE message ===
+ // Simulated network sends a release complete
+ // Check RMobileUssdMessaging::NotifyNetworkRelease completes with aMsgData with length > 0
+ TBuf8<100> eightBitStr = _L8("");
+ ASSERT_EQUALS(SendSimulateCompleteCheckCompleteL(mobileUssdMessaging,eightBitStr,RMobileUssdMessaging::EUssdMORequest),KErrNone,_L("CCTSYIntegrationTestUssdMessagingBase::SendSimulateCompleteCheckCompleteL returned an error"));
+
+ //
+ // TEST END
+ //
+
+ StartCleanup();
+
+ return TestStepResult();
+ }
+
+TPtrC CCTSYIntegrationTestUssdMessaging0003::GetTestStepName()
+/**
+ * @return The test step name.
+ */
+ {
+ return _L("CCTSYIntegrationTestUssdMessaging0003");
+ }
+
+
+
+CCTSYIntegrationTestUssdMessaging0004::CCTSYIntegrationTestUssdMessaging0004(CEtelSessionMgr& aEtelSessionMgr)
+ : CCTSYIntegrationTestUssdMessagingBase(aEtelSessionMgr)
+/**
+ * Constructor.
+ */
+ {
+ SetTestStepName(CCTSYIntegrationTestUssdMessaging0004::GetTestStepName());
+ }
+
+CCTSYIntegrationTestUssdMessaging0004::~CCTSYIntegrationTestUssdMessaging0004()
+/**
+ * Destructor.
+ */
+ {
+ }
+
+TVerdict CCTSYIntegrationTestUssdMessaging0004::doTestStepL()
+/**
+ * @SYMTestCaseID BA-CTSY-INT-USSDM-0004
+ * @SYMFssID BA/CTSY/USSDM-0004
+ * @SYMTestCaseDesc Send a 24 character USSD request.
+ * @SYMTestPriority High
+ * @SYMTestActions RMobileUssdMessaging::NotifyNetworkRelease
+ * @SYMTestExpectedResults Pass - Message sent and reply received from network.
+ * @SYMTestType CIT
+ * @SYMTestCaseDependencies simulated/manual
+ *
+ * Reason for test: Verify message sent and reply received.
+ *
+ * @return - TVerdict code
+ */
+ {
+
+ //
+ // SET UP
+ //
+
+ ERR_PRINTF2(_L("<font color=Orange>$CTSYKnownFailure: defect id = %d</font>"), 10069);
+ User::Leave(KErrNone);
+
+
+ // Check RMobileUssdMessaging::GetCaps returns iUssdFormat of KCapsPackedString
+ // Check RMobileUssdMessaging::GetCaps returns iUssdTypes of KCapsMOUssd | KCapsMTUssd
+ RMobileUssdMessaging& mobileUssdMessaging = iEtelSessionMgr.GetUssdMessagingL(KMainServer, KMainPhone,KMainUssdMessaging);
+ RMobileUssdMessaging::TMobileUssdCapsV1 ussdCaps;
+ RMobileUssdMessaging::TMobileUssdCapsV1Pckg ussdCapsPk(ussdCaps);
+ CHECK_TRUE_L(mobileUssdMessaging.GetCaps(ussdCapsPk)==KErrNone,_L("RMobileUssdMessaging::GetCaps returned error"));
+ CHECK_TRUE_L(ussdCapsPk().iUssdFormat==RMobileUssdMessaging::KCapsPackedString ,_L("RMobileUssdMessaging::GetCaps returned incorrect iUssdFormat"));
+ TUint32 expectedCaps = RMobileUssdMessaging::KCapsMOUssd | RMobileUssdMessaging::KCapsMTUssd;
+ CHECK_BITS_SET_L(ussdCaps.iUssdTypes, expectedCaps, KNoUnwantedBits, _L("RMobileUssdMessaging::GetCaps returned incorrect iUssdTypes"));
+
+
+ //
+ // SET UP END
+ //
+
+ StartTest();
+
+ //
+ // TEST START
+ //
+
+
+ // === Send a valid USSD request ===
+
+ // Encode 24 character USSD string (consisting of 24 "*") into a TGsmUssdMessageData buffer.
+ TBuf8<100> eightBitStr = _L8("");
+ for(TInt i=0;i<23;++i)
+ {
+ eightBitStr.Append('*');
+ }
+ eightBitStr.Append('#');
+
+ // Send a USSD message to the network with RMobileUssdMessaging::SendMessage with aMsgData=encoded TGsmUssdMessageData and aMsgAttributes.iDcs=0x00 (No class, uncompressed),aMsgAttributes.iFlags=RMobileUssdMessaging::KUssdMessageType | RMobileUssdMessaging::KUssdDataFormat | RMobileUssdMessaging::KUssdMessageDcs , aMsgAttributes.iFormat=RMobileUssdMessaging::EFormatPackedString , aMsgAttributes.iType=RMobileUssdMessaging::EUssdMORequest
+ // === Receive network RELEASE COMPLETE message ===
+ // Simulated network sends a release complete
+ // Check RMobileUssdMessaging::NotifyNetworkRelease completes with aMsgData with length > 0
+ ASSERT_EQUALS(SendSimulateCompleteCheckCompleteL(mobileUssdMessaging,eightBitStr,RMobileUssdMessaging::EUssdMORequest),KErrNone,_L("CCTSYIntegrationTestUssdMessagingBase::SendSimulateCompleteCheckCompleteL returned an error"));
+
+ //
+ // TEST END
+ //
+
+ StartCleanup();
+
+
+ return TestStepResult();
+ }
+
+TPtrC CCTSYIntegrationTestUssdMessaging0004::GetTestStepName()
+/**
+ * @return The test step name.
+ */
+ {
+ return _L("CCTSYIntegrationTestUssdMessaging0004");
+ }
+
+
+
+CCTSYIntegrationTestUssdMessaging0005::CCTSYIntegrationTestUssdMessaging0005(CEtelSessionMgr& aEtelSessionMgr)
+ : CCTSYIntegrationTestUssdMessagingBase(aEtelSessionMgr)
+/**
+ * Constructor.
+ */
+ {
+ SetTestStepName(CCTSYIntegrationTestUssdMessaging0005::GetTestStepName());
+ }
+
+CCTSYIntegrationTestUssdMessaging0005::~CCTSYIntegrationTestUssdMessaging0005()
+/**
+ * Destructor.
+ */
+ {
+ }
+
+TVerdict CCTSYIntegrationTestUssdMessaging0005::doTestStepL()
+/**
+ * @SYMTestCaseID BA-CTSY-INT-USSDM-0005
+ * @SYMFssID BA/CTSY/USSDM-0005
+ * @SYMTestCaseDesc Send a USSD request of length KGsmUssdDataSize
+ * @SYMTestPriority High
+ * @SYMTestActions RMobileUssdMessaging::NotifyNetworkRelease
+ * @SYMTestExpectedResults Pass - Message sent and reply received from network.
+ * @SYMTestType CIT
+ * @SYMTestCaseDependencies simulated/manual
+ *
+ * Reason for test: Verify message sent and reply received.
+ *
+ * @return - TVerdict code
+ */
+ {
+
+ //
+ // SET UP
+ //
+
+ ERR_PRINTF2(_L("<font color=Orange>$CTSYKnownFailure: defect id = %d</font>"), 10070);
+ User::Leave(KErrNone);
+
+
+ // Check RMobileUssdMessaging::GetCaps returns iUssdFormat of KCapsPackedString
+ // Check RMobileUssdMessaging::GetCaps returns iUssdTypes of KCapsMOUssd | KCapsMTUssd
+ RMobileUssdMessaging& mobileUssdMessaging = iEtelSessionMgr.GetUssdMessagingL(KMainServer, KMainPhone,KMainUssdMessaging);
+ RMobileUssdMessaging::TMobileUssdCapsV1 ussdCaps;
+ RMobileUssdMessaging::TMobileUssdCapsV1Pckg ussdCapsPk(ussdCaps);
+ CHECK_EQUALS_L(mobileUssdMessaging.GetCaps(ussdCapsPk), KErrNone,
+ _L("RMobileUssdMessaging::GetCaps returned error"));
+ CHECK_EQUALS_L(ussdCaps.iUssdFormat, (TUint32)RMobileUssdMessaging::KCapsPackedString,
+ _L("RMobileUssdMessaging::GetCaps returned incorrect iUssdFormat"));
+ TUint32 expectedCaps = RMobileUssdMessaging::KCapsMOUssd | RMobileUssdMessaging::KCapsMTUssd;
+ CHECK_BITS_SET_L(ussdCaps.iUssdTypes, expectedCaps, KNoUnwantedBits, _L("RMobileUssdMessaging::GetCaps returned incorrect iUssdTypes"));
+
+
+ //
+ // SET UP END
+ //
+
+ StartTest();
+
+ //
+ // TEST START
+ //
+
+
+ // === Send a valid USSD request ===
+
+ // Encode and fill a TGsmUssdMessageData buffer with "*" characters.
+ // $CTSYProblem This test cannot be run since LTSY crash when the message size is 50 character or more
+ CHECK_TRUE_L(EFalse,_L("$CTSYProblem This test cannot be run since LTSY crash when the message size is 50 character or more"));
+ TBuf8<200> eightBitStr = _L8("");
+ for(TInt i=0;i<181;++i)
+ {
+ eightBitStr.Append('*');
+ }
+ eightBitStr.Append('#');
+
+ // Send a USSD message to the network with RMobileUssdMessaging::SendMessage with aMsgData=encoded TGsmUssdMessageData and aMsgAttributes.iDcs=0x00 (No class, uncompressed),aMsgAttributes.iFlags=RMobileUssdMessaging::KUssdMessageType | RMobileUssdMessaging::KUssdDataFormat | RMobileUssdMessaging::KUssdMessageDcs , aMsgAttributes.iFormat=RMobileUssdMessaging::EFormatPackedString , aMsgAttributes.iType=RMobileUssdMessaging::EUssdMORequest
+ // === Receive network RELEASE COMPLETE message ===
+ // Simulated network sends a release complete
+ // Check RMobileUssdMessaging::NotifyNetworkRelease completes with aMsgData with length > 0
+ ASSERT_EQUALS(SendSimulateCompleteCheckCompleteL(mobileUssdMessaging,eightBitStr,RMobileUssdMessaging::EUssdMORequest),KErrNone,_L("CCTSYIntegrationTestUssdMessagingBase::SendSimulateCompleteCheckCompleteL returned an error"));
+
+ //
+ // TEST END
+ //
+
+ StartCleanup();
+
+
+ return TestStepResult();
+ }
+
+TPtrC CCTSYIntegrationTestUssdMessaging0005::GetTestStepName()
+/**
+ * @return The test step name.
+ */
+ {
+ return _L("CCTSYIntegrationTestUssdMessaging0005");
+ }
+
+
+
+CCTSYIntegrationTestUssdMessaging0006::CCTSYIntegrationTestUssdMessaging0006(CEtelSessionMgr& aEtelSessionMgr)
+ : CCTSYIntegrationTestUssdMessagingBase(aEtelSessionMgr)
+/**
+ * Constructor.
+ */
+ {
+ SetTestStepName(CCTSYIntegrationTestUssdMessaging0006::GetTestStepName());
+ }
+
+CCTSYIntegrationTestUssdMessaging0006::~CCTSYIntegrationTestUssdMessaging0006()
+/**
+ * Destructor.
+ */
+ {
+ }
+
+TVerdict CCTSYIntegrationTestUssdMessaging0006::doTestStepL()
+/**
+ * @SYMTestCaseID BA-CTSY-INT-USSDM-0006
+ * @SYMFssID BA/CTSY/USSDM-0006
+ * @SYMTestCaseDesc Receive a USSD notify from network
+ * @SYMTestPriority High
+ * @SYMTestActions RMobileUssdMessaging::NotifyNetworkRelease, RMobileUssdMessaging::SendMessage
+ * @SYMTestExpectedResults Pass - Network USSD message received correctly.
+ * @SYMTestType CIT
+ * @SYMTestCaseDependencies simulated/manual
+ *
+ * Reason for test: Verify message sent and reply received.
+ *
+ * @return - TVerdict code
+ */
+ {
+
+ //
+ // SET UP
+ //
+
+
+ // Check RMobileUssdMessaging::GetCaps returns iUssdFormat of KCapsPackedString
+ // Check RMobileUssdMessaging::GetCaps returns iUssdTypes of KCapsMOUssd | KCapsMTUssd
+ RMobileUssdMessaging& mobileUssdMessaging = iEtelSessionMgr.GetUssdMessagingL(KMainServer, KMainPhone,KMainUssdMessaging);
+ RMobileUssdMessaging::TMobileUssdCapsV1 ussdCaps;
+ RMobileUssdMessaging::TMobileUssdCapsV1Pckg ussdCapsPk(ussdCaps);
+ CHECK_EQUALS_L(mobileUssdMessaging.GetCaps(ussdCapsPk), KErrNone,
+ _L("RMobileUssdMessaging::GetCaps returned error"));
+ CHECK_EQUALS_L(ussdCaps.iUssdFormat, (TUint32)RMobileUssdMessaging::KCapsPackedString,
+ _L("RMobileUssdMessaging::GetCaps returned incorrect iUssdFormat"));
+ TUint32 expectedCaps = RMobileUssdMessaging::KCapsMOUssd | RMobileUssdMessaging::KCapsMTUssd;
+ CHECK_BITS_SET_L(ussdCaps.iUssdTypes, expectedCaps, KNoUnwantedBits, _L("RMobileUssdMessaging::GetCaps returned incorrect iUssdTypes"));
+
+
+ //
+ // SET UP END
+ //
+
+ StartTest();
+
+ //
+ // TEST START
+ //
+
+
+ // === Part 1 - Network sends a USSD notify then release complete when acknowledgement received from phone ===
+
+ // Simulated network sends a USSD notify message (message type EUssdMTNotify).
+
+ // === Receive MT notify from network ===
+
+ // Check RMobileUssdMessaging::ReceiveMessage completes with aMsgData with length > 0
+ // Check RMobileUssdMessaging::ReceiveMessage completes with aMsgAttributes.iType=RMobileUssdMessaging::EUssdMTNotify
+ ASSERT_EQUALS(SimulateNotifyCheckReceiveL(mobileUssdMessaging,RMobileUssdMessaging::EUssdMTNotify),KErrNone,_L("CCTSYIntegrationTestUssdMessagingBase::SimulateNotifyCheckReceiveL returned an error"));
+
+ // === Reply to network with MO acknowledgement ===
+
+ // Send a USSD message to the network with RMobileUssdMessaging::SendMessage with aMsgData=empty TGsmUssdMessageData and aMsgAttributes.iDcs=0x00 (No class, uncompressed),aMsgAttributes.iFlags=RMobileUssdMessaging::KUssdMessageType | RMobileUssdMessaging::KUssdDataFormat | RMobileUssdMessaging::KUssdMessageDcs , aMsgAttributes.iFormat=RMobileUssdMessaging::EFormatPackedString , aMsgAttributes.iType=RMobileUssdMessaging::EUssdMOAcknowledgement
+
+ // === Receive network RELEASE COMPLETE message ===
+ // Simulated network sends a release complete
+ // Check RMobileUssdMessaging::NotifyNetworkRelease completes with aMsgData with length > 0
+ TBuf8<100> eightBitStr = _L8("");
+ ASSERT_EQUALS(SendSimulateCompleteCheckCompleteL(mobileUssdMessaging,eightBitStr,RMobileUssdMessaging::EUssdMOAcknowledgement),KErrNone,_L("CCTSYIntegrationTestUssdMessagingBase::SendSimulateCompleteCheckCompleteL returned an error"));
+
+ // === Part 2 - Network sends a USSD notify then release complete when acknowledgement received from phone ===
+
+ // Simulated network sends a USSD notify message (message type EUssdMTNotify).
+
+ // === Receive MT notify from network ===
+
+ // Check RMobileUssdMessaging::ReceiveMessage completes with aMsgData with length > 0
+ // Check RMobileUssdMessaging::ReceiveMessage completes with aMsgAttributes.iType=RMobileUssdMessaging::EUssdMTNotify
+ ASSERT_EQUALS(SimulateNotifyCheckReceiveL(mobileUssdMessaging,RMobileUssdMessaging::EUssdMTNotify),KErrNone,_L("CCTSYIntegrationTestUssdMessagingBase::SimulateNotifyCheckReceiveL returned an error"));
+
+ // === Reply to network with MO acknowledgement ===
+
+ // Send a USSD message to the network with RMobileUssdMessaging::SendMessage with aMsgData=empty TGsmUssdMessageData and aMsgAttributes.iDcs=0x00 (No class, uncompressed),aMsgAttributes.iFlags=RMobileUssdMessaging::KUssdMessageType | RMobileUssdMessaging::KUssdDataFormat | RMobileUssdMessaging::KUssdMessageDcs , aMsgAttributes.iFormat=RMobileUssdMessaging::EFormatPackedString , aMsgAttributes.iType=RMobileUssdMessaging::EUssdMOAcknowledgement
+
+ // Simulated network sends a USSD notify message (message type EUssdMTNotify).
+
+ // === Receive MT notify from network ===
+
+ // Check RMobileUssdMessaging::ReceiveMessage completes with aMsgData with length > 0
+ // Check RMobileUssdMessaging::ReceiveMessage completes with aMsgAttributes.iType=RMobileUssdMessaging::EUssdMTNotify
+ ASSERT_EQUALS(SendSimulateNotifyCheckCompleteL(mobileUssdMessaging,eightBitStr,RMobileUssdMessaging::EUssdMOAcknowledgement,RMobileUssdMessaging::EUssdMTNotify),KErrNone,_L("CCTSYIntegrationTestUssdMessagingBase::SendSimulateNotifyCheckCompleteL returned an error"));
+
+ // === Reply to network with MO acknowledgement ===
+
+ // Send a USSD message to the network with RMobileUssdMessaging::SendMessage with aMsgData=empty TGsmUssdMessageData and aMsgAttributes.iDcs=0x00 (No class, uncompressed),aMsgAttributes.iFlags=RMobileUssdMessaging::KUssdMessageType | RMobileUssdMessaging::KUssdDataFormat | RMobileUssdMessaging::KUssdMessageDcs , aMsgAttributes.iFormat=RMobileUssdMessaging::EFormatPackedString , aMsgAttributes.iType=RMobileUssdMessaging::EUssdMOAcknowledgement
+
+ // === Receive network RELEASE COMPLETE message ===
+ // Simulated network sends a release complete
+ // Check RMobileUssdMessaging::NotifyNetworkRelease completes with aMsgData with length > 0
+ ASSERT_EQUALS(SendSimulateCompleteCheckCompleteL(mobileUssdMessaging,eightBitStr,RMobileUssdMessaging::RMobileUssdMessaging::EUssdMOAcknowledgement),KErrNone,_L("CCTSYIntegrationTestUssdMessagingBase::SendSimulateCompleteCheckCompleteL returned an error"));
+
+
+ //
+ // TEST END
+ //
+
+ StartCleanup();
+
+
+ return TestStepResult();
+ }
+
+TPtrC CCTSYIntegrationTestUssdMessaging0006::GetTestStepName()
+/**
+ * @return The test step name.
+ */
+ {
+ return _L("CCTSYIntegrationTestUssdMessaging0006");
+ }
+
+
+
+CCTSYIntegrationTestUssdMessaging0007::CCTSYIntegrationTestUssdMessaging0007(CEtelSessionMgr& aEtelSessionMgr)
+ : CCTSYIntegrationTestUssdMessagingBase(aEtelSessionMgr)
+/**
+ * Constructor.
+ */
+ {
+ SetTestStepName(CCTSYIntegrationTestUssdMessaging0007::GetTestStepName());
+ }
+
+CCTSYIntegrationTestUssdMessaging0007::~CCTSYIntegrationTestUssdMessaging0007()
+/**
+ * Destructor.
+ */
+ {
+ }
+
+TVerdict CCTSYIntegrationTestUssdMessaging0007::doTestStepL()
+/**
+ * @SYMTestCaseID BA-CTSY-INT-USSDM-0007
+ * @SYMFssID BA/CTSY/USSDM-0007
+ * @SYMTestCaseDesc Receive a USSD notify from network of 182 characters
+ * @SYMTestPriority High
+ * @SYMTestActions RMobileUssdMessaging::SendRelease, RMobileUssdMessaging::SendMessage
+ * @SYMTestExpectedResults Pass - Network USSD message received correctly.
+ * @SYMTestType CIT
+ * @SYMTestCaseDependencies simulated/manual
+ *
+ * Reason for test: Verify message sent and reply received.
+ *
+ * @return - TVerdict code
+ */
+ {
+
+ //
+ // SET UP
+ //
+
+
+ // Check RMobileUssdMessaging::GetCaps returns iUssdFormat of KCapsPackedString
+ // Check RMobileUssdMessaging::GetCaps returns iUssdTypes of KCapsMOUssd | KCapsMTUssd
+ RMobileUssdMessaging& mobileUssdMessaging = iEtelSessionMgr.GetUssdMessagingL(KMainServer, KMainPhone,KMainUssdMessaging);
+ RMobileUssdMessaging::TMobileUssdCapsV1 ussdCaps;
+ RMobileUssdMessaging::TMobileUssdCapsV1Pckg ussdCapsPk(ussdCaps);
+ CHECK_EQUALS_L(mobileUssdMessaging.GetCaps(ussdCapsPk), KErrNone,
+ _L("RMobileUssdMessaging::GetCaps returned error"));
+ CHECK_EQUALS_L(ussdCaps.iUssdFormat, (TUint32)RMobileUssdMessaging::KCapsPackedString,
+ _L("RMobileUssdMessaging::GetCaps returned incorrect iUssdFormat"));
+ TUint32 expectedCaps = RMobileUssdMessaging::KCapsMOUssd | RMobileUssdMessaging::KCapsMTUssd;
+ CHECK_BITS_SET_L(ussdCaps.iUssdTypes, expectedCaps, KNoUnwantedBits, _L("RMobileUssdMessaging::GetCaps returned incorrect iUssdTypes"));
+
+
+
+ //
+ // SET UP END
+ //
+
+ StartTest();
+
+ //
+ // TEST START
+ //
+
+ // Simulated network sends a USSD notify message (message type EUssdMTNotify) of 182 characters.
+
+ // === Receive MT notify from network ===
+
+ // Check RMobileUssdMessaging::ReceiveMessage completes with aMsgData with length > 0
+ // Check RMobileUssdMessaging::ReceiveMessage completes with aMsgAttributes.iType=RMobileUssdMessaging::EUssdMTNotify
+ ASSERT_EQUALS(SimulateNotifyCheckReceiveL(mobileUssdMessaging,RMobileUssdMessaging::EUssdMTNotify,182),KErrNone,_L("CCTSYIntegrationTestUssdMessagingBase::SimulateNotifyCheckReceiveL returned an error"));
+
+ // === Reply to network with MO acknowledgement ===
+
+ // Send a USSD message to the network with RMobileUssdMessaging::SendMessage with aMsgData=empty TGsmUssdMessageData and aMsgAttributes.iDcs=0x00 (No class, uncompressed),aMsgAttributes.iFlags=RMobileUssdMessaging::KUssdMessageType | RMobileUssdMessaging::KUssdDataFormat | RMobileUssdMessaging::KUssdMessageDcs , aMsgAttributes.iFormat=RMobileUssdMessaging::EFormatPackedString , aMsgAttributes.iType=RMobileUssdMessaging::EUssdMOAcknowledgement
+ TExtEtelRequestStatus sendMsgStatus(mobileUssdMessaging,EMobileUssdMessagingSendMessage);
+ CleanupStack::PushL(sendMsgStatus);
+ RMobileUssdMessaging::TGsmUssdMessageData sendUssdMsg = _L8("");
+ RMobileUssdMessaging::TMobileUssdAttributesV1 sendAttributes;
+ sendAttributes.iDcs=0x00;
+ sendAttributes.iFlags=RMobileUssdMessaging::KUssdMessageType | RMobileUssdMessaging::KUssdDataFormat | RMobileUssdMessaging::KUssdMessageDcs;
+ sendAttributes.iFormat=RMobileUssdMessaging::EFormatPackedString;
+ sendAttributes.iType=RMobileUssdMessaging::EUssdMOAcknowledgement;
+ RMobileUssdMessaging::TMobileUssdAttributesV1Pckg sendAttributesPckg(sendAttributes);
+ mobileUssdMessaging.SendMessage(sendMsgStatus, sendUssdMsg, sendAttributesPckg);
+ ASSERT_EQUALS(WaitForRequestWithTimeOut(sendMsgStatus, ETimeLong),
+ KErrNone, _L("RMobileUssdMessaging::SendMessage did not complete."));
+ ASSERT_EQUALS(sendMsgStatus.Int(),KErrNone,
+ _L("RMobileUssdMessaging::SendMessage completed with incorrect error"));
+
+ // === Send a release complete to the network ===
+
+ // Check RMobileUssdMessaging::SendRelease completes with KErrNone
+ TExtEtelRequestStatus sendReleaseStatus(mobileUssdMessaging,EMobileUssdMessagingSendRelease);
+ CleanupStack::PushL(sendReleaseStatus);
+ RMobilePhone::TMobilePhoneSendSSRequestV3 requestInfo;
+ RMobilePhone::TMobilePhoneSendSSRequestV3Pckg requestInfoPckg(requestInfo);
+ mobileUssdMessaging.SendRelease(sendReleaseStatus,requestInfoPckg);
+ ASSERT_EQUALS(WaitForRequestWithTimeOut(sendReleaseStatus, ETimeLong),
+ KErrNone, _L("RMobileUssdMessaging::SendRelease did not complete."));
+ ASSERT_EQUALS(sendReleaseStatus.Int(),KErrNone,
+ _L("RMobileUssdMessaging::SendRelease completed with incorrect error"));
+
+
+ //
+ // TEST END
+ //
+
+ StartCleanup();
+
+ // Pop:
+ // sendReleaseStatus
+ // sendMsgStatus
+ CleanupStack::PopAndDestroy(2,&sendMsgStatus);
+
+ return TestStepResult();
+ }
+
+TPtrC CCTSYIntegrationTestUssdMessaging0007::GetTestStepName()
+/**
+ * @return The test step name.
+ */
+ {
+ return _L("CCTSYIntegrationTestUssdMessaging0007");
+ }
+
+
+
+CCTSYIntegrationTestUssdMessaging0008::CCTSYIntegrationTestUssdMessaging0008(CEtelSessionMgr& aEtelSessionMgr)
+ : CCTSYIntegrationTestUssdMessagingBase(aEtelSessionMgr)
+/**
+ * Constructor.
+ */
+ {
+ SetTestStepName(CCTSYIntegrationTestUssdMessaging0008::GetTestStepName());
+ }
+
+CCTSYIntegrationTestUssdMessaging0008::~CCTSYIntegrationTestUssdMessaging0008()
+/**
+ * Destructor.
+ */
+ {
+ }
+
+TVerdict CCTSYIntegrationTestUssdMessaging0008::doTestStepL()
+/**
+ * @SYMTestCaseID BA-CTSY-INT-USSDM-0008
+ * @SYMFssID BA/CTSY/USSDM-0008
+ * @SYMTestCaseDesc Receive a USSD request from the network.
+ * @SYMTestPriority High
+ * @SYMTestActions RMobileUssdMessaging::NotifyNetworkRelease, RMobileUssdMessaging::SendMessage
+ * @SYMTestExpectedResults Pass - Network USSD message received correctly.
+ * @SYMTestType CIT
+ * @SYMTestCaseDependencies simulated/manual
+ *
+ * Reason for test: Verify messages received and replies can be sent.
+ *
+ * @return - TVerdict code
+ */
+ {
+
+ //
+ // SET UP
+ //
+
+
+ // Check RMobileUssdMessaging::GetCaps returns iUssdFormat of KCapsPackedString
+ // Check RMobileUssdMessaging::GetCaps returns iUssdTypes of KCapsMOUssd | KCapsMTUssd
+ RMobileUssdMessaging& mobileUssdMessaging = iEtelSessionMgr.GetUssdMessagingL(KMainServer, KMainPhone,KMainUssdMessaging);
+ RMobileUssdMessaging::TMobileUssdCapsV1 ussdCaps;
+ RMobileUssdMessaging::TMobileUssdCapsV1Pckg ussdCapsPk(ussdCaps);
+ CHECK_EQUALS_L(mobileUssdMessaging.GetCaps(ussdCapsPk), KErrNone,
+ _L("RMobileUssdMessaging::GetCaps returned error"));
+ CHECK_EQUALS_L(ussdCaps.iUssdFormat, (TUint32)RMobileUssdMessaging::KCapsPackedString,
+ _L("RMobileUssdMessaging::GetCaps returned incorrect iUssdFormat"));
+ TUint32 expectedCaps = RMobileUssdMessaging::KCapsMOUssd | RMobileUssdMessaging::KCapsMTUssd;
+ CHECK_BITS_SET_L(ussdCaps.iUssdTypes, expectedCaps, KNoUnwantedBits, _L("RMobileUssdMessaging::GetCaps returned incorrect iUssdTypes"));
+
+
+ //
+ // SET UP END
+ //
+
+ StartTest();
+ //
+ // TEST START
+ //
+
+
+ // === Part 1 - network sends USSD request, phone replies and network releases ===
+
+ // Simulated network sends a USSD notify message (message type EUssdMTRequest)
+
+ // === Receive MT request from network ===
+
+ // Check RMobileUssdMessaging::ReceiveMessage completes with aMsgData with length > 0
+ // Check RMobileUssdMessaging::ReceiveMessage completes with aMsgAttributes.iType=RMobileUssdMessaging::EUssdMTRequest
+ ASSERT_EQUALS(SimulateNotifyCheckReceiveL(mobileUssdMessaging,RMobileUssdMessaging::EUssdMTRequest),KErrNone,_L("CCTSYIntegrationTestUssdMessagingBase::SimulateNotifyCheckReceiveL returned an error"));
+
+ // === Send a USSD reply ===
+
+ // Send a USSD message to the network with RMobileUssdMessaging::SendMessage with aMsgData=a valid encoded string and aMsgAttributes.iDcs=0x00 (No class, uncompressed),aMsgAttributes.iFlags=RMobileUssdMessaging::KUssdMessageType | RMobileUssdMessaging::KUssdDataFormat | RMobileUssdMessaging::KUssdMessageDcs , aMsgAttributes.iFormat=RMobileUssdMessaging::EFormatPackedString , aMsgAttributes.iType=RMobileUssdMessaging::EUssdMTReply
+ TBuf8<100> eightBitStr = _L8("*#30#");
+
+ // === Receive network RELEASE COMPLETE message ===
+ // Simulated network sends a release complete
+ // Check RMobileUssdMessaging::NotifyNetworkRelease completes with aMsgData with length > 0
+ ERR_PRINTF2(_L("<font color=Orange>$CTSYKnownFailure: defect id2 = %d</font>"), 10035);
+ CHECK_TRUE_L(EFalse, _L("This test has been made to leave intentially - ***Send message fail, and ctsy cancel it later****"));
+ ASSERT_EQUALS(SendSimulateCompleteCheckCompleteL(mobileUssdMessaging,eightBitStr,RMobileUssdMessaging::EUssdMTReply),KErrNone,_L("CCTSYIntegrationTestUssdMessagingBase::SendSimulateCompleteCheckCompleteL returned an error"));
+
+ // === Part 2 - network sends USSD request, phone replies, network sends another request and phone replies again, then network releases ===
+
+ // Simulated network sends a USSD notify message (message type EUssdMTRequest)
+
+ // === Receive MT request from network ===
+
+ // Check RMobileUssdMessaging::ReceiveMessage completes with aMsgData with length > 0
+ // Check RMobileUssdMessaging::ReceiveMessage completes with aMsgAttributes.iType=RMobileUssdMessaging::EUssdMTRequest
+ ASSERT_EQUALS(SimulateNotifyCheckReceiveL(mobileUssdMessaging,RMobileUssdMessaging::EUssdMTRequest),KErrNone,_L("CCTSYIntegrationTestUssdMessagingBase::SimulateNotifyCheckReceiveL returned an error"));
+
+ // === Send a USSD reply ===
+
+ // Send a USSD message to the network with RMobileUssdMessaging::SendMessage with aMsgData=a valid encoded string and aMsgAttributes.iDcs=0x00 (No class, uncompressed),aMsgAttributes.iFlags=RMobileUssdMessaging::KUssdMessageType | RMobileUssdMessaging::KUssdDataFormat | RMobileUssdMessaging::KUssdMessageDcs , aMsgAttributes.iFormat=RMobileUssdMessaging::EFormatPackedString , aMsgAttributes.iType=RMobileUssdMessaging::EUssdMTReply
+ eightBitStr = _L8("*#30#");
+
+ // Simulated network sends a USSD notify message (message type EUssdMTRequest)
+
+ // === Receive MT request from network ===
+
+ // Check RMobileUssdMessaging::ReceiveMessage completes with aMsgData with length > 0
+ // Check RMobileUssdMessaging::ReceiveMessage completes with aMsgAttributes.iType=RMobileUssdMessaging::EUssdMTRequest
+ ASSERT_EQUALS(SendSimulateNotifyCheckCompleteL(mobileUssdMessaging,eightBitStr,RMobileUssdMessaging::EUssdMTReply ,RMobileUssdMessaging::EUssdMTRequest),KErrNone,_L("CCTSYIntegrationTestUssdMessagingBase::SendSimulateNotifyCheckCompleteL returned an error"));
+
+ // === Send a USSD reply ===
+
+ // Send a USSD message to the network with RMobileUssdMessaging::SendMessage with aMsgData=a valid encoded string and aMsgAttributes.iDcs=0x00 (No class, uncompressed),aMsgAttributes.iFlags=RMobileUssdMessaging::KUssdMessageType | RMobileUssdMessaging::KUssdDataFormat | RMobileUssdMessaging::KUssdMessageDcs , aMsgAttributes.iFormat=RMobileUssdMessaging::EFormatPackedString , aMsgAttributes.iType=RMobileUssdMessaging::EUssdMTReply
+ eightBitStr = _L8("*#30#");
+
+ // === Receive network RELEASE COMPLETE message ===
+ // Simulated network sends a release complete
+ // Check RMobileUssdMessaging::NotifyNetworkRelease completes with aMsgData with length > 0
+ ASSERT_EQUALS(SendSimulateCompleteCheckCompleteL(mobileUssdMessaging,eightBitStr,RMobileUssdMessaging::EUssdMTReply ),KErrNone,_L("CCTSYIntegrationTestUssdMessagingBase::SendSimulateCompleteCheckCompleteL returned an error"));
+
+
+ //
+ // TEST END
+ //
+
+ StartCleanup();
+
+ return TestStepResult();
+ }
+
+TPtrC CCTSYIntegrationTestUssdMessaging0008::GetTestStepName()
+/**
+ * @return The test step name.
+ */
+ {
+ return _L("CCTSYIntegrationTestUssdMessaging0008");
+ }
+
+
+
+CCTSYIntegrationTestUssdMessaging0009::CCTSYIntegrationTestUssdMessaging0009(CEtelSessionMgr& aEtelSessionMgr)
+ : CCTSYIntegrationTestUssdMessagingBase(aEtelSessionMgr)
+/**
+ * Constructor.
+ */
+ {
+ SetTestStepName(CCTSYIntegrationTestUssdMessaging0009::GetTestStepName());
+ }
+
+CCTSYIntegrationTestUssdMessaging0009::~CCTSYIntegrationTestUssdMessaging0009()
+/**
+ * Destructor.
+ */
+ {
+ }
+
+TVerdict CCTSYIntegrationTestUssdMessaging0009::doTestStepL()
+/**
+ * @SYMTestCaseID BA-CTSY-INT-USSDM-0009
+ * @SYMFssID BA/CTSY/USSDM-0009
+ * @SYMTestCaseDesc Receive a USSD request from the network of 182 characters long.
+ * @SYMTestPriority High
+ * @SYMTestActions RMobileUssdMessaging::NotifyNetworkRelease, RMobileUssdMessaging::SendMessage
+ * @SYMTestExpectedResults Pass - Network USSD message received correctly.
+ * @SYMTestType CIT
+ * @SYMTestCaseDependencies simulated/manual
+ *
+ * Reason for test: Verify message received.
+ *
+ * @return - TVerdict code
+ */
+ {
+
+ //
+ // SET UP
+ //
+
+
+ // Check RMobileUssdMessaging::GetCaps returns iUssdFormat of KCapsPackedString
+ // Check RMobileUssdMessaging::GetCaps returns iUssdTypes of KCapsMOUssd | KCapsMTUssd
+ RMobileUssdMessaging& mobileUssdMessaging = iEtelSessionMgr.GetUssdMessagingL(KMainServer, KMainPhone,KMainUssdMessaging);
+ RMobileUssdMessaging::TMobileUssdCapsV1 ussdCaps;
+ RMobileUssdMessaging::TMobileUssdCapsV1Pckg ussdCapsPk(ussdCaps);
+ CHECK_EQUALS_L(mobileUssdMessaging.GetCaps(ussdCapsPk), KErrNone,
+ _L("RMobileUssdMessaging::GetCaps returned error"));
+ CHECK_EQUALS_L(ussdCaps.iUssdFormat, (TUint32)RMobileUssdMessaging::KCapsPackedString,
+ _L("RMobileUssdMessaging::GetCaps returned incorrect iUssdFormat"));
+ TUint32 expectedCaps = RMobileUssdMessaging::KCapsMOUssd | RMobileUssdMessaging::KCapsMTUssd;
+ CHECK_BITS_SET_L(ussdCaps.iUssdTypes, expectedCaps, KNoUnwantedBits, _L("RMobileUssdMessaging::GetCaps returned incorrect iUssdTypes"));
+
+
+
+ //
+ // SET UP END
+ //
+
+ StartTest();
+
+ //
+ // TEST START
+ //
+
+ // Simulated network sends a USSD notify message (message type EUssdMTRequest) of 182 characters
+
+ // === Receive MT request from network ===
+
+ // Check RMobileUssdMessaging::ReceiveMessage completes with aMsgData with length > 0
+ // Check RMobileUssdMessaging::ReceiveMessage completes with aMsgAttributes.iType=RMobileUssdMessaging::EUssdMTRequest
+ ASSERT_EQUALS(SimulateNotifyCheckReceiveL(mobileUssdMessaging,RMobileUssdMessaging::EUssdMTRequest,182),KErrNone,_L("CCTSYIntegrationTestUssdMessagingBase::SimulateNotifyCheckReceiveL returned an error"));
+
+
+ // === Send a USSD reply ===
+
+ // Send a USSD message to the network with RMobileUssdMessaging::SendMessage with aMsgData=a valid encoded string and aMsgAttributes.iDcs=0x00 (No class, uncompressed),aMsgAttributes.iFlags=RMobileUssdMessaging::KUssdMessageType | RMobileUssdMessaging::KUssdDataFormat | RMobileUssdMessaging::KUssdMessageDcs , aMsgAttributes.iFormat=RMobileUssdMessaging::EFormatPackedString , aMsgAttributes.iType=RMobileUssdMessaging::EUssdMTReply
+ TBuf8<100> eightBitStr = _L8("*#30#");
+
+ // === Receive network RELEASE COMPLETE message ===
+ // Simulated network sends a release complete
+ // Check RMobileUssdMessaging::NotifyNetworkRelease completes with aMsgData with length > 0
+ ERR_PRINTF2(_L("<font color=Orange>$CTSYKnownFailure: defect id2 = %d</font>"), 10035);
+ CHECK_TRUE_L(EFalse, _L("This test has been made to leave intentially - ***Send message fail, and ctsy cancel it later****"));
+ ASSERT_EQUALS(SendSimulateCompleteCheckCompleteL(mobileUssdMessaging,eightBitStr,RMobileUssdMessaging::EUssdMTReply),KErrNone,_L("CCTSYIntegrationTestUssdMessagingBase::SendSimulateCompleteCheckCompleteL returned an error"));
+
+ //
+ // TEST END
+ //
+
+ StartCleanup();
+
+
+ return TestStepResult();
+ }
+
+TPtrC CCTSYIntegrationTestUssdMessaging0009::GetTestStepName()
+/**
+ * @return The test step name.
+ */
+ {
+ return _L("CCTSYIntegrationTestUssdMessaging0009");
+ }
+
+
+
+CCTSYIntegrationTestUssdMessaging0010::CCTSYIntegrationTestUssdMessaging0010(CEtelSessionMgr& aEtelSessionMgr)
+ : CCTSYIntegrationTestUssdMessagingBase(aEtelSessionMgr)
+/**
+ * Constructor.
+ */
+ {
+ SetTestStepName(CCTSYIntegrationTestUssdMessaging0010::GetTestStepName());
+ }
+
+CCTSYIntegrationTestUssdMessaging0010::~CCTSYIntegrationTestUssdMessaging0010()
+/**
+ * Destructor.
+ */
+ {
+ }
+
+TVerdict CCTSYIntegrationTestUssdMessaging0010::doTestStepL()
+/**
+ * @SYMTestCaseID BA-CTSY-INT-USSDM-0010
+ * @SYMFssID BA/CTSY/USSDM-0010
+ * @SYMTestCaseDesc Terminate a USSD exchange.
+ * @SYMTestPriority High
+ * @SYMTestActions RMobileUssdMessaging::ReceiveMessage, RMobileUssdMessaging::SendRelease
+ * @SYMTestExpectedResults Pass - KErrNotSupported when sending USSD to unsupported network
+ * @SYMTestType CIT
+ * @SYMTestCaseDependencies live/automatic
+ *
+ * Reason for test: Verify sending of release complete message is successful.
+ *
+ * @return - TVerdict code
+ */
+ {
+
+ //
+ // SET UP
+ //
+
+
+ // Check RMobileUssdMessaging::GetCaps returns iUssdFormat of KCapsPackedString
+ // Check RMobileUssdMessaging::GetCaps returns iUssdTypes of KCapsMOUssd | KCapsMTUssd
+ RMobileUssdMessaging& mobileUssdMessaging = iEtelSessionMgr.GetUssdMessagingL(KMainServer, KMainPhone,KMainUssdMessaging);
+ RMobileUssdMessaging::TMobileUssdCapsV1 ussdCaps;
+ RMobileUssdMessaging::TMobileUssdCapsV1Pckg ussdCapsPk(ussdCaps);
+ CHECK_EQUALS_L(mobileUssdMessaging.GetCaps(ussdCapsPk), KErrNone,
+ _L("RMobileUssdMessaging::GetCaps returned error"));
+ CHECK_EQUALS_L(ussdCaps.iUssdFormat, (TUint32)RMobileUssdMessaging::KCapsPackedString,
+ _L("RMobileUssdMessaging::GetCaps returned incorrect iUssdFormat"));
+ TUint32 expectedCaps = RMobileUssdMessaging::KCapsMOUssd | RMobileUssdMessaging::KCapsMTUssd;
+ CHECK_BITS_SET_L(ussdCaps.iUssdTypes, expectedCaps, KNoUnwantedBits, _L("RMobileUssdMessaging::GetCaps returned incorrect iUssdTypes"));
+
+ RMobilePhone& mobilePhone = iEtelSessionMgr.GetPhoneL(KMainServer, KMainPhone);
+ TInt ret = iNetworkTsyTestHelper.WaitForRegisteredOnHomeNetworkL(mobilePhone);
+ CHECK_EQUALS_L(ret, KErrNone,
+ _L("RMobilePhone::NotifyNetworkRegistrationStatusChange network registration failed"));
+
+
+ //
+ // SET UP END
+ //
+
+ StartTest();
+
+ //
+ // TEST START
+ //
+
+
+ // === Send a valid USSD request ===
+
+ // Encode a the USSD request "*#30#" (Caller ID presentation) into a TGsmUssdMessageData buffer.
+ TBuf8<100> eightBitStr = _L8("*#30#");
+ TBuf8<100> sevenBitStr;
+ iSmsStoreTsyTestHelper.GsmLibSmsPackMessage( sevenBitStr, eightBitStr, eightBitStr.Length());
+ RMobileUssdMessaging::TGsmUssdMessageData sendUssdMsg = sevenBitStr;
+
+ // start listening for incoming messages
+ TExtEtelRequestStatus recvMsgStatus(mobileUssdMessaging,EMobileUssdMessagingReceiveMessage);
+ CleanupStack::PushL(recvMsgStatus);
+ RMobileUssdMessaging::TGsmUssdMessageData recvUssdMsg;
+ RMobileUssdMessaging::TMobileUssdAttributesV1 recvAttributes;
+ RMobileUssdMessaging::TMobileUssdAttributesV1Pckg recvAttributesPckg(recvAttributes);
+ mobileUssdMessaging.ReceiveMessage(recvMsgStatus,recvUssdMsg,recvAttributesPckg);
+
+ // Send a USSD message to the network with RMobileUssdMessaging::SendMessage with aMsgData=encoded TGsmUssdMessageData and aMsgAttributes.iDcs=0x00 (No class, uncompressed),aMsgAttributes.iFlags=RMobileUssdMessaging::KUssdMessageType | RMobileUssdMessaging::KUssdDataFormat | RMobileUssdMessaging::KUssdMessageDcs , aMsgAttributes.iFormat=RMobileUssdMessaging::EFormatPackedString , aMsgAttributes.iType=RMobileUssdMessaging::EUssdMORequest
+ TExtEtelRequestStatus sendMsgStatus(mobileUssdMessaging,EMobileUssdMessagingSendMessage);
+ CleanupStack::PushL(sendMsgStatus);
+ RMobileUssdMessaging::TMobileUssdAttributesV1 sendAttributes;
+ sendAttributes.iDcs=0x00;
+ sendAttributes.iFlags=RMobileUssdMessaging::KUssdMessageType | RMobileUssdMessaging::KUssdDataFormat | RMobileUssdMessaging::KUssdMessageDcs;
+ sendAttributes.iFormat=RMobileUssdMessaging::RMobileUssdMessaging::EFormatPackedString;
+ sendAttributes.iType=RMobileUssdMessaging::EUssdMORequest;
+ RMobileUssdMessaging::TMobileUssdAttributesV1Pckg sendAttributesPckg(sendAttributes);
+ mobileUssdMessaging.SendMessage(sendMsgStatus, sendUssdMsg, sendAttributesPckg);
+ ASSERT_EQUALS(WaitForRequestWithTimeOut(sendMsgStatus, ETimeLong),
+ KErrNone, _L("RMobileUssdMessaging::SendMessage did not complete."));
+ ASSERT_EQUALS(sendMsgStatus.Int(),KErrNone,
+ _L("RMobileUssdMessaging::SendMessage completed with incorrect error"));
+
+ // === Receive network response ===
+
+ // Check RMobileUssdMessaging::ReceiveMessage completes with aMsgData with length > 0
+ // Check RMobileUssdMessaging::ReceiveMessage completes with aMsgAttributes.iType=RMobileUssdMessaging::EUssdMTReply
+ ASSERT_EQUALS(WaitForRequestWithTimeOut(recvMsgStatus, ETimeLong),
+ KErrNone, _L("RMobileUssdMessaging::ReceiveMessage did not complete."));
+ ASSERT_EQUALS(recvMsgStatus.Int(),KErrNone,
+ _L("RMobileUssdMessaging::ReceiveMessage completed with incorrect error"));
+ ASSERT_TRUE(recvUssdMsg.Length() > 0,
+ _L("RMobileUssdMessaging::ReceiveMessage completed with msglength <=0"));
+ ASSERT_EQUALS(recvAttributes.iType,RMobileUssdMessaging::EUssdMTReply,
+ _L("RMobileUssdMessaging::ReceiveMessage completed with incorrect USSD message type"));
+
+ // === Send release complete ===
+
+ // Check RMobileUssdMessaging::SendRelease completes with KErrNone
+ TExtEtelRequestStatus sendReleaseStatus(mobileUssdMessaging,EMobileUssdMessagingSendRelease);
+ CleanupStack::PushL(sendReleaseStatus);
+ RMobilePhone::TMobilePhoneSendSSRequestV3 requestInfo;
+ RMobilePhone::TMobilePhoneSendSSRequestV3Pckg requestInfoPckg(requestInfo);
+ mobileUssdMessaging.SendRelease(sendReleaseStatus,requestInfoPckg);
+ ASSERT_EQUALS(WaitForRequestWithTimeOut(sendReleaseStatus, ETimeLong),
+ KErrNone, _L("RMobileUssdMessaging::SendRelease did not complete."));
+ ASSERT_EQUALS(sendReleaseStatus.Int(),KErrNone,
+ _L("RMobileUssdMessaging::SendRelease completed with incorrect error"));
+
+ //
+ // TEST END
+ //
+
+ StartCleanup();
+
+ // Pop:
+ // sendReleaseStatus
+ // sendMsgStatus
+ // recvMsgStatus
+ CleanupStack::PopAndDestroy(3,&recvMsgStatus);
+
+ return TestStepResult();
+ }
+
+TPtrC CCTSYIntegrationTestUssdMessaging0010::GetTestStepName()
+/**
+ * @return The test step name.
+ */
+ {
+ return _L("CCTSYIntegrationTestUssdMessaging0010");
+ }
+
+
+
+CCTSYIntegrationTestUssdMessaging0011::CCTSYIntegrationTestUssdMessaging0011(CEtelSessionMgr& aEtelSessionMgr)
+ : CCTSYIntegrationTestUssdMessagingBase(aEtelSessionMgr)
+/**
+ * Constructor.
+ */
+ {
+ SetTestStepName(CCTSYIntegrationTestUssdMessaging0011::GetTestStepName());
+ }
+
+CCTSYIntegrationTestUssdMessaging0011::~CCTSYIntegrationTestUssdMessaging0011()
+/**
+ * Destructor.
+ */
+ {
+ }
+
+TVerdict CCTSYIntegrationTestUssdMessaging0011::doTestStepL()
+/**
+ * @SYMTestCaseID BA-CTSY-INT-USSDM-0011
+ * @SYMFssID BA/CTSY/USSDM-0011
+ * @SYMTestCaseDesc Cancel receiving a USSD message.
+ * @SYMTestPriority High
+ * @SYMTestActions
+ * @SYMTestExpectedResults Pass - KErrCancel returned.
+ * @SYMTestType CIT
+ * @SYMTestCaseDependencies live/automatic
+ *
+ * Reason for test: Verify KErrCancel returned.
+ *
+ * @return - TVerdict code
+ */
+ {
+
+ //
+ // SET UP
+ //
+
+
+ // Check RMobileUssdMessaging::GetCaps returns iUssdFormat of KCapsPackedString
+ // Check RMobileUssdMessaging::GetCaps returns iUssdTypes of KCapsMOUssd | KCapsMTUssd
+ RMobileUssdMessaging& mobileUssdMessaging = iEtelSessionMgr.GetUssdMessagingL(KMainServer, KMainPhone,KMainUssdMessaging);
+ RMobileUssdMessaging::TMobileUssdCapsV1 ussdCaps;
+ RMobileUssdMessaging::TMobileUssdCapsV1Pckg ussdCapsPk(ussdCaps);
+ CHECK_EQUALS_L(mobileUssdMessaging.GetCaps(ussdCapsPk), KErrNone,
+ _L("RMobileUssdMessaging::GetCaps returned error"));
+ CHECK_EQUALS_L(ussdCaps.iUssdFormat, (TUint32)RMobileUssdMessaging::KCapsPackedString,
+ _L("RMobileUssdMessaging::GetCaps returned incorrect iUssdFormat"));
+ TUint32 expectedCaps = RMobileUssdMessaging::KCapsMOUssd | RMobileUssdMessaging::KCapsMTUssd;
+ CHECK_BITS_SET_L(ussdCaps.iUssdTypes, expectedCaps, KNoUnwantedBits, _L("RMobileUssdMessaging::GetCaps returned incorrect iUssdTypes"));
+
+
+ //
+ // SET UP END
+ //
+
+ StartTest();
+
+ //
+ // TEST START
+ //
+
+
+ // Make an RMobileUssdMessaging::ReceiveMessage request
+ TExtEtelRequestStatus recvMsgStatus(mobileUssdMessaging,EMobileUssdMessagingReceiveMessage);
+ CleanupStack::PushL(recvMsgStatus);
+ RMobileUssdMessaging::TGsmUssdMessageData recvUssdMsg;
+ RMobileUssdMessaging::TMobileUssdAttributesV1 recvAttributes;
+ RMobileUssdMessaging::TMobileUssdAttributesV1Pckg recvAttributesPckg(recvAttributes);
+ mobileUssdMessaging.ReceiveMessage(recvMsgStatus,recvUssdMsg,recvAttributesPckg);
+
+ // Cancel the request with RTelSubSession::CancelAsyncRequest(EMobileUssdMessagingReceiveMessage);
+ mobileUssdMessaging.CancelAsyncRequest(EMobileUssdMessagingReceiveMessage);
+
+ // Check receive message request completes with KErrCancel
+ ASSERT_EQUALS(WaitForRequestWithTimeOut(recvMsgStatus, ETimeLong),
+ KErrNone, _L("RMobileUssdMessaging::ReceiveMessage did not complete."));
+ ASSERT_EQUALS(recvMsgStatus.Int(),KErrCancel,
+ _L("RMobileUssdMessaging::ReceiveMessage did not completed with KErrCancel"));
+
+
+ //
+ // TEST END
+ //
+
+ StartCleanup();
+
+ // Pop:
+ // recvMsgStatus
+ CleanupStack::PopAndDestroy(1,&recvMsgStatus);
+
+ return TestStepResult();
+ }
+
+TPtrC CCTSYIntegrationTestUssdMessaging0011::GetTestStepName()
+/**
+ * @return The test step name.
+ */
+ {
+ return _L("CCTSYIntegrationTestUssdMessaging0011");
+ }
+
+
+