--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/telephonyserverplugins/ctsydispatchlayer/test/dispatchertests/dispatchsrc/cctsycellbroadcastfu.cpp Tue Feb 02 01:41:59 2010 +0200
@@ -0,0 +1,573 @@
+// 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 CellBroadcastControl in the Common TSY.
+*/
+
+#include "cctsycellbroadcastfu.h"
+#include <ctsy/rmmcustomapi.h>
+#include <etel.h>
+#include <etelmm.h>
+#include <et_clsvr.h>
+#include <ctsy/mmtsy_names.h>
+#include <ctsy/serviceapi/mmtsy_ipcdefs.h>
+#include <test/tmockltsydata.h>
+#include <ctsy/serviceapi/gsmerror.h>
+#include <ctsy/ltsy/mltsydispatchcellbroadcastinterface.h>
+#include "mockltsyindicatorids.h"
+
+CTestSuite* CCTsyCellBroadcastFU::CreateSuiteL(const TDesC& aName)
+ {
+ SUB_SUITE;
+
+ //add use-case tests
+ ADD_TEST_STEP_ISO_CPP(CCTsyCellBroadcastFU, TestUseCase0001L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyCellBroadcastFU, TestUseCase0002L);
+
+ //add other unit tests
+ ADD_TEST_STEP_ISO_CPP(CCTsyCellBroadcastFU, TestUnit0001L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyCellBroadcastFU, TestUnit0002L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyCellBroadcastFU, TestUnit0003L);
+
+ END_SUITE;
+ }
+
+void CCTsyCellBroadcastFU::InitSimCbTopicsL(RMmCustomAPI& aCustomApi, const TDesC& aTopic, TInt aNum)
+ {
+
+ RBuf8 compData;
+ CleanupClosePushL(compData);
+
+ CArrayFixFlat<RMmCustomAPI::TSimCbTopic>* simTopicArray = new ( ELeave ) CArrayFixFlat
+ <RMmCustomAPI::TSimCbTopic>(1);
+ CleanupStack::PushL(simTopicArray);
+
+ RMmCustomAPI::TSimCbTopic topic;
+ topic.iNumber = aNum;
+ topic.iName.Copy(aTopic);
+
+ simTopicArray->AppendL( topic );
+
+ TMockLtsyData1< CArrayFixFlat<RMmCustomAPI::TSimCbTopic>* > ltsyData(simTopicArray);
+ ltsyData.SerialiseL(compData);
+
+ iMockLTSY.ExpectL( MLtsyDispatchCellBroadcastStartSimCbTopicBrowsing::KLtsyDispatchCellBroadcastStartSimCbTopicBrowsingApiId);
+ iMockLTSY.CompleteL( MLtsyDispatchCellBroadcastStartSimCbTopicBrowsing::KLtsyDispatchCellBroadcastStartSimCbTopicBrowsingApiId, KErrNone, compData);
+ TInt ret = aCustomApi.StartSimCbTopicBrowsing();
+ ASSERT_EQUALS(KErrNone, ret);
+
+ CleanupStack::PopAndDestroy(2); //simTopicArray, compData
+ }
+
+//
+// Use-case tests
+//
+
+/**
+@SYMTestCaseID BA-CTSYD-DIS-CELLBROADCAST-UC0001
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for ReceiveMessage(), CompleteReceiveMessageGsmCbs(), SetFilterSettingL(), GetFilterSetting()
+@SYMTestPriority High
+@SYMTestActions Invokes ReceiveMessageL(), CompleteReceiveMessageGsmCbs(), SetFilterSettingL(), GetFilterSetting()
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+ */
+void CCTsyCellBroadcastFU::TestUseCase0001L()
+ {
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RBuf8 data;
+ CleanupClosePushL(data);
+
+ RMobileBroadcastMessaging messaging;
+ TInt err = messaging.Open(iPhone);
+ ASSERT_EQUALS(KErrNone, err);
+ CleanupClosePushL(messaging);
+
+ RMobileBroadcastMessaging::TMobilePhoneBroadcastFilter expectData = RMobileBroadcastMessaging::EBroadcastAcceptAll;
+
+ TMockLtsyData1<RMobileBroadcastMessaging::TMobilePhoneBroadcastFilter> expectLtsyData(expectData);
+ expectLtsyData.SerialiseL(data);
+ iMockLTSY.ExpectL(MLtsyDispatchCellBroadcastActivateBroadcastReceiveMessage::KLtsyDispatchCellBroadcastActivateBroadcastReceiveMessageApiId, data);
+ iMockLTSY.CompleteL(MLtsyDispatchCellBroadcastActivateBroadcastReceiveMessage::KLtsyDispatchCellBroadcastActivateBroadcastReceiveMessageApiId, KErrNone);
+
+ _LIT8(KMessage,"CBSMESSAGE");
+ TDesC8* cbsMessage = const_cast<TDesC8*>(&KMessage);
+ TMockLtsyData1<TDesC8*> completeLtsyData(cbsMessage);
+ data.Close();
+ completeLtsyData.SerialiseL(data);
+ iMockLTSY.CompleteL(KMockLtsyDispatchCellBroadcastGsmBroadcastNotifyMessageReceivedIndId, KErrNone, data);
+
+ TRequestStatus reqStatus;
+ RMobileBroadcastMessaging::TBroadcastPageData msgData;
+ RMobileBroadcastMessaging::TMobileBroadcastAttributesV1 attributes;
+ RMobileBroadcastMessaging::TMobileBroadcastAttributesV1Pckg msgAttributes(attributes);
+ messaging.ReceiveMessage(reqStatus, msgData, msgAttributes);
+
+ User::WaitForRequest(reqStatus);
+ ASSERT_EQUALS(KErrNone, reqStatus.Int());
+ AssertMockLtsyStatusL();
+
+ // iCbRoutingActivated == ETrue now: we can test SetFilterSetting()
+
+ RMobileBroadcastMessaging::TMobilePhoneBroadcastFilter setting;
+ err = messaging.GetFilterSetting(setting);
+ ASSERT_EQUALS(KErrNone, err);
+ ASSERT_EQUALS(RMobileBroadcastMessaging::EBroadcastAcceptAll, setting);
+ AssertMockLtsyStatusL();
+
+ // mockltsy setup:
+ expectData = RMobileBroadcastMessaging::EBroadcastAcceptNone;
+
+ TMockLtsyData1<RMobileBroadcastMessaging::TMobilePhoneBroadcastFilter> expectLtsyData2(expectData);
+ data.Close();
+ expectLtsyData2.SerialiseL(data);
+ iMockLTSY.ExpectL(MLtsyDispatchCellBroadcastSetBroadcastFilterSetting::KLtsyDispatchCellBroadcastSetBroadcastFilterSettingApiId, data);
+ iMockLTSY.CompleteL(MLtsyDispatchCellBroadcastSetBroadcastFilterSetting::KLtsyDispatchCellBroadcastSetBroadcastFilterSettingApiId, KErrNone);
+
+ // change setting
+ messaging.SetFilterSetting(reqStatus, RMobileBroadcastMessaging::EBroadcastAcceptNone);
+ User::WaitForRequest(reqStatus);
+ ASSERT_EQUALS(KErrNone, reqStatus.Int());
+ AssertMockLtsyStatusL();
+
+ err = messaging.GetFilterSetting(setting);
+ ASSERT_EQUALS(KErrNone, err);
+ ASSERT_EQUALS(RMobileBroadcastMessaging::EBroadcastAcceptNone, setting);
+ AssertMockLtsyStatusL();
+
+ CleanupStack::PopAndDestroy(3, this); // messaging, data, this
+ }
+
+/**
+@SYMTestCaseID BA-CTSYD-DIS-CELLBROADCAST-UC0002
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for CompleteReceiveMessageWcdmaCbs()
+@SYMTestPriority High
+@SYMTestActions Invokes CompleteReceiveMessageWcdmaCbs()
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+ */
+void CCTsyCellBroadcastFU::TestUseCase0002L()
+ {
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RBuf8 data;
+ CleanupClosePushL(data);
+
+ RMobileBroadcastMessaging messaging;
+ TInt err = messaging.Open(iPhone);
+ ASSERT_EQUALS(KErrNone, err);
+ CleanupClosePushL(messaging);
+
+ RMobileBroadcastMessaging::TMobilePhoneBroadcastFilter expectData = RMobileBroadcastMessaging::EBroadcastAcceptAll;
+
+ TMockLtsyData1<RMobileBroadcastMessaging::TMobilePhoneBroadcastFilter> expectLtsyData(expectData);
+ expectLtsyData.SerialiseL(data);
+ iMockLTSY.ExpectL(MLtsyDispatchCellBroadcastActivateBroadcastReceiveMessage::KLtsyDispatchCellBroadcastActivateBroadcastReceiveMessageApiId, data);
+ iMockLTSY.CompleteL(MLtsyDispatchCellBroadcastActivateBroadcastReceiveMessage::KLtsyDispatchCellBroadcastActivateBroadcastReceiveMessageApiId, KErrNone);
+
+ TUint32 expectedFlags(RMobileBroadcastMessaging::KBroadcastDataFormat);
+ RMobileBroadcastMessaging::TMobileBroadcastDataFormat
+ expectedFormat(RMobileBroadcastMessaging::EFormatGsmTpdu);
+
+ _LIT8(KMessage, "Hello0");
+ TBuf8<RMobileBroadcastMessaging::KBroadcastPageSize> tmpName(KMessage);
+ TInt wcdmaPageNumber(1);
+ DispatcherCellBroadcast::TWcdmaCbsMsgBase wcdmaCbsMsg0;
+ wcdmaCbsMsg0.iNumberOfPages = 2;
+ wcdmaCbsMsg0.iMessageType = 3;
+ wcdmaCbsMsg0.iMessageId = 4;
+ wcdmaCbsMsg0.iSerialNum = 5;
+ wcdmaCbsMsg0.iDCS = 6;
+ wcdmaCbsMsg0.iInfoLength = 5;
+
+ TBool moreToCome = EFalse;
+ TDesC8* strPtr = &tmpName;
+ TMockLtsyData3<TDesC8* , DispatcherCellBroadcast::TWcdmaCbsMsgBase , TBool > completeWcdmaLtsyData(strPtr, wcdmaCbsMsg0, moreToCome);
+ data.Close();
+ completeWcdmaLtsyData.SerialiseL(data);
+
+ iMockLTSY.CompleteL(KMockLtsyDispatchCellBroadcastWcdmaBroadcastMessageReceivedIndId, KErrNone, data);
+
+ TRequestStatus reqStatus;
+ RMobileBroadcastMessaging::TBroadcastPageData msgData;
+ RMobileBroadcastMessaging::TMobileBroadcastAttributesV2 wcdmaAttributes;
+ RMobileBroadcastMessaging::TMobileBroadcastAttributesV2Pckg wcdmaMsgAttributes(wcdmaAttributes);
+
+ messaging.ReceiveMessage(reqStatus, msgData, wcdmaMsgAttributes);
+
+ User::WaitForRequest(reqStatus);
+
+ ASSERT_EQUALS(KErrNone, reqStatus.Int());
+
+
+ // generate a message from the original message with the page number at the end
+ TBuf8<RMobileBroadcastMessaging::KBroadcastPageSize> messageWithPageNumber;
+ messageWithPageNumber.Copy(tmpName);
+ _LIT8(KFormat, "%c");
+ TBuf8<2> abc(KFormat);
+ // Append pagenumber to end of CBS message
+ messageWithPageNumber.AppendFormat( abc, wcdmaPageNumber);
+
+ ASSERT_EQUALS(messageWithPageNumber, msgData);
+
+ ASSERT_EQUALS(expectedFlags, wcdmaAttributes.iFlags);
+ expectedFormat = RMobileBroadcastMessaging::EFormatWcdmaTpdu;
+ ASSERT_EQUALS(expectedFormat, wcdmaAttributes.iFormat);
+ ASSERT_EQUALS(wcdmaCbsMsg0.iNumberOfPages, wcdmaAttributes.iNumberOfPages);
+ ASSERT_EQUALS(wcdmaCbsMsg0.iMessageType, wcdmaAttributes.iMessageType);
+ ASSERT_EQUALS(wcdmaCbsMsg0.iMessageId, wcdmaAttributes.iMessageId);
+ ASSERT_EQUALS(wcdmaCbsMsg0.iSerialNum, wcdmaAttributes.iSerialNum);
+ ASSERT_EQUALS(wcdmaCbsMsg0.iDCS, wcdmaAttributes.iDCS);
+
+ AssertMockLtsyStatusL();
+
+ RMobileBroadcastMessaging::TMobilePhoneBroadcastFilter expectData2 = RMobileBroadcastMessaging::EBroadcastAcceptNone;
+ TMockLtsyData1<RMobileBroadcastMessaging::TMobilePhoneBroadcastFilter> expectLtsyData2(expectData2);
+ data.Close();
+ expectLtsyData2.SerialiseL(data);
+ iMockLTSY.ExpectL(MLtsyDispatchCellBroadcastReceiveMessageCancel::KLtsyDispatchCellBroadcastReceiveMessageCancelApiId, data);
+
+ CleanupStack::PopAndDestroy(1); // messaging
+
+ TRequestStatus mockLtsyStatus;
+ iMockLTSY.NotifyTerminated(mockLtsyStatus);
+ iMockLTSY.CompleteL(MLtsyDispatchCellBroadcastReceiveMessageCancel::KLtsyDispatchCellBroadcastReceiveMessageCancelApiId, KErrNone);
+ User::WaitForRequest(mockLtsyStatus);
+ ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
+ AssertMockLtsyStatusL();
+
+ CleanupStack::PopAndDestroy(2, this); // data, this
+ }
+
+//
+// Other unit tests
+//
+
+/**
+@SYMTestCaseID BA-CTSYD-DIS-CELLBROADCAST-UN0001
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for StartSimCbTopicBrowsing
+@SYMTestPriority High
+@SYMTestActions Invokes RMmCustomAPI::StartSimCbTopicBrowsing()
+@SYMTestExpectedResults Pass
+@SYMTestType UT
+ */
+void CCTsyCellBroadcastFU::TestUnit0001L()
+ {
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RMmCustomAPI customAPI;
+ OpenCustomApiLC(customAPI);
+
+ //-------------------------------------------------------------------------
+ // TEST B: failure on completion of pending request from LTSY->CTSY
+ //-------------------------------------------------------------------------
+
+ RBuf8 compData;
+ CleanupClosePushL(compData);
+
+ CArrayFixFlat<RMmCustomAPI::TSimCbTopic>* simTopicArray = new ( ELeave ) CArrayFixFlat
+ <RMmCustomAPI::TSimCbTopic>(1);
+ CleanupStack::PushL(simTopicArray);
+
+ _LIT(KTopic, "Topic");
+ RMmCustomAPI::TSimCbTopic topic;
+ topic.iNumber = 0;
+ topic.iName.Copy(KTopic);
+
+ simTopicArray->AppendL( topic );
+
+ TMockLtsyData1< CArrayFixFlat<RMmCustomAPI::TSimCbTopic>* > ltsyData(simTopicArray);
+ ltsyData.SerialiseL(compData);
+
+ iMockLTSY.ExpectL( MLtsyDispatchCellBroadcastStartSimCbTopicBrowsing::KLtsyDispatchCellBroadcastStartSimCbTopicBrowsingApiId);
+ iMockLTSY.CompleteL( MLtsyDispatchCellBroadcastStartSimCbTopicBrowsing::KLtsyDispatchCellBroadcastStartSimCbTopicBrowsingApiId, KErrGeneral, compData);
+
+ TInt ret = customAPI.StartSimCbTopicBrowsing();
+
+ ASSERT_EQUALS(KErrGeneral, ret);
+ AssertMockLtsyStatusL();
+
+ //-------------------------------------------------------------------------
+ // TEST C: Successful completion request of
+ // RMmCustomAPI::StartSimCbTopicBrowsing when result is not cached.
+ //-------------------------------------------------------------------------
+
+ iMockLTSY.ExpectL( MLtsyDispatchCellBroadcastStartSimCbTopicBrowsing::KLtsyDispatchCellBroadcastStartSimCbTopicBrowsingApiId);
+ iMockLTSY.CompleteL( MLtsyDispatchCellBroadcastStartSimCbTopicBrowsing::KLtsyDispatchCellBroadcastStartSimCbTopicBrowsingApiId, KErrNone, compData);
+
+ ret = customAPI.StartSimCbTopicBrowsing();
+
+ ASSERT_EQUALS(KErrNone, ret);
+ AssertMockLtsyStatusL();
+
+ //-------------------------------------------------------------------------
+ // TEST E: Unsolicited completion of RMmCustomAPI::StartSimCbTopicBrowsing
+ // from LTSY.
+ //-------------------------------------------------------------------------
+
+ TRequestStatus mockLtsyStatus;
+ iMockLTSY.NotifyTerminated(mockLtsyStatus);
+
+ iMockLTSY.CompleteL( MLtsyDispatchCellBroadcastStartSimCbTopicBrowsing::KLtsyDispatchCellBroadcastStartSimCbTopicBrowsingApiId, KErrNone, compData);
+
+ User::WaitForRequest(mockLtsyStatus);
+ ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
+
+ AssertMockLtsyStatusL();
+
+ CleanupStack::PopAndDestroy(4, this);
+ }
+
+/**
+@SYMTestCaseID BA-CTSYD-DIS-CELLBROADCAST-UN0002
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for DeleteSimCbTopic
+@SYMTestPriority High
+@SYMTestActions Invokes RMmCustomAPI::DeleteSimCbTopic()
+@SYMTestExpectedResults Pass
+@SYMTestType UT
+ */
+void CCTsyCellBroadcastFU::TestUnit0002L()
+ {
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RMmCustomAPI customAPI;
+ OpenCustomApiLC(customAPI);
+
+ TRequestStatus requestStatus;
+
+ RBuf8 expectData;
+ CleanupClosePushL(expectData);
+
+ InitSimCbTopicsL(customAPI, _L("Topic"), 0);
+
+ TUint index(0);
+ TUint expIndex(index);
+ TBool deleteFlag(ETrue);
+
+ TMockLtsyData2< TUint, TBool > ltsyData2(expIndex, deleteFlag);
+ ltsyData2.SerialiseL(expectData);
+
+ //-------------------------------------------------------------------------
+ // TEST B: failure on completion of pending request from LTSY->CTSY
+ //-------------------------------------------------------------------------
+
+ iMockLTSY.ExpectL( MLtsyDispatchCellBroadcastDeleteSimCbTopic::KLtsyDispatchCellBroadcastDeleteSimCbTopicApiId, expectData);
+ iMockLTSY.CompleteL( MLtsyDispatchCellBroadcastDeleteSimCbTopic::KLtsyDispatchCellBroadcastDeleteSimCbTopicApiId, KErrGeneral);
+
+ customAPI.DeleteSimCbTopic(requestStatus, index);
+
+ User::WaitForRequest(requestStatus);
+ ASSERT_EQUALS(KErrGeneral, requestStatus.Int());
+ AssertMockLtsyStatusL();
+
+ //-------------------------------------------------------------------------
+ // TEST E: Unsolicited completion of RMmCustomAPI::DeleteSimCbTopic
+ // from LTSY.
+ //-------------------------------------------------------------------------
+
+ TRequestStatus mockLtsyStatus;
+ iMockLTSY.NotifyTerminated(mockLtsyStatus);
+
+ iMockLTSY.CompleteL( MLtsyDispatchCellBroadcastDeleteSimCbTopic::KLtsyDispatchCellBroadcastDeleteSimCbTopicApiId, KErrNone);
+
+ User::WaitForRequest(mockLtsyStatus);
+ ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
+ AssertMockLtsyStatusL();
+
+ //-------------------------------------------------------------------------
+ // TEST C2: Successful completion request of
+ // RMmCustomAPI::DeleteSimCbTopic when result is not cached.
+ //-------------------------------------------------------------------------
+
+ index = 0;
+ expIndex = index;
+ deleteFlag = ETrue;
+ expectData.Close();
+ ltsyData2.SerialiseL(expectData);
+
+ iMockLTSY.ExpectL( MLtsyDispatchCellBroadcastDeleteSimCbTopic::KLtsyDispatchCellBroadcastDeleteSimCbTopicApiId, expectData);
+ iMockLTSY.CompleteL( MLtsyDispatchCellBroadcastDeleteSimCbTopic::KLtsyDispatchCellBroadcastDeleteSimCbTopicApiId, KErrNone);
+
+ customAPI.DeleteSimCbTopic(requestStatus, index);
+
+ User::WaitForRequest(requestStatus);
+ ASSERT_EQUALS(KErrNone, requestStatus.Int());
+ AssertMockLtsyStatusL();
+
+ CleanupStack::PopAndDestroy(3, this);
+
+ }
+
+/**
+@SYMTestCaseID BA-CTSYD-DIS-CELLBROADCAST-UN0003
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for CancelAsyncRequest()
+@SYMTestPriority High
+@SYMTestActions Invokes CancelAsyncRequest()
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+ */
+void CCTsyCellBroadcastFU::TestUnit0003L()
+ {
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ TRequestStatus mockLtsyStatus;
+ iMockLTSY.NotifyTerminated(mockLtsyStatus);
+
+ RBuf8 data;
+ CleanupClosePushL(data);
+
+ RMobileBroadcastMessaging messaging;
+ TInt err = messaging.Open(iPhone);
+ ASSERT_EQUALS(KErrNone, err);
+ CleanupClosePushL(messaging);
+
+ //-------------------------------------------------------------------------
+ // Test cancelling of RMobileBroadcastMessaging::ReceiveMessage
+ //-------------------------------------------------------------------------
+
+ RMobileBroadcastMessaging::TMobilePhoneBroadcastFilter expectData = RMobileBroadcastMessaging::EBroadcastAcceptAll;
+
+ TMockLtsyData1<RMobileBroadcastMessaging::TMobilePhoneBroadcastFilter> expectLtsyData(expectData);
+ expectLtsyData.SerialiseL(data);
+ iMockLTSY.ExpectL(MLtsyDispatchCellBroadcastActivateBroadcastReceiveMessage::KLtsyDispatchCellBroadcastActivateBroadcastReceiveMessageApiId, data);
+
+ _LIT8(KMessage,"CBSMESSAGE");
+ TDesC8* cbsMessage = const_cast<TDesC8*>(&KMessage);
+ TMockLtsyData1<TDesC8*> completeLtsyData(cbsMessage);
+ data.Close();
+ completeLtsyData.SerialiseL(data);
+ iMockLTSY.CompleteL(KMockLtsyDispatchCellBroadcastGsmBroadcastNotifyMessageReceivedIndId, KErrNone, data);
+
+ TRequestStatus reqStatus;
+ RMobileBroadcastMessaging::TBroadcastPageData msgData;
+ RMobileBroadcastMessaging::TMobileBroadcastAttributesV1 attributes;
+ RMobileBroadcastMessaging::TMobileBroadcastAttributesV1Pckg msgAttributes(attributes);
+ messaging.ReceiveMessage(reqStatus, msgData, msgAttributes);
+
+ messaging.CancelAsyncRequest(EMobileBroadcastMessagingReceiveMessage);
+
+ User::WaitForRequest(reqStatus);
+ ASSERT_EQUALS(KErrCancel, reqStatus.Int());
+
+ // Wait for completion of iMockLTSY.NotifyTerminated
+ User::WaitForRequest(mockLtsyStatus);
+ ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
+
+ AssertMockLtsyStatusL();
+
+ //-------------------------------------------------------------------------
+ // Test cancelling, increase coverage
+ //-------------------------------------------------------------------------
+
+ // setting environment ( CMmBroadcastTsy::iCbRoutingActivated to ETrue)
+ iMockLTSY.NotifyTerminated(reqStatus);
+ iMockLTSY.CompleteL(MLtsyDispatchCellBroadcastActivateBroadcastReceiveMessage::KLtsyDispatchCellBroadcastActivateBroadcastReceiveMessageApiId, KErrNone);
+ User::WaitForRequest(reqStatus);
+ ASSERT_EQUALS(KErrNone, reqStatus.Int());
+ AssertMockLtsyStatusL();
+
+ // execute request
+ messaging.ReceiveMessage(reqStatus, msgData , msgAttributes);
+
+ // setting cancel request
+ expectData = RMobileBroadcastMessaging::EBroadcastAcceptNone;
+ data.Close();
+ expectLtsyData.SerialiseL(data);
+ iMockLTSY.ExpectL(MLtsyDispatchCellBroadcastReceiveMessageCancel::KLtsyDispatchCellBroadcastReceiveMessageCancelApiId, data, KErrNotSupported);
+
+ messaging.CancelAsyncRequest(EMobileBroadcastMessagingReceiveMessage);
+
+ // ReceiveMessage completion
+ User::WaitForRequest(reqStatus);
+ ASSERT_EQUALS(KErrNotSupported, reqStatus.Int());
+
+ AssertMockLtsyStatusL();
+
+ //-------------------------------------------------------------------------
+ // Test cancelling, increase coverage
+ //-------------------------------------------------------------------------
+
+ // setting environement ( CMmBroadcastTsy::iCbRoutingActivated to ETrue)
+ iMockLTSY.NotifyTerminated(reqStatus);
+ iMockLTSY.CompleteL(MLtsyDispatchCellBroadcastActivateBroadcastReceiveMessage::KLtsyDispatchCellBroadcastActivateBroadcastReceiveMessageApiId, KErrNone);
+ User::WaitForRequest(reqStatus);
+ ASSERT_EQUALS(KErrNone, reqStatus.Int());
+ AssertMockLtsyStatusL();
+
+ // execute request
+ messaging.ReceiveMessage(reqStatus, msgData , msgAttributes);
+
+ // setting cancel request
+ data.Close();
+ expectLtsyData.SerialiseL(data);
+ iMockLTSY.ExpectL(MLtsyDispatchCellBroadcastReceiveMessageCancel::KLtsyDispatchCellBroadcastReceiveMessageCancelApiId, data);
+ iMockLTSY.CompleteL(MLtsyDispatchCellBroadcastReceiveMessageCancel::KLtsyDispatchCellBroadcastReceiveMessageCancelApiId, KErrGeneral);
+
+ messaging.CancelAsyncRequest(EMobileBroadcastMessagingReceiveMessage);
+
+ // ReceiveMessage completion
+ User::WaitForRequest(reqStatus);
+ ASSERT_EQUALS(KErrGeneral, reqStatus.Int());
+
+ AssertMockLtsyStatusL();
+
+ //-------------------------------------------------------------------------
+ // Test cancelling, increase coverage
+ //-------------------------------------------------------------------------
+
+ // setting environement ( CMmBroadcastTsy::iCbRoutingActivated to ETrue)
+ iMockLTSY.NotifyTerminated(reqStatus);
+ iMockLTSY.CompleteL(MLtsyDispatchCellBroadcastActivateBroadcastReceiveMessage::KLtsyDispatchCellBroadcastActivateBroadcastReceiveMessageApiId, KErrNone);
+ User::WaitForRequest(reqStatus);
+ ASSERT_EQUALS(KErrNone, reqStatus.Int());
+ AssertMockLtsyStatusL();
+
+ // execute request
+ messaging.ReceiveMessage(reqStatus, msgData, msgAttributes);
+
+ // setting cancel request
+ data.Close();
+ expectLtsyData.SerialiseL(data);
+ iMockLTSY.ExpectL(MLtsyDispatchCellBroadcastReceiveMessageCancel::KLtsyDispatchCellBroadcastReceiveMessageCancelApiId, data);
+ iMockLTSY.CompleteL(MLtsyDispatchCellBroadcastReceiveMessageCancel::KLtsyDispatchCellBroadcastReceiveMessageCancelApiId, KErrNone);
+
+ messaging.CancelAsyncRequest(EMobileBroadcastMessagingReceiveMessage);
+
+ // ReceiveMessage completion
+ User::WaitForRequest(reqStatus);
+ ASSERT_EQUALS(KErrCancel, reqStatus.Int());
+
+ AssertMockLtsyStatusL();
+
+ CleanupStack::PopAndDestroy(3, this); // messaging, data, this
+ }