diff -r 000000000000 -r 3553901f7fa8 telephonyserver/etelmultimode/TETEL/te_EtelMM/TE_mmussd.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/telephonyserver/etelmultimode/TETEL/te_EtelMM/TE_mmussd.cpp Tue Feb 02 01:41:59 2010 +0200 @@ -0,0 +1,231 @@ +// Copyright (c) 1997-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: +// + +#include + +#include "TE_EtelMMTestStepBase.h" +#include "TE_mmussd.h" +#include "testdef.h" + +CTestUssdMessaging::CTestUssdMessaging() +/** Each test step initialises it's own name +*/ + { + // store the name of this test case + // this is the name that is used by the script file + SetTestStepName(_L("TestUssdMessaging")); + } + +enum TVerdict CTestUssdMessaging::doTestStepL() +// +// Test USSD Messaging Functions +// + { + iTestCount=1; + INFO_PRINTF1(_L("")); + INFO_PRINTF1(_L("Test Mobile USSD Messaging Functionality")); +// LOGTEXT(_L8("Test Mobile USSD Messaging Functionality")); + + RMobilePhone mmPhone; + TInt ret=mmPhone.Open(iTelServer,DMMTSY_PHONE_NAME); + TEST(ret==KErrNone); + + RMobileUssdMessaging ussdMessaging; + ret=ussdMessaging.Open(mmPhone); + TEST(ret==KErrNone); + + TRequestStatus reqStatus; + + // Get USSD messaging caps + RMobileUssdMessaging::TMobileUssdCapsV1 ussdCaps; + RMobileUssdMessaging::TMobileUssdCapsV1Pckg ussdCapsPckg(ussdCaps); + + TEST(ussdMessaging.GetCaps(ussdCapsPckg)==KErrNone); + + ussdCaps=ussdCapsPckg(); + TEST(ussdCaps.iUssdTypes==DMMTSY_USSD_MESSAGING_TYPE_CAPS); + + INFO_PRINTF2(_L("Test %d - RMobileUssdMessaging::GetCaps (sync) passed"), iTestCount++); + +// test.Next(_L("OK: RMobileUssdMessaging's Get Ussd caps")); + + // Receiving Ussd messages + + RMobileUssdMessaging::TGsmUssdMessageData msg, sendMsg; + RMobileUssdMessaging::TMobileUssdAttributesV1 atts, sendAtts; + RMobileUssdMessaging::TMobileUssdAttributesV1Pckg attsPckg(atts); + RMobileUssdMessaging::TMobileUssdAttributesV1Pckg sendAttsPckg(sendAtts); + + // asynchronous + + ussdMessaging.ReceiveMessage(reqStatus, msg, attsPckg); + User::WaitForRequest(reqStatus); + TEST(reqStatus.Int()==KErrNone); + ValidateUssdMessage(msg,atts); + + // asynchronous & cancel + + ussdMessaging.ReceiveMessage(reqStatus, msg, attsPckg); + ussdMessaging.CancelAsyncRequest(EMobileUssdMessagingReceiveMessage); + User::WaitForRequest(reqStatus); + TEST(reqStatus.Int()==KErrNone || reqStatus.Int()==KErrCancel); + if (reqStatus.Int()==KErrCancel) + INFO_PRINTF2(_L("Test %d - RMobileUssdMessaging::ReceiveMessage (async & cancel (Cancelled Request)) passed"), iTestCount++); + else + { + ValidateUssdMessage(msg,atts); + INFO_PRINTF2(_L("Test %d - RMobileUssdMessaging::ReceiveMessage (async & cancel (Request Not Cancelled)) passed"), iTestCount++); + } + + // Send Message + + // asynchronous + + sendMsg = DMMTSY_USSD_MESSAGE_PDU; + sendAtts.iFlags = DMMTSY_USSD_ATTRIBUTE_FLAGS; + sendAtts.iFormat = DMMTSY_USSD_ATTRIBUTE_FORMAT; + sendAtts.iType = DMMTSY_USSD_ATTRIBUTE_TYPE; + sendAtts.iDcs = DMMTSY_USSD_ATTRIBUTE_DCS; + + ussdMessaging.SendMessage(reqStatus, sendMsg, sendAttsPckg); + User::WaitForRequest(reqStatus); + TEST(reqStatus.Int()==KErrNone); + + // asynchronous & cancel + + ussdMessaging.SendMessage(reqStatus, sendMsg, sendAttsPckg); + ussdMessaging.CancelAsyncRequest(EMobileUssdMessagingSendMessage); + User::WaitForRequest(reqStatus); + TEST(reqStatus.Int()==KErrNone || reqStatus.Int()==KErrCancel); + if (reqStatus.Int()==KErrCancel) + INFO_PRINTF2(_L("Test %d - RMobileUssdMessaging::SendMessage (async & cancel (Cancelled Request)) passed"), iTestCount++); + else + INFO_PRINTF2(_L("Test %d - RMobileUssdMessaging::SendMessage (async & cancel (Request Not Cancelled)) passed"), iTestCount++); + +// test.Next(_L("OK: RMobileUssdMessaging's Receive & Send Message")); + + // Send Message NoFdnCheck + + // asynchronous + + sendMsg = DMMTSY_USSD_MESSAGE_PDU; + sendAtts.iFlags = DMMTSY_USSD_ATTRIBUTE_FLAGS; + sendAtts.iFormat = DMMTSY_USSD_ATTRIBUTE_FORMAT; + sendAtts.iType = DMMTSY_USSD_ATTRIBUTE_TYPE; + sendAtts.iDcs = DMMTSY_USSD_ATTRIBUTE_DCS; + + ussdMessaging.SendMessageNoFdnCheck(reqStatus, sendMsg, sendAttsPckg); + User::WaitForRequest(reqStatus); + TEST(reqStatus.Int()==KErrNone); + + // asynchronous & cancel + + ussdMessaging.SendMessageNoFdnCheck(reqStatus, sendMsg, sendAttsPckg); + ussdMessaging.CancelAsyncRequest(EMobileUssdMessagingSendMessageNoFdnCheck); + User::WaitForRequest(reqStatus); + TEST(reqStatus.Int()==KErrNone || reqStatus.Int()==KErrCancel); + if (reqStatus.Int()==KErrCancel) + INFO_PRINTF2(_L("Test %d - RMobileUssdMessaging::SendMessageNoFdnCheck (async & cancel (Cancelled Request)) passed"), iTestCount++); + else + INFO_PRINTF2(_L("Test %d - RMobileUssdMessaging::SendMessageNoFdnCheck (async & cancel (Request Not Cancelled)) passed"), iTestCount++); + +// test.Next(_L("OK: RMobileUssdMessaging's Receive & Send Message with No Fdn Check")); + + //Send Release + RMobilePhone::TMobilePhoneSendSSRequestV3 ssRequest; + RMobilePhone::TMobilePhoneSendSSRequestV3Pckg ssRequestPckg(ssRequest); + + //asynchronous + + ussdMessaging.SendRelease(reqStatus, ssRequestPckg); + User::WaitForRequest(reqStatus); + TEST(reqStatus.Int()==KErrNone); + TEST(ssRequest.iOpCode == DMMTSY_PHONE_NOTIFY_OPCODE); + TEST(ssRequest.iAdditionalInfo.Compare(DMMTSY_PHONE_NOTIFY_ADDINFO)==0); + + // asynchronous & cancel + + ussdMessaging.SendRelease(reqStatus, ssRequestPckg); + ussdMessaging.CancelAsyncRequest(EMobileUssdMessagingSendRelease); + User::WaitForRequest(reqStatus); + TEST(reqStatus.Int()==KErrNone || reqStatus.Int()==KErrCancel); + if (reqStatus.Int()==KErrCancel) + INFO_PRINTF2(_L("Test %d - RMobileUssdMessaging::SendRelease (async & cancel (Cancelled Request)) passed"), iTestCount++); + else + INFO_PRINTF2(_L("Test %d - RMobileUssdMessaging::SendRelease (async & cancel (Request Not Cancelled)) passed"), iTestCount++); + + //Notify Network Release (deprecated version) + + //asynchronous + + ussdMessaging.NotifyNetworkRelease(reqStatus, ssRequestPckg); + User::WaitForRequest(reqStatus); + TEST(reqStatus.Int()==KErrNone); + TEST(ssRequest.iOpCode == DMMTSY_PHONE_NOTIFY_OPCODE); + TEST(ssRequest.iAdditionalInfo.Compare(DMMTSY_PHONE_NOTIFY_ADDINFO)==0); + + // asynchronous & cancel + + ussdMessaging.NotifyNetworkRelease(reqStatus, ssRequestPckg); + ussdMessaging.CancelAsyncRequest(EMobileUssdMessagingNotifyNetworkRelease); + User::WaitForRequest(reqStatus); + TEST(reqStatus.Int()==KErrNone || reqStatus.Int()==KErrCancel); + if (reqStatus.Int()==KErrCancel) + INFO_PRINTF2(_L("Test %d - RMobileUssdMessaging::NotifyNetworkRelease (deprecated version) (async & cancel (Cancelled Request)) passed"), iTestCount++); + else + INFO_PRINTF2(_L("Test %d - RMobileUssdMessaging::NotifyNetworkRelease (deprecated version) (async & cancel (Request Not Cancelled)) passed"), iTestCount++); + + //Notify Network Release + + //asynchronous + + ussdMessaging.NotifyNetworkRelease(reqStatus, ssRequestPckg, sendAttsPckg); + User::WaitForRequest(reqStatus); + TEST(reqStatus.Int()==KErrNone); + TEST(ssRequest.iOpCode == DMMTSY_PHONE_NOTIFY_OPCODE); + TEST(ssRequest.iAdditionalInfo.Compare(DMMTSY_PHONE_NOTIFY_ADDINFO)==0); + TEST(sendAtts.iFlags == DMMTSY_USSD_ATTRIBUTE_FLAGS); + TEST(sendAtts.iFormat == DMMTSY_USSD_ATTRIBUTE_FORMAT); + TEST(sendAtts.iType == DMMTSY_USSD_ATTRIBUTE_TYPE); + TEST(sendAtts.iDcs == DMMTSY_USSD_ATTRIBUTE_DCS); + + // asynchronous & cancel + + ussdMessaging.NotifyNetworkRelease(reqStatus, ssRequestPckg, sendAttsPckg); + ussdMessaging.CancelAsyncRequest(EMobileUssdMessagingNotifyNetworkRelease); + User::WaitForRequest(reqStatus); + TEST(reqStatus.Int()==KErrNone || reqStatus.Int()==KErrCancel); + if (reqStatus.Int()==KErrCancel) + INFO_PRINTF2(_L("Test %d - RMobileUssdMessaging::NotifyNetworkRelease (async & cancel (Cancelled Request)) passed"), iTestCount++); + else + INFO_PRINTF2(_L("Test %d - RMobileUssdMessaging::NotifyNetworkRelease (async & cancel (Request Not Cancelled)) passed"), iTestCount++); + + ussdMessaging.Close(); + mmPhone.Close(); + INFO_PRINTF1(_L("")); + + return TestStepResult(); + } + + +void CTestUssdMessaging::ValidateUssdMessage(const TDesC8& aMsg, const RMobileUssdMessaging::TMobileUssdAttributesV1 &aAtts) + { + TEST(aMsg.Compare(DMMTSY_USSD_MESSAGE_PDU) == 0); + TEST(aAtts.iFlags == DMMTSY_USSD_ATTRIBUTE_FLAGS); + TEST(aAtts.iFormat == DMMTSY_USSD_ATTRIBUTE_FORMAT); + TEST(aAtts.iType == DMMTSY_USSD_ATTRIBUTE_TYPE); + TEST(aAtts.iDcs == DMMTSY_USSD_ATTRIBUTE_DCS); + } +