--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/telephonyserverplugins/common_tsy/test/integration/src/cctsyintegrationtestbroadcastmessaging.cpp Tue Feb 02 01:41:59 2010 +0200
@@ -0,0 +1,2264 @@
+// Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Test step definitions for the BroadcastMessaging functional unit.
+//
+//
+
+/**
+ @internalTechnology
+*/
+
+#include "cctsyintegrationtestbroadcastmessaging.h"
+#include "listretrievalhelpers.h"
+
+
+
+CCTSYIntegrationTestBroadcastMessagingBase::CCTSYIntegrationTestBroadcastMessagingBase(CEtelSessionMgr& aEtelSessionMgr)
+ : CCTSYIntegrationTestSuiteStepBase(aEtelSessionMgr), iBroadcastMessagingTestHelper(*this), iNetworkTestHelper(*this)
+/**
+ * Constructor
+ */
+ {
+ }
+
+CCTSYIntegrationTestBroadcastMessagingBase::~CCTSYIntegrationTestBroadcastMessagingBase()
+/*
+ * Destructor
+ */
+ {
+ }
+
+
+CCTSYIntegrationTestBroadcastMessaging0001::CCTSYIntegrationTestBroadcastMessaging0001(CEtelSessionMgr& aEtelSessionMgr)
+ : CCTSYIntegrationTestBroadcastMessagingBase(aEtelSessionMgr)
+/**
+ * Constructor.
+ */
+ {
+ SetTestStepName(CCTSYIntegrationTestBroadcastMessaging0001::GetTestStepName());
+ }
+
+CCTSYIntegrationTestBroadcastMessaging0001::~CCTSYIntegrationTestBroadcastMessaging0001()
+/**
+ * Destructor.
+ */
+ {
+ }
+
+TBool CCTSYIntegrationTestBroadcastMessagingBase::AssertValidBroadcastMessage(const RMobileBroadcastMessaging::TMobileBroadcastAttributesV2 &aBraodcastAttributes)
+/*
+ * This function checks the validity of received Broadcastmessage
+ *
+ * @param aBraodcastAttributes Reference to attributes of received messages.
+ * @return true if the received message is not valid.
+ */
+ {
+ TBool ret=EFalse;
+
+ // Check RMobileBroadcastMessaging::ReceiveMessage completes with aMsgAttributes.iFlags in set of KBroadcastDataFormat
+ ASSERT_BITS_SET(aBraodcastAttributes.iFlags, RMobileBroadcastMessaging::KBroadcastDataFormat ,KNoUnwantedBits, _L("RMobileBroadcastMessaging::ReceiveMessage did not return desired Message Flags"));
+
+ // Check RMobileBroadcastMessaging::ReceiveMessage completes with aMsgAttributes.iFormat of EFormatGsmTpdu
+ ASSERT_EQUALS(aBraodcastAttributes.iFormat, RMobileBroadcastMessaging::EFormatGsmTpdu, _L("RMobileBroadcastMessaging::ReceiveMessage did not return desired Message Format"));
+
+ // Check RMobileBroadcastMessaging::ReceiveMessage completes with aMsgAttributes.iDCS > 0
+ ASSERT_TRUE(aBraodcastAttributes.iDCS > 0, _L("RMobileBroadcastMessaging::ReceiveMessage did not return DCS > 0"));
+
+ // Check RMobileBroadcastMessaging::ReceiveMessage completes with aMsgAttributes.iMessageId > 0
+ ASSERT_TRUE(aBraodcastAttributes.iMessageId> 0, _L("RMobileBroadcastMessaging::ReceiveMessage did not return MessageId > 0"));
+
+ // Check RMobileBroadcastMessaging::ReceiveMessage completes with aMsgAttributes.iMessageType of EGsmBroadcastId
+ ASSERT_EQUALS((int)aBraodcastAttributes.iMessageType , (int)RMobileBroadcastMessaging::EGsmBroadcastId, _L("RMobileBroadcastMessaging::ReceiveMessage did not return desired MessageType"));
+
+ // Check RMobileBroadcastMessaging::ReceiveMessage completes with aMsgAttributes.iNumberOfPages > 0
+ ASSERT_TRUE(aBraodcastAttributes.iNumberOfPages > 0, _L("RMobileBroadcastMessaging::ReceiveMessage did not return NumberOfPages > 0"));
+
+ if((aBraodcastAttributes.iFlags && RMobileBroadcastMessaging::KBroadcastDataFormat)
+ && (aBraodcastAttributes.iFormat== RMobileBroadcastMessaging::EFormatGsmTpdu)
+ && (aBraodcastAttributes.iDCS>0) && (aBraodcastAttributes.iMessageId> 0)
+ && ((int)aBraodcastAttributes.iMessageType ==(int)RMobileBroadcastMessaging::EGsmBroadcastId)
+ && (aBraodcastAttributes.iNumberOfPages > 0) )
+ {
+ ret= ETrue;
+ }
+
+ return ret;
+ }
+
+TVerdict CCTSYIntegrationTestBroadcastMessaging0001::doTestStepL()
+/**
+ * @SYMTestCaseID BA-CTSY-INT-BRMSG-0001
+ * @SYMFssID BA/CTSY/BRMSG-0001
+ * @SYMTestCaseDesc Set the broadcast messaging simple filter.
+ * @SYMTestPriority High
+ * @SYMTestActions RMobileBroadcastMessaging::NotifyFilterSettingChange,RMobileBroadcastMessaging::GetFilterSetting, RMobileBroadcastMessaging::SetFilterSetting
+ * @SYMTestExpectedResults Pass - Simple filter notifications complete and are set correctly.
+ * @SYMTestType CIT
+ * @SYMTestCaseDependencies live/automatic
+ *
+ * Reason for test: Verify filter change notification completes and correct filter has been set.
+ *
+ * @return - TVerdict code
+ */
+ {
+
+ //
+ // SET UP
+ //
+ RMobilePhone& mobilePhone = iEtelSessionMgr.GetPhoneL(KMainServer, KMainPhone);
+
+ RMobileBroadcastMessaging& broadcastMessaging = iEtelSessionMgr.GetBroadcastMessagingL(KMainServer, KMainPhone, KMainBroadcastMessaging) ;
+
+ // Ensure RMobileBroadcastMessaging::GetCaps returns aCaps.iFilterCaps in set of KCapsSimpleFilter
+ RMobileBroadcastMessaging::TMobileBroadcastCapsV1 caps;
+ RMobileBroadcastMessaging::TMobileBroadcastCapsV1Pckg capPkg(caps);
+ TUint32 expectedCaps = RMobileBroadcastMessaging::KCapsSimpleFilter;
+
+ CHECK_EQUALS_L(broadcastMessaging.GetCaps(capPkg), KErrNone, _L("RMobileBroadcastMessaging::GetCaps returned with an error"));
+ CHECK_BITS_SET_L(caps.iFilterCaps,expectedCaps ,KNoUnwantedBits, _L("RMobileBroadcastMessaging::GetCaps did not return desired Filter caps"));
+
+ // Ensure RMobileBroadcastMessaging::GetCaps returns aCaps.iModeCaps in set of KCapsGsmTpduFormat
+ CHECK_BITS_SET_L(caps.iModeCaps, RMobileBroadcastMessaging::KCapsGsmTpduFormat, KNoUnwantedBits, _L("RMobileBroadcastMessaging::GetCaps did not return desired Mode caps"));
+
+ // Registered with the network
+ TInt ret = iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(mobilePhone);
+ CHECK_EQUALS_L(ret, KErrNone,
+ _L("RMobilePhone::NotifyNetworkRegistrationStatusChange network registration failed"));
+
+
+ //
+ // SET UP END
+ //
+
+ StartTest();
+
+ //
+ // TEST START
+ //
+
+ // === Set the simple filter setting to accept none ===
+
+ // Post a notification RMobileBroadcastMessaging::NotifyFilterSettingChange
+ RMobileBroadcastMessaging::TMobilePhoneBroadcastFilter filterSetting;
+ TExtEtelRequestStatus notifyFilterSettingChangeStatus(broadcastMessaging, EMobileBroadcastMessagingNotifyFilterSettingChange);
+ CleanupStack::PushL(notifyFilterSettingChangeStatus);
+ broadcastMessaging.NotifyFilterSettingChange(notifyFilterSettingChangeStatus, filterSetting);
+
+ // Set the filter with RMobileBroadcastMessaging::SetFilterSetting and aSetting=EBroadcastAcceptNone
+ RMobileBroadcastMessaging::TMobilePhoneBroadcastFilter filterSetting1 = RMobileBroadcastMessaging::EBroadcastAcceptNone;
+ TExtEtelRequestStatus setFilterSettingStatus(broadcastMessaging, EMobileBroadcastMessagingSetFilterSetting);
+ CleanupStack::PushL(setFilterSettingStatus);
+ broadcastMessaging.SetFilterSetting(setFilterSettingStatus, filterSetting1);
+ ASSERT_EQUALS(WaitForRequestWithTimeOut(setFilterSettingStatus, ETimeMedium),KErrNone, _L("RMobileBroadcastMessaging::SetFilterSetting timed out"));
+ ASSERT_EQUALS(setFilterSettingStatus.Int(), KErrNone, _L("RMobileBroadcastMessaging::SetFilterSetting returned with an error"));
+
+ // Check RMobileBroadcastMessaging::NotifyFilterSettingChange completes with aSetting=EBroadcastAcceptNone
+ iBroadcastMessagingTestHelper.WaitForMobileBroadcastMessagingNotifyFilterSettingChange(
+ broadcastMessaging,
+ notifyFilterSettingChangeStatus,
+ filterSetting,
+ filterSetting1,
+ KErrNone );
+
+ // Check RMobileBroadcastMessaging::GetFilterSetting returns aSetting=EBroadcastAcceptNone
+ RMobileBroadcastMessaging::TMobilePhoneBroadcastFilter filterSettingObtained;
+ ASSERT_EQUALS(broadcastMessaging.GetFilterSetting(filterSettingObtained), KErrNone, _L("RMobileBroadcastMessaging::GetFilterSetting returned with an error"));
+ ASSERT_EQUALS(filterSettingObtained, RMobileBroadcastMessaging::EBroadcastAcceptNone, _L("RMobileBroadcastMessaging::GetFilterSetting did not return EBroadcastAcceptNone"))
+
+ // === Set the simple filter setting to accept all ===
+
+ // Post a notification RMobileBroadcastMessaging::NotifyFilterSettingChange
+ broadcastMessaging.NotifyFilterSettingChange(notifyFilterSettingChangeStatus, filterSetting);
+ ERR_PRINTF2(_L("<font color=Orange>$CTSYKnownFailure: defect id = %d</font>"), 10026);
+ ERR_PRINTF2(_L("<font color=Orange>$CTSYKnownFailure: defect id = %d</font>"), 10027);
+ CHECK_EQUALS_L(1, 2, _L("This test has been made to leave intentially.The purpose of this leave is to avoid the board crashing"));
+
+ // Set the filter with RMobileBroadcastMessaging::SetFilterSetting and aSetting=EBroadcastAcceptAll
+ RMobileBroadcastMessaging::TMobilePhoneBroadcastFilter filterSetting2 = RMobileBroadcastMessaging::EBroadcastAcceptAll;
+ broadcastMessaging.SetFilterSetting(setFilterSettingStatus, filterSetting2);
+ ASSERT_EQUALS(WaitForRequestWithTimeOut(setFilterSettingStatus, ETimeMedium),KErrNone, _L("RMobileBroadcastMessaging::SetFilterSetting timed out"));
+ ASSERT_EQUALS(setFilterSettingStatus.Int(), KErrNone, _L("RMobileBroadcastMessaging::SetFilterSetting returned with an error"));
+
+ // Check RMobileBroadcastMessaging::NotifyFilterSettingChange completes with aSetting=EBroadcastAcceptAll
+ iBroadcastMessagingTestHelper.WaitForMobileBroadcastMessagingNotifyFilterSettingChange(
+ broadcastMessaging,
+ notifyFilterSettingChangeStatus,
+ filterSetting,
+ filterSetting2,
+ KErrNone );
+
+ // Check RMobileBroadcastMessaging::GetFilterSetting returns aSetting=EBroadcastAcceptAll
+ ASSERT_EQUALS(broadcastMessaging.GetFilterSetting(filterSettingObtained), KErrNone, _L("RMobileBroadcastMessaging::GetFilterSetting returned with an error"));
+ ASSERT_EQUALS(filterSettingObtained, RMobileBroadcastMessaging::EBroadcastAcceptAll, _L("RMobileBroadcastMessaging::GetFilterSetting did not return EBroadcastAcceptAll"))
+
+ //
+ // TEST END
+ //
+
+ StartCleanup();
+
+ // Pop:
+ // notifyFilterSettingChangeStatus
+ // setFilterSettingStatus
+ CleanupStack::PopAndDestroy(2,¬ifyFilterSettingChangeStatus);
+
+ return TestStepResult();
+ }
+
+TPtrC CCTSYIntegrationTestBroadcastMessaging0001::GetTestStepName()
+/**
+ * @return The test step name.
+ */
+ {
+ return _L("CCTSYIntegrationTestBroadcastMessaging0001");
+ }
+
+
+
+CCTSYIntegrationTestBroadcastMessaging0002::CCTSYIntegrationTestBroadcastMessaging0002(CEtelSessionMgr& aEtelSessionMgr)
+ : CCTSYIntegrationTestBroadcastMessagingBase(aEtelSessionMgr)
+/**
+ * Constructor.
+ */
+ {
+ SetTestStepName(CCTSYIntegrationTestBroadcastMessaging0002::GetTestStepName());
+ }
+
+CCTSYIntegrationTestBroadcastMessaging0002::~CCTSYIntegrationTestBroadcastMessaging0002()
+/**
+ * Destructor.
+ */
+ {
+ }
+
+TVerdict CCTSYIntegrationTestBroadcastMessaging0002::doTestStepL()
+/**
+ * @SYMTestCaseID BA-CTSY-INT-BRMSG-0002
+ * @SYMFssID BA/CTSY/BRMSG-0002
+ * @SYMTestCaseDesc Set the broadcast messaging ID filter
+ * @SYMTestPriority High
+ * @SYMTestActions CRetrieveMobilePhoneBroadcastIdList::Start, RMobileBroadcastMessaging::NotifyFilterSettingChange, CRetrieveMobilePhoneBroadcastIdList::RetrieveListL, RMobileBroadcastMessaging::GetFilterSetting, RMobileBroadcastMessaging::SetFilterSetting, CMobilePhoneBroadcastIdList::Enumerate, RMobileBroadcastMessaging::NotifyBroadcastIdListChange, RMobileBroadcastMessaging::StoreBroadcastIdListL, CMobilePhoneBroadcastIdList::AddRangeEntryL
+ * @SYMTestExpectedResults Pass - Filter setting and notification returned KErrNotSuppoerted and no value can be retrieved .
+ * @SYMTestType CIT
+ * @SYMTestCaseDependencies live/automatic
+ *
+ * Reason for test: Verify filter change notification completes with KErrNotSupported and no filter has been set.
+ *
+ * @return - TVerdict code
+ */
+ {
+
+ //
+ // SET UP
+ //
+ RMobilePhone& mobilePhone = iEtelSessionMgr.GetPhoneL(KMainServer, KMainPhone);
+
+ RMobileBroadcastMessaging& broadcastMessaging = iEtelSessionMgr.GetBroadcastMessagingL(KMainServer, KMainPhone, KMainBroadcastMessaging) ;
+
+ // Ensure RMobileBroadcastMessaging::GetCaps returns aCaps.iModeCaps in set of KCapsGsmTpduFormat
+ RMobileBroadcastMessaging::TMobileBroadcastCapsV1 caps;
+ RMobileBroadcastMessaging::TMobileBroadcastCapsV1Pckg capPkg(caps);
+ CHECK_EQUALS_L(broadcastMessaging.GetCaps(capPkg), KErrNone, _L("RMobileBroadcastMessaging::GetCaps returned with an error"));
+ CHECK_BITS_SET_L(caps.iModeCaps, RMobileBroadcastMessaging::KCapsGsmTpduFormat, KNoUnwantedBits, _L("RMobileBroadcastMessaging::GetCaps did not return desired Mode caps"));
+
+ // Registered with the network
+ TInt ret = iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(mobilePhone);
+ CHECK_EQUALS_L(ret, KErrNone,
+ _L("RMobilePhone::NotifyNetworkRegistrationStatusChange network registration failed"));
+
+ //
+ // SET UP END
+ //
+
+ StartTest();
+
+ //
+ // TEST START
+ //
+
+ // === Set broadcast ID filter ===
+
+ // Create a CMobilePhoneBroadcastIdList with CMobilePhoneBroadcastIdList ::NewL
+ CMobilePhoneBroadcastIdList* broadcastIdList= CMobilePhoneBroadcastIdList::NewL();
+ CleanupStack::PushL(broadcastIdList);
+
+ // Add an entry to the list with CMobilePhoneBroadcastIdList::AddRangeEntryL with aStart.iId=1 and aEnd.iId=100
+ RMobileBroadcastMessaging::TMobileBroadcastIdEntryV1 idEntry;
+ idEntry.iId = 1;
+ RMobileBroadcastMessaging::TMobileBroadcastIdEntryV1 idEntry2;
+ idEntry2.iId = 100;
+ broadcastIdList->AddRangeEntryL(idEntry, idEntry2);
+
+ // Post a notification RMobileBroadcastMessaging::NotifyBroadcastIdListChange
+ TExtEtelRequestStatus notifyBroadcastIdListChangeStatus(broadcastMessaging, EMobileBroadcastMessagingNotifyIdListChange);
+ CleanupStack::PushL(notifyBroadcastIdListChangeStatus);
+ broadcastMessaging.NotifyBroadcastIdListChange(notifyBroadcastIdListChangeStatus);
+
+ // This is deliberate action to open a session because the API in Etelmm allocates memory
+ // The Session Manager should be used in all other places.
+ RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer, KMainPhone);
+ RMobileBroadcastMessaging broadcastMessagingStore;
+ broadcastMessagingStore.Open(phone);
+
+ // Store the broadcast ID list with RMobileBroadcastMessaging::StoreBroadcastIdListL with KErrNotSupported having aIdType=EGsmBroadcastId
+ RMobileBroadcastMessaging::TMobileBroadcastIdType idType=RMobileBroadcastMessaging::EGsmBroadcastId;
+ TExtEtelRequestStatus storeBroadcastIdList(broadcastMessaging, EMobileBroadcastMessagingStoreIdList);
+ CleanupStack::PushL(storeBroadcastIdList);
+ broadcastMessagingStore.StoreBroadcastIdListL(storeBroadcastIdList,broadcastIdList,idType);
+ ASSERT_EQUALS(WaitForRequestWithTimeOut(storeBroadcastIdList, ETimeMedium),KErrNone, _L("RMobileBroadcastMessaging::StoreBroadcastIdListL timed out"));
+ ASSERT_EQUALS(storeBroadcastIdList.Int(), KErrNotSupported, _L("RMobileBroadcastMessaging::StoreBroadcastIdListL did not return KErrNotSupported"));
+ ERR_PRINTF2(_L("<font color=Orange>$CTSYKnownFailure: defect id = %d </font>"), 10028);
+ broadcastMessagingStore.Close();
+
+ // Check RMobileBroadcastMessaging::NotifyBroadcastIdListChange completes with KErrNotSupported
+ iBroadcastMessagingTestHelper.WaitForMobileBroadcastMessagingNotifyBroadcastIdListChange(notifyBroadcastIdListChangeStatus, KErrNotSupported);
+
+ // === Get the broadcast ID filter ===
+
+ // Use helper class for CRetrieveMobilePhoneBroadcastIdList to retrieve the broadcast ID list.
+ TInt err;
+ CRetrieveMobilePhoneBroadcastIdListExec* broadcastIdListExec = CRetrieveMobilePhoneBroadcastIdListHelper::NewL(broadcastMessaging,idType);
+ CleanupStack::PushL(broadcastIdListExec);
+
+ // Get the CMobilePhoneBroadcastIdList list using the helper class function which will call CRetrieveMobilePhoneBroadcastIdList::RetrieveListL
+ CMobilePhoneBroadcastIdList* broadcastIdList2 = broadcastIdListExec ->DoGetList(err);
+ ASSERT_EQUALS(err, KErrNone, _L("CRetrieveMobilePhoneBroadcastIdList::RetrieveListL is not able to get the list"))
+
+ // Check CMobilePhoneBroadcastIdList::Enumerate returns 0
+ ASSERT_EQUALS(broadcastIdList2->Enumerate(),0 , _L("CMobilePhoneBroadcastIdList::Enumerate did not return an 99 as expected"));
+
+ //
+ // TEST END
+ //
+
+ StartCleanup();
+
+ // Pop:
+ // broadcastIdList
+ // notifyBroadcastIdListChangeStatus
+ // storeBroadcastIdList
+ // broadcastIdListExec
+ CleanupStack::PopAndDestroy(4, broadcastIdList);
+
+ return TestStepResult();
+ }
+
+TPtrC CCTSYIntegrationTestBroadcastMessaging0002::GetTestStepName()
+/**
+ * @return The test step name.
+ */
+ {
+ return _L("CCTSYIntegrationTestBroadcastMessaging0002");
+ }
+
+
+
+CCTSYIntegrationTestBroadcastMessaging0003::CCTSYIntegrationTestBroadcastMessaging0003(CEtelSessionMgr& aEtelSessionMgr)
+ : CCTSYIntegrationTestBroadcastMessagingBase(aEtelSessionMgr)
+/**
+ * Constructor.
+ */
+ {
+ SetTestStepName(CCTSYIntegrationTestBroadcastMessaging0003::GetTestStepName());
+ }
+
+CCTSYIntegrationTestBroadcastMessaging0003::~CCTSYIntegrationTestBroadcastMessaging0003()
+/**
+ * Destructor.
+ */
+ {
+ }
+
+TVerdict CCTSYIntegrationTestBroadcastMessaging0003::doTestStepL()
+/**
+ * @SYMTestCaseID BA-CTSY-INT-BRMSG-0003
+ * @SYMFssID BA/CTSY/BRMSG-0003
+ * @SYMTestCaseDesc Receive cell broadcast with different filter settings.
+ * @SYMTestPriority High
+ * @SYMTestActions RMobileBroadcastMessaging::NotifyFilterSettingChange, RMobileBroadcastMessaging::SetLanguageFilter, RMobileBroadcastMessaging::GetFilterSetting, RMobileBroadcastMessaging::SetFilterSetting, RMobileBroadcastMessaging::GetLanguageFilter, RMobileBroadcastMessaging::ReceiveMessage
+ * @SYMTestExpectedResults Pass - Broadcast messages that should not be filtered received. Messages that should be filtered not received.
+ * @SYMTestType CIT
+ * @SYMTestCaseDependencies simulated/manual
+ *
+ * Reason for test: Verify cell broadcast message is received.
+ *
+ * @return - TVerdict code
+ */
+ {
+
+ //
+ // SET UP
+ //
+
+ ERR_PRINTF2(_L("<font color=Orange>$CTSYProblem: defect id = %d</font>"), 10072);
+ User::Leave(KErrNone);
+
+ RMobilePhone& mobilePhone = iEtelSessionMgr.GetPhoneL(KMainServer, KMainPhone);
+
+ RMobileBroadcastMessaging& broadcastMessaging = iEtelSessionMgr.GetBroadcastMessagingL(KMainServer, KMainPhone, KMainBroadcastMessaging) ;
+
+
+ // Ensure RMobileBroadcastMessaging::GetCaps returns aCaps.iFilterCaps in set of KCapsSimpleFilter
+ RMobileBroadcastMessaging::TMobileBroadcastCapsV1 caps;
+ RMobileBroadcastMessaging::TMobileBroadcastCapsV1Pckg capPkg(caps);
+ TUint32 expectedCaps = RMobileBroadcastMessaging::KCapsSimpleFilter;
+
+ CHECK_EQUALS_L(broadcastMessaging.GetCaps(capPkg), KErrNone, _L("RMobileBroadcastMessaging::GetCaps returned with an error"));
+ CHECK_BITS_SET_L(caps.iFilterCaps,expectedCaps ,KNoUnwantedBits, _L("RMobileBroadcastMessaging::GetCaps did not return desired Filter caps"));
+
+ // Ensure RMobileBroadcastMessaging::GetCaps returns aCaps.iModeCaps in set of KCapsGsmTpduFormat
+ CHECK_BITS_SET_L(caps.iModeCaps, RMobileBroadcastMessaging::KCapsGsmTpduFormat, KNoUnwantedBits, _L("RMobileBroadcastMessaging::GetCaps did not return desired Mode caps"));
+
+ // Registered with the network
+ TInt ret = iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(mobilePhone);
+ CHECK_EQUALS_L(ret, KErrNone,
+ _L("RMobilePhone::NotifyNetworkRegistrationStatusChange network registration failed"));
+
+
+
+
+ //
+ // SET UP END
+ //
+
+ StartTest();
+
+ //
+ // TEST START
+ //
+
+ // === Set the simple filter setting to accept all and receive a message ===
+
+ // Post a notification RMobileBroadcastMessaging::NotifyFilterSettingChange
+ RMobileBroadcastMessaging::TMobilePhoneBroadcastFilter filterSetting;
+ TExtEtelRequestStatus notifyFilterSettingChangeStatus(broadcastMessaging, EMobileBroadcastMessagingNotifyFilterSettingChange);
+ CleanupStack::PushL(notifyFilterSettingChangeStatus);
+ broadcastMessaging.NotifyFilterSettingChange(notifyFilterSettingChangeStatus, filterSetting);
+
+ // Set the filter with RMobileBroadcastMessaging::SetFilterSetting and aSetting=EBroadcastAcceptAll
+ RMobileBroadcastMessaging::TMobilePhoneBroadcastFilter filterSetting1 = RMobileBroadcastMessaging::EBroadcastAcceptAll;
+ TExtEtelRequestStatus setFilterSettingStatus(broadcastMessaging, EMobileBroadcastMessagingSetFilterSetting);
+ CleanupStack::PushL(setFilterSettingStatus);
+ broadcastMessaging.SetFilterSetting(setFilterSettingStatus, filterSetting1);
+ ASSERT_EQUALS(WaitForRequestWithTimeOut(setFilterSettingStatus, ETimeMedium),KErrNone, _L("RMobileBroadcastMessaging::SetFilterSetting timed out"));
+ ASSERT_EQUALS(setFilterSettingStatus.Int(), KErrNone, _L("RMobileBroadcastMessaging::SetFilterSetting returned with an error"));
+
+ // Check RMobileBroadcastMessaging::NotifyFilterSettingChange completes with aSetting=EBroadcastAcceptAll
+ iBroadcastMessagingTestHelper.WaitForMobileBroadcastMessagingNotifyFilterSettingChange(
+ broadcastMessaging,
+ notifyFilterSettingChangeStatus,
+ filterSetting,
+ filterSetting1,
+ KErrNone );
+
+ // Check RMobileBroadcastMessaging::GetFilterSetting returns aSetting=EBroadcastAcceptAll
+ RMobileBroadcastMessaging::TMobilePhoneBroadcastFilter filterSettingObtained;
+ ASSERT_EQUALS(broadcastMessaging.GetFilterSetting(filterSettingObtained), KErrNone, _L("RMobileBroadcastMessaging::GetFilterSetting returned with an error"));
+ ASSERT_EQUALS(filterSettingObtained, RMobileBroadcastMessaging::EBroadcastAcceptAll, _L("RMobileBroadcastMessaging::GetFilterSetting did not return EBroadcastAcceptNone"))
+
+ // Call RMobileBroadcastMessaging::ReceiveMessage
+ RMobileBroadcastMessaging::TGsmBroadcastMessageData rxMsgData;
+ RMobileBroadcastMessaging::TMobileBroadcastAttributesV2 rxMsgAttributes;
+ RMobileBroadcastMessaging::TMobileBroadcastAttributesV2Pckg rxMsgAttributePackage(rxMsgAttributes);
+ TExtEtelRequestStatus receiveMessageStatus(broadcastMessaging, EMobileBroadcastMessagingReceiveMessage);
+ CleanupStack::PushL(receiveMessageStatus);
+ broadcastMessaging.ReceiveMessage(receiveMessageStatus, rxMsgData, rxMsgAttributePackage);
+
+ // Simulated network sends a GSM formatted broadcast message.
+ TBuf<120> prompt(_L("Waiting for the CBM, notification of a directly delivered cell broadcast message from the network operator"));
+ DisplayUserInteractionPromptL(prompt); // 30 seconds
+
+ // Check RMobileBroadcastMessaging::ReceiveMessage completes with aMsgData with length > 0 characters
+ ASSERT_EQUALS(WaitForRequestWithTimeOut(receiveMessageStatus, ETimeMedium),KErrNone, _L("RMobileBroadcastMessaging::ReceiveMessage timed out"));
+ ASSERT_EQUALS(receiveMessageStatus.Int(), KErrNone, _L("RMobileBroadcastMessaging::ReceiveMessage returned with an error"));
+ ASSERT_TRUE(rxMsgData.Length()>0, _L("RMobileBroadcastMessaging::ReceiveMessage did not complete with aMsgData with length > 0 characters"));
+
+ ASSERT_TRUE(AssertValidBroadcastMessage(rxMsgAttributes), _L("AssertValidBroadcastMessage returned with failure"));
+
+ // === Set the simple filter setting to accept none and receive a message ===
+
+ // Post a notification RMobileBroadcastMessaging::NotifyFilterSettingChange
+ broadcastMessaging.NotifyFilterSettingChange(notifyFilterSettingChangeStatus, filterSetting);
+ ERR_PRINTF2(_L("<font color=Orange>$CTSYKnownFailure: defect id = %d</font>"), 10027);
+ CHECK_EQUALS_L(1, 2, _L("This test has been made to leave intentially. The purpose of this leave is to avoid the board crashing"));
+
+ // Set the filter with RMobileBroadcastMessaging::SetFilterSetting and aSetting=EBroadcastAcceptNone
+ filterSetting1 = RMobileBroadcastMessaging::EBroadcastAcceptNone;
+ broadcastMessaging.SetFilterSetting(setFilterSettingStatus, filterSetting1);
+ ASSERT_EQUALS(WaitForRequestWithTimeOut(setFilterSettingStatus, ETimeMedium),KErrNone, _L("RMobileBroadcastMessaging::SetFilterSetting timed out"));
+ ASSERT_EQUALS(setFilterSettingStatus.Int(), KErrNone, _L("RMobileBroadcastMessaging::SetFilterSetting returned with an error"));
+
+ // Check RMobileBroadcastMessaging::NotifyFilterSettingChange completes with aSetting=EBroadcastAcceptNone
+ iBroadcastMessagingTestHelper.WaitForMobileBroadcastMessagingNotifyFilterSettingChange(
+ broadcastMessaging,
+ notifyFilterSettingChangeStatus,
+ filterSetting,
+ filterSetting1,
+ KErrNone );
+
+ // Check RMobileBroadcastMessaging::GetFilterSetting returns aSetting=EBroadcastAcceptNone
+ ASSERT_EQUALS(broadcastMessaging.GetFilterSetting(filterSettingObtained), KErrNone, _L("RMobileBroadcastMessaging::GetFilterSetting returned with an error"));
+ ASSERT_EQUALS(filterSettingObtained, RMobileBroadcastMessaging::EBroadcastAcceptNone, _L("RMobileBroadcastMessaging::GetFilterSetting did not return EBroadcastAcceptNone"))
+
+ // Call RMobileBroadcastMessaging::ReceiveMessage
+ broadcastMessaging.ReceiveMessage(receiveMessageStatus, rxMsgData, rxMsgAttributePackage);
+
+ // Simulated network sends a GSM formatted broadcast message.
+ DisplayUserInteractionPromptL(prompt); // 30 seconds
+
+ // Check RMobileBroadcastMessaging::ReceiveMessage is still pending 2 minutes after the message was sent
+ ASSERT_EQUALS(WaitForRequestWithTimeOut(receiveMessageStatus, ETimeVeryLong),KErrTimedOut, _L("RMobileBroadcastMessaging::ReceiveMessage did not pend 2 mins after the message was sent"));
+
+ //
+ // TEST END
+ //
+
+ StartCleanup();
+
+ // Pop:
+ // notifyFilterSettingChangeStatus
+ // setFilterSettingStatus
+ // receiveMessageStatus
+
+ CleanupStack::PopAndDestroy(3,¬ifyFilterSettingChangeStatus);
+
+ return TestStepResult();
+ }
+
+TPtrC CCTSYIntegrationTestBroadcastMessaging0003::GetTestStepName()
+/**
+ * @return The test step name.
+ */
+ {
+ return _L("CCTSYIntegrationTestBroadcastMessaging0003");
+ }
+
+
+
+CCTSYIntegrationTestBroadcastMessaging0004::CCTSYIntegrationTestBroadcastMessaging0004(CEtelSessionMgr& aEtelSessionMgr)
+ : CCTSYIntegrationTestBroadcastMessagingBase(aEtelSessionMgr)
+/**
+ * Constructor.
+ */
+ {
+ SetTestStepName(CCTSYIntegrationTestBroadcastMessaging0004::GetTestStepName());
+ }
+
+CCTSYIntegrationTestBroadcastMessaging0004::~CCTSYIntegrationTestBroadcastMessaging0004()
+/**
+ * Destructor.
+ */
+ {
+ }
+
+TVerdict CCTSYIntegrationTestBroadcastMessaging0004::doTestStepL()
+/**
+ * @SYMTestCaseID BA-CTSY-INT-BRMSG-0004
+ * @SYMFssID BA/CTSY/BRMSG-0004
+ * @SYMTestCaseDesc Receive broadcast messages when ID filter has been defined but filter is set to accept all messages.
+ * @SYMTestPriority High
+ * @SYMTestActions RMobileBroadcastMessaging::GetFilterSetting, RMobileBroadcastMessaging::SetFilterSetting, RMobileBroadcastMessaging::ReceiveMessage, RMobileBroadcastMessaging::NotifyBroadcastIdListChange, RMobileBroadcastMessaging::StoreBroadcastIdListL, CMobilePhoneBroadcastIdList::AddRangeEntryL
+ * @SYMTestExpectedResults Pass - All broadcast messages received when filter is set to accept all.
+ * @SYMTestType CIT
+ * @SYMTestCaseDependencies simulated/manual
+ *
+ * Reason for test: Verify all messages received.
+ *
+ * @return - TVerdict code
+ */
+ {
+
+ //
+ // SET UP
+ //
+
+
+ ERR_PRINTF2(_L("<font color=Orange>$CTSYProblem: defect id = %d</font>"), 10073);
+ User::Leave(KErrNone);
+
+
+ RMobilePhone& mobilePhone = iEtelSessionMgr.GetPhoneL(KMainServer, KMainPhone);
+
+ RMobileBroadcastMessaging& broadcastMessaging = iEtelSessionMgr.GetBroadcastMessagingL(KMainServer, KMainPhone, KMainBroadcastMessaging) ;
+
+ // Ensure RMobileBroadcastMessaging::GetCaps returns aCaps.iFilterCaps in set of KCapsSimpleFilter
+ RMobileBroadcastMessaging::TMobileBroadcastCapsV1 caps;
+ RMobileBroadcastMessaging::TMobileBroadcastCapsV1Pckg capPkg(caps);
+ TUint32 expectedCaps = RMobileBroadcastMessaging::KCapsSimpleFilter;
+
+ CHECK_EQUALS_L(broadcastMessaging.GetCaps(capPkg), KErrNone, _L("RMobileBroadcastMessaging::GetCaps returned with an error"));
+ CHECK_BITS_SET_L(caps.iFilterCaps,expectedCaps ,KNoUnwantedBits, _L("RMobileBroadcastMessaging::GetCaps did not return desired Filter caps"));
+
+ // Ensure RMobileBroadcastMessaging::GetCaps returns aCaps.iModeCaps in set of KCapsGsmTpduFormat
+ CHECK_BITS_SET_L(caps.iModeCaps, RMobileBroadcastMessaging::KCapsGsmTpduFormat, KNoUnwantedBits, _L("RMobileBroadcastMessaging::GetCaps did not return desired Mode caps"));
+
+ // Registered with the network
+ TInt ret = iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(mobilePhone);
+ CHECK_EQUALS_L(ret, KErrNone,
+ _L("RMobilePhone::NotifyNetworkRegistrationStatusChange network registration failed"));
+
+ //
+ // SET UP END
+ //
+
+ StartTest();
+
+ //
+ // TEST START
+ //
+
+
+ // === Set broadcast ID filter ===
+
+ // Create a new CMobilePhoneBroadcastIdList with CMobilePhoneBroadcastIdList ::NewL
+ CMobilePhoneBroadcastIdList* broadcastIdList= CMobilePhoneBroadcastIdList::NewL();
+ CleanupStack::PushL(broadcastIdList);
+
+ // Add an entry to the list with CMobilePhoneBroadcastIdList::AddRangeEntryL with aStart.iId=1 and aEnd.iId=100
+ RMobileBroadcastMessaging::TMobileBroadcastIdEntryV1 idEntry;
+ idEntry.iId = 1;
+ RMobileBroadcastMessaging::TMobileBroadcastIdEntryV1 idEntry2;
+ idEntry2.iId = 100;
+ broadcastIdList->AddRangeEntryL(idEntry, idEntry2);
+
+ // Post a notification RMobileBroadcastMessaging::NotifyBroadcastIdListChange
+ TExtEtelRequestStatus notifyBroadcastIdListChangeStatus(broadcastMessaging, EMobileBroadcastMessagingNotifyIdListChange);
+ CleanupStack::PushL(notifyBroadcastIdListChangeStatus);
+ broadcastMessaging.NotifyBroadcastIdListChange(notifyBroadcastIdListChangeStatus);
+
+ // Store the broadcast ID list with RMobileBroadcastMessaging::StoreBroadcastIdListL with aIdType=EGsmBroadcastId
+ RMobileBroadcastMessaging::TMobileBroadcastIdType idType=RMobileBroadcastMessaging::EGsmBroadcastId;
+ TExtEtelRequestStatus storeBroadcastIdList(broadcastMessaging, EMobileBroadcastMessagingStoreIdList);
+ CleanupStack::PushL(storeBroadcastIdList);
+ broadcastMessaging.StoreBroadcastIdListL(storeBroadcastIdList,broadcastIdList,idType);
+ ASSERT_EQUALS(WaitForRequestWithTimeOut(storeBroadcastIdList, ETimeMedium),KErrNone, _L("RMobileBroadcastMessaging::StoreBroadcastIdListL timed out"));
+ ASSERT_EQUALS(storeBroadcastIdList.Int(), KErrNotSupported, _L("RMobileBroadcastMessaging::StoreBroadcastIdListL did not return KErrNotSupported"));
+ ERR_PRINTF2(_L("<font color=Orange>$CTSYKnownFailure: defect id = %d</font>"), 10028);
+
+ // Check RMobileBroadcastMessaging::NotifyBroadcastIdListChange completes with KRequestPending
+ iBroadcastMessagingTestHelper.WaitForMobileBroadcastMessagingNotifyBroadcastIdListChange(notifyBroadcastIdListChangeStatus, KRequestPending );
+
+ // === Set filter to accept all messages and receive a message within and out of the ID range ===
+
+ // Post a notification RMobileBroadcastMessaging::NotifyFilterSettingChange
+ RMobileBroadcastMessaging::TMobilePhoneBroadcastFilter filterSetting;
+ TExtEtelRequestStatus notifyFilterSettingChangeStatus(broadcastMessaging, EMobileBroadcastMessagingNotifyFilterSettingChange);
+ CleanupStack::PushL(notifyFilterSettingChangeStatus);
+ broadcastMessaging.NotifyFilterSettingChange(notifyFilterSettingChangeStatus, filterSetting);
+
+ // Set the filter with RMobileBroadcastMessaging::SetFilterSetting and aSetting=EBroadcastAcceptAll
+ RMobileBroadcastMessaging::TMobilePhoneBroadcastFilter filterSetting1 = RMobileBroadcastMessaging::EBroadcastAcceptAll;
+ TExtEtelRequestStatus setFilterSettingStatus(broadcastMessaging, EMobileBroadcastMessagingSetFilterSetting);
+ CleanupStack::PushL(setFilterSettingStatus);
+ broadcastMessaging.SetFilterSetting(setFilterSettingStatus, filterSetting1);
+ ASSERT_EQUALS(WaitForRequestWithTimeOut(setFilterSettingStatus, ETimeMedium),KErrNone, _L("RMobileBroadcastMessaging::SetFilterSetting timed out"));
+ ASSERT_EQUALS(setFilterSettingStatus.Int(), KErrNone, _L("RMobileBroadcastMessaging::SetFilterSetting returned with an error"));
+
+ // Check RMobileBroadcastMessaging::NotifyFilterSettingChange completes with aSetting=EBroadcastAcceptAll
+ iBroadcastMessagingTestHelper.WaitForMobileBroadcastMessagingNotifyFilterSettingChange(
+ broadcastMessaging,
+ notifyFilterSettingChangeStatus,
+ filterSetting,
+ filterSetting1,
+ KErrNone );
+
+ // Check RMobileBroadcastMessaging::GetFilterSetting returns aSetting=EBroadcastAcceptAll
+ RMobileBroadcastMessaging::TMobilePhoneBroadcastFilter filterSettingObtained;
+ ASSERT_EQUALS(broadcastMessaging.GetFilterSetting(filterSettingObtained), KErrNone, _L("RMobileBroadcastMessaging::GetFilterSetting returned with an error"));
+ ASSERT_EQUALS(filterSettingObtained, RMobileBroadcastMessaging::EBroadcastAcceptAll, _L("RMobileBroadcastMessaging::GetFilterSetting did not return EBroadcastAcceptNone"))
+
+ // Call RMobileBroadcastMessaging::ReceiveMessage
+ RMobileBroadcastMessaging::TGsmBroadcastMessageData rxMsgData;
+ RMobileBroadcastMessaging::TMobileBroadcastAttributesV2 rxMsgAttributes;
+ RMobileBroadcastMessaging::TMobileBroadcastAttributesV2Pckg rxMsgAttributePackage(rxMsgAttributes);
+ TExtEtelRequestStatus receiveMessageStatus(broadcastMessaging, EMobileBroadcastMessagingReceiveMessage);
+ CleanupStack::PushL(receiveMessageStatus);
+ broadcastMessaging.ReceiveMessage(receiveMessageStatus, rxMsgData, rxMsgAttributePackage);
+
+ // Simulator sends a broadcast message with an ID = 1
+ TBuf<110> prompt(_L("Waiting for the CBM, notification of a directly delivered cell broadcast message from the network operator"));
+ DisplayUserInteractionPromptL(prompt); // 30 seconds
+
+ // Check RMobileBroadcastMessaging::ReceiveMessage completes with aMsgData with length > 0 characters
+ ASSERT_EQUALS(WaitForRequestWithTimeOut(receiveMessageStatus, ETimeMedium),KErrNone, _L("RMobileBroadcastMessaging::ReceiveMessage timed out"));
+ ASSERT_EQUALS(receiveMessageStatus.Int(), KErrNone, _L("RMobileBroadcastMessaging::ReceiveMessage returned with an error"));
+ ASSERT_TRUE(rxMsgData.Length()>0, _L("RMobileBroadcastMessaging::ReceiveMessage did not complete with aMsgData with length > 0 characters"));
+
+ ASSERT_TRUE(AssertValidBroadcastMessage(rxMsgAttributes), _L("AssertValidBroadcastMessage returned with failure"));
+
+ // Call RMobileBroadcastMessaging::ReceiveMessage
+ broadcastMessaging.ReceiveMessage(receiveMessageStatus, rxMsgData, rxMsgAttributePackage);
+
+ // Simulator sends a broadcast message with an ID = 50
+ DisplayUserInteractionPromptL(prompt); // 30 seconds
+
+ // Check RMobileBroadcastMessaging::ReceiveMessage completes with aMsgData with length > 0 characters
+ ASSERT_EQUALS(WaitForRequestWithTimeOut(receiveMessageStatus, ETimeMedium),KErrNone, _L("RMobileBroadcastMessaging::ReceiveMessage timed out"));
+ ASSERT_EQUALS(receiveMessageStatus.Int(), KErrNone, _L("RMobileBroadcastMessaging::ReceiveMessage returned with an error"));
+ ASSERT_TRUE(rxMsgData.Length()>0, _L("RMobileBroadcastMessaging::ReceiveMessage did not complete with aMsgData with length > 0 characters"));
+
+ ASSERT_TRUE(AssertValidBroadcastMessage(rxMsgAttributes), _L("AssertValidBroadcastMessage returned with failure"));
+
+ // Call RMobileBroadcastMessaging::ReceiveMessage
+ broadcastMessaging.ReceiveMessage(receiveMessageStatus, rxMsgData, rxMsgAttributePackage);
+
+ // Simulator sends a broadcast message with an ID = 99
+ DisplayUserInteractionPromptL(prompt); // 30 seconds
+
+ // Check RMobileBroadcastMessaging::ReceiveMessage completes with aMsgData with length > 0 characters
+ ASSERT_EQUALS(WaitForRequestWithTimeOut(receiveMessageStatus, ETimeMedium),KErrNone, _L("RMobileBroadcastMessaging::ReceiveMessage timed out"));
+ ASSERT_EQUALS(receiveMessageStatus.Int(), KErrNone, _L("RMobileBroadcastMessaging::ReceiveMessage returned with an error"));
+ ASSERT_TRUE(rxMsgData.Length()>0, _L("RMobileBroadcastMessaging::ReceiveMessage did not complete with aMsgData with length > 0 characters"));
+
+ ASSERT_TRUE(AssertValidBroadcastMessage(rxMsgAttributes), _L("AssertValidBroadcastMessage returned with failure"));
+ // === Should also receive messages outside of the range ===
+
+ // Call RMobileBroadcastMessaging::ReceiveMessage
+ broadcastMessaging.ReceiveMessage(receiveMessageStatus, rxMsgData, rxMsgAttributePackage);
+
+ // Simulator sends a broadcast message with an ID = 100.
+ DisplayUserInteractionPromptL(prompt); // 30 seconds
+
+ // Check RMobileBroadcastMessaging::ReceiveMessage completes with aMsgData with length > 0 characters
+ ASSERT_EQUALS(WaitForRequestWithTimeOut(receiveMessageStatus, ETimeMedium),KErrNone, _L("RMobileBroadcastMessaging::ReceiveMessage timed out"));
+ ASSERT_EQUALS(receiveMessageStatus.Int(), KErrNone, _L("RMobileBroadcastMessaging::ReceiveMessage returned with an error"));
+ ASSERT_TRUE(rxMsgData.Length()>0, _L("RMobileBroadcastMessaging::ReceiveMessage did not complete with aMsgData with length > 0 characters"));
+
+ ASSERT_TRUE(AssertValidBroadcastMessage(rxMsgAttributes), _L("AssertValidBroadcastMessage returned with failure"));
+
+ //
+ // TEST END
+ //
+
+ StartCleanup();
+
+ // Pop:
+ // broadcastIdList
+ // notifyBroadcastIdListChangeStatus
+ // storeBroadcastIdList
+ // notifyFilterSettingChangeStatus
+ // setFilterSettingStatus
+ // receiveMessageStatus
+ CleanupStack::PopAndDestroy(6,broadcastIdList);
+
+ return TestStepResult();
+ }
+
+TPtrC CCTSYIntegrationTestBroadcastMessaging0004::GetTestStepName()
+/**
+ * @return The test step name.
+ */
+ {
+ return _L("CCTSYIntegrationTestBroadcastMessaging0004");
+ }
+
+
+
+CCTSYIntegrationTestBroadcastMessaging0005::CCTSYIntegrationTestBroadcastMessaging0005(CEtelSessionMgr& aEtelSessionMgr)
+ : CCTSYIntegrationTestBroadcastMessagingBase(aEtelSessionMgr)
+/**
+ * Constructor.
+ */
+ {
+ SetTestStepName(CCTSYIntegrationTestBroadcastMessaging0005::GetTestStepName());
+ }
+
+CCTSYIntegrationTestBroadcastMessaging0005::~CCTSYIntegrationTestBroadcastMessaging0005()
+/**
+ * Destructor.
+ */
+ {
+ }
+
+TVerdict CCTSYIntegrationTestBroadcastMessaging0005::doTestStepL()
+/**
+ * @SYMTestCaseID BA-CTSY-INT-BRMSG-0005
+ * @SYMFssID BA/CTSY/BRMSG-0005
+ * @SYMTestCaseDesc Receive broadcast messages when ID filter has been defined and filter is set to accept filter.
+ * @SYMTestPriority High
+ * @SYMTestActions RMobileBroadcastMessaging::GetFilterSetting, RMobileBroadcastMessaging::SetFilterSetting, RMobileBroadcastMessaging::ReceiveMessage, RMobileBroadcastMessaging::NotifyBroadcastIdListChange, RMobileBroadcastMessaging::StoreBroadcastIdListL, CMobilePhoneBroadcastIdList::AddRangeEntryL
+ * @SYMTestExpectedResults Pass - Only messages within the filter range are accepted.
+ * @SYMTestType CIT
+ * @SYMTestCaseDependencies simulated/manual
+ *
+ * Reason for test: Verify messages with an ID within the filter range are accepted.
+ *
+ * @return - TVerdict code
+ */
+ {
+
+ //
+ // SET UP
+ //
+ ERR_PRINTF2(_L("<font color=Orange>$CTSYProblem: defect id = %d</font>"), 10074);
+ User::Leave(KErrNone);
+
+
+
+
+ RMobilePhone& mobilePhone = iEtelSessionMgr.GetPhoneL(KMainServer, KMainPhone);
+
+ RMobileBroadcastMessaging& broadcastMessaging = iEtelSessionMgr.GetBroadcastMessagingL(KMainServer, KMainPhone, KMainBroadcastMessaging) ;
+
+ // Ensure RMobileBroadcastMessaging::GetCaps returns aCaps.iFilterCaps in set of KCapsSimpleFilter
+ RMobileBroadcastMessaging::TMobileBroadcastCapsV1 caps;
+ RMobileBroadcastMessaging::TMobileBroadcastCapsV1Pckg capPkg(caps);
+ TUint32 expectedCaps = RMobileBroadcastMessaging::KCapsSimpleFilter;
+
+ CHECK_EQUALS_L(broadcastMessaging.GetCaps(capPkg), KErrNone, _L("RMobileBroadcastMessaging::GetCaps returned with an error"));
+ CHECK_BITS_SET_L(caps.iFilterCaps,expectedCaps ,KNoUnwantedBits, _L("RMobileBroadcastMessaging::GetCaps did not return desired Filter caps"));
+
+ // Ensure RMobileBroadcastMessaging::GetCaps returns aCaps.iModeCaps in set of KCapsGsmTpduFormat
+ CHECK_BITS_SET_L(caps.iModeCaps, RMobileBroadcastMessaging::KCapsGsmTpduFormat, KNoUnwantedBits, _L("RMobileBroadcastMessaging::GetCaps did not return desired Mode caps"));
+
+ // Registered with the network
+ TInt ret = iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(mobilePhone);
+ CHECK_EQUALS_L(ret, KErrNone,
+ _L("RMobilePhone::NotifyNetworkRegistrationStatusChange network registration failed"));
+
+ //
+ // SET UP END
+ //
+
+ StartTest();
+
+ //
+ // TEST START
+ //
+
+
+ // === Set broadcast ID filter ===
+
+ // Create a new CMobilePhoneBroadcastIdList with CMobilePhoneBroadcastIdList ::NewL
+ CMobilePhoneBroadcastIdList* broadcastIdList= CMobilePhoneBroadcastIdList::NewL();
+ CleanupStack::PushL(broadcastIdList);
+
+ // Add an entry to the list with CMobilePhoneBroadcastIdList::AddRangeEntryL with aStart.iId=1 and aEnd.iId=100
+ RMobileBroadcastMessaging::TMobileBroadcastIdEntryV1 idEntry;
+ idEntry.iId = 1;
+ RMobileBroadcastMessaging::TMobileBroadcastIdEntryV1 idEntry2;
+ idEntry2.iId = 100;
+ broadcastIdList->AddRangeEntryL(idEntry, idEntry2);
+
+ // Post a notification RMobileBroadcastMessaging::NotifyBroadcastIdListChange
+ TExtEtelRequestStatus notifyBroadcastIdListChangeStatus(broadcastMessaging, EMobileBroadcastMessagingNotifyIdListChange);
+ CleanupStack::PushL(notifyBroadcastIdListChangeStatus);
+ broadcastMessaging.NotifyBroadcastIdListChange(notifyBroadcastIdListChangeStatus);
+
+ // Store the broadcast ID list with RMobileBroadcastMessaging::StoreBroadcastIdListL with aIdType=EGsmBroadcastId
+ RMobileBroadcastMessaging::TMobileBroadcastIdType idType=RMobileBroadcastMessaging::EGsmBroadcastId;
+ TExtEtelRequestStatus storeBroadcastIdList(broadcastMessaging, EMobileBroadcastMessagingStoreIdList);
+ CleanupStack::PushL(storeBroadcastIdList);
+ broadcastMessaging.StoreBroadcastIdListL(storeBroadcastIdList,broadcastIdList,idType);
+ ASSERT_EQUALS(WaitForRequestWithTimeOut(storeBroadcastIdList, ETimeMedium),KErrNone, _L("RMobileBroadcastMessaging::StoreBroadcastIdListL timed out"));
+ ASSERT_EQUALS(storeBroadcastIdList.Int(), KErrNotSupported, _L("RMobileBroadcastMessaging::StoreBroadcastIdListL did not return KErrNotSupported"));
+ ERR_PRINTF2(_L("<font color=Orange>$CTSYKnownFailure: defect id = %d</font>"), 10028);
+
+ // Check RMobileBroadcastMessaging::NotifyBroadcastIdListChange completes with KRequestPending
+ iBroadcastMessagingTestHelper.WaitForMobileBroadcastMessagingNotifyBroadcastIdListChange(notifyBroadcastIdListChangeStatus, KRequestPending );
+
+ // === Set filter to accept filter settings ===
+
+ // Post a notification RMobileBroadcastMessaging::NotifyFilterSettingChange
+ RMobileBroadcastMessaging::TMobilePhoneBroadcastFilter filterSetting;
+ TExtEtelRequestStatus notifyFilterSettingChangeStatus(broadcastMessaging, EMobileBroadcastMessagingNotifyFilterSettingChange);
+ CleanupStack::PushL(notifyFilterSettingChangeStatus);
+ broadcastMessaging.NotifyFilterSettingChange(notifyFilterSettingChangeStatus, filterSetting);
+
+ // Set the filter with RMobileBroadcastMessaging::SetFilterSetting and aSetting=EBroadcastAcceptFilter
+ RMobileBroadcastMessaging::TMobilePhoneBroadcastFilter filterSetting1 = RMobileBroadcastMessaging::EBroadcastAcceptFilter;
+ TExtEtelRequestStatus setFilterSettingStatus(broadcastMessaging, EMobileBroadcastMessagingSetFilterSetting);
+ CleanupStack::PushL(setFilterSettingStatus);
+ broadcastMessaging.SetFilterSetting(setFilterSettingStatus, filterSetting1);
+ ASSERT_EQUALS(WaitForRequestWithTimeOut(setFilterSettingStatus, ETimeMedium),KErrNone, _L("RMobileBroadcastMessaging::SetFilterSetting timed out"));
+ ASSERT_EQUALS(setFilterSettingStatus.Int(), KErrNone, _L("RMobileBroadcastMessaging::SetFilterSetting returned with an error"));
+
+ // Check RMobileBroadcastMessaging::NotifyFilterSettingChange completes with aSetting=EBroadcastAcceptFilter
+ iBroadcastMessagingTestHelper.WaitForMobileBroadcastMessagingNotifyFilterSettingChange(
+ broadcastMessaging,
+ notifyFilterSettingChangeStatus,
+ filterSetting,
+ filterSetting1,
+ KErrNone );
+
+ // Check RMobileBroadcastMessaging::GetFilterSetting returns aSetting=EBroadcastAcceptFilter
+ RMobileBroadcastMessaging::TMobilePhoneBroadcastFilter filterSettingObtained;
+ ASSERT_EQUALS(broadcastMessaging.GetFilterSetting(filterSettingObtained), KErrNone, _L("RMobileBroadcastMessaging::GetFilterSetting returned with an error"));
+ ASSERT_EQUALS(filterSettingObtained, RMobileBroadcastMessaging::EBroadcastAcceptFilter, _L("RMobileBroadcastMessaging::GetFilterSetting did not return EBroadcastAcceptNone"))
+
+ // === Check messages with IDs in range are received ===
+
+ //Call RMobileBroadcastMessaging::ReceiveMessage
+ RMobileBroadcastMessaging::TGsmBroadcastMessageData rxMsgData;
+ RMobileBroadcastMessaging::TMobileBroadcastAttributesV2 rxMsgAttributes;
+ RMobileBroadcastMessaging::TMobileBroadcastAttributesV2Pckg rxMsgAttributePackage(rxMsgAttributes);
+ TExtEtelRequestStatus receiveMessageStatus(broadcastMessaging, EMobileBroadcastMessagingReceiveMessage);
+ CleanupStack::PushL(receiveMessageStatus);
+ broadcastMessaging.ReceiveMessage(receiveMessageStatus, rxMsgData, rxMsgAttributePackage);
+
+ // Simulator sends a broadcast message with an ID = 1
+ TBuf<110> prompt(_L("Waiting for the CBM, notification of a directly delivered cell broadcast message from the network operator"));
+ DisplayUserInteractionPromptL(prompt); // 30 seconds
+
+ // Check RMobileBroadcastMessaging::ReceiveMessage completes with aMsgData with length > 0 characters
+ ASSERT_EQUALS(WaitForRequestWithTimeOut(receiveMessageStatus, ETimeMedium),KErrNone, _L("RMobileBroadcastMessaging::ReceiveMessage timed out"));
+ ASSERT_EQUALS(receiveMessageStatus.Int(), KErrNone, _L("RMobileBroadcastMessaging::ReceiveMessage returned with an error"));
+ ASSERT_TRUE(rxMsgData.Length()>0, _L("RMobileBroadcastMessaging::ReceiveMessage did not complete with aMsgData with length > 0 characters"));
+
+ ASSERT_TRUE(AssertValidBroadcastMessage(rxMsgAttributes), _L("AssertValidBroadcastMessage returned with failure"));
+
+ // Call RMobileBroadcastMessaging::ReceiveMessage
+ broadcastMessaging.ReceiveMessage(receiveMessageStatus, rxMsgData, rxMsgAttributePackage);
+
+ // Simulator sends a broadcast message with an ID = 50
+ DisplayUserInteractionPromptL(prompt); // 30 seconds
+
+ // Check RMobileBroadcastMessaging::ReceiveMessage completes with aMsgData with length > 0 characters
+ ASSERT_EQUALS(WaitForRequestWithTimeOut(receiveMessageStatus, ETimeMedium),KErrNone, _L("RMobileBroadcastMessaging::ReceiveMessage timed out"));
+ ASSERT_EQUALS(receiveMessageStatus.Int(), KErrNone, _L("RMobileBroadcastMessaging::ReceiveMessage returned with an error"));
+ ASSERT_TRUE(rxMsgData.Length()>0, _L("RMobileBroadcastMessaging::ReceiveMessage did not complete with aMsgData with length > 0 characters"));
+
+ ASSERT_TRUE(AssertValidBroadcastMessage(rxMsgAttributes), _L("AssertValidBroadcastMessage returned with failure"));
+
+ // Call RMobileBroadcastMessaging::ReceiveMessage
+ broadcastMessaging.ReceiveMessage(receiveMessageStatus, rxMsgData, rxMsgAttributePackage);
+
+ // Simulator sends a broadcast message with an ID = 99
+ DisplayUserInteractionPromptL(prompt); // 30 seconds
+
+ // Check RMobileBroadcastMessaging::ReceiveMessage completes with aMsgData with length > 0 characters
+ ASSERT_EQUALS(WaitForRequestWithTimeOut(receiveMessageStatus, ETimeMedium),KErrNone, _L("RMobileBroadcastMessaging::ReceiveMessage timed out"));
+ ASSERT_EQUALS(receiveMessageStatus.Int(), KErrNone, _L("RMobileBroadcastMessaging::ReceiveMessage returned with an error"));
+ ASSERT_TRUE(rxMsgData.Length()>0, _L("RMobileBroadcastMessaging::ReceiveMessage did not complete with aMsgData with length > 0 characters"));
+
+ ASSERT_TRUE(AssertValidBroadcastMessage(rxMsgAttributes), _L("AssertValidBroadcastMessage returned with failure"));
+
+ // === Check messages not in range are not received ===
+
+ //Call RMobileBroadcastMessaging::ReceiveMessage
+ broadcastMessaging.ReceiveMessage(receiveMessageStatus, rxMsgData, rxMsgAttributePackage);
+
+ // Simulator sends a broadcast message with an ID = 100.
+ DisplayUserInteractionPromptL(prompt); // 30 seconds
+
+ // Check RMobileBroadcastMessaging::ReceiveMessage is still pending 2 minutes after the message was sent
+ ASSERT_EQUALS(WaitForRequestWithTimeOut(receiveMessageStatus, ETimeVeryLong),KErrTimedOut, _L("RMobileBroadcastMessaging::ReceiveMessage did not pend 2 mins after the message was sent"));
+
+ //
+ // TEST END
+ //
+
+ StartCleanup();
+
+ // Pop:
+ // broadcastIdList
+ // notifyBroadcastIdListChangeStatus
+ // storeBroadcastIdList
+ // notifyFilterSettingChangeStatus
+ // setFilterSettingStatus
+ // receiveMessageStatus
+
+ CleanupStack::PopAndDestroy(6, broadcastIdList);
+
+
+ return TestStepResult();
+ }
+
+TPtrC CCTSYIntegrationTestBroadcastMessaging0005::GetTestStepName()
+/**
+ * @return The test step name.
+ */
+ {
+ return _L("CCTSYIntegrationTestBroadcastMessaging0005");
+ }
+
+
+
+CCTSYIntegrationTestBroadcastMessaging0006::CCTSYIntegrationTestBroadcastMessaging0006(CEtelSessionMgr& aEtelSessionMgr)
+ : CCTSYIntegrationTestBroadcastMessagingBase(aEtelSessionMgr)
+/**
+ * Constructor.
+ */
+ {
+ SetTestStepName(CCTSYIntegrationTestBroadcastMessaging0006::GetTestStepName());
+ }
+
+CCTSYIntegrationTestBroadcastMessaging0006::~CCTSYIntegrationTestBroadcastMessaging0006()
+/**
+ * Destructor.
+ */
+ {
+ }
+
+TVerdict CCTSYIntegrationTestBroadcastMessaging0006::doTestStepL()
+/**
+ * @SYMTestCaseID BA-CTSY-INT-BRMSG-0006
+ * @SYMFssID BA/CTSY/BRMSG-0006
+ * @SYMTestCaseDesc Receive broadcast messages when ID filter has been defined and filter is set to reject filter.
+ * @SYMTestPriority High
+ * @SYMTestActions RMobileBroadcastMessaging::GetFilterSetting, RMobileBroadcastMessaging::SetFilterSetting, RMobileBroadcastMessaging::ReceiveMessage, RMobileBroadcastMessaging::NotifyBroadcastIdListChange, RMobileBroadcastMessaging::StoreBroadcastIdListL, CMobilePhoneBroadcastIdList::AddRangeEntryL
+ * @SYMTestExpectedResults Pass - Messages within ID range are not received, messages outside of the range are received.
+ * @SYMTestType CIT
+ * @SYMTestCaseDependencies simulated/manual
+ *
+ * Reason for test: Verify messages within the ID range are not received and messages outside the range are.
+ *
+ * @return - TVerdict code
+ */
+ {
+
+ //
+ // SET UP
+ //
+ RMobilePhone& mobilePhone = iEtelSessionMgr.GetPhoneL(KMainServer, KMainPhone);
+
+ RMobileBroadcastMessaging& broadcastMessaging = iEtelSessionMgr.GetBroadcastMessagingL(KMainServer, KMainPhone, KMainBroadcastMessaging) ;
+
+ // Ensure RMobileBroadcastMessaging::GetCaps returns aCaps.iFilterCaps in set of KCapsSimpleFilter
+ RMobileBroadcastMessaging::TMobileBroadcastCapsV1 caps;
+ RMobileBroadcastMessaging::TMobileBroadcastCapsV1Pckg capPkg(caps);
+ TUint32 expectedCaps = RMobileBroadcastMessaging::KCapsSimpleFilter;
+
+ CHECK_EQUALS_L(broadcastMessaging.GetCaps(capPkg), KErrNone, _L("RMobileBroadcastMessaging::GetCaps returned with an error"));
+ CHECK_BITS_SET_L(caps.iFilterCaps,expectedCaps ,KNoUnwantedBits, _L("RMobileBroadcastMessaging::GetCaps did not return desired Filter caps"));
+
+ // Ensure RMobileBroadcastMessaging::GetCaps returns aCaps.iModeCaps in set of KCapsGsmTpduFormat
+ CHECK_BITS_SET_L(caps.iModeCaps, RMobileBroadcastMessaging::KCapsGsmTpduFormat, KNoUnwantedBits, _L("RMobileBroadcastMessaging::GetCaps did not return desired Mode caps"));
+
+ // Registered with the network
+ TInt ret = iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(mobilePhone);
+ CHECK_EQUALS_L(ret, KErrNone,
+ _L("RMobilePhone::NotifyNetworkRegistrationStatusChange network registration failed"));
+
+ //
+ // SET UP END
+ //
+
+ StartTest();
+
+ //
+ // TEST START
+ //
+
+
+ // === Set broadcast ID filter ===
+
+ // Create a new CMobilePhoneBroadcastIdList with CMobilePhoneBroadcastIdList ::NewL
+ CMobilePhoneBroadcastIdList* broadcastIdList= CMobilePhoneBroadcastIdList::NewL();
+ CleanupStack::PushL(broadcastIdList);
+
+ // Add an entry to the list with CMobilePhoneBroadcastIdList::AddRangeEntryL with aStart.iId=1 and aEnd.iId=100
+ RMobileBroadcastMessaging::TMobileBroadcastIdEntryV1 idEntry;
+ idEntry.iId = 1;
+ RMobileBroadcastMessaging::TMobileBroadcastIdEntryV1 idEntry2;
+ idEntry2.iId = 100;
+ broadcastIdList->AddRangeEntryL(idEntry, idEntry2);
+
+ // Post a notification RMobileBroadcastMessaging::NotifyBroadcastIdListChange
+ TExtEtelRequestStatus notifyBroadcastIdListChangeStatus(broadcastMessaging, EMobileBroadcastMessagingNotifyIdListChange);
+ CleanupStack::PushL(notifyBroadcastIdListChangeStatus);
+ broadcastMessaging.NotifyBroadcastIdListChange(notifyBroadcastIdListChangeStatus);
+
+ // Store the broadcast ID list with RMobileBroadcastMessaging::StoreBroadcastIdListL with aIdType=EGsmBroadcastId
+ RMobileBroadcastMessaging::TMobileBroadcastIdType idType=RMobileBroadcastMessaging::EGsmBroadcastId;
+ TExtEtelRequestStatus storeBroadcastIdList(broadcastMessaging, EMobileBroadcastMessagingStoreIdList);
+ CleanupStack::PushL(storeBroadcastIdList);
+ broadcastMessaging.StoreBroadcastIdListL(storeBroadcastIdList,broadcastIdList,idType);
+ ASSERT_EQUALS(WaitForRequestWithTimeOut(storeBroadcastIdList, ETimeMedium),KErrNone, _L("RMobileBroadcastMessaging::StoreBroadcastIdListL timed out"));
+ ASSERT_EQUALS(storeBroadcastIdList.Int(), KErrNotSupported, _L("RMobileBroadcastMessaging::StoreBroadcastIdListL did not return KErrNotSupported"));
+ ERR_PRINTF2(_L("<font color=Orange>$CTSYKnownFailure: defect id = %d</font>"), 10028);
+
+ // Check RMobileBroadcastMessaging::NotifyBroadcastIdListChange completes with KRequestPending
+ iBroadcastMessagingTestHelper.WaitForMobileBroadcastMessagingNotifyBroadcastIdListChange(notifyBroadcastIdListChangeStatus, KRequestPending );
+
+ // === Set filter to reject filter settings ===
+
+ // Post a notification RMobileBroadcastMessaging::NotifyFilterSettingChange
+ RMobileBroadcastMessaging::TMobilePhoneBroadcastFilter filterSetting;
+ TExtEtelRequestStatus notifyFilterSettingChangeStatus(broadcastMessaging, EMobileBroadcastMessagingNotifyFilterSettingChange);
+ CleanupStack::PushL(notifyFilterSettingChangeStatus);
+ broadcastMessaging.NotifyFilterSettingChange(notifyFilterSettingChangeStatus, filterSetting);
+
+ // Set the filter with RMobileBroadcastMessaging::SetFilterSetting and aSetting=EBroadcastRejectFilter
+ RMobileBroadcastMessaging::TMobilePhoneBroadcastFilter filterSetting1 = RMobileBroadcastMessaging::EBroadcastRejectFilter;
+ TExtEtelRequestStatus setFilterSettingStatus(broadcastMessaging, EMobileBroadcastMessagingSetFilterSetting);
+ CleanupStack::PushL(setFilterSettingStatus);
+ broadcastMessaging.SetFilterSetting(setFilterSettingStatus, filterSetting1);
+ ASSERT_EQUALS(WaitForRequestWithTimeOut(setFilterSettingStatus, ETimeMedium),KErrNone, _L("RMobileBroadcastMessaging::SetFilterSetting timed out"));
+ ASSERT_EQUALS(setFilterSettingStatus.Int(), KErrNone, _L("RMobileBroadcastMessaging::SetFilterSetting returned with an error"));
+
+ // Check RMobileBroadcastMessaging::NotifyFilterSettingChange completes with aSetting=EBroadcastRejectFilter
+ iBroadcastMessagingTestHelper.WaitForMobileBroadcastMessagingNotifyFilterSettingChange(
+ broadcastMessaging,
+ notifyFilterSettingChangeStatus,
+ filterSetting,
+ filterSetting1,
+ KErrNone );
+
+ // Check RMobileBroadcastMessaging::GetFilterSetting returns aSetting=EBroadcastRejectFilter
+ RMobileBroadcastMessaging::TMobilePhoneBroadcastFilter filterSettingObtained;
+ ASSERT_EQUALS(broadcastMessaging.GetFilterSetting(filterSettingObtained), KErrNone, _L("RMobileBroadcastMessaging::GetFilterSetting returned with an error"));
+ ASSERT_EQUALS(filterSettingObtained, RMobileBroadcastMessaging::EBroadcastRejectFilter, _L("RMobileBroadcastMessaging::GetFilterSetting did not return EBroadcastAcceptNone"))
+
+ // === Check messages with IDs in range are not received ===
+
+ // Call RMobileBroadcastMessaging::ReceiveMessage
+ RMobileBroadcastMessaging::TGsmBroadcastMessageData rxMsgData;
+ RMobileBroadcastMessaging::TMobileBroadcastAttributesV2 rxMsgAttributes;
+ RMobileBroadcastMessaging::TMobileBroadcastAttributesV2Pckg rxMsgAttributePackage(rxMsgAttributes);
+ TExtEtelRequestStatus receiveMessageStatus(broadcastMessaging, EMobileBroadcastMessagingReceiveMessage);
+ CleanupStack::PushL(receiveMessageStatus);
+ broadcastMessaging.ReceiveMessage(receiveMessageStatus, rxMsgData, rxMsgAttributePackage);
+
+ // Simulator sends a broadcast message with an ID = 1
+ TBuf<110> prompt(_L("Waiting for the CBM, notification of a directly delivered cell broadcast message from the network operator"));
+ DisplayUserInteractionPromptL(prompt); // 30 seconds
+
+ // Check RMobileBroadcastMessaging::ReceiveMessage is still pending 2 minutes after the message was sent
+ ASSERT_EQUALS(WaitForRequestWithTimeOut(receiveMessageStatus, ETimeVeryLong),KErrTimedOut, _L("RMobileBroadcastMessaging::ReceiveMessage did not pend 2 mins after the message was sent"));
+
+ // Call RMobileBroadcastMessaging::ReceiveMessage
+ broadcastMessaging.ReceiveMessage(receiveMessageStatus, rxMsgData, rxMsgAttributePackage);
+
+ // Simulator sends a broadcast message with an ID = 50
+ DisplayUserInteractionPromptL(prompt); // 30 seconds
+
+ // Check RMobileBroadcastMessaging::ReceiveMessage is still pending 2 minutes after the message was sent
+ ASSERT_EQUALS(WaitForRequestWithTimeOut(receiveMessageStatus, ETimeVeryLong),KErrTimedOut, _L("RMobileBroadcastMessaging::ReceiveMessage did not pend 2 mins after the message was sent"));
+
+ // Call RMobileBroadcastMessaging::ReceiveMessage
+ broadcastMessaging.ReceiveMessage(receiveMessageStatus, rxMsgData, rxMsgAttributePackage);
+
+ // Simulator sends a broadcast message with an ID = 99
+ DisplayUserInteractionPromptL(prompt); // 30 seconds
+
+ // Check RMobileBroadcastMessaging::ReceiveMessage is still pending 2 minutes after the message was sent
+ ASSERT_EQUALS(WaitForRequestWithTimeOut(receiveMessageStatus, ETimeVeryLong),KErrTimedOut, _L("RMobileBroadcastMessaging::ReceiveMessage did not pend 2 mins after the message was sent"));
+
+ // === Check messages not in range are received ===
+
+ // Call RMobileBroadcastMessaging::ReceiveMessage
+ broadcastMessaging.ReceiveMessage(receiveMessageStatus, rxMsgData, rxMsgAttributePackage);
+
+ // Simulator sends a broadcast message with an ID = 100.
+ DisplayUserInteractionPromptL(prompt); // 30 seconds
+
+ // Check RMobileBroadcastMessaging::ReceiveMessage completes with aMsgData with length > 0 characters
+ ASSERT_EQUALS(WaitForRequestWithTimeOut(receiveMessageStatus, ETimeMedium),KErrNone, _L("RMobileBroadcastMessaging::ReceiveMessage timed out"));
+ ASSERT_EQUALS(receiveMessageStatus.Int(), KErrNone, _L("RMobileBroadcastMessaging::ReceiveMessage returned with an error"));
+ ASSERT_TRUE(rxMsgData.Length()>0, _L("RMobileBroadcastMessaging::ReceiveMessage did not complete with aMsgData with length > 0 characters"));
+
+ ASSERT_TRUE(AssertValidBroadcastMessage(rxMsgAttributes), _L("AssertValidBroadcastMessage returned with failure"));
+
+ // Call RMobileBroadcastMessaging::ReceiveMessage
+ broadcastMessaging.ReceiveMessage(receiveMessageStatus, rxMsgData, rxMsgAttributePackage);
+
+ // Simulator sends a broadcast message with an ID = 0.
+ DisplayUserInteractionPromptL(prompt); // 30 seconds
+
+ // Check RMobileBroadcastMessaging::ReceiveMessage completes with aMsgData with length > 0 characters
+ ASSERT_EQUALS(WaitForRequestWithTimeOut(receiveMessageStatus, ETimeMedium),KErrNone, _L("RMobileBroadcastMessaging::ReceiveMessage timed out"));
+ ASSERT_EQUALS(receiveMessageStatus.Int(), KErrNone, _L("RMobileBroadcastMessaging::ReceiveMessage returned with an error"));
+ ASSERT_TRUE(rxMsgData.Length()>0, _L("RMobileBroadcastMessaging::ReceiveMessage did not complete with aMsgData with length > 0 characters"));
+
+ ASSERT_TRUE(AssertValidBroadcastMessage(rxMsgAttributes), _L("AssertValidBroadcastMessage returned with failure"));
+
+ //
+ // TEST END
+ //
+
+ StartCleanup();
+
+ // Pop:
+ // broadcastIdList
+ // notifyBroadcastIdListChangeStatus
+ // storeBroadcastIdList
+ // notifyFilterSettingChangeStatus
+ // setFilterSettingStatus
+ // receiveMessageStatus
+ CleanupStack::PopAndDestroy(6,broadcastIdList);
+
+ return TestStepResult();
+ }
+
+TPtrC CCTSYIntegrationTestBroadcastMessaging0006::GetTestStepName()
+/**
+ * @return The test step name.
+ */
+ {
+ return _L("CCTSYIntegrationTestBroadcastMessaging0006");
+ }
+
+
+
+CCTSYIntegrationTestBroadcastMessaging0007::CCTSYIntegrationTestBroadcastMessaging0007(CEtelSessionMgr& aEtelSessionMgr)
+ : CCTSYIntegrationTestBroadcastMessagingBase(aEtelSessionMgr)
+/**
+ * Constructor.
+ */
+ {
+ SetTestStepName(CCTSYIntegrationTestBroadcastMessaging0007::GetTestStepName());
+ }
+
+CCTSYIntegrationTestBroadcastMessaging0007::~CCTSYIntegrationTestBroadcastMessaging0007()
+/**
+ * Destructor.
+ */
+ {
+ }
+
+TVerdict CCTSYIntegrationTestBroadcastMessaging0007::doTestStepL()
+/**
+ * @SYMTestCaseID BA-CTSY-INT-BRMSG-0007
+ * @SYMFssID BA/CTSY/BRMSG-0007
+ * @SYMTestCaseDesc Receive broadcast messages when ID filter has been defined and fliter is set to reject all messages.
+ * @SYMTestPriority High
+ * @SYMTestActions RMobileBroadcastMessaging::GetFilterSetting, RMobileBroadcastMessaging::SetFilterSetting, RMobileBroadcastMessaging::ReceiveMessage, RMobileBroadcastMessaging::NotifyBroadcastIdListChange, RMobileBroadcastMessaging::StoreBroadcastIdListL, CMobilePhoneBroadcastIdList::AddRangeEntryL
+ * @SYMTestExpectedResults Pass - No messages received.
+ * @SYMTestType CIT
+ * @SYMTestCaseDependencies simulated/manual
+ *
+ * Reason for test: Verify no messages are received.
+ *
+ * @return - TVerdict code
+ */
+ {
+
+ //
+ // SET UP
+ //
+
+ RMobilePhone& mobilePhone = iEtelSessionMgr.GetPhoneL(KMainServer, KMainPhone);
+
+ RMobileBroadcastMessaging& broadcastMessaging = iEtelSessionMgr.GetBroadcastMessagingL(KMainServer, KMainPhone, KMainBroadcastMessaging) ;
+
+ // Ensure RMobileBroadcastMessaging::GetCaps returns aCaps.iFilterCaps in set of KCapsSimpleFilter
+ RMobileBroadcastMessaging::TMobileBroadcastCapsV1 caps;
+ RMobileBroadcastMessaging::TMobileBroadcastCapsV1Pckg capPkg(caps);
+ TUint32 expectedCaps = RMobileBroadcastMessaging::KCapsSimpleFilter;
+
+ CHECK_EQUALS_L(broadcastMessaging.GetCaps(capPkg), KErrNone, _L("RMobileBroadcastMessaging::GetCaps returned with an error"));
+ CHECK_BITS_SET_L(caps.iFilterCaps,expectedCaps ,KNoUnwantedBits, _L("RMobileBroadcastMessaging::GetCaps did not return desired Filter caps"));
+
+ // Ensure RMobileBroadcastMessaging::GetCaps returns aCaps.iModeCaps in set of KCapsGsmTpduFormat
+ CHECK_BITS_SET_L(caps.iModeCaps, RMobileBroadcastMessaging::KCapsGsmTpduFormat, KNoUnwantedBits, _L("RMobileBroadcastMessaging::GetCaps did not return desired Mode caps"));
+
+ // Registered with the network
+ TInt ret = iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(mobilePhone);
+ CHECK_EQUALS_L(ret, KErrNone,
+ _L("RMobilePhone::NotifyNetworkRegistrationStatusChange network registration failed"));
+
+ //
+ // SET UP END
+ //
+
+ StartTest();
+
+ //
+ // TEST START
+ //
+
+ // === Set broadcast ID filter ===
+
+ // Create a new CMobilePhoneBroadcastIdList with CMobilePhoneBroadcastIdList ::NewL
+ CMobilePhoneBroadcastIdList* broadcastIdList= CMobilePhoneBroadcastIdList::NewL();
+ CleanupStack::PushL(broadcastIdList);
+
+ // Add an entry to the list with CMobilePhoneBroadcastIdList::AddRangeEntryL with aStart.iId=1 and aEnd.iId=100
+ RMobileBroadcastMessaging::TMobileBroadcastIdEntryV1 idEntry;
+ idEntry.iId = 1;
+ RMobileBroadcastMessaging::TMobileBroadcastIdEntryV1 idEntry2;
+ idEntry2.iId = 100;
+ broadcastIdList->AddRangeEntryL(idEntry, idEntry2);
+
+ // Post a notification RMobileBroadcastMessaging::NotifyBroadcastIdListChange
+ TExtEtelRequestStatus notifyBroadcastIdListChangeStatus(broadcastMessaging, EMobileBroadcastMessagingNotifyIdListChange);
+ CleanupStack::PushL(notifyBroadcastIdListChangeStatus);
+ broadcastMessaging.NotifyBroadcastIdListChange(notifyBroadcastIdListChangeStatus);
+
+ // Store the broadcast ID list with RMobileBroadcastMessaging::StoreBroadcastIdListL with aIdType=EGsmBroadcastId
+ RMobileBroadcastMessaging::TMobileBroadcastIdType idType=RMobileBroadcastMessaging::EGsmBroadcastId;
+ TExtEtelRequestStatus storeBroadcastIdList(broadcastMessaging, EMobileBroadcastMessagingStoreIdList);
+ CleanupStack::PushL(storeBroadcastIdList);
+ broadcastMessaging.StoreBroadcastIdListL(storeBroadcastIdList,broadcastIdList,idType);
+ ASSERT_EQUALS(WaitForRequestWithTimeOut(storeBroadcastIdList, ETimeMedium),KErrNone, _L("RMobileBroadcastMessaging::StoreBroadcastIdListL timed out"));
+ ASSERT_EQUALS(storeBroadcastIdList.Int(), KErrNotSupported, _L("RMobileBroadcastMessaging::StoreBroadcastIdListL did not return KErrNotSupported"));
+ ERR_PRINTF2(_L("<font color=Orange>$CTSYKnownFailure: defect id = %d</font>"), 10028);
+
+ // Check RMobileBroadcastMessaging::NotifyBroadcastIdListChange completes with KRequestPending
+ iBroadcastMessagingTestHelper.WaitForMobileBroadcastMessagingNotifyBroadcastIdListChange(notifyBroadcastIdListChangeStatus, KRequestPending );
+
+ // Post a notification RMobileBroadcastMessaging::NotifyFilterSettingChange
+ RMobileBroadcastMessaging::TMobilePhoneBroadcastFilter filterSetting;
+ TExtEtelRequestStatus notifyFilterSettingChangeStatus(broadcastMessaging, EMobileBroadcastMessagingNotifyFilterSettingChange);
+ CleanupStack::PushL(notifyFilterSettingChangeStatus);
+ broadcastMessaging.NotifyFilterSettingChange(notifyFilterSettingChangeStatus, filterSetting);
+
+ // Set the filter with RMobileBroadcastMessaging::SetFilterSetting and aSetting=EBroadcastAcceptNone
+ RMobileBroadcastMessaging::TMobilePhoneBroadcastFilter filterSetting1 = RMobileBroadcastMessaging::EBroadcastAcceptNone;
+ TExtEtelRequestStatus setFilterSettingStatus(broadcastMessaging, EMobileBroadcastMessagingSetFilterSetting);
+ CleanupStack::PushL(setFilterSettingStatus);
+ broadcastMessaging.SetFilterSetting(setFilterSettingStatus, filterSetting1);
+ ASSERT_EQUALS(WaitForRequestWithTimeOut(setFilterSettingStatus, ETimeMedium),KErrNone, _L("RMobileBroadcastMessaging::SetFilterSetting timed out"));
+ ASSERT_EQUALS(setFilterSettingStatus.Int(), KErrNone, _L("RMobileBroadcastMessaging::SetFilterSetting returned with an error"));
+
+ // Check RMobileBroadcastMessaging::NotifyFilterSettingChange completes with aSetting=EBroadcastAcceptNone
+ iBroadcastMessagingTestHelper.WaitForMobileBroadcastMessagingNotifyFilterSettingChange(
+ broadcastMessaging,
+ notifyFilterSettingChangeStatus,
+ filterSetting,
+ filterSetting1,
+ KErrNone );
+
+ // Check RMobileBroadcastMessaging::GetFilterSetting returns aSetting=EBroadcastAcceptNone
+ RMobileBroadcastMessaging::TMobilePhoneBroadcastFilter filterSettingObtained;
+ ASSERT_EQUALS(broadcastMessaging.GetFilterSetting(filterSettingObtained), KErrNone, _L("RMobileBroadcastMessaging::GetFilterSetting returned with an error"));
+ ASSERT_EQUALS(filterSettingObtained, RMobileBroadcastMessaging::EBroadcastAcceptNone, _L("RMobileBroadcastMessaging::GetFilterSetting did not return EBroadcastAcceptNone"))
+
+ // === Check messages with IDs in range are not received ===
+
+ // Call RMobileBroadcastMessaging::ReceiveMessage
+ RMobileBroadcastMessaging::TGsmBroadcastMessageData rxMsgData;
+ RMobileBroadcastMessaging::TMobileBroadcastAttributesV2 rxMsgAttributes;
+ RMobileBroadcastMessaging::TMobileBroadcastAttributesV2Pckg rxMsgAttributePackage(rxMsgAttributes);
+ TExtEtelRequestStatus receiveMessageStatus(broadcastMessaging, EMobileBroadcastMessagingReceiveMessage);
+ CleanupStack::PushL(receiveMessageStatus);
+ broadcastMessaging.ReceiveMessage(receiveMessageStatus, rxMsgData, rxMsgAttributePackage);
+
+ // Simulator sends a broadcast message with an ID = 1
+ TBuf<110> prompt(_L("Waiting for the CBM, notification of a directly delivered cell broadcast message from the network operator"));
+ DisplayUserInteractionPromptL(prompt); // 30 seconds
+
+ // Check RMobileBroadcastMessaging::ReceiveMessage is still pending 2 minutes after the message was sent
+ ASSERT_EQUALS(WaitForRequestWithTimeOut(receiveMessageStatus, ETimeVeryLong),KErrTimedOut, _L("RMobileBroadcastMessaging::ReceiveMessage did not pend 2 mins after the message was sent"));
+
+ // Call RMobileBroadcastMessaging::ReceiveMessage
+ broadcastMessaging.ReceiveMessage(receiveMessageStatus, rxMsgData, rxMsgAttributePackage);
+
+ // Simulator sends a broadcast message with an ID = 50
+ DisplayUserInteractionPromptL(prompt); // 30 seconds
+
+ // Check RMobileBroadcastMessaging::ReceiveMessage is still pending 2 minutes after the message was sent
+ ASSERT_EQUALS(WaitForRequestWithTimeOut(receiveMessageStatus, ETimeVeryLong),KErrTimedOut, _L("RMobileBroadcastMessaging::ReceiveMessage did not pend 2 mins after the message was sent"));
+
+ // Call RMobileBroadcastMessaging::ReceiveMessage
+ broadcastMessaging.ReceiveMessage(receiveMessageStatus, rxMsgData, rxMsgAttributePackage);
+
+ // Simulator sends a broadcast message with an ID = 99
+ DisplayUserInteractionPromptL(prompt); // 30 seconds
+
+ // Check RMobileBroadcastMessaging::ReceiveMessage is still pending 2 minutes after the message was sent
+ ASSERT_EQUALS(WaitForRequestWithTimeOut(receiveMessageStatus, ETimeVeryLong),KErrTimedOut, _L("RMobileBroadcastMessaging::ReceiveMessage did not pend 2 mins after the message was sent"));
+
+
+ // === Check messages not in range are not received ===
+
+ // Call RMobileBroadcastMessaging::ReceiveMessage
+ broadcastMessaging.ReceiveMessage(receiveMessageStatus, rxMsgData, rxMsgAttributePackage);
+
+ // Simulator sends a broadcast message with an ID = 100.
+ DisplayUserInteractionPromptL(prompt); // 30 seconds
+
+ // Check RMobileBroadcastMessaging::ReceiveMessage is still pending 2 minutes after the message was sent
+ ASSERT_EQUALS(WaitForRequestWithTimeOut(receiveMessageStatus, ETimeVeryLong),KErrTimedOut, _L("RMobileBroadcastMessaging::ReceiveMessage did not pend 2 mins after the message was sent"));
+
+ // Call RMobileBroadcastMessaging::ReceiveMessage
+ broadcastMessaging.ReceiveMessage(receiveMessageStatus, rxMsgData, rxMsgAttributePackage);
+
+ // Simulator sends a broadcast message with an ID = 0.
+ DisplayUserInteractionPromptL(prompt); // 30 seconds
+
+ // Check RMobileBroadcastMessaging::ReceiveMessage is still pending 2 minutes after the message was sent
+ ASSERT_EQUALS(WaitForRequestWithTimeOut(receiveMessageStatus, ETimeVeryLong),KErrTimedOut, _L("RMobileBroadcastMessaging::ReceiveMessage did not pend 2 mins after the message was sent"));
+
+
+ //
+ // TEST END
+ //
+
+ StartCleanup();
+
+ // Pop:
+ // broadcastIdList
+ // notifyBroadcastIdListChangeStatus
+ // storeBroadcastIdList
+ // notifyFilterSettingChangeStatus
+ // setFilterSettingStatus
+ // receiveMessageStatus
+ CleanupStack::PopAndDestroy(6,broadcastIdList);
+
+
+ return TestStepResult();
+ }
+
+TPtrC CCTSYIntegrationTestBroadcastMessaging0007::GetTestStepName()
+/**
+ * @return The test step name.
+ */
+ {
+ return _L("CCTSYIntegrationTestBroadcastMessaging0007");
+ }
+
+
+
+CCTSYIntegrationTestBroadcastMessaging0008::CCTSYIntegrationTestBroadcastMessaging0008(CEtelSessionMgr& aEtelSessionMgr)
+ : CCTSYIntegrationTestBroadcastMessagingBase(aEtelSessionMgr)
+/**
+ * Constructor.
+ */
+ {
+ SetTestStepName(CCTSYIntegrationTestBroadcastMessaging0008::GetTestStepName());
+ }
+
+CCTSYIntegrationTestBroadcastMessaging0008::~CCTSYIntegrationTestBroadcastMessaging0008()
+/**
+ * Destructor.
+ */
+ {
+ }
+
+TVerdict CCTSYIntegrationTestBroadcastMessaging0008::doTestStepL()
+/**
+ * @SYMTestCaseID BA-CTSY-INT-BRMSG-0008
+ * @SYMFssID BA/CTSY/BRMSG-0008
+ * @SYMTestCaseDesc Store a broadcast ID list with no IDs
+ * @SYMTestPriority High
+ * @SYMTestActions RMobileBroadcastMessaging::StoreBroadcastIdListL
+ * @SYMTestExpectedResults Pass - No entry is stored.
+ * @SYMTestType CIT
+ * @SYMTestCaseDependencies live/automatic
+ *
+ * Reason for test: Verify list returns KErrNotSupported when stored.
+ *
+ * @return - TVerdict code
+ */
+ {
+
+ //
+ // SET UP
+ //
+
+ RMobileBroadcastMessaging& broadcastMessaging = iEtelSessionMgr.GetBroadcastMessagingL(KMainServer, KMainPhone, KMainBroadcastMessaging);
+
+ //
+ // SET UP END
+ //
+
+ StartTest();
+
+ //
+ // TEST START
+ //
+
+ // Create a new CMobilePhoneBroadcastIdList with CMobilePhoneBroadcastIdList ::NewL
+ CMobilePhoneBroadcastIdList* broadcastIdList= CMobilePhoneBroadcastIdList::NewL();
+ CleanupStack::PushL(broadcastIdList);
+
+ // Store the broadcast ID list with RMobileBroadcastMessaging::StoreBroadcastIdListL with aIdType=EGsmBroadcastId
+ RMobileBroadcastMessaging::TMobileBroadcastIdType idType=RMobileBroadcastMessaging::EGsmBroadcastId;
+ TExtEtelRequestStatus storeBroadcastIdList(broadcastMessaging, EMobileBroadcastMessagingStoreIdList);
+ CleanupStack::PushL(storeBroadcastIdList);
+ broadcastMessaging.StoreBroadcastIdListL(storeBroadcastIdList,broadcastIdList,idType);
+ ASSERT_EQUALS(WaitForRequestWithTimeOut(storeBroadcastIdList, ETimeMedium),KErrNone, _L("RMobileBroadcastMessaging::StoreBroadcastIdListL timed out"));
+
+ // Check RMobileBroadcastMessaging::StoreBroadcastIdListL returns KErrNotSupported
+ ASSERT_EQUALS(storeBroadcastIdList.Int(), KErrNotSupported, _L("RMobileBroadcastMessaging::StoreBroadcastIdListL did not return KErrNotSupported"));
+ ERR_PRINTF2(_L("<font color=Orange>$CTSYKnownFailure: defect id = %d</font>"), 10028);
+
+ //
+ // TEST END
+ //
+
+ StartCleanup();
+
+ // Put any required test clean up here, then remove this comment
+ // Pop:
+ // broadcastIdList
+ // storeBroadcastIdList
+
+ CleanupStack::PopAndDestroy(2,broadcastIdList);
+ return TestStepResult();
+ }
+
+TPtrC CCTSYIntegrationTestBroadcastMessaging0008::GetTestStepName()
+/**
+ * @return The test step name.
+ */
+ {
+ return _L("CCTSYIntegrationTestBroadcastMessaging0008");
+ }
+
+
+
+CCTSYIntegrationTestBroadcastMessaging0009::CCTSYIntegrationTestBroadcastMessaging0009(CEtelSessionMgr& aEtelSessionMgr)
+ : CCTSYIntegrationTestBroadcastMessagingBase(aEtelSessionMgr)
+/**
+ * Constructor.
+ */
+ {
+ SetTestStepName(CCTSYIntegrationTestBroadcastMessaging0009::GetTestStepName());
+ }
+
+CCTSYIntegrationTestBroadcastMessaging0009::~CCTSYIntegrationTestBroadcastMessaging0009()
+/**
+ * Destructor.
+ */
+ {
+ }
+
+TVerdict CCTSYIntegrationTestBroadcastMessaging0009::doTestStepL()
+/**
+ * @SYMTestCaseID BA-CTSY-INT-BRMSG-0009
+ * @SYMFssID BA/CTSY/BRMSG-0009
+ * @SYMTestCaseDesc Store 999 IDs with broadcast ID list
+ * @SYMTestPriority High
+ * @SYMTestActions RMobileBroadcastMessaging::StoreBroadcastIdListL
+ * @SYMTestExpectedResults Pass - List is not stored.
+ * @SYMTestType CIT
+ * @SYMTestCaseDependencies live/automatic
+ *
+ * Reason for test: Verify list can not be stored.
+ *
+ * @return - TVerdict code
+ */
+ {
+
+ //
+ // SET UP
+ //
+
+ RMobileBroadcastMessaging& broadcastMessaging = iEtelSessionMgr.GetBroadcastMessagingL(KMainServer, KMainPhone, KMainBroadcastMessaging);
+
+ //
+ // SET UP END
+ //
+
+ StartTest();
+
+ //
+ // TEST START
+ //
+
+ // Create a new CMobilePhoneBroadcastIdList with CMobilePhoneBroadcastIdList ::NewL
+ CMobilePhoneBroadcastIdList* broadcastIdList= CMobilePhoneBroadcastIdList::NewL();
+ CleanupStack::PushL(broadcastIdList);
+
+ // Add an entry to the list with CMobilePhoneBroadcastIdList::AddRangeEntryL with aStart.iId=1 and aEnd.iId=1000
+ RMobileBroadcastMessaging::TMobileBroadcastIdEntryV1 idEntry;
+ idEntry.iId = 1;
+ RMobileBroadcastMessaging::TMobileBroadcastIdEntryV1 idEntry2;
+ idEntry2.iId = 1000;
+ broadcastIdList->AddRangeEntryL(idEntry, idEntry2);
+
+ // Post a notification RMobileBroadcastMessaging::NotifyBroadcastIdListChange
+ TExtEtelRequestStatus notifyBroadcastIdListChangeStatus(broadcastMessaging, EMobileBroadcastMessagingNotifyIdListChange);
+ CleanupStack::PushL(notifyBroadcastIdListChangeStatus);
+ broadcastMessaging.NotifyBroadcastIdListChange(notifyBroadcastIdListChangeStatus);
+
+ // Store the broadcast ID list with RMobileBroadcastMessaging::StoreBroadcastIdListL with aIdType=EGsmBroadcastId
+ RMobileBroadcastMessaging::TMobileBroadcastIdType idType=RMobileBroadcastMessaging::EGsmBroadcastId;
+ TExtEtelRequestStatus storeBroadcastIdList(broadcastMessaging, EMobileBroadcastMessagingStoreIdList);
+ CleanupStack::PushL(storeBroadcastIdList);
+ broadcastMessaging.StoreBroadcastIdListL(storeBroadcastIdList,broadcastIdList,idType);
+ ASSERT_EQUALS(WaitForRequestWithTimeOut(storeBroadcastIdList, ETimeMedium),KErrNone, _L("RMobileBroadcastMessaging::StoreBroadcastIdListL timed out"));
+ ASSERT_EQUALS(storeBroadcastIdList.Int(), KErrNotSupported, _L("RMobileBroadcastMessaging::StoreBroadcastIdListL did not return KErrNotSupported"));
+ ERR_PRINTF2(_L("<font color=Orange>$CTSYKnownFailure: defect id = %d</font>"), 10028);
+
+ // Check RMobileBroadcastMessaging::NotifyBroadcastIdListChange completes with KErrNotSupported
+ iBroadcastMessagingTestHelper.WaitForMobileBroadcastMessagingNotifyBroadcastIdListChange(notifyBroadcastIdListChangeStatus, KErrNotSupported);
+
+ //
+ // TEST END
+ //
+
+ StartCleanup();
+
+ // Pop:
+ // broadcastIdList
+ // notifyBroadcastIdListChangeStatus
+ // storeBroadcastIdList
+
+ CleanupStack::PopAndDestroy(3,broadcastIdList);
+
+ return TestStepResult();
+ }
+
+TPtrC CCTSYIntegrationTestBroadcastMessaging0009::GetTestStepName()
+/**
+ * @return The test step name.
+ */
+ {
+ return _L("CCTSYIntegrationTestBroadcastMessaging0009");
+ }
+
+
+
+CCTSYIntegrationTestBroadcastMessaging0010::CCTSYIntegrationTestBroadcastMessaging0010(CEtelSessionMgr& aEtelSessionMgr)
+ : CCTSYIntegrationTestBroadcastMessagingBase(aEtelSessionMgr)
+/**
+ * Constructor.
+ */
+ {
+ SetTestStepName(CCTSYIntegrationTestBroadcastMessaging0010::GetTestStepName());
+ }
+
+CCTSYIntegrationTestBroadcastMessaging0010::~CCTSYIntegrationTestBroadcastMessaging0010()
+/**
+ * Destructor.
+ */
+ {
+ }
+
+TVerdict CCTSYIntegrationTestBroadcastMessaging0010::doTestStepL()
+/**
+ * @SYMTestCaseID BA-CTSY-INT-BRMSG-0010
+ * @SYMFssID BA/CTSY/BRMSG-0010
+ * @SYMTestCaseDesc Store maximum number of broadcast IDs for the phone.
+ * @SYMTestPriority High
+ * @SYMTestActions RMobileBroadcastMessaging::StoreBroadcastIdListL
+ * @SYMTestExpectedResults Pass - List is stored.
+ * @SYMTestType CIT
+ * @SYMTestCaseDependencies live/automatic
+ *
+ * Reason for test: Verify list can be stored.
+ *
+ * @return - TVerdict code
+ */
+ {
+
+ //
+ // SET UP
+ //
+
+
+
+ //
+ // SET UP END
+ //
+
+ StartTest();
+
+ //
+ // TEST START
+ //
+
+
+ // Create a new CMobilePhoneBroadcastIdList with CMobilePhoneBroadcastIdList ::NewL
+
+ // Add an entry to the list with CMobilePhoneBroadcastIdList::AddRangeEntryL with aStart.iId=1 and aEnd.iId=X where X=maximum number of entries supported
+
+ // Store the broadcast ID list with RMobileBroadcastMessaging::StoreBroadcastIdListL with aIdType=EGsmBroadcastId
+
+ // Check RMobileBroadcastMessaging::NotifyBroadcastIdListChange completes with KErrNone
+
+
+ //
+ // TEST END
+ //
+
+ StartCleanup();
+
+ // Put any required test clean up here, then remove this comment
+
+ return TestStepResult();
+ }
+
+TPtrC CCTSYIntegrationTestBroadcastMessaging0010::GetTestStepName()
+/**
+ * @return The test step name.
+ */
+ {
+ return _L("CCTSYIntegrationTestBroadcastMessaging0010");
+ }
+
+
+
+CCTSYIntegrationTestBroadcastMessaging0011::CCTSYIntegrationTestBroadcastMessaging0011(CEtelSessionMgr& aEtelSessionMgr)
+ : CCTSYIntegrationTestBroadcastMessagingBase(aEtelSessionMgr)
+/**
+ * Constructor.
+ */
+ {
+ SetTestStepName(CCTSYIntegrationTestBroadcastMessaging0011::GetTestStepName());
+ }
+
+CCTSYIntegrationTestBroadcastMessaging0011::~CCTSYIntegrationTestBroadcastMessaging0011()
+/**
+ * Destructor.
+ */
+ {
+ }
+
+TVerdict CCTSYIntegrationTestBroadcastMessaging0011::doTestStepL()
+/**
+ * @SYMTestCaseID BA-CTSY-INT-BRMSG-0011
+ * @SYMFssID BA/CTSY/BRMSG-0011
+ * @SYMTestCaseDesc Store broadcast ID list with duplicate IDs
+ * @SYMTestPriority High
+ * @SYMTestActions RMobileBroadcastMessaging::StoreBroadcastIdListL
+ * @SYMTestExpectedResults Pass - List is not stored.
+ * @SYMTestType CIT
+ * @SYMTestCaseDependencies live/automatic
+ *
+ * Reason for test: Verify list can not be stored.
+ *
+ * @return - TVerdict code
+ */
+ {
+
+ //
+ // SET UP
+ //
+
+ RMobileBroadcastMessaging& broadcastMessaging = iEtelSessionMgr.GetBroadcastMessagingL(KMainServer, KMainPhone, KMainBroadcastMessaging);
+
+ //
+ // SET UP END
+ //
+
+ StartTest();
+
+ //
+ // TEST START
+ //
+
+ // Create a new CMobilePhoneBroadcastIdList with CMobilePhoneBroadcastIdList ::NewL
+ CMobilePhoneBroadcastIdList* broadcastIdList= CMobilePhoneBroadcastIdList::NewL();
+ CleanupStack::PushL(broadcastIdList);
+
+ // Add an entry to the list with CMobilePhoneBroadcastIdList::AddRangeEntryL with aStart.iId=1 and aEnd.iId=3
+ RMobileBroadcastMessaging::TMobileBroadcastIdEntryV1 idEntry;
+ idEntry.iId = 1;
+ RMobileBroadcastMessaging::TMobileBroadcastIdEntryV1 idEntry2;
+ idEntry2.iId = 3;
+ broadcastIdList->AddRangeEntryL(idEntry, idEntry2);
+
+ // Add another entry to the list with CMobilePhoneBroadcastIdList::AddRangeEntryL with aStart.iId=1 and aEnd.iId=3
+ broadcastIdList->AddRangeEntryL(idEntry, idEntry2);
+
+ // Post a notification RMobileBroadcastMessaging::NotifyBroadcastIdListChange
+ TExtEtelRequestStatus notifyBroadcastIdListChangeStatus(broadcastMessaging, EMobileBroadcastMessagingNotifyIdListChange);
+ CleanupStack::PushL(notifyBroadcastIdListChangeStatus);
+ broadcastMessaging.NotifyBroadcastIdListChange(notifyBroadcastIdListChangeStatus);
+
+ // Store the broadcast ID list with RMobileBroadcastMessaging::StoreBroadcastIdListL with aIdType=EGsmBroadcastId
+ RMobileBroadcastMessaging::TMobileBroadcastIdType idType=RMobileBroadcastMessaging::EGsmBroadcastId;
+ TExtEtelRequestStatus storeBroadcastIdList(broadcastMessaging, EMobileBroadcastMessagingStoreIdList);
+ CleanupStack::PushL(storeBroadcastIdList);
+ broadcastMessaging.StoreBroadcastIdListL(storeBroadcastIdList,broadcastIdList,idType);
+ ASSERT_EQUALS(WaitForRequestWithTimeOut(storeBroadcastIdList, ETimeMedium),KErrNone, _L("RMobileBroadcastMessaging::StoreBroadcastIdListL timed out"));
+ ASSERT_EQUALS(storeBroadcastIdList.Int(), KErrNotSupported, _L("RMobileBroadcastMessaging::StoreBroadcastIdListL did not return KErrNotSupported"));
+ ERR_PRINTF2(_L("<font color=Orange>$CTSYKnownFailure: defect id = %d</font>"), 10028);
+
+ // Check RMobileBroadcastMessaging::NotifyBroadcastIdListChange completes with KErrNotSupported
+ iBroadcastMessagingTestHelper.WaitForMobileBroadcastMessagingNotifyBroadcastIdListChange(notifyBroadcastIdListChangeStatus, KErrNotSupported);
+
+ //
+ // TEST END
+ //
+
+ StartCleanup();
+
+ // Pop:
+ // broadcastIdList
+ // notifyBroadcastIdListChangeStatus
+ // storeBroadcastIdList
+ CleanupStack::PopAndDestroy(3, broadcastIdList);
+
+ return TestStepResult();
+ }
+
+TPtrC CCTSYIntegrationTestBroadcastMessaging0011::GetTestStepName()
+/**
+ * @return The test step name.
+ */
+ {
+ return _L("CCTSYIntegrationTestBroadcastMessaging0011");
+ }
+
+
+
+CCTSYIntegrationTestBroadcastMessaging0012::CCTSYIntegrationTestBroadcastMessaging0012(CEtelSessionMgr& aEtelSessionMgr)
+ : CCTSYIntegrationTestBroadcastMessagingBase(aEtelSessionMgr)
+/**
+ * Constructor.
+ */
+ {
+ SetTestStepName(CCTSYIntegrationTestBroadcastMessaging0012::GetTestStepName());
+ }
+
+CCTSYIntegrationTestBroadcastMessaging0012::~CCTSYIntegrationTestBroadcastMessaging0012()
+/**
+ * Destructor.
+ */
+ {
+ }
+
+TVerdict CCTSYIntegrationTestBroadcastMessaging0012::doTestStepL()
+/**
+ * @SYMTestCaseID BA-CTSY-INT-BRMSG-0012
+ * @SYMFssID BA/CTSY/BRMSG-0012
+ * @SYMTestCaseDesc Store and retrieve broadcast ID list.
+ * @SYMTestPriority High
+ * @SYMTestActions
+ * @SYMTestExpectedResults Pass - List retrieved is empty.
+ * @SYMTestType CIT
+ * @SYMTestCaseDependencies live/automatic
+ *
+ * Reason for test: Verify store returned KErrNotSupported and retrieved an empty list.
+ *
+ * @return - TVerdict code
+ */
+ {
+
+ //
+ // SET UP
+ //
+ RMobilePhone& mobilePhone = iEtelSessionMgr.GetPhoneL(KMainServer, KMainPhone);
+
+ RMobileBroadcastMessaging& broadcastMessaging = iEtelSessionMgr.GetBroadcastMessagingL(KMainServer, KMainPhone, KMainBroadcastMessaging);
+
+ // Registered with the network
+ TInt ret = iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(mobilePhone);
+ CHECK_EQUALS_L(ret, KErrNone,
+ _L("RMobilePhone::NotifyNetworkRegistrationStatusChange network registration failed"));
+
+ //
+ // SET UP END
+ //
+
+ StartTest();
+
+ //
+ // TEST START
+ //
+
+ // Create a new CMobilePhoneBroadcastIdList with CMobilePhoneBroadcastIdList ::NewL
+ CMobilePhoneBroadcastIdList* broadcastIdList= CMobilePhoneBroadcastIdList::NewL();
+ CleanupStack::PushL(broadcastIdList);
+
+ // Add an entry to the list with CMobilePhoneBroadcastIdList::AddRangeEntryL with aStart.iId=1 and aEnd.iId=4
+ RMobileBroadcastMessaging::TMobileBroadcastIdEntryV1 idEntry;
+ idEntry.iId = 1;
+ RMobileBroadcastMessaging::TMobileBroadcastIdEntryV1 idEntry2;
+ idEntry2.iId = 4;
+ broadcastIdList->AddRangeEntryL(idEntry, idEntry2);
+
+ // Store the broadcast ID list with RMobileBroadcastMessaging::StoreBroadcastIdListL with aIdType=EGsmBroadcastId
+ RMobileBroadcastMessaging::TMobileBroadcastIdType idType=RMobileBroadcastMessaging::EGsmBroadcastId;
+ TExtEtelRequestStatus storeBroadcastIdList(broadcastMessaging, EMobileBroadcastMessagingStoreIdList);
+ CleanupStack::PushL(storeBroadcastIdList);
+ broadcastMessaging.StoreBroadcastIdListL(storeBroadcastIdList,broadcastIdList,idType);
+ ASSERT_EQUALS(WaitForRequestWithTimeOut(storeBroadcastIdList, ETimeMedium),KErrNone, _L("RMobileBroadcastMessaging::StoreBroadcastIdListL timed out"));
+
+ // Check store returned KErrNotSupported
+ ASSERT_EQUALS(storeBroadcastIdList.Int(), KErrNotSupported, _L("RMobileBroadcastMessaging::StoreBroadcastIdListL did not return KErrNotSupported"));
+ ERR_PRINTF2(_L("<font color=Orange>$CTSYKnownFailure: defect id = %d</font>"), 10028);
+
+ // Use Retrieval helper class to retrieve broadcast Id entries from the list
+ TInt err;
+ CRetrieveMobilePhoneBroadcastIdListExec* broadcastIdListExec = CRetrieveMobilePhoneBroadcastIdListHelper::NewL(broadcastMessaging,idType);
+ CleanupStack::PushL(broadcastIdListExec);
+ CMobilePhoneBroadcastIdList* broadcastIdList2 = broadcastIdListExec ->DoGetList(err);
+ ASSERT_EQUALS(err, KErrNone, _L("CRetrieveMobilePhoneBroadcastIdList::RetrieveListL is not able to get the list"))
+
+ // Check CMobilePhoneBroadcastIdList::Enumerate returns 0 entry
+ ASSERT_EQUALS(broadcastIdList2->Enumerate(), 0, _L("CMobilePhoneBroadcastIdList::Enumerate did not return an empty list"));
+
+ //
+ // TEST END
+ //
+
+ StartCleanup();
+
+ // Pop:
+ // broadcastIdList
+ // storeBroadcastIdList
+ // broadcastIdListExec
+ CleanupStack::PopAndDestroy(3, broadcastIdList);
+
+ return TestStepResult();
+ }
+
+TPtrC CCTSYIntegrationTestBroadcastMessaging0012::GetTestStepName()
+/**
+ * @return The test step name.
+ */
+ {
+ return _L("CCTSYIntegrationTestBroadcastMessaging0012");
+ }
+
+
+
+CCTSYIntegrationTestBroadcastMessaging0013::CCTSYIntegrationTestBroadcastMessaging0013(CEtelSessionMgr& aEtelSessionMgr)
+ : CCTSYIntegrationTestBroadcastMessagingBase(aEtelSessionMgr)
+/**
+ * Constructor.
+ */
+ {
+ SetTestStepName(CCTSYIntegrationTestBroadcastMessaging0013::GetTestStepName());
+ }
+
+CCTSYIntegrationTestBroadcastMessaging0013::~CCTSYIntegrationTestBroadcastMessaging0013()
+/**
+ * Destructor.
+ */
+ {
+ }
+
+TVerdict CCTSYIntegrationTestBroadcastMessaging0013::doTestStepL()
+/**
+ * @SYMTestCaseID BA-CTSY-INT-BRMSG-0013
+ * @SYMFssID BA/CTSY/BRMSG-0013
+ * @SYMTestCaseDesc Store and retrieve an empty broadcast ID list.
+ * @SYMTestPriority High
+ * @SYMTestActions
+ * @SYMTestExpectedResults Pass - List retrieved is same as that stored.
+ * @SYMTestType CIT
+ * @SYMTestCaseDependencies live/automatic
+ *
+ * Reason for test: Verify an empty list is retrieved.
+ *
+ * @return - TVerdict code
+ */
+ {
+
+ //
+ // SET UP
+ //
+ RMobilePhone& mobilePhone = iEtelSessionMgr.GetPhoneL(KMainServer, KMainPhone);
+
+ RMobileBroadcastMessaging& broadcastMessaging = iEtelSessionMgr.GetBroadcastMessagingL(KMainServer, KMainPhone, KMainBroadcastMessaging);
+
+ // Registered with the network
+ TInt ret = iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(mobilePhone);
+ CHECK_EQUALS_L(ret, KErrNone,
+ _L("RMobilePhone::NotifyNetworkRegistrationStatusChange network registration failed"));
+
+ //
+ // SET UP END
+ //
+
+ StartTest();
+
+ //
+ // TEST START
+ //
+
+ // Create a new CMobilePhoneBroadcastIdList with CMobilePhoneBroadcastIdList ::NewL
+ CMobilePhoneBroadcastIdList* broadcastIdList= CMobilePhoneBroadcastIdList::NewL();
+ CleanupStack::PushL(broadcastIdList);
+
+ // This is deliberate action to open a session because the API in Etelmm allocates memory
+ // The Session Manager should be used in all other places.
+ RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer, KMainPhone);
+ RMobileBroadcastMessaging broadcastMessagingStore;
+ broadcastMessagingStore.Open(phone);
+
+ // Store the broadcast ID list with RMobileBroadcastMessaging::StoreBroadcastIdListL with aIdType=EGsmBroadcastId
+ RMobileBroadcastMessaging::TMobileBroadcastIdType idType=RMobileBroadcastMessaging::EGsmBroadcastId;
+ TExtEtelRequestStatus storeBroadcastIdList(broadcastMessaging, EMobileBroadcastMessagingStoreIdList);
+ CleanupStack::PushL(storeBroadcastIdList);
+ broadcastMessagingStore.StoreBroadcastIdListL(storeBroadcastIdList,broadcastIdList,idType);
+ ASSERT_EQUALS(WaitForRequestWithTimeOut(storeBroadcastIdList, ETimeMedium),KErrNone, _L("RMobileBroadcastMessaging::StoreBroadcastIdListL timed out"));
+ ASSERT_EQUALS(storeBroadcastIdList.Int(), KErrNotSupported, _L("RMobileBroadcastMessaging::StoreBroadcastIdListL did not return KErrNotSupported"));
+ ERR_PRINTF2(_L("<font color=Orange>$CTSYKnownFailure: defect id = %d</font>"), 10028);
+ broadcastMessagingStore.Close();
+
+ // Use Retrieval helper class to retrieve broadcast Id entries from the list
+ TInt err;
+ CRetrieveMobilePhoneBroadcastIdListExec* broadcastIdListExec = CRetrieveMobilePhoneBroadcastIdListHelper::NewL(broadcastMessaging,idType);
+ CleanupStack::PushL(broadcastIdListExec);
+ CMobilePhoneBroadcastIdList* broadcastIdList2 = broadcastIdListExec ->DoGetList(err);
+ ASSERT_EQUALS(err, KErrNone, _L("CRetrieveMobilePhoneBroadcastIdList::RetrieveListL is not able to get the list"))
+
+ // Check CMobilePhoneBroadcastIdList::Enumerate returns 0 entry
+ ASSERT_EQUALS(broadcastIdList2->Enumerate(), 0, _L("CMobilePhoneBroadcastIdList::Enumerate did not return an empty list"));
+
+ //
+ // TEST END
+ //
+
+ StartCleanup();
+ // Pop:
+ // broadcastIdList
+ // storeBroadcastIdList
+ // broadcastIdListExec
+ CleanupStack::PopAndDestroy(3, broadcastIdList);
+
+ return TestStepResult();
+ }
+
+TPtrC CCTSYIntegrationTestBroadcastMessaging0013::GetTestStepName()
+/**
+ * @return The test step name.
+ */
+ {
+ return _L("CCTSYIntegrationTestBroadcastMessaging0013");
+ }
+
+CCTSYIntegrationTestBroadcastMessaging0014::CCTSYIntegrationTestBroadcastMessaging0014(CEtelSessionMgr& aEtelSessionMgr)
+: CCTSYIntegrationTestBroadcastMessagingBase(aEtelSessionMgr)
+/**
+* Constructor.
+*/
+{
+SetTestStepName(CCTSYIntegrationTestBroadcastMessaging0014::GetTestStepName());
+}
+
+CCTSYIntegrationTestBroadcastMessaging0014::~CCTSYIntegrationTestBroadcastMessaging0014()
+/**
+* Destructor.
+*/
+{
+}
+
+TVerdict CCTSYIntegrationTestBroadcastMessaging0014::doTestStepL()
+/**
+* @SYMTestCaseID BA-CTSY-INT-BRMSG-0014
+* @SYMFssID BA/CTSY/BRMSG-0014
+* @SYMTestCaseDesc Set the broadcast messaging Language filter.
+* @SYMTestPriority High
+* @SYMTestActions RMobileBroadcastMessaging::NotifyFilterSettingChange,RMobileBroadcastMessaging::GetFilterSetting, RMobileBroadcastMessaging::SetFilterSetting, RMobileBroadcastMessaging::SetLanguageFilter, RMobileBroadcastMessaging::GetLanguageFilter
+* @SYMTestExpectedResults Pass - Language filter notifications complete and are set correctly.
+* @SYMTestType CIT
+* @SYMTestCaseDependencies live/automatic
+*
+* Reason for test: Verify filter change notification completes and correct filter has been set.
+*
+* @return - TVerdict code
+*/
+ {
+
+ //
+ // SET UP
+ //
+ RMobilePhone& mobilePhone = iEtelSessionMgr.GetPhoneL(KMainServer, KMainPhone);
+
+ RMobileBroadcastMessaging& broadcastMessaging = iEtelSessionMgr.GetBroadcastMessagingL(KMainServer, KMainPhone, KMainBroadcastMessaging) ;
+
+ // Ensure RMobileBroadcastMessaging::GetCaps returns aCaps.iFilterCaps in set of KCapsSimpleFilter
+ RMobileBroadcastMessaging::TMobileBroadcastCapsV1 caps;
+ RMobileBroadcastMessaging::TMobileBroadcastCapsV1Pckg capPkg(caps);
+ TUint32 expectedCaps = RMobileBroadcastMessaging::KCapsSimpleFilter;
+
+ CHECK_EQUALS_L(broadcastMessaging.GetCaps(capPkg), KErrNone, _L("RMobileBroadcastMessaging::GetCaps returned with an error"));
+ CHECK_BITS_SET_L(caps.iFilterCaps,expectedCaps ,KNoUnwantedBits, _L("RMobileBroadcastMessaging::GetCaps did not return desired Filter caps"));
+
+ // Ensure RMobileBroadcastMessaging::GetCaps returns aCaps.iModeCaps in set of KCapsGsmTpduFormat
+ CHECK_BITS_SET_L(caps.iModeCaps, RMobileBroadcastMessaging::KCapsGsmTpduFormat, KNoUnwantedBits, _L("RMobileBroadcastMessaging::GetCaps did not return desired Mode caps"));
+
+ // Registered with the network
+ TInt ret = iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(mobilePhone);
+ CHECK_EQUALS_L(ret, KErrNone,
+ _L("RMobilePhone::NotifyNetworkRegistrationStatusChange network registration failed"));
+
+
+ //
+ // SET UP END
+ //
+
+ StartTest();
+
+ //
+ // TEST START
+ //
+
+ // === Check no language filter is set, then set language filter for one language ===
+
+ // Check RMobileBroadcastMessaging::GetLanguageFilter completes with KErrNotFound
+ TBuf<10> langFilter;
+ TExtEtelRequestStatus getLanguageFilterStatus(broadcastMessaging, EMobileBroadcastMessagingGetLanguageFilter);
+ CleanupStack::PushL(getLanguageFilterStatus);
+ broadcastMessaging.GetLanguageFilter(getLanguageFilterStatus, langFilter);
+ ASSERT_EQUALS(WaitForRequestWithTimeOut(getLanguageFilterStatus, ETimeMedium),KErrNone, _L("RMobileBroadcastMessaging::GetLanguageFilter timed out"));
+ ASSERT_EQUALS(getLanguageFilterStatus.Int(), KErrNotFound, _L("RMobileBroadcastMessaging::GetLanguageFilter returned with a language filtered unexpectedly"));
+
+ // Post a notification RMobileBroadcastMessaging::NotifyLanguageFilterChange
+ TBuf<1> langFilterSetting;
+ TExtEtelRequestStatus notifyLanguageFilterChangeStatus(broadcastMessaging, EMobileBroadcastMessagingNotifyLanguageFilterChange);
+ CleanupStack::PushL(notifyLanguageFilterChangeStatus);
+ broadcastMessaging.NotifyLanguageFilterChange(notifyLanguageFilterChangeStatus, langFilterSetting);
+
+ // Set the language filter with RMobileBroadcastMessaging::SetLanguageFilter and aLangFilter="\1" (English, see spec 03.38)
+ _LIT(KEnglish, "\1");
+ TBuf<1> filter(KEnglish);
+ TExtEtelRequestStatus setLanguageFilterStatus(broadcastMessaging, EMobileBroadcastMessagingSetLanguageFilter);
+ CleanupStack::PushL(setLanguageFilterStatus);
+ broadcastMessaging.SetLanguageFilter(setLanguageFilterStatus,filter);
+ ASSERT_EQUALS(WaitForRequestWithTimeOut(setLanguageFilterStatus, ETimeMedium),KErrNone, _L("RMobileBroadcastMessaging::SetLanguageFilter timed out"));
+ ASSERT_EQUALS(setLanguageFilterStatus.Int(), KErrNone, _L("RMobileBroadcastMessaging::SetLanguageFilter returned with an error"));
+
+ // Check RMobileBroadcastMessaging::NotifyLanguageFilterChange completes with aLangFilter="\1"
+ iBroadcastMessagingTestHelper.WaitForMobileBroadcastMessagingNotifyLanguageFilterChange(
+ broadcastMessaging,
+ notifyLanguageFilterChangeStatus,
+ filter,
+ langFilterSetting,
+ KErrNone );
+
+ // Check RMobileBroadcastMessaging::GetLanguageFilter completes with aLangFilter="\1"
+ broadcastMessaging.GetLanguageFilter(getLanguageFilterStatus, langFilter);
+ ASSERT_EQUALS(WaitForRequestWithTimeOut(getLanguageFilterStatus, ETimeMedium),KErrNone, _L("RMobileBroadcastMessaging::GetLanguageFilter timed out"));
+ ASSERT_EQUALS(getLanguageFilterStatus.Int(), KErrNone, _L("RMobileBroadcastMessaging::GetLanguageFilter returned with a language filtered unexpectedly"));
+ ASSERT_EQUALS_DES16(langFilter, filter, _L("RMobileBroadcastMessaging::GetLanguageFilter did not complete with a aLangFilter=KEnglish"));
+
+ // Post a notification RMobileBroadcastMessaging::NotifyFilterSettingChange
+ RMobileBroadcastMessaging::TMobilePhoneBroadcastFilter filterSetting;
+ TExtEtelRequestStatus notifyFilterSettingChangeStatus(broadcastMessaging, EMobileBroadcastMessagingNotifyFilterSettingChange);
+ CleanupStack::PushL(notifyFilterSettingChangeStatus);
+ broadcastMessaging.NotifyFilterSettingChange(notifyFilterSettingChangeStatus, filterSetting);
+
+
+ // Set the filter with RMobileBroadcastMessaging::SetFilterSetting and aSetting=EBroadcastAcceptFilter
+ RMobileBroadcastMessaging::TMobilePhoneBroadcastFilter filterSetting1 = RMobileBroadcastMessaging::EBroadcastAcceptFilter;
+ TExtEtelRequestStatus setFilterSettingStatus(broadcastMessaging, EMobileBroadcastMessagingSetFilterSetting);
+ CleanupStack::PushL(setFilterSettingStatus);
+ broadcastMessaging.SetFilterSetting(setFilterSettingStatus, filterSetting1);
+ ASSERT_EQUALS(WaitForRequestWithTimeOut(setFilterSettingStatus, ETimeMedium),KErrNone, _L("RMobileBroadcastMessaging::SetFilterSetting timed out"));
+ ASSERT_EQUALS(setFilterSettingStatus.Int(), KErrNone, _L("RMobileBroadcastMessaging::SetFilterSetting returned with an error"));
+
+ // Check RMobileBroadcastMessaging::NotifyFilterSettingChange completes with aSetting=EBroadcastAcceptFilter
+ iBroadcastMessagingTestHelper.WaitForMobileBroadcastMessagingNotifyFilterSettingChange(
+ broadcastMessaging,
+ notifyFilterSettingChangeStatus,
+ filterSetting,
+ filterSetting1,
+ KErrNone );
+
+ // Check RMobileBroadcastMessaging::GetFilterSetting returns aSetting=EBroadcastAcceptFilter
+ RMobileBroadcastMessaging::TMobilePhoneBroadcastFilter filterSettingObtained;
+ ASSERT_EQUALS(broadcastMessaging.GetFilterSetting(filterSettingObtained), KErrNone, _L("RMobileBroadcastMessaging::GetFilterSetting returned with an error"));
+ ASSERT_EQUALS(filterSettingObtained, RMobileBroadcastMessaging::EBroadcastAcceptFilter, _L("RMobileBroadcastMessaging::GetFilterSetting did not return EBroadcastAcceptNone"))
+
+ // === Set language filter to filter for no languages ===
+
+ // Post a notification RMobileBroadcastMessaging::NotifyLanguageFilterChange
+ broadcastMessaging.NotifyLanguageFilterChange(notifyLanguageFilterChangeStatus, langFilterSetting);
+
+ // Set the language filter with RMobileBroadcastMessaging::SetLanguageFilter and aLangFilter=""
+ _LIT(KNone, "");
+ filter=KNone;
+ broadcastMessaging.SetLanguageFilter(setLanguageFilterStatus,filter);
+ ASSERT_EQUALS(WaitForRequestWithTimeOut(setLanguageFilterStatus, ETimeMedium),KErrNone, _L("RMobileBroadcastMessaging::SetLanguageFilter timed out"));
+ ASSERT_EQUALS(setLanguageFilterStatus.Int(), KErrNone, _L("RMobileBroadcastMessaging::SetLanguageFilter returned with an error"));
+
+ // Check RMobileBroadcastMessaging::NotifyLanguageFilterChange completes with aLangFilter=""
+ iBroadcastMessagingTestHelper.WaitForMobileBroadcastMessagingNotifyLanguageFilterChange(
+ broadcastMessaging,
+ notifyLanguageFilterChangeStatus,
+ filter,
+ langFilterSetting,
+ KErrNone );
+
+ // Check RMobileBroadcastMessaging::GetLanguageFilter completes with KErrNotFound
+ broadcastMessaging.GetLanguageFilter(getLanguageFilterStatus, langFilter);
+ ASSERT_EQUALS(WaitForRequestWithTimeOut(getLanguageFilterStatus, ETimeMedium),KErrNone, _L("RMobileBroadcastMessaging::GetLanguageFilter timed out"));
+ ASSERT_EQUALS(getLanguageFilterStatus.Int(), KErrNotFound, _L("RMobileBroadcastMessaging::GetLanguageFilter returned with a language filtered unexpectedly"));
+
+ // Post a notification RMobileBroadcastMessaging::NotifyFilterSettingChange
+ broadcastMessaging.NotifyFilterSettingChange(notifyFilterSettingChangeStatus, filterSetting);
+
+ // Set the filter with RMobileBroadcastMessaging::SetFilterSetting and aSetting=EBroadcastAcceptFilter
+ filterSetting1= RMobileBroadcastMessaging::EBroadcastAcceptFilter;
+ broadcastMessaging.SetFilterSetting(setFilterSettingStatus, filterSetting1);
+ ASSERT_EQUALS(WaitForRequestWithTimeOut(setFilterSettingStatus, ETimeMedium),KErrNone, _L("RMobileBroadcastMessaging::SetFilterSetting timed out"));
+ ASSERT_EQUALS(setFilterSettingStatus.Int(), KErrNone, _L("RMobileBroadcastMessaging::SetFilterSetting returned with an error"));
+
+ // Check RMobileBroadcastMessaging::NotifyFilterSettingChange completes with aSetting=EBroadcastAcceptFilter
+ iBroadcastMessagingTestHelper.WaitForMobileBroadcastMessagingNotifyFilterSettingChange(
+ broadcastMessaging,
+ notifyFilterSettingChangeStatus,
+ filterSetting,
+ filterSetting1,
+ KErrNone );
+
+ // Check RMobileBroadcastMessaging::GetFilterSetting returns aSetting=EBroadcastAcceptFilter
+ ASSERT_EQUALS(broadcastMessaging.GetFilterSetting(filterSettingObtained), KErrNone, _L("RMobileBroadcastMessaging::GetFilterSetting returned with an error"));
+ ASSERT_EQUALS(filterSettingObtained, RMobileBroadcastMessaging::EBroadcastAcceptFilter, _L("RMobileBroadcastMessaging::GetFilterSetting did not return EBroadcastAcceptNone"))
+
+ // === Check no language filter is set, then set language filter for more than one language ===
+
+ // Post a notification RMobileBroadcastMessaging::NotifyLanguageFilterChange
+ broadcastMessaging.NotifyLanguageFilterChange(notifyLanguageFilterChangeStatus, langFilterSetting);
+
+ // Set the language filter with RMobileBroadcastMessaging::SetLanguageFilter and aLangFilter="\7\1" (Danish + English, see spec 03.38)
+ _LIT(KMultipleLang, "\7\1");
+ filter=KMultipleLang;
+ broadcastMessaging.SetLanguageFilter(setLanguageFilterStatus,filter);
+ ASSERT_EQUALS(WaitForRequestWithTimeOut(setLanguageFilterStatus, ETimeMedium),KErrNone, _L("RMobileBroadcastMessaging::SetLanguageFilter timed out"));
+ ASSERT_EQUALS(setLanguageFilterStatus.Int(), KErrNone, _L("RMobileBroadcastMessaging::SetLanguageFilter returned with an error"));
+
+ // Check RMobileBroadcastMessaging::NotifyLanguageFilterChange completes with aLangFilter="\7\1"
+ iBroadcastMessagingTestHelper.WaitForMobileBroadcastMessagingNotifyLanguageFilterChange(
+ broadcastMessaging,
+ notifyLanguageFilterChangeStatus,
+ filter,
+ langFilterSetting,
+ KErrNone );
+
+ // Check RMobileBroadcastMessaging::GetLanguageFilter completes with aLangFilter="\7\1"
+ broadcastMessaging.GetLanguageFilter(getLanguageFilterStatus, langFilter);
+ ASSERT_EQUALS(WaitForRequestWithTimeOut(getLanguageFilterStatus, ETimeMedium),KErrNone, _L("RMobileBroadcastMessaging::GetLanguageFilter timed out"));
+ ASSERT_EQUALS(getLanguageFilterStatus.Int(), KErrNone, _L("RMobileBroadcastMessaging::GetLanguageFilter returned with a language filtered unexpectedly"));
+ ASSERT_EQUALS_DES16(langFilter, filter, _L("RMobileBroadcastMessaging::GetLanguageFilter did not complete with a aLangFilter=KEnglish"));
+
+ // Post a notification RMobileBroadcastMessaging::NotifyFilterSettingChange
+ broadcastMessaging.NotifyFilterSettingChange(notifyFilterSettingChangeStatus, filterSetting);
+
+ // Set the filter with RMobileBroadcastMessaging::SetFilterSetting and aSetting=EBroadcastAcceptFilter
+ filterSetting1= RMobileBroadcastMessaging::EBroadcastAcceptFilter;
+ broadcastMessaging.SetFilterSetting(setFilterSettingStatus, filterSetting1);
+ ASSERT_EQUALS(WaitForRequestWithTimeOut(setFilterSettingStatus, ETimeMedium),KErrNone, _L("RMobileBroadcastMessaging::SetFilterSetting timed out"));
+ ASSERT_EQUALS(setFilterSettingStatus.Int(), KErrNone, _L("RMobileBroadcastMessaging::SetFilterSetting returned with an error"));
+
+ // Check RMobileBroadcastMessaging::NotifyFilterSettingChange completes with aSetting=EBroadcastAcceptFilter
+ iBroadcastMessagingTestHelper.WaitForMobileBroadcastMessagingNotifyFilterSettingChange(
+ broadcastMessaging,
+ notifyFilterSettingChangeStatus,
+ filterSetting,
+ filterSetting1,
+ KErrNone );
+
+ // Check RMobileBroadcastMessaging::GetFilterSetting returns aSetting=EBroadcastAcceptFilter
+ ASSERT_EQUALS(broadcastMessaging.GetFilterSetting(filterSettingObtained), KErrNone, _L("RMobileBroadcastMessaging::GetFilterSetting returned with an error"));
+ ASSERT_EQUALS(filterSettingObtained, RMobileBroadcastMessaging::EBroadcastAcceptFilter, _L("RMobileBroadcastMessaging::GetFilterSetting did not return EBroadcastAcceptNone"))
+
+ //
+ // TEST END
+ //
+
+ StartCleanup();
+
+ // Pop :
+ // getLanguageFilterStatus
+ // notifyLanguageFilterChangeStatus
+ // setLanguageFilterStatus
+ // notifyFilterSettingChangeStatus
+ // setFilterSettingStatus
+ CleanupStack::PopAndDestroy(5, &getLanguageFilterStatus);
+
+ return TestStepResult();
+ }
+
+TPtrC CCTSYIntegrationTestBroadcastMessaging0014::GetTestStepName()
+/**
+* @return The test step name.
+*/
+ {
+ return _L("CCTSYIntegrationTestBroadcastMessaging0014");
+ }
+
+
+