--- a/telephonyserverplugins/ctsydispatchlayer/test/dispatchertests/dispatchsrc/cctsycellbroadcastfu.cpp Mon May 03 13:37:20 2010 +0300
+++ b/telephonyserverplugins/ctsydispatchlayer/test/dispatchertests/dispatchsrc/cctsycellbroadcastfu.cpp Thu May 06 15:10:38 2010 +0100
@@ -1,573 +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
- }
+// 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
+ }