--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/telephonyserverplugins/common_tsy/test/integration/src/cctsyintegrationtestmessagewaiting.cpp Tue Feb 02 01:41:59 2010 +0200
@@ -0,0 +1,403 @@
+// 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 MessageWaiting functional unit.
+//
+//
+
+/**
+ @internalTechnology
+*/
+
+#include "cctsyintegrationtestmessagewaiting.h"
+
+
+
+
+CCTSYIntegrationTestMessageWaitingBase::CCTSYIntegrationTestMessageWaitingBase(CEtelSessionMgr& aEtelSessionMgr)
+ : CCTSYIntegrationTestSuiteStepBase(aEtelSessionMgr), iNetworkTestHelper(*this)
+/**
+ * Constructor
+ */
+ {
+ }
+
+CCTSYIntegrationTestMessageWaitingBase::~CCTSYIntegrationTestMessageWaitingBase()
+/*
+ * Destructor
+ */
+ {
+ }
+
+
+CCTSYIntegrationTestMessageWaiting0001::CCTSYIntegrationTestMessageWaiting0001(CEtelSessionMgr& aEtelSessionMgr)
+ : CCTSYIntegrationTestMessageWaitingBase(aEtelSessionMgr)
+/**
+ * Constructor.
+ */
+ {
+ SetTestStepName(CCTSYIntegrationTestMessageWaiting0001::GetTestStepName());
+ }
+
+CCTSYIntegrationTestMessageWaiting0001::~CCTSYIntegrationTestMessageWaiting0001()
+/**
+ * Destructor.
+ */
+ {
+ }
+
+TVerdict CCTSYIntegrationTestMessageWaiting0001::doTestStepL()
+/**
+ * @SYMTestCaseID BA-CTSY-INT-MSGW-0001
+ * @SYMFssID BA/CTSY/MSGW-0001
+ * @SYMTestCaseDesc Activate and deactivate the message waiting indicators.
+ * @SYMTestPriority High
+ * @SYMTestActions RMobilePhone::GetIccMessageWaitingIndicators, RMobilePhone::NotifyIccMessageWaitingIndicatorsChange
+ * @SYMTestExpectedResults Pass - Message waiting indicator is set.
+ * @SYMTestType CIT
+ * @SYMTestCaseDependencies live/manual
+ *
+ * Reason for test: Verify message waiting indicator notification completes and status is correct.
+ *
+ * @return - TVerdict code
+ */
+ {
+
+ //
+ // SET UP
+ //
+
+ RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer,KMainPhone);
+
+ // Ensure that RMobilePhone::GetIccAccessCaps returns caps in set of RMobilePhone::KCapsUSimAccessSupported
+
+ // This step is needed before we access the sim, and was taken from cctsyintegrationtestsubscriberinfo.cpp ....
+ // In the CTSY, the security event triggers a call to get the ICC type from the SIM
+ TExtEtelRequestStatus notifySecurityEventStatus(phone, EMobilePhoneNotifySecurityEvent);
+ CleanupStack::PushL(notifySecurityEventStatus);
+ RMobilePhone::TMobilePhoneSecurityEvent event;
+ phone.NotifySecurityEvent(notifySecurityEventStatus, event);
+ User::After(KOneSecond*5);
+
+ // Now can call RMobilePhone::GetIccAccessCaps
+ TUint32 iccCaps;
+ ASSERT_EQUALS(phone.GetIccAccessCaps(iccCaps), KErrNone,
+ _L("RMobilePhone::GetIccAccessCaps returned an error"));
+ ASSERT_BITS_SET(iccCaps, RMobilePhone::KCapsUSimAccessSupported, KNoUnwantedBits,
+ _L("RMobilePhone::GetIccAccessCaps returned wrong caps"));
+
+ // Turn off all message waiting indicators using RMobilePhone::SetIccMessageWaitingIndicators with TMobilePhoneMessageWaitingV1::iDisplayStatus=0
+ TExtEtelRequestStatus setIccMsgWaitIndStatus(phone, EMobilePhoneSetIccMessageWaitingIndicators);
+ CleanupStack::PushL(setIccMsgWaitIndStatus);
+ RMobilePhone::TMobilePhoneMessageWaitingV1 msgWaiting;
+ msgWaiting.iDisplayStatus = 0;
+ RMobilePhone::TMobilePhoneMessageWaitingV1Pckg msgWaitingPckg(msgWaiting);
+ phone.SetIccMessageWaitingIndicators(setIccMsgWaitIndStatus, msgWaitingPckg);
+ ASSERT_EQUALS(WaitForRequestWithTimeOut(setIccMsgWaitIndStatus, ETimeMedium), KErrNone,
+ _L("RMobilePhone::SetIccMessageWaitingIndicators timed-out."));
+ ASSERT_EQUALS(setIccMsgWaitIndStatus.Int(), KErrNone,
+ _L("RMobilePhone::SetIccMessageWaitingIndicators returned error status."));
+
+ // Ensure RMobilePhone::GetIccMessageWaitingIndicators returns TMobilePhoneMessageWaitingV1::iDisplayStatus=0
+ TExtEtelRequestStatus getIccMsgWaitIndStatus(phone, EMobilePhoneGetIccMessageWaitingIndicators);
+ CleanupStack::PushL(getIccMsgWaitIndStatus);
+ msgWaiting.iDisplayStatus = 111;
+ phone.GetIccMessageWaitingIndicators(getIccMsgWaitIndStatus, msgWaitingPckg);
+ ASSERT_EQUALS(WaitForRequestWithTimeOut(getIccMsgWaitIndStatus, ETimeMedium), KErrNone,
+ _L("RMobilePhone::GetIccMessageWaitingIndicators timed-out."));
+ ASSERT_EQUALS(getIccMsgWaitIndStatus.Int(), KErrNone,
+ _L("RMobilePhone::GetIccMessageWaitingIndicators returned error status."));
+ ASSERT_BITS_SET(msgWaiting.iDisplayStatus, 0, KNoUnwantedBits,
+ _L("RMobilePhone::GetIccMessageWaitingIndicators returned incorrect value for iDisplayStatus."));
+
+ //
+ // SET UP END
+ //
+
+ StartTest();
+
+ //
+ // TEST START
+ //
+
+ /*
+ * Note:
+ * KDisplayVoicemailActive, KDisplayFaxActive, KDisplayAuxVoicemailActivev, KDisplayDataActive WORK.
+ * KDisplayEmailActive, KDisplayOtherActive DO NOT WORK
+ */
+ const TInt KMaxDisplayFlags = 4;
+ const TUint KIndDisplayArray[KMaxDisplayFlags] =
+ { RMobilePhone::KDisplayVoicemailActive,
+ RMobilePhone::KDisplayFaxActive,
+ //RMobilePhone::KDisplayEmailActive,
+ //RMobilePhone::KDisplayOtherActive,
+ RMobilePhone::KDisplayAuxVoicemailActive,
+ RMobilePhone::KDisplayDataActive };
+
+
+ // === Set message waiting indicator for voice and check notification and get message waiting indicator ===
+
+ // Set up for notification RMobilePhone::NotifyIccMessageWaitingIndicatorsChange
+ TExtEtelRequestStatus notifyIccMsgWaitIndStatus(phone, EMobilePhoneNotifyIccMessageWaitingIndicatorsChange);
+ CleanupStack::PushL(notifyIccMsgWaitIndStatus);
+ RMobilePhone::TMobilePhoneMessageWaitingV1 mgWaitingNotif;
+ RMobilePhone::TMobilePhoneMessageWaitingV1Pckg mgWaitingNotifPckg(mgWaitingNotif);
+
+ TInt i = 0;
+ do{
+ RMobilePhone::TMobilePhoneIndicatorDisplay displayStatusSetting = (RMobilePhone::TMobilePhoneIndicatorDisplay)KIndDisplayArray[i];
+
+ // Post notification RMobilePhone::NotifyIccMessageWaitingIndicatorsChange
+ phone.NotifyIccMessageWaitingIndicatorsChange(notifyIccMsgWaitIndStatus, mgWaitingNotifPckg);
+
+ // Set the message waiting indicators with RMobilePhone::SetIccMessageWaitingIndicators with TMobilePhoneMessageWaitingV1::iDisplayStatus=KDisplayVoicemailActive
+ msgWaiting.iDisplayStatus = displayStatusSetting;
+ phone.SetIccMessageWaitingIndicators(setIccMsgWaitIndStatus, msgWaitingPckg);
+ ASSERT_EQUALS(WaitForRequestWithTimeOut(setIccMsgWaitIndStatus, ETimeMedium), KErrNone,
+ _L("RMobilePhone::SetIccMessageWaitingIndicators timed-out."));
+ ASSERT_EQUALS(setIccMsgWaitIndStatus.Int(), KErrNone,
+ _L("RMobilePhone::SetIccMessageWaitingIndicators returned error status."));
+
+ // Check RMobilePhone::NotifyIccMessageWaitingIndicatorsChange completes with TMobilePhoneMessageWaitingV1::iDisplayStatus in set of KDisplayVoicemailActive
+ ASSERT_EQUALS(WaitForRequestWithTimeOut(notifyIccMsgWaitIndStatus, ETimeMedium), KErrNone,
+ _L("RMobilePhone::NotifyIccMessageWaitingIndicatorsChange timed-out."));
+ ASSERT_EQUALS(notifyIccMsgWaitIndStatus.Int(), KErrNone,
+ _L("RMobilePhone::NotifyIccMessageWaitingIndicatorsChange returned with an error status."));
+ ASSERT_BITS_SET(mgWaitingNotif.iDisplayStatus, displayStatusSetting, KNoUnwantedBits,
+ _L("RMobilePhone::NotifyIccMessageWaitingIndicatorsChange did not return expected value for iDisplayStatus."));
+
+ // Check RMobilePhone::GetIccMessageWaitingIndicators returns TMobilePhoneMessageWaitingV1::iDisplayStatus in set of KDisplayVoicemailActive
+ phone.GetIccMessageWaitingIndicators(getIccMsgWaitIndStatus, msgWaitingPckg);
+ ASSERT_EQUALS(WaitForRequestWithTimeOut(getIccMsgWaitIndStatus, ETimeMedium), KErrNone,
+ _L("RMobilePhone::GetIccMessageWaitingIndicators timed-out."));
+ ASSERT_EQUALS(getIccMsgWaitIndStatus.Int(), KErrNone,
+ _L("RMobilePhone::GetIccMessageWaitingIndicators returned error status."));
+ ASSERT_BITS_SET(msgWaiting.iDisplayStatus, displayStatusSetting, KNoUnwantedBits,
+ _L("RMobilePhone::GetIccMessageWaitingIndicators returned incorrect value for iDisplayStatus."));
+
+ // === Unset message waiting indicator for voice and check notification and get message waiting indicator ===
+
+ // Post notification RMobilePhone::NotifyIccMessageWaitingIndicatorsChange
+ phone.NotifyIccMessageWaitingIndicatorsChange(notifyIccMsgWaitIndStatus, mgWaitingNotifPckg);
+
+ // Set the message waiting indicators with RMobilePhone::SetIccMessageWaitingIndicators with TMobilePhoneMessageWaitingV1::iDisplayStatus=0
+ TUint8 invMask = TUint8(displayStatusSetting);
+ invMask = ~invMask;
+ TUint8 invDisplayStatusSetting = displayStatusSetting & invMask;
+ msgWaiting.iDisplayStatus = invDisplayStatusSetting;
+ phone.SetIccMessageWaitingIndicators(setIccMsgWaitIndStatus, msgWaitingPckg);
+ ASSERT_EQUALS(WaitForRequestWithTimeOut(setIccMsgWaitIndStatus, ETimeMedium), KErrNone,
+ _L("RMobilePhone::SetIccMessageWaitingIndicators timed-out."));
+ ASSERT_EQUALS(setIccMsgWaitIndStatus.Int(), KErrNone,
+ _L("RMobilePhone::SetIccMessageWaitingIndicators returned error status."));
+
+ // Check RMobilePhone::NotifyIccMessageWaitingIndicatorsChange completes with TMobilePhoneMessageWaitingV1::iDisplayStatus not in set of KDisplayVoicemailActive
+ ASSERT_EQUALS(WaitForRequestWithTimeOut(notifyIccMsgWaitIndStatus, ETimeMedium), KErrNone,
+ _L("RMobilePhone::NotifyIccMessageWaitingIndicatorsChange timed-out."));
+ ASSERT_EQUALS(notifyIccMsgWaitIndStatus.Int(), KErrNone,
+ _L("RMobilePhone::NotifyIccMessageWaitingIndicatorsChange returned with an error status."));
+ ASSERT_BITS_SET(mgWaitingNotif.iDisplayStatus, invDisplayStatusSetting, KNoUnwantedBits,
+ _L("RMobilePhone::NotifyIccMessageWaitingIndicatorsChange did not return expected value for iDisplayStatus."));
+
+ // Check RMobilePhone::GetIccMessageWaitingIndicators returns TMobilePhoneMessageWaitingV1::iDisplayStatus not in set of KDisplayVoicemailActive
+ phone.GetIccMessageWaitingIndicators(getIccMsgWaitIndStatus, msgWaitingPckg);
+ ASSERT_EQUALS(WaitForRequestWithTimeOut(getIccMsgWaitIndStatus, ETimeMedium), KErrNone,
+ _L("RMobilePhone::GetIccMessageWaitingIndicators timed-out."));
+ ASSERT_EQUALS(getIccMsgWaitIndStatus.Int(), KErrNone,
+ _L("RMobilePhone::GetIccMessageWaitingIndicators returned error status."));
+ ASSERT_BITS_SET(msgWaiting.iDisplayStatus, invDisplayStatusSetting, KNoUnwantedBits,
+ _L("RMobilePhone::GetIccMessageWaitingIndicators returned incorrect value for iDisplayStatus."));
+
+ ++i;
+ } while(i < KMaxDisplayFlags);
+
+
+ //
+ // TEST END
+ //
+
+ StartCleanup();
+
+ CleanupStack::PopAndDestroy(4, ¬ifySecurityEventStatus);
+
+ return TestStepResult();
+ }
+
+TPtrC CCTSYIntegrationTestMessageWaiting0001::GetTestStepName()
+/**
+ * @return The test step name.
+ */
+ {
+ return _L("CCTSYIntegrationTestMessageWaiting0001");
+ }
+
+
+
+CCTSYIntegrationTestMessageWaiting0002::CCTSYIntegrationTestMessageWaiting0002(CEtelSessionMgr& aEtelSessionMgr)
+ : CCTSYIntegrationTestMessageWaitingBase(aEtelSessionMgr)
+/**
+ * Constructor.
+ */
+ {
+ SetTestStepName(CCTSYIntegrationTestMessageWaiting0002::GetTestStepName());
+ }
+
+CCTSYIntegrationTestMessageWaiting0002::~CCTSYIntegrationTestMessageWaiting0002()
+/**
+ * Destructor.
+ */
+ {
+ }
+
+TVerdict CCTSYIntegrationTestMessageWaiting0002::doTestStepL()
+/**
+ * @SYMTestCaseID BA-CTSY-INT-MSGW-0002
+ * @SYMFssID BA/CTSY/MSGW-0002
+ * @SYMTestCaseDesc Receive message waiting indicator from network
+ * @SYMTestPriority High
+ * @SYMTestActions
+ * @SYMTestExpectedResults Pass - Message waiting indicator received.
+ * @SYMTestType CIT
+ * @SYMTestCaseDependencies simulated/manual
+ *
+ * Reason for test: Verify message waiting indicator notification completes and status is correct.
+ *
+ * @return - TVerdict code
+ */
+ {
+ //
+ // SET UP
+ //
+
+ RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer,KMainPhone);
+
+ // Call TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL
+ CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone, _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error"));
+
+ // This step is needed before we access the sim, and was taken from cctsyintegrationtestsubscriberinfo.cpp ....
+ // In the CTSY, the security event triggers a call to get the ICC type from the SIM
+ TExtEtelRequestStatus notifySecurityEventStatus(phone, EMobilePhoneNotifySecurityEvent);
+ CleanupStack::PushL(notifySecurityEventStatus);
+ RMobilePhone::TMobilePhoneSecurityEvent event;
+ phone.NotifySecurityEvent(notifySecurityEventStatus, event);
+ User::After(KOneSecond*5);
+
+ // Ensure that RMobilePhone::GetIccAccessCaps returns caps in set of RMobilePhone::KCapsUSimAccessSupported
+ TUint32 iccAccessCaps;
+ ASSERT_EQUALS(phone.GetIccAccessCaps(iccAccessCaps), KErrNone,
+ _L("RMobilePhone::GetIccAccessCaps returned error."));
+ ASSERT_BITS_SET(iccAccessCaps, RMobilePhone::KCapsUSimAccessSupported, KNoUnwantedBits,
+ _L("RMobilePhone::GetIccAccessCaps returned incorrect caps."));
+
+ // Turn off all message waiting indicators using RMobilePhone::SetIccMessageWaitingIndicators with TMobilePhoneMessageWaitingV1::iDisplayStatus=KDisplayVoicemailActive
+ TExtEtelRequestStatus setIccMsgWaitIndStatus(phone, EMobilePhoneSetIccMessageWaitingIndicators);
+ CleanupStack::PushL(setIccMsgWaitIndStatus);
+ RMobilePhone::TMobilePhoneMessageWaitingV1 msgWaiting;
+ msgWaiting.iDisplayStatus = RMobilePhone::KDisplayVoicemailActive;
+ RMobilePhone::TMobilePhoneMessageWaitingV1Pckg msgWaitingPckg(msgWaiting);
+ phone.SetIccMessageWaitingIndicators(setIccMsgWaitIndStatus, msgWaitingPckg);
+ ASSERT_EQUALS(WaitForRequestWithTimeOut(setIccMsgWaitIndStatus, ETimeMedium), KErrNone,
+ _L("RMobilePhone::SetIccMessageWaitingIndicators timed-out."));
+ ASSERT_EQUALS(setIccMsgWaitIndStatus.Int(), KErrNone,
+ _L("RMobilePhone::SetIccMessageWaitingIndicators returned error status."));
+
+ // Ensure RMobilePhone::GetIccMessageWaitingIndicators returns TMobilePhoneMessageWaitingV1::iDisplayStatus in set of KDisplayVoicemailActive
+ TExtEtelRequestStatus getIccMsgWaitIndStatus(phone, EMobilePhoneGetIccMessageWaitingIndicators);
+ CleanupStack::PushL(getIccMsgWaitIndStatus);
+ phone.GetIccMessageWaitingIndicators(getIccMsgWaitIndStatus, msgWaitingPckg);
+ ASSERT_EQUALS(WaitForRequestWithTimeOut(getIccMsgWaitIndStatus, ETimeMedium), KErrNone,
+ _L("RMobilePhone::GetIccMessageWaitingIndicators timed-out."));
+ ASSERT_EQUALS(getIccMsgWaitIndStatus.Int(), KErrNone,
+ _L("RMobilePhone::GetIccMessageWaitingIndicators returned error status."));
+ ASSERT_BITS_SET(msgWaiting.iDisplayStatus, RMobilePhone::KDisplayVoicemailActive, KNoUnwantedBits,
+ _L("RMobilePhone::GetIccMessageWaitingIndicators returned incorrect value for iDisplayStatus."));
+
+ //
+ // SET UP END
+ //
+
+ StartTest();
+
+ //
+ // TEST START
+ //
+
+ // Post RMobilePhone::NotifyMessageWaiting
+ // Set up for notification RMobilePhone::NotifyIccMessageWaitingIndicatorsChange
+ TExtEtelRequestStatus notifyIccMsgWaitIndStatus(phone, EMobilePhoneNotifyIccMessageWaitingIndicatorsChange);
+ CleanupStack::PushL(notifyIccMsgWaitIndStatus);
+ RMobilePhone::TMobilePhoneMessageWaitingV1 mgWaitingNotif;
+ RMobilePhone::TMobilePhoneMessageWaitingV1Pckg mgWaitingNotifPckg(mgWaitingNotif);
+ phone.NotifyIccMessageWaitingIndicatorsChange(notifyIccMsgWaitIndStatus, mgWaitingNotifPckg);
+
+ // Simulated network sends a message waiting indication to the phone.
+
+ /*
+ * Here it seems you may have several choices on how to get a voicemail on to the device.
+ * 1. Use a sim network as suggested in the comment above - don't know too much about this
+ * 2. Use code to divert an incoming call to the voicemail number
+ * 3. Use a real device to set the sim to divert all incoming calls to voicemail, then wait for a call
+ *
+ * Option 3 was used at this point.
+ */
+
+ DisplayUserInteractionPromptL(_L("Dial this SIM now."), ETimeLong);
+
+ User::After(10000000);
+ DisplayUserInteractionPromptL(_L("Hangup call now."), ETimeLong);
+ User::After(10000000); // Wait for MWIS to change
+
+ // Check RMobilePhone::NotifyIccMessageWaitingIndicatorsChange completes with TMobilePhoneMessageWaitingV1::iDisplayStatus in set of KDisplayVoicemailActive
+ ERR_PRINTF2(_L("<font color=Orange>@CTSYKnownFailure: defect id = %d</font>"), 10057);
+ ASSERT_EQUALS(WaitForRequestWithTimeOut(notifyIccMsgWaitIndStatus, ETimeLong), KErrNone,
+ _L("RMobilePhone::NotifyIccMessageWaitingIndicatorsChange timed-out."));
+ ASSERT_EQUALS(notifyIccMsgWaitIndStatus.Int(), KErrNone,
+ _L("RMobilePhone::NotifyIccMessageWaitingIndicatorsChange returned with an error status."));
+ ASSERT_TRUE(mgWaitingNotif.iVoiceMsgs > 0,
+ _L("RMobilePhone::NotifyIccMessageWaitingIndicatorsChange did not return expected value fot voicemail messages waiting."));
+
+ // Check RMobilePhone::GetIccMessageWaitingIndicators returns TMobilePhoneMessageWaitingV1::iDisplayStatus in set of KDisplayVoicemailActive
+ phone.GetIccMessageWaitingIndicators(getIccMsgWaitIndStatus, msgWaitingPckg);
+ ASSERT_EQUALS(WaitForRequestWithTimeOut(getIccMsgWaitIndStatus, ETimeMedium), KErrNone,
+ _L("RMobilePhone::GetIccMessageWaitingIndicators timed-out."));
+ ASSERT_EQUALS(getIccMsgWaitIndStatus.Int(), KErrNone,
+ _L("RMobilePhone::GetIccMessageWaitingIndicators returned error status."));
+ ASSERT_BITS_SET(msgWaiting.iDisplayStatus, RMobilePhone::KDisplayVoicemailActive, KNoUnwantedBits,
+ _L("RMobilePhone::GetIccMessageWaitingIndicators returned incorrect value for iDisplayStatus."));
+
+ // Check RMobilePhone::GetIccMessageWaitingIndicators returnsTMobilePhoneMessageWaitingV1::iVoiceMsgs > 0
+ ERR_PRINTF2(_L("<font color=Orange>@CTSYKnownFailure: defect id = %d</font>"), 10056);
+ ASSERT_TRUE(msgWaiting.iVoiceMsgs > 0,
+ _L("RMobilePhone::GetIccMessageWaitingIndicators did not return expected value fot voicemail messages waiting."));
+
+ //
+ // TEST END
+ //
+
+ StartCleanup();
+
+ CleanupStack::PopAndDestroy(4, ¬ifySecurityEventStatus);
+
+ return TestStepResult();
+ }
+
+TPtrC CCTSYIntegrationTestMessageWaiting0002::GetTestStepName()
+/**
+ * @return The test step name.
+ */
+ {
+ return _L("CCTSYIntegrationTestMessageWaiting0002");
+ }
+
+
+