diff -r 000000000000 -r 3553901f7fa8 telephonyserverplugins/ctsydispatchlayer/test/dispatchertests/dispatchsrc/cctsysmsfu.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/telephonyserverplugins/ctsydispatchlayer/test/dispatchertests/dispatchsrc/cctsysmsfu.cpp Tue Feb 02 01:41:59 2010 +0200 @@ -0,0 +1,1476 @@ +// Copyright (c) 2008-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: +// + + + +/** + @file The TEFUnit test suite for SmsControl in the Common TSY. +*/ + +#include "cctsysmsfu.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "cctsyactiveretriever.h" +#include +#include "mockltsyindicatorids.h" + +CTestSuite* CCTsySmsFU::CreateSuiteL(const TDesC& aName) + { + SUB_SUITE; + + //add use-case tests + ADD_TEST_STEP_ISO_CPP(CCTsySmsFU, TestUseCase0001L); + ADD_TEST_STEP_ISO_CPP(CCTsySmsFU, TestUseCase0002L); + + //add other unit tests + ADD_TEST_STEP_ISO_CPP(CCTsySmsFU, TestUnit0001L); + ADD_TEST_STEP_ISO_CPP(CCTsySmsFU, TestUnit0002L); + ADD_TEST_STEP_ISO_CPP(CCTsySmsFU, TestUnit0003L); + ADD_TEST_STEP_ISO_CPP(CCTsySmsFU, TestUnit0004L); + ADD_TEST_STEP_ISO_CPP(CCTsySmsFU, TestUnit0005L); + ADD_TEST_STEP_ISO_CPP(CCTsySmsFU, TestUnit0006L); + ADD_TEST_STEP_ISO_CPP(CCTsySmsFU, TestUnit0007L); + ADD_TEST_STEP_ISO_CPP(CCTsySmsFU, TestUnit0008L); + ADD_TEST_STEP_ISO_CPP(CCTsySmsFU, TestUnit0009L); + ADD_TEST_STEP_ISO_CPP(CCTsySmsFU, TestUnit0010L); + + END_SUITE; + } + +LOCAL_C void FillInSmsParams( + TSmsParameters& aSmsParams1, + TSmsParameters& aSmsParams2) + { + aSmsParams1.iLocationNumber = 1; + aSmsParams1.iParameterIndicator = KDestinationAddress|KServiceCentreAddress; + aSmsParams1.iProtocolId = 2; + aSmsParams1.iDataCodingScheme = 3; + aSmsParams1.iValidityPeriod = 4; + aSmsParams1.iMobileScTON = RMobilePhone::EInternationalNumber; + aSmsParams1.iMobileScNPI = RMobilePhone::EIsdnNumberPlan; + aSmsParams1.iMobileDeTON = RMobilePhone::ENationalNumber; + aSmsParams1.iMobileDeNPI = RMobilePhone::EDataNumberPlan; + aSmsParams1.iAlphaTagPresent = ETrue; + aSmsParams1.iServiceCenterAddress.Copy(_L("asta")); + aSmsParams1.iDestinationAddress.Copy(_L("la")); + aSmsParams1.iAlphaTagData.Copy(_L("vista")); + + aSmsParams2.iLocationNumber = 5; + aSmsParams2.iParameterIndicator = KProtocolID|KDataCodingScheme|KValidityPeriod; + aSmsParams2.iProtocolId = 6; + aSmsParams2.iDataCodingScheme = 7; + aSmsParams2.iValidityPeriod = 8; + aSmsParams2.iMobileScTON = RMobilePhone::ENetworkSpecificNumber; + aSmsParams2.iMobileScNPI = RMobilePhone::ETelexNumberPlan; + aSmsParams2.iMobileDeTON = RMobilePhone::ESubscriberNumber; + aSmsParams2.iMobileDeNPI = RMobilePhone::ENationalNumberPlan; + aSmsParams2.iAlphaTagPresent = EFalse; + aSmsParams2.iServiceCenterAddress.Copy(_L("I'l")); + aSmsParams2.iDestinationAddress.Copy(_L("be")); + aSmsParams2.iAlphaTagData.Copy(_L("back")); + + } + + +// +// Use-case tests +// + +/** +@SYMTestCaseID BA-CTSYD-DIS-SMS-UC0001 +@SYMComponent telephony_ctsy +@SYMTestCaseDesc Test support in CTSY for ReceiveMessage() +@SYMTestPriority High +@SYMTestActions Invokes ReceiveMessage() +@SYMTestExpectedResults Pass +@SYMTestType CT + */ +void CCTsySmsFU::TestUseCase0001L() + { + OpenEtelServerL(EUseExtendedError); + CleanupStack::PushL(TCleanupItem(Cleanup,this)); + OpenPhoneL(); + + RMobileSmsMessaging messaging; + TInt err = messaging.Open(iPhone); + ASSERT_EQUALS(KErrNone, err); + CleanupClosePushL(messaging); + + RBuf8 data; + CleanupClosePushL(data); + + TRequestStatus reqStatus; + TRequestStatus mockLtsyStatus; + RMobileSmsMessaging::TMobileSmsReceiveAttributesV1 receiveAttr; + RMobileSmsMessaging::TMobileSmsReceiveAttributesV1Pckg receiveAttrPckg(receiveAttr); + + _LIT8(KMessage, "Happy New Year"); + TBuf8<100> forMsg; + + // receiving message: + messaging.ReceiveMessage(reqStatus, forMsg, receiveAttrPckg); + + TSmsMsg smsMsg; + TSmsMsg* smsMsgPtr(&smsMsg); + TBool ind(EFalse); + + smsMsg.iSmsClass2 = ETrue; + smsMsg.iDeleteAfterClientAck = ETrue; + smsMsg.iSmsMsg.Copy(KMessage); + + TMockLtsyData2 compTsyData(ind, smsMsgPtr); + compTsyData.SerialiseL(data); + + iMockLTSY.CompleteL(KMockLtsyDispatchSmsNotifyReceiveSmsMessageIndId, KErrNone, data); + + User::WaitForRequest(reqStatus); + ASSERT_EQUALS(KErrNone, reqStatus.Int()); + AssertMockLtsyStatusL(); + + TDesC8* msgPtr = const_cast(&KMessage); + TInt rpCause(0); + TMockLtsyData2 expTsyData(msgPtr, rpCause); + data.Close(); + expTsyData.SerialiseL(data); + + iMockLTSY.ExpectL(MLtsyDispatchSmsNackSmsStored::KLtsyDispatchSmsNackSmsStoredApiId, data); + iMockLTSY.CompleteL(MLtsyDispatchSmsNackSmsStored::KLtsyDispatchSmsNackSmsStoredApiId, KErrNone); + + messaging.NackSmsStored(reqStatus, KMessage, rpCause); + + User::WaitForRequest(reqStatus); + ASSERT_EQUALS(KErrNone, reqStatus.Int()); + AssertMockLtsyStatusL(); + + // receiving message: + messaging.ReceiveMessage(reqStatus, forMsg, receiveAttrPckg); + + compTsyData.SerialiseL(data); + + iMockLTSY.CompleteL(KMockLtsyDispatchSmsNotifyReceiveSmsMessageIndId, KErrNone, data); + + User::WaitForRequest(reqStatus); + ASSERT_EQUALS(KErrNone, reqStatus.Int()); + AssertMockLtsyStatusL(); + + + TDesC8* msgPtr2 = const_cast(&KMessage); + TMockLtsyData1 expTsyData2(msgPtr2); + data.Close(); + expTsyData2.SerialiseL(data); + + iMockLTSY.ExpectL(MLtsyDispatchSmsAckSmsStored::KLtsyDispatchSmsAckSmsStoredApiId, data); + iMockLTSY.CompleteL(MLtsyDispatchSmsAckSmsStored::KLtsyDispatchSmsAckSmsStoredApiId, KErrNone); + + // acknowledgment message receive: + messaging.AckSmsStored(reqStatus, KMessage, ETrue); + + User::WaitForRequest(reqStatus); + ASSERT_EQUALS(KErrNone, reqStatus.Int()); + AssertMockLtsyStatusL(); + + // receiving message: + messaging.ReceiveMessage(reqStatus, forMsg, receiveAttrPckg); + data.Close(); + compTsyData.SerialiseL(data); + + iMockLTSY.CompleteL(KMockLtsyDispatchSmsNotifyReceiveSmsMessageIndId, KErrNone, data); + + TDesC8* msgPtr3 = NULL; + TMockLtsyData1 expTsyData3(msgPtr3); + data.Close(); + expTsyData3.SerialiseL(data); + iMockLTSY.ExpectL(MLtsyDispatchSmsAckSmsStored::KLtsyDispatchSmsAckSmsStoredApiId, data); + + User::WaitForRequest(reqStatus); + ASSERT_EQUALS(KErrNone, reqStatus.Int()); + AssertMockLtsyStatusL(); + + CleanupStack::PopAndDestroy(3, this); + } + +/** +@SYMTestCaseID BA-CTSYD-DIS-SMS-UC0002 +@SYMComponent telephony_ctsy +@SYMTestCaseDesc Test support in CTSY for successful RMobileSmsMessaging::SendMessage +@SYMTestPriority High +@SYMTestActions Invokes RMobileSmsMessaging::SendMessage +@SYMTestExpectedResults Pass +@SYMTestType CT + */ +void CCTsySmsFU::TestUseCase0002L() + { + OpenEtelServerL(EUseExtendedError); + CleanupStack::PushL(TCleanupItem(Cleanup,this)); + OpenPhoneL(); + + RBuf8 data; + CleanupClosePushL(data); + RMobileSmsMessaging messaging; + TInt err = messaging.Open(iPhone); + ASSERT_EQUALS(KErrNone, err); + CleanupClosePushL(messaging); + + + _LIT8(KMessage, "Hello"); + TBuf8<32> tmpName(KMessage); + + TRequestStatus reqStatus; + RMobileSmsMessaging::TMobileSmsSendAttributesV1 expectSmsAttr; + RMobileSmsMessaging::TMobileSmsSendAttributesV1 smsAttr; + RMobileSmsMessaging::TMobileSmsSendAttributesV1Pckg smsAttrPckg(smsAttr); + + TSendSmsDataAndAttributes dataAndAttr; + dataAndAttr.iIpc = EMobileSmsMessagingSendMessage; + dataAndAttr.iAttributes = &expectSmsAttr; + dataAndAttr.iMsgData = &tmpName; + + TDesC8* msgPtr = dataAndAttr.iMsgData; + TMockLtsyData5< RMobilePhone::TMobileAddress, + TDesC8*, + RMobileSmsMessaging::TMobileSmsDataFormat, + RMobilePhone::TMobileAddress, + TBool + > expTsyData(smsAttr.iDestination, msgPtr, smsAttr.iDataFormat, smsAttr.iGsmServiceCentre, smsAttr.iMore); + + _LIT8(KSubmit, "Submit"); + _LIT(KNum, "+7903030303"); + + smsAttr.iGsmServiceCentre.iTypeOfNumber = RMobilePhone::EInternationalNumber; + smsAttr.iGsmServiceCentre.iNumberPlan = RMobilePhone::EIsdnNumberPlan; + smsAttr.iGsmServiceCentre.iTelNumber.Copy(KNum); + smsAttr.iCdmaServiceCategory = 0; + smsAttr.iCdmaTeleservice = 0; + smsAttr.iDataFormat = RMobileSmsMessaging::EFormatGsmTpdu; + smsAttr.iFlags = 0; + smsAttr.iMsgRef = 0; + smsAttr.iSubmitReport = KSubmit; + smsAttr.iMore = EFalse; + smsAttr.iDestination.iTypeOfNumber = RMobilePhone::EInternationalNumber; + smsAttr.iDestination.iNumberPlan = RMobilePhone::EIsdnNumberPlan; + smsAttr.iDestination.iTelNumber.Copy(KNum); + + expectSmsAttr = smsAttr; + + expTsyData.SerialiseL(data); + iMockLTSY.ExpectL(MLtsyDispatchSmsSendSmsMessage::KLtsyDispatchSmsSendSmsMessageApiId, data); + data.Close(); + + const TInt16 KMsgRef(25); + TInt16 msgRef(KMsgRef); + TBuf8 smsMsg(KMessage); + TMockLtsyData2 > compTsyData(msgRef, smsMsg); + compTsyData.SerialiseL(data); + iMockLTSY.CompleteL(MLtsyDispatchSmsSendSmsMessage::KLtsyDispatchSmsSendSmsMessageApiId, KErrNone, data, 10); + data.Close(); + /* + * The fields required will probably be message data format, destination + * and possibly a new service centre address. + * On return, for either successful or failed transmission, the message reference number assigned to this + * sent message will be placed by the TSY in the iMsgRef field. + * Also, if the SMS was sent during GSM or WCDMA mode, then + * the SMS-SUBMIT-REPORT will be placed by the TSY in the iSubmitReport field. + * + */ + messaging.SendMessage(reqStatus, tmpName, smsAttrPckg); + User::WaitForRequest(reqStatus); + ASSERT_EQUALS(KErrNone, reqStatus.Int()); + + ASSERT_EQUALS(RMobilePhone::EInternationalNumber, smsAttr.iGsmServiceCentre.iTypeOfNumber); + ASSERT_EQUALS(RMobilePhone::EIsdnNumberPlan, smsAttr.iGsmServiceCentre.iNumberPlan); + ASSERT_EQUALS(0, smsAttr.iGsmServiceCentre.iTelNumber.Compare(KNum)); + ASSERT_EQUALS(0, smsAttr.iCdmaServiceCategory); + ASSERT_EQUALS(0, smsAttr.iCdmaTeleservice); + ASSERT_EQUALS(RMobileSmsMessaging::EFormatGsmTpdu, smsAttr.iDataFormat); + ASSERT_TRUE((RMobileSmsMessaging::KMessageReference | RMobileSmsMessaging::KGsmSubmitReport) + == smsAttr.iFlags); + ASSERT_TRUE(msgRef == smsAttr.iMsgRef); + ASSERT_EQUALS(0, smsAttr.iSubmitReport.Compare(smsMsg)); + ASSERT_TRUE(EFalse == smsAttr.iMore); + ASSERT_EQUALS(RMobilePhone::EInternationalNumber, smsAttr.iDestination.iTypeOfNumber); + ASSERT_EQUALS(RMobilePhone::EIsdnNumberPlan, smsAttr.iDestination.iNumberPlan); + ASSERT_EQUALS(0, smsAttr.iDestination.iTelNumber.Compare(KNum)); + + AssertMockLtsyStatusL(); + CleanupStack::PopAndDestroy(3, this); + } + +// +// Other unit tests +// + +/** +@SYMTestCaseID BA-CTSYD-DIS-SMS-UN0001 +@SYMComponent telephony_ctsy +@SYMTestCaseDesc Test support in CTSY for RMobileSmsMessaging::AckSmsStored() +@SYMTestPriority High +@SYMTestActions Invokes AckSmsStored() +@SYMTestExpectedResults Pass +@SYMTestType UT + */ +void CCTsySmsFU::TestUnit0001L() + { + OpenEtelServerL(EUseExtendedError); + CleanupStack::PushL(TCleanupItem(Cleanup,this)); + OpenPhoneL(); + + RMobileSmsMessaging messaging; + TInt err = messaging.Open(iPhone); + ASSERT_EQUALS(KErrNone, err); + CleanupClosePushL(messaging); + + RBuf8 data; + CleanupClosePushL(data); + + _LIT8(KMessage, "Happy New Year"); + TRequestStatus reqStatus; + TRequestStatus mockLtsyStatus; + TDesC8* msgPtr = const_cast(&KMessage); + TMockLtsyData1 expTsyData(msgPtr); + + + //------------------------------------------------------------------------- + // TEST B: failure on completion of pending request from LTSY->CTSY + //------------------------------------------------------------------------- + + RMobileSmsMessaging::TMobileSmsReceiveAttributesV1 receiveAttr; + RMobileSmsMessaging::TMobileSmsReceiveAttributesV1Pckg receiveAttrPckg(receiveAttr); + + TBuf8<100> forMsg; + + // receiving message: + messaging.ReceiveMessage(reqStatus, forMsg, receiveAttrPckg); + + TSmsMsg smsMsg; + TSmsMsg* smsMsgPtr(&smsMsg); + TBool ind(EFalse); + + smsMsg.iSmsClass2 = ETrue; + smsMsg.iDeleteAfterClientAck = ETrue; + smsMsg.iSmsMsg.Copy(KMessage); + + TMockLtsyData2 compTsyData(ind, smsMsgPtr); + compTsyData.SerialiseL(data); + + iMockLTSY.CompleteL(KMockLtsyDispatchSmsNotifyReceiveSmsMessageIndId, KErrNone, data); + + User::WaitForRequest(reqStatus); + ASSERT_EQUALS(KErrNone, reqStatus.Int()); + AssertMockLtsyStatusL(); + + expTsyData.SerialiseL(data); + + iMockLTSY.ExpectL(MLtsyDispatchSmsAckSmsStored::KLtsyDispatchSmsAckSmsStoredApiId, data); + iMockLTSY.CompleteL(MLtsyDispatchSmsAckSmsStored::KLtsyDispatchSmsAckSmsStoredApiId, KErrGeneral); + + messaging.AckSmsStored(reqStatus, KMessage, ETrue); + + User::WaitForRequest(reqStatus); + ASSERT_EQUALS(KErrGeneral, reqStatus.Int()); + + AssertMockLtsyStatusL(); + + //------------------------------------------------------------------------- + // TEST C1, check AckSmsStored() when there is no sms received + //------------------------------------------------------------------------- + + messaging.AckSmsStored(reqStatus, KMessage, ETrue); + + User::WaitForRequest(reqStatus); + ASSERT_EQUALS(KErrNotReady, reqStatus.Int()); + + AssertMockLtsyStatusL(); + + //------------------------------------------------------------------------- + // TEST E: Unsolicited completion of RMobileSmsMessaging::AckSmsStored + // from LTSY. + //------------------------------------------------------------------------- + + iMockLTSY.NotifyTerminated(mockLtsyStatus); + + iMockLTSY.CompleteL(MLtsyDispatchSmsAckSmsStored::KLtsyDispatchSmsAckSmsStoredApiId, KErrNone); + + User::WaitForRequest(mockLtsyStatus); + ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int()); + + AssertMockLtsyStatusL(); + + CleanupStack::PopAndDestroy(3, this); // data, messaging, this + } + +/** +@SYMTestCaseID BA-CTSYD-DIS-SMS-UN0002 +@SYMComponent telephony_ctsy +@SYMTestCaseDesc Test support in CTSY for RMobileSmsMessaging::GetMessageStoreInfo() +@SYMTestPriority High +@SYMTestActions Invokes GetMessageStoreInfo() +@SYMTestExpectedResults Pass +@SYMTestType UT + */ +void CCTsySmsFU::TestUnit0002L() + { + OpenEtelServerL(EUseExtendedError); + CleanupStack::PushL(TCleanupItem(Cleanup,this)); + OpenPhoneL(); + + RBuf8 data; + CleanupClosePushL(data); + + RMobileSmsMessaging messaging; + TInt err = messaging.Open(iPhone); + ASSERT_EQUALS(KErrNone, err); + CleanupClosePushL(messaging); + + TRequestStatus reqStatus; + RMobilePhoneStore::TMobilePhoneStoreInfoV1 info; + RMobilePhoneStore::TMobilePhoneStoreInfoV1Pckg pckgInfo(info); + TInt index(0); + + //------------------------------------------------------------------------- + // TEST A: failure to dispatch request to LTSY + //------------------------------------------------------------------------- + + iMockLTSY.ExpectL(MLtsyDispatchSmsGetSmsStoreInfo::KLtsyDispatchSmsGetSmsStoreInfoApiId, KErrNotSupported); + + messaging.GetMessageStoreInfo(reqStatus, index, pckgInfo); + + User::WaitForRequest(reqStatus); + ASSERT_EQUALS(KErrNotSupported, reqStatus.Int()); + + AssertMockLtsyStatusL(); + + //------------------------------------------------------------------------- + // TEST B: failure on completion of pending request from LTSY->CTSY + //------------------------------------------------------------------------- + + iMockLTSY.ExpectL(MLtsyDispatchSmsGetSmsStoreInfo::KLtsyDispatchSmsGetSmsStoreInfoApiId); + + messaging.GetMessageStoreInfo(reqStatus, index, pckgInfo); + + TInt total(0); + TInt used(0); + + TMockLtsyData2 compData(total, used); + + compData.SerialiseL(data); + + iMockLTSY.CompleteL(MLtsyDispatchSmsGetSmsStoreInfo::KLtsyDispatchSmsGetSmsStoreInfoApiId, KErrGeneral, data); + + User::WaitForRequest(reqStatus); + ASSERT_EQUALS(KErrGeneral, reqStatus.Int()); + + AssertMockLtsyStatusL(); + + //------------------------------------------------------------------------- + // TEST C: Successful completion request of + // RMobileSmsMessaging::GetMessageStoreInfo when result is not cached. + //------------------------------------------------------------------------- + + iMockLTSY.ExpectL(MLtsyDispatchSmsGetSmsStoreInfo::KLtsyDispatchSmsGetSmsStoreInfoApiId); + + messaging.GetMessageStoreInfo(reqStatus, index, pckgInfo); + + total = 2; + used = 1; + + data.Close(); + compData.SerialiseL(data); + + iMockLTSY.CompleteL(MLtsyDispatchSmsGetSmsStoreInfo::KLtsyDispatchSmsGetSmsStoreInfoApiId, KErrNone, data); + + User::WaitForRequest(reqStatus); + ASSERT_EQUALS(KErrNone, reqStatus.Int()); + + ASSERT_EQUALS(0, info.iName.Compare(KETelIccSmsStore)); + ASSERT_EQUALS(RMobilePhoneStore::EShortMessageStore, info.iType); + ASSERT_TRUE(total == info.iTotalEntries); + ASSERT_TRUE(used == info.iUsedEntries); + ASSERT_EQUALS(KSmsMessageStoreInfoCaps, info.iCaps); + + AssertMockLtsyStatusL(); + + //------------------------------------------------------------------------- + // TEST C2: Successful completion request of + // RMobileSmsMessaging::GetMessageStoreInfo when result is not cached. + //------------------------------------------------------------------------- + + iMockLTSY.ExpectL(MLtsyDispatchSmsGetSmsStoreInfo::KLtsyDispatchSmsGetSmsStoreInfoApiId); + + messaging.GetMessageStoreInfo(reqStatus, index, pckgInfo); + + iMockLTSY.CompleteL(MLtsyDispatchSmsGetSmsStoreInfo::KLtsyDispatchSmsGetSmsStoreInfoApiId, KErrNotFound, data); + + User::WaitForRequest(reqStatus); + ASSERT_EQUALS(KErrNone, reqStatus.Int()); + + ASSERT_EQUALS(0, info.iName.Compare(KETelIccSmsStore)); + ASSERT_EQUALS(RMobilePhoneStore::EShortMessageStore, info.iType); + ASSERT_TRUE(total == info.iTotalEntries); + ASSERT_TRUE(used == info.iUsedEntries); + ASSERT_EQUALS(KSmsMessageStoreInfoCaps, info.iCaps); + + AssertMockLtsyStatusL(); + + //------------------------------------------------------------------------- + // TEST E: Unsolicited completion of RMobileSmsMessaging::GetMessageStoreInfo + // from LTSY. + //------------------------------------------------------------------------- + + TRequestStatus mockLtsyStatus; + iMockLTSY.NotifyTerminated(mockLtsyStatus); + + iMockLTSY.CompleteL(MLtsyDispatchSmsGetSmsStoreInfo::KLtsyDispatchSmsGetSmsStoreInfoApiId, KErrNone, data); + + User::WaitForRequest(mockLtsyStatus); + ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int()); + + AssertMockLtsyStatusL(); + + CleanupStack::PopAndDestroy(3, this); + } + +/** +@SYMTestCaseID BA-CTSYD-DIS-SMS-UN0003 +@SYMComponent telephony_ctsy +@SYMTestCaseDesc Test support in CTSY for ReadSmspListPhase1L() +@SYMTestPriority High +@SYMTestActions Invokes ReadSmspListPhase1L() +@SYMTestExpectedResults Pass +@SYMTestType UT + */ +void CCTsySmsFU::TestUnit0003L() + { + OpenEtelServerL(EUseExtendedError); + CleanupStack::PushL(TCleanupItem(Cleanup,this)); + OpenPhoneL(); + + RBuf8 data; + CleanupClosePushL(data); + + //CFilteringActiveScheduler does not need to be used, this should be changed + //to a listretrieverao type class + CFilteringActiveScheduler* scheduler = new (ELeave) CFilteringActiveScheduler(); + CleanupStack::PushL(scheduler); + CActiveScheduler::Install(scheduler); + + RMobileSmsMessaging messaging; + TInt err = messaging.Open(iPhone); + ASSERT_EQUALS(KErrNone, err); + CleanupClosePushL(messaging); + CRetrieveMobilePhoneSmspList* asyncRetrieveList = + CRetrieveMobilePhoneSmspList::NewL(messaging); + CleanupStack::PushL(asyncRetrieveList); + + CActiveRetriever::ResetRequestsNumber(); + CActiveRetriever* activeRetriever = + CActiveRetriever::NewL(*asyncRetrieveList); + CleanupStack::PushL(activeRetriever); + scheduler->AddRetrieverL(*activeRetriever); + + //------------------------------------------------------------------------- + // TEST A: failure to dispatch request to LTSY + //------------------------------------------------------------------------- + + iMockLTSY.ExpectL(MLtsyDispatchSmsGetSmspList::KLtsyDispatchSmsGetSmspListApiId, KErrNotSupported); + + asyncRetrieveList->Start(activeRetriever->iStatus); + activeRetriever->Activate(); + scheduler->StartScheduler(); + + ASSERT_EQUALS(0, CActiveRetriever::ResetRequestsNumber()); + ASSERT_EQUALS(KErrNotSupported, activeRetriever->iStatus.Int()); + AssertMockLtsyStatusL(); + + // test for KErrNotFound + iMockLTSY.ExpectL(MLtsyDispatchSmsGetSmspList::KLtsyDispatchSmsGetSmspListApiId, KErrNotFound); + + asyncRetrieveList->Start(activeRetriever->iStatus); + activeRetriever->Activate(); + scheduler->StartScheduler(); + + ASSERT_EQUALS(0, CActiveRetriever::ResetRequestsNumber()); + ASSERT_EQUALS(KErrNotFound, activeRetriever->iStatus.Int()); + AssertMockLtsyStatusL(); + + //------------------------------------------------------------------------- + // TEST C: Successful completion request of + // CRetrieveMobilePhoneSmspList::Start when result is not cached. + //------------------------------------------------------------------------- + + iMockLTSY.ExpectL(MLtsyDispatchSmsGetSmspList::KLtsyDispatchSmsGetSmspListApiId); + + TSmsParameters entry; + TSmsParameters entry1; + FillInSmsParams(entry, entry1); + + TDesC* strPtr1 = &entry.iServiceCenterAddress; + TDesC* strPtr2 = &entry.iDestinationAddress; + TDesC* strPtr3 = &entry.iAlphaTagData; + TBool bMoreToCome = ETrue; + + DispatcherSim::TSmsParameters smsParam; + + smsParam.iLocationNumber = entry.iLocationNumber; + smsParam.iParameterIndicator = entry.iParameterIndicator; + smsParam.iProtocolId = entry.iProtocolId; + smsParam.iDataCodingScheme = entry.iDataCodingScheme; + smsParam.iValidityPeriod = entry.iValidityPeriod; + smsParam.iMobileScTON = entry.iMobileScTON; + smsParam.iMobileScNPI = entry.iMobileScNPI; + smsParam.iMobileDeTON = entry.iMobileDeTON; + smsParam.iMobileDeNPI = entry.iMobileDeNPI; + smsParam.iAlphaTagPresent = entry.iAlphaTagPresent; + + TMockLtsyData5 completeLtsyData(strPtr1, strPtr2, strPtr3, smsParam, bMoreToCome); + data.Close(); + completeLtsyData.SerialiseL(data); + iMockLTSY.CompleteL(MLtsyDispatchSmsGetSmspList::KLtsyDispatchSmsGetSmspListApiId, KErrNone, data); + + TBool bMoreToCome2 = EFalse; + TDesC* strPtr21 = &entry1.iServiceCenterAddress; + TDesC* strPtr22 = &entry1.iDestinationAddress; + TDesC* strPtr23 = &entry1.iAlphaTagData; + + DispatcherSim::TSmsParameters smsParam2; + + smsParam2.iLocationNumber = entry1.iLocationNumber; + smsParam2.iParameterIndicator = entry1.iParameterIndicator; + smsParam2.iProtocolId = entry1.iProtocolId; + smsParam2.iDataCodingScheme = entry1.iDataCodingScheme; + smsParam2.iValidityPeriod = entry1.iValidityPeriod; + smsParam2.iMobileScTON = entry1.iMobileScTON; + smsParam2.iMobileScNPI = entry1.iMobileScNPI; + smsParam2.iMobileDeTON = entry1.iMobileDeTON; + smsParam2.iMobileDeNPI = entry1.iMobileDeNPI; + smsParam2.iAlphaTagPresent = entry1.iAlphaTagPresent; + + TMockLtsyData5 completeLtsyData2(strPtr21, strPtr22, strPtr23, smsParam2, bMoreToCome2); + data.Close(); + completeLtsyData2.SerialiseL(data); + iMockLTSY.CompleteL(MLtsyDispatchSmsGetSmspList::KLtsyDispatchSmsGetSmspListApiId, KErrNone, data); + + asyncRetrieveList->Start(activeRetriever->iStatus); + activeRetriever->Activate(); + scheduler->StartScheduler(); + + ASSERT_EQUALS(0, CActiveRetriever::ResetRequestsNumber()); + ASSERT_EQUALS(KErrNone, activeRetriever->iStatus.Int()); + + CMobilePhoneSmspList* list = asyncRetrieveList->RetrieveListL(); + CleanupStack::PushL( list ); + + ASSERT_EQUALS(2, list->Enumerate()); + const RMobileSmsMessaging::TMobileSmspEntryV1& smspEntry = list->GetEntryL(0); + + TInt completeIndex(entry.iLocationNumber); + ASSERT_EQUALS(completeIndex, smspEntry.iIndex); + ASSERT_EQUALS(entry.iAlphaTagData, smspEntry.iText); + TUint32 completeValidParams(entry.iParameterIndicator); + ASSERT_EQUALS(completeValidParams, smspEntry.iValidParams); + ASSERT_EQUALS(entry.iMobileDeTON, smspEntry.iDestination.iTypeOfNumber); + ASSERT_EQUALS(entry.iMobileDeNPI, smspEntry.iDestination.iNumberPlan); + ASSERT_TRUE( 0 == entry.iDestinationAddress.Compare(smspEntry.iDestination.iTelNumber) ); + ASSERT_EQUALS(entry.iMobileScTON, smspEntry.iServiceCentre.iTypeOfNumber); + ASSERT_EQUALS(entry.iMobileScNPI, smspEntry.iServiceCentre.iNumberPlan); + ASSERT_TRUE( 0 == entry.iServiceCenterAddress.Compare(smspEntry.iServiceCentre.iTelNumber) ); + + const RMobileSmsMessaging::TMobileSmspEntryV1& smspEntry1 = list->GetEntryL(1); + + completeIndex = entry1.iLocationNumber; + ASSERT_EQUALS(completeIndex, smspEntry1.iIndex); + ASSERT_EQUALS(0, smspEntry1.iText.Length()); + completeValidParams = entry1.iParameterIndicator; + ASSERT_EQUALS(completeValidParams, smspEntry1.iValidParams); + ASSERT_EQUALS(entry1.iProtocolId, smspEntry1.iProtocolId); + ASSERT_EQUALS(entry1.iDataCodingScheme, smspEntry1.iDcs); + ASSERT_EQUALS(entry1.iValidityPeriod, smspEntry1.iValidityPeriod); + + CleanupStack::PopAndDestroy(list); + AssertMockLtsyStatusL(); + + //------------------------------------------------------------------------- + // TEST B: failure on completion of pending request from LTSY->CTSY + //------------------------------------------------------------------------- + + iMockLTSY.ExpectL(MLtsyDispatchSmsGetSmspList::KLtsyDispatchSmsGetSmspListApiId); + data.Close(); + completeLtsyData2.SerialiseL(data); + iMockLTSY.CompleteL(MLtsyDispatchSmsGetSmspList::KLtsyDispatchSmsGetSmspListApiId, KErrGeneral, data); + + asyncRetrieveList->Start(activeRetriever->iStatus); + activeRetriever->Activate(); + scheduler->StartScheduler(); + + ASSERT_EQUALS(0, CActiveRetriever::ResetRequestsNumber()); + ASSERT_EQUALS(KErrGeneral, activeRetriever->iStatus.Int()); + AssertMockLtsyStatusL(); + + //------------------------------------------------------------------------- + // TEST E: Unsolicited completion of CRetrieveMobilePhoneSmspList::Start + // from LTSY. + //------------------------------------------------------------------------- + + TRequestStatus mockLtsyStatus; + iMockLTSY.NotifyTerminated(mockLtsyStatus); + + data.Close(); + completeLtsyData.SerialiseL(data); + iMockLTSY.CompleteL(MLtsyDispatchSmsGetSmspList::KLtsyDispatchSmsGetSmspListApiId, KErrNone, data); + + data.Close(); + completeLtsyData2.SerialiseL(data); + iMockLTSY.CompleteL(MLtsyDispatchSmsGetSmspList::KLtsyDispatchSmsGetSmspListApiId, KErrNone, data); + + User::WaitForRequest(mockLtsyStatus); + ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int()); + AssertMockLtsyStatusL(); + + // increase coverage + iMockLTSY.NotifyTerminated(mockLtsyStatus); + + data.Close(); + completeLtsyData2.SerialiseL(data); + iMockLTSY.CompleteL(MLtsyDispatchSmsGetSmspList::KLtsyDispatchSmsGetSmspListApiId, KErrGeneral, data); + + User::WaitForRequest(mockLtsyStatus); + ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int()); + AssertMockLtsyStatusL(); + + CleanupStack::PopAndDestroy(3); // activeRetriever, asyncRetrieveList, messaging + CleanupStack::PopAndDestroy(3, this); // data, scheduler, this + } + +/** +@SYMTestCaseID BA-CTSYD-DIS-SMS-UN0004 +@SYMComponent telephony_ctsy +@SYMTestCaseDesc Test support in CTSY for RMobileSmsMessaging::NackSmsStored() +@SYMTestPriority High +@SYMTestActions Invokes NackSmsStored() +@SYMTestExpectedResults Pass +@SYMTestType UT + */ +void CCTsySmsFU::TestUnit0004L() + { + OpenEtelServerL(EUseExtendedError); + CleanupStack::PushL(TCleanupItem(Cleanup,this)); + OpenPhoneL(); + + RMobileSmsMessaging messaging; + TInt err = messaging.Open(iPhone); + ASSERT_EQUALS(KErrNone, err); + CleanupClosePushL(messaging); + + RBuf8 data; + CleanupClosePushL(data); + + _LIT8(KMessage, "Happy New Year"); + + TRequestStatus mockLtsyStatus; + TRequestStatus reqStatus; + TDesC8* msgPtr = const_cast(&KMessage); + TInt rpCause(0); + + //------------------------------------------------------------------------- + // TEST B: failure on completion of pending request from LTSY->CTSY + //------------------------------------------------------------------------- + + TMockLtsyData2 expTsyData(msgPtr, rpCause); + + + RMobileSmsMessaging::TMobileSmsReceiveAttributesV1 receiveAttr; + RMobileSmsMessaging::TMobileSmsReceiveAttributesV1Pckg receiveAttrPckg(receiveAttr); + + TBuf8<100> forMsg; + + // receiving message: + messaging.ReceiveMessage(reqStatus, forMsg, receiveAttrPckg); + + TSmsMsg smsMsg; + TSmsMsg* smsMsgPtr(&smsMsg); + TBool ind(EFalse); + + smsMsg.iSmsClass2 = ETrue; + smsMsg.iDeleteAfterClientAck = ETrue; + smsMsg.iSmsMsg.Copy(KMessage); + + TMockLtsyData2 compTsyData(ind, smsMsgPtr); + compTsyData.SerialiseL(data); + + iMockLTSY.CompleteL(KMockLtsyDispatchSmsNotifyReceiveSmsMessageIndId, KErrNone, data); + + User::WaitForRequest(reqStatus); + ASSERT_EQUALS(KErrNone, reqStatus.Int()); + AssertMockLtsyStatusL(); + + expTsyData.SerialiseL(data); + + iMockLTSY.ExpectL(MLtsyDispatchSmsNackSmsStored::KLtsyDispatchSmsNackSmsStoredApiId, data); + iMockLTSY.CompleteL(MLtsyDispatchSmsNackSmsStored::KLtsyDispatchSmsNackSmsStoredApiId, KErrGeneral); + + messaging.NackSmsStored(reqStatus, KMessage, rpCause); + + User::WaitForRequest(reqStatus); + ASSERT_EQUALS(KErrGeneral, reqStatus.Int()); + + AssertMockLtsyStatusL(); + + //------------------------------------------------------------------------- + // TEST C1: Unsuccessful completion request of + // RMobileSmsMessaging::NackSmsStored when there are no sms received. + //------------------------------------------------------------------------- + + messaging.NackSmsStored(reqStatus, KMessage, rpCause); + + User::WaitForRequest(reqStatus); + ASSERT_EQUALS(KErrNotReady, reqStatus.Int()); + + AssertMockLtsyStatusL(); + + //------------------------------------------------------------------------- + // TEST E: Unsolicited completion of RMobileSmsMessaging::NackSmsStored + // from LTSY. + //------------------------------------------------------------------------- + + iMockLTSY.NotifyTerminated(mockLtsyStatus); + + iMockLTSY.CompleteL(MLtsyDispatchSmsNackSmsStored::KLtsyDispatchSmsNackSmsStoredApiId, KErrNone); + + User::WaitForRequest(mockLtsyStatus); + ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int()); + AssertMockLtsyStatusL(); + + CleanupStack::PopAndDestroy(3, this); + } + +/** +@SYMTestCaseID BA-CTSYD-DIS-SMS-UN0005 +@SYMComponent telephony_ctsy +@SYMTestCaseDesc Test support in CTSY for RMobileSmsMessaging::ReceiveMessage() +@SYMTestPriority High +@SYMTestActions Invokes ReceiveMessage() +@SYMTestExpectedResults Pass +@SYMTestType UT + */ +void CCTsySmsFU::TestUnit0005L() + { + OpenEtelServerL(EUseExtendedError); + CleanupStack::PushL(TCleanupItem(Cleanup,this)); + OpenPhoneL(); + + RMobileSmsMessaging messaging; + TInt err = messaging.Open(iPhone); + ASSERT_EQUALS(KErrNone, err); + CleanupClosePushL(messaging); + + RBuf8 data; + CleanupClosePushL(data); + + TRequestStatus reqStatus; + TRequestStatus mockLtsyStatus; + RMobileSmsMessaging::TMobileSmsReceiveAttributesV1 receiveAttr; + RMobileSmsMessaging::TMobileSmsReceiveAttributesV1Pckg receiveAttrPckg(receiveAttr); + + _LIT8(KMessage, "Happy New Year"); + TBuf8<100> forMsg; + + //------------------------------------------------------------------------- + // TEST B: failure on completion of pending request from LTSY->CTSY + //------------------------------------------------------------------------- + + messaging.ReceiveMessage(reqStatus, forMsg, receiveAttrPckg); + + TSmsMsg smsMsg; + TSmsMsg* smsMsgPtr(&smsMsg); + TBool ind(EFalse); + + smsMsg.iSmsClass2 = ETrue; + smsMsg.iDeleteAfterClientAck = ETrue; + smsMsg.iSmsMsg.Copy(KMessage); + + TMockLtsyData2 compTsyData(ind, smsMsgPtr); + compTsyData.SerialiseL(data); + + iMockLTSY.CompleteL(KMockLtsyDispatchSmsNotifyReceiveSmsMessageIndId, KErrGeneral, data); + + User::WaitForRequest(reqStatus); + ASSERT_EQUALS(KErrGeneral, reqStatus.Int()); + + AssertMockLtsyStatusL(); + + //------------------------------------------------------------------------- + // TEST E: Unsolicited completion of RMobileSmsMessaging::ReceiveMessage + // from LTSY. + //------------------------------------------------------------------------- + + iMockLTSY.NotifyTerminated(mockLtsyStatus); + + iMockLTSY.CompleteL(KMockLtsyDispatchSmsNotifyReceiveSmsMessageIndId, KErrNone, data); + + TDesC8* zeroPtr(NULL); + TInt rpCause(KErrGsmSMSUnspecifiedProtocolError); + TMockLtsyData2 expTsyData(zeroPtr, rpCause); + + data.Close(); + expTsyData.SerialiseL(data); + + iMockLTSY.ExpectL(MLtsyDispatchSmsNackSmsStored::KLtsyDispatchSmsNackSmsStoredApiId, data); + + User::WaitForRequest(mockLtsyStatus); + ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int()); + + AssertMockLtsyStatusL(); + + CleanupStack::PopAndDestroy(3, this); + } + +/** +@SYMTestCaseID BA-CTSY-SMSM-SRSR-0006 +@SYMComponent telephony_ctsy +@SYMTestCaseDesc Test support in CTSY for RMobileSmsMessaging::ResumeSmsReception +@SYMTestPriority High +@SYMTestActions Invokes RMobileSmsMessaging::ResumeSmsReception +@SYMTestExpectedResults Pass +@SYMTestType CT +*/ +void CCTsySmsFU::TestUnit0006L() + { + OpenEtelServerL(EUseExtendedError); + CleanupStack::PushL(TCleanupItem(Cleanup,this)); + OpenPhoneL(); + + RBuf8 data; + CleanupClosePushL(data); + + RMobileSmsMessaging messaging; + TInt err = messaging.Open(iPhone); + ASSERT_EQUALS(KErrNone, err); + CleanupClosePushL(messaging); + + TRequestStatus reqStatus; + + //------------------------------------------------------------------------- + // TEST A: failure to dispatch request to LTSY + //------------------------------------------------------------------------- + + iMockLTSY.ExpectL(MLtsyDispatchSmsResumeSmsReception::KLtsyDispatchSmsResumeSmsReceptionApiId, KErrNotSupported); + + messaging.ResumeSmsReception(reqStatus); + User::WaitForRequest(reqStatus); + ASSERT_EQUALS(KErrNotSupported, reqStatus.Int()); + + AssertMockLtsyStatusL(); + + //------------------------------------------------------------------------- + // TEST B: failure on completion of pending request from LTSY->CTSY + //------------------------------------------------------------------------- + + iMockLTSY.ExpectL(MLtsyDispatchSmsResumeSmsReception::KLtsyDispatchSmsResumeSmsReceptionApiId); + + messaging.ResumeSmsReception(reqStatus); + + iMockLTSY.CompleteL(MLtsyDispatchSmsResumeSmsReception::KLtsyDispatchSmsResumeSmsReceptionApiId, KErrGeneral); + + User::WaitForRequest(reqStatus); + ASSERT_EQUALS(KErrGeneral, reqStatus.Int()); + + AssertMockLtsyStatusL(); + + //------------------------------------------------------------------------- + // TEST C: Successful completion request of + // RMobileSmsMessaging::ResumeSmsReception when result is not cached. + //------------------------------------------------------------------------- + + iMockLTSY.ExpectL(MLtsyDispatchSmsResumeSmsReception::KLtsyDispatchSmsResumeSmsReceptionApiId); + + messaging.ResumeSmsReception(reqStatus); + + iMockLTSY.CompleteL(MLtsyDispatchSmsResumeSmsReception::KLtsyDispatchSmsResumeSmsReceptionApiId, KErrNone); + + User::WaitForRequest(reqStatus); + ASSERT_EQUALS(KErrNone, reqStatus.Int()); + + AssertMockLtsyStatusL(); + + //------------------------------------------------------------------------- + // TEST E: Unsolicited completion of RMobileSmsMessaging::ResumeSmsReception + // from LTSY. + //------------------------------------------------------------------------- + + TRequestStatus mockLtsyStatus; + iMockLTSY.NotifyTerminated(mockLtsyStatus); + + iMockLTSY.CompleteL(MLtsyDispatchSmsResumeSmsReception::KLtsyDispatchSmsResumeSmsReceptionApiId, KErrNone); + + User::WaitForRequest(mockLtsyStatus); + ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int()); + + CleanupStack::PopAndDestroy(3, this); + } + + +/** +@SYMTestCaseID BA-CTSY-SMSM-SSM-0007 +@SYMComponent telephony_ctsy +@SYMTestCaseDesc Test support in CTSY for RMobileSmsMessaging::SendMessage +@SYMTestPriority High +@SYMTestActions Invokes RMobileSmsMessaging::SendMessage +@SYMTestExpectedResults Pass +@SYMTestType CT +*/ +void CCTsySmsFU::TestUnit0007L() + { + + OpenEtelServerL(EUseExtendedError); + CleanupStack::PushL(TCleanupItem(Cleanup,this)); + OpenPhoneL(); + + RBuf8 data; + CleanupClosePushL(data); + + RMobileSmsMessaging messaging; + TInt err = messaging.Open(iPhone); + ASSERT_EQUALS(KErrNone, err); + CleanupClosePushL(messaging); + + //------------------------------------------------------------------------- + // TEST A: failure to dispatch request to LTSY + //------------------------------------------------------------------------- + + _LIT8(KMessage, "Hello"); + TBuf8<32> tmpName(KMessage); + + TRequestStatus reqStatus; + RMobileSmsMessaging::TMobileSmsSendAttributesV1 expectSmsAttr; + RMobileSmsMessaging::TMobileSmsSendAttributesV1 smsAttr; + RMobileSmsMessaging::TMobileSmsSendAttributesV1Pckg smsAttrPckg(smsAttr); + + TSendSmsDataAndAttributes dataAndAttr; + dataAndAttr.iIpc = EMobileSmsMessagingSendMessage; + dataAndAttr.iAttributes = &expectSmsAttr; + dataAndAttr.iMsgData = &tmpName; + + TDesC8* msgPtr = dataAndAttr.iMsgData; + TMockLtsyData5< RMobilePhone::TMobileAddress, + TDesC8*, + RMobileSmsMessaging::TMobileSmsDataFormat, + RMobilePhone::TMobileAddress, + TBool + > expTsyData(smsAttr.iDestination, msgPtr, smsAttr.iDataFormat, smsAttr.iGsmServiceCentre, smsAttr.iMore); + + expTsyData.SerialiseL(data); + iMockLTSY.ExpectL(MLtsyDispatchSmsSendSmsMessage::KLtsyDispatchSmsSendSmsMessageApiId, data, KErrNotSupported); + data.Close(); + + messaging.SendMessage(reqStatus, tmpName, smsAttrPckg); + User::WaitForRequest(reqStatus); + ASSERT_EQUALS(KErrNotSupported, reqStatus.Int()); + + AssertMockLtsyStatusL(); + + + //------------------------------------------------------------------------- + // TEST C: Successful completion request of + // RMobileSmsMessaging::SendMessage when result is not cached. + //------------------------------------------------------------------------- + + _LIT(KNum, "+7903030303"); + _LIT8(KSubmit, "Submit"); + + const TInt16 KMsgRef(25); + TInt16 msgRef(KMsgRef); + TBuf8 smsMsg(KMessage); + TMockLtsyData2 > compTsyData(msgRef, smsMsg); + + smsAttr.iGsmServiceCentre.iTypeOfNumber = RMobilePhone::EInternationalNumber; + smsAttr.iGsmServiceCentre.iNumberPlan = RMobilePhone::EIsdnNumberPlan; + smsAttr.iGsmServiceCentre.iTelNumber.Copy(KNum); + smsAttr.iCdmaServiceCategory = 0; + smsAttr.iCdmaTeleservice = 0; + smsAttr.iDataFormat = RMobileSmsMessaging::EFormatGsmTpdu; + smsAttr.iFlags = 0; + smsAttr.iMsgRef = 0; + smsAttr.iSubmitReport = KSubmit; + smsAttr.iMore = EFalse; + smsAttr.iDestination.iTypeOfNumber = RMobilePhone::EInternationalNumber; + smsAttr.iDestination.iNumberPlan = RMobilePhone::EIsdnNumberPlan; + smsAttr.iDestination.iTelNumber.Copy(KNum); + + expectSmsAttr = smsAttr; + + tmpName.SetLength(0); + smsMsg.SetLength(0); + + + expTsyData.SerialiseL(data); + iMockLTSY.ExpectL(MLtsyDispatchSmsSendSmsMessage::KLtsyDispatchSmsSendSmsMessageApiId, data); + data.Close(); + + compTsyData.SerialiseL(data); + iMockLTSY.CompleteL(MLtsyDispatchSmsSendSmsMessage::KLtsyDispatchSmsSendSmsMessageApiId, KErrNone, data, 10); + + messaging.SendMessage(reqStatus, tmpName, smsAttrPckg); + User::WaitForRequest(reqStatus); + ASSERT_EQUALS(KErrNone, reqStatus.Int()); + + ASSERT_EQUALS(RMobilePhone::EInternationalNumber, smsAttr.iGsmServiceCentre.iTypeOfNumber); + ASSERT_EQUALS(RMobilePhone::EIsdnNumberPlan, smsAttr.iGsmServiceCentre.iNumberPlan); + ASSERT_EQUALS(0, smsAttr.iGsmServiceCentre.iTelNumber.Compare(KNum)); + ASSERT_EQUALS(0, smsAttr.iCdmaServiceCategory); + ASSERT_EQUALS(0, smsAttr.iCdmaTeleservice); + ASSERT_EQUALS(RMobileSmsMessaging::EFormatGsmTpdu, smsAttr.iDataFormat); + ASSERT_TRUE(RMobileSmsMessaging::KMessageReference == smsAttr.iFlags); + ASSERT_TRUE(KMsgRef == smsAttr.iMsgRef); + ASSERT_EQUALS(0, smsAttr.iSubmitReport.Compare(KSubmit)); + ASSERT_TRUE(EFalse == smsAttr.iMore); + ASSERT_EQUALS(RMobilePhone::EInternationalNumber, smsAttr.iDestination.iTypeOfNumber); + ASSERT_EQUALS(RMobilePhone::EIsdnNumberPlan, smsAttr.iDestination.iNumberPlan); + ASSERT_EQUALS(0, smsAttr.iDestination.iTelNumber.Compare(KNum)); + + AssertMockLtsyStatusL(); + + //------------------------------------------------------------------------- + // TEST D: Unsolicited completion of RMobileSmsMessaging::SendMessage + // from LTSY. + //------------------------------------------------------------------------- + + TRequestStatus mockLtsyStatus; + iMockLTSY.NotifyTerminated(mockLtsyStatus); + + iMockLTSY.CompleteL(MLtsyDispatchSmsSendSmsMessage::KLtsyDispatchSmsSendSmsMessageApiId, KErrNone, data, 10); + data.Close(); + + User::WaitForRequest(mockLtsyStatus); + ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int()); + AssertMockLtsyStatusL(); + + CleanupStack::PopAndDestroy(3, this); + + } + + +/** +@SYMTestCaseID BA-CTSY-SMSM-SSMNFC-0008 +@SYMComponent telephony_ctsy +@SYMTestCaseDesc Test support in CTSY for RMobileSmsMessaging::SendMessageNoFdnCheck +@SYMTestPriority High +@SYMTestActions Invokes RMobileSmsMessaging::SendMessageNoFdnCheck +@SYMTestExpectedResults Pass +@SYMTestType CT +*/ +void CCTsySmsFU::TestUnit0008L() + { + OpenEtelServerL(EUseExtendedError); + CleanupStack::PushL(TCleanupItem(Cleanup,this)); + OpenPhoneL(); + + RBuf8 data; + CleanupClosePushL(data); + + RMobileSmsMessaging messaging; + TInt err = messaging.Open(iPhone); + ASSERT_EQUALS(KErrNone, err); + CleanupClosePushL(messaging); + + + _LIT8(KMessage, "Merry christmas"); + TBuf8<32> tmpName(KMessage); + + TRequestStatus reqStatus; + RMobileSmsMessaging::TMobileSmsSendAttributesV1 smsAttr; + RMobileSmsMessaging::TMobileSmsSendAttributesV1Pckg smsAttrPckg(smsAttr); + + TSendSmsDataAndAttributes dataAndAttr; + dataAndAttr.iIpc = EMobileSmsMessagingSendMessageNoFdnCheck; + dataAndAttr.iAttributes = &smsAttr; + dataAndAttr.iMsgData = &tmpName; + + TDesC8* msgPtr = dataAndAttr.iMsgData; + TMockLtsyData5< RMobilePhone::TMobileAddress, + TDesC8*, + RMobileSmsMessaging::TMobileSmsDataFormat, + RMobilePhone::TMobileAddress, + TBool + > expTsyData(smsAttr.iDestination, msgPtr, smsAttr.iDataFormat, smsAttr.iGsmServiceCentre, smsAttr.iMore); + expTsyData.SerialiseL(data); + data.Close(); + + + //------------------------------------------------------------------------- + // TEST A: Successful completion request of + // RMobileSmsMessaging::SendMessage. + //------------------------------------------------------------------------- + + _LIT8(KSubmit, "Submit"); + _LIT(KNum, "+7903030303"); + + smsAttr.iGsmServiceCentre.iTypeOfNumber = RMobilePhone::EInternationalNumber; + smsAttr.iGsmServiceCentre.iNumberPlan = RMobilePhone::EIsdnNumberPlan; + smsAttr.iGsmServiceCentre.iTelNumber.Copy(KNum); + smsAttr.iCdmaServiceCategory = 0; + smsAttr.iCdmaTeleservice = 0; + smsAttr.iDataFormat = RMobileSmsMessaging::EFormatGsmTpdu; + smsAttr.iFlags = 0; + smsAttr.iMsgRef = 0; + smsAttr.iSubmitReport = KSubmit; + smsAttr.iMore = EFalse; + smsAttr.iDestination.iTypeOfNumber = RMobilePhone::EInternationalNumber; + smsAttr.iDestination.iNumberPlan = RMobilePhone::EIsdnNumberPlan; + smsAttr.iDestination.iTelNumber.Copy(KNum); + + data.Close(); + expTsyData.SerialiseL(data); + iMockLTSY.ExpectL(MLtsyDispatchSmsSendSmsMessageNoFdnCheck::KLtsyDispatchSmsSendSmsMessageNoFdnCheckApiId, data); + + const TInt16 KMsgRef(25); + TInt16 msgRef(KMsgRef); + TBuf8 smsMsg(KMessage); + TMockLtsyData2 > compTsyData(msgRef, smsMsg); + data.Close(); + compTsyData.SerialiseL(data); + iMockLTSY.CompleteL(MLtsyDispatchSmsSendSmsMessageNoFdnCheck::KLtsyDispatchSmsSendSmsMessageNoFdnCheckApiId, KErrNone, data, 10); + + messaging.SendMessageNoFdnCheck(reqStatus, tmpName, smsAttrPckg); + User::WaitForRequest(reqStatus); + + + ASSERT_EQUALS(KErrNone, reqStatus.Int()); + + ASSERT_EQUALS(RMobilePhone::EInternationalNumber, smsAttr.iGsmServiceCentre.iTypeOfNumber); + ASSERT_EQUALS(RMobilePhone::EIsdnNumberPlan, smsAttr.iGsmServiceCentre.iNumberPlan); + ASSERT_EQUALS(0, smsAttr.iGsmServiceCentre.iTelNumber.Compare(KNum)); + ASSERT_EQUALS(0, smsAttr.iCdmaServiceCategory); + ASSERT_EQUALS(0, smsAttr.iCdmaTeleservice); + ASSERT_EQUALS(RMobileSmsMessaging::EFormatGsmTpdu, smsAttr.iDataFormat); + ASSERT_TRUE((RMobileSmsMessaging::KMessageReference | RMobileSmsMessaging::KGsmSubmitReport) + == smsAttr.iFlags); + ASSERT_TRUE(KMsgRef == smsAttr.iMsgRef); + ASSERT_EQUALS(0, smsAttr.iSubmitReport.Compare(KMessage)); + ASSERT_TRUE(EFalse == smsAttr.iMore); + ASSERT_EQUALS(RMobilePhone::EInternationalNumber, smsAttr.iDestination.iTypeOfNumber); + ASSERT_EQUALS(RMobilePhone::EIsdnNumberPlan, smsAttr.iDestination.iNumberPlan); + ASSERT_EQUALS(0, smsAttr.iDestination.iTelNumber.Compare(KNum)); + + AssertMockLtsyStatusL(); + + + //------------------------------------------------------------------------- + // TEST B: Unsolicited completion of RMobileSmsMessaging::SendMessage + // from LTSY. + //------------------------------------------------------------------------- + + data.Close(); + compTsyData.SerialiseL(data); + + TRequestStatus mockLtsyStatus; + iMockLTSY.NotifyTerminated(mockLtsyStatus); + + iMockLTSY.CompleteL(MLtsyDispatchSmsSendSmsMessageNoFdnCheck::KLtsyDispatchSmsSendSmsMessageNoFdnCheckApiId, KErrNone, data, 10); + + User::WaitForRequest(mockLtsyStatus); + ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int()); + + + //------------------------------------------------------------------------- + // TEST C: failure to dispatch request to LTSY + //------------------------------------------------------------------------- + + data.Close(); + expTsyData.SerialiseL(data); + iMockLTSY.ExpectL(MLtsyDispatchSmsSendSmsMessageNoFdnCheck::KLtsyDispatchSmsSendSmsMessageNoFdnCheckApiId, data, KErrNotSupported); + + messaging.SendMessageNoFdnCheck(reqStatus, tmpName, smsAttrPckg); + User::WaitForRequest(reqStatus); + ASSERT_EQUALS(KErrNotSupported, reqStatus.Int()); + + AssertMockLtsyStatusL(); + CleanupStack::PopAndDestroy(3, this); + } + +/** +@SYMTestCaseID BA-CTSY-SMSM-SSMNFC-0009 +@SYMComponent telephony_ctsy +@SYMTestCaseDesc Test support in CTSY for multiple client requests to RMobileSmsMessaging::SetMoSmsBearer +@SYMTestPriority High +@SYMTestActions Invokes multiple client requests to RMobileSmsMessaging::SetMoSmsBearer +@SYMTestExpectedResults Pass +@SYMTestType CT +*/ +void CCTsySmsFU::TestUnit0009L() + { + + OpenEtelServerL(EUseExtendedError); + CleanupStack::PushL(TCleanupItem(Cleanup,this)); + OpenPhoneL(); + + RBuf8 data; + CleanupClosePushL(data); + + // Open second client + RTelServer telServer2; + TInt ret = telServer2.Connect(); + ASSERT_EQUALS(KErrNone, ret); + CleanupClosePushL(telServer2); + + RMobilePhone phone2; + ret = phone2.Open(telServer2,KMmTsyPhoneName); + ASSERT_EQUALS(KErrNone, ret); + CleanupClosePushL(phone2); + + + RMobileSmsMessaging messaging; + TInt err = messaging.Open(iPhone); + ASSERT_EQUALS(KErrNone, err); + CleanupClosePushL(messaging); + + RMobileSmsMessaging messaging2; + err = messaging2.Open(phone2); + ASSERT_EQUALS(KErrNone, err); + CleanupClosePushL(messaging2); + + + TRequestStatus reqStatus; + TRequestStatus reqStatus2; + RMobileSmsMessaging::TMobileSmsBearer smsBearer(RMobileSmsMessaging::ESmsBearerCircuitPreferred); + RMobileSmsMessaging::TMobileSmsBearer smsBearer2(RMobileSmsMessaging::ESmsBearerPacketOnly); + + + //------------------------------------------------------------------------- + // Test A: Test multiple clients requesting RMobileSmsMessaging::SetMoSmsBearer + //------------------------------------------------------------------------- + + TMockLtsyData1 expTsyData(smsBearer); + expTsyData.SerialiseL(data); + iMockLTSY.ExpectL(MLtsyDispatchSmsSetMoSmsBearer::KLtsyDispatchSmsSetMoSmsBearerApiId, data); + + messaging.SetMoSmsBearer(reqStatus, smsBearer); + messaging2.SetMoSmsBearer(reqStatus2, smsBearer2); + + + iMockLTSY.CompleteL(MLtsyDispatchSmsSetMoSmsBearer::KLtsyDispatchSmsSetMoSmsBearerApiId, KErrNone); + User::WaitForRequest(reqStatus); + ASSERT_EQUALS(KErrNone, reqStatus.Int()); + + User::WaitForRequest(reqStatus2); + ASSERT_EQUALS(KErrServerBusy, reqStatus2.Int()); + + AssertMockLtsyStatusL(); + + CleanupStack::PopAndDestroy(6, this); + } + +/** +@SYMTestCaseID BA-CTSY-SMSM-SSMNFC-0010 +@SYMComponent telephony_ctsy +@SYMTestCaseDesc Test support in CTSY for RMobileSmsMessaging::StoreSmspListL +@SYMTestPriority High +@SYMTestActions Invokes multiple client requests to RMobileSmsMessaging::StoreSmspListL +@SYMTestExpectedResults Pass +@SYMTestType CT +*/ + +void CCTsySmsFU::TestUnit0010L() + { + + OpenEtelServerL(EUseExtendedError); + CleanupStack::PushL(TCleanupItem(Cleanup,this)); + OpenPhoneL(); + + RBuf8 data; + CleanupClosePushL(data); + + RMobileSmsMessaging messaging; + TInt err = messaging.Open(iPhone); + ASSERT_EQUALS(KErrNone, err); + CleanupClosePushL(messaging); + + TRequestStatus reqStatus; + CMobilePhoneSmspList* smspListPtr = CMobilePhoneSmspList::NewL(); + CleanupStack::PushL(smspListPtr); + + + //------------------------------------------------------------------------- + // TEST A: failure to dispatch request to LTSY + //------------------------------------------------------------------------- + + RMobileSmsMessaging::TMobileSmspEntryV1 smspEntry; + smspListPtr->AddEntryL(smspEntry); + + TMockLtsyData1 smspEntryData(smspEntry); + smspEntryData.SerialiseL(data); + iMockLTSY.ExpectL(MLtsyDispatchSmsStoreSmspListEntry::KLtsyDispatchSmsStoreSmspListEntryApiId, data, KErrNotSupported); + + messaging.StoreSmspListL(reqStatus, smspListPtr); + User::WaitForRequest(reqStatus); + ASSERT_EQUALS(KErrNotSupported, reqStatus.Int()); + + AssertMockLtsyStatusL(); + + //------------------------------------------------------------------------- + // TEST B: failure on completion of pending request from LTSY->CTSY + //------------------------------------------------------------------------- + + iMockLTSY.ExpectL(MLtsyDispatchSmsStoreSmspListEntry::KLtsyDispatchSmsStoreSmspListEntryApiId, data); + + messaging.StoreSmspListL(reqStatus, smspListPtr); + + iMockLTSY.CompleteL(MLtsyDispatchSmsStoreSmspListEntry::KLtsyDispatchSmsStoreSmspListEntryApiId, KErrGeneral); + + User::WaitForRequest(reqStatus); + ASSERT_EQUALS(KErrGeneral, reqStatus.Int()); + + AssertMockLtsyStatusL(); + + //------------------------------------------------------------------------- + // TEST C: Successful completion request of + // RMobileSmsMessaging::StoreSmspListL when result is not cached. + //------------------------------------------------------------------------- + + iMockLTSY.ExpectL(MLtsyDispatchSmsStoreSmspListEntry::KLtsyDispatchSmsStoreSmspListEntryApiId, data); + + messaging.StoreSmspListL(reqStatus, smspListPtr); + + iMockLTSY.CompleteL(MLtsyDispatchSmsStoreSmspListEntry::KLtsyDispatchSmsStoreSmspListEntryApiId, KErrNone); + + User::WaitForRequest(reqStatus); + ASSERT_EQUALS(KErrNone, reqStatus.Int()); + + AssertMockLtsyStatusL(); + + //------------------------------------------------------------------------- + // TEST D: Unsolicited completion of RMobileSmsMessaging::StoreSmspListL + // from LTSY. + //------------------------------------------------------------------------- + + TRequestStatus mockLtsyStatus; + iMockLTSY.NotifyTerminated(mockLtsyStatus); + + iMockLTSY.CompleteL(MLtsyDispatchSmsStoreSmspListEntry::KLtsyDispatchSmsStoreSmspListEntryApiId, KErrNone); + + User::WaitForRequest(mockLtsyStatus); + ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int()); + + AssertMockLtsyStatusL(); + CleanupStack::PopAndDestroy(4, this); + + } + +