--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/telephonyserverplugins/simatktsy/tests/src/ccsatdisplaytextfu.cpp Tue Feb 02 01:41:59 2010 +0200
@@ -0,0 +1,1009 @@
+// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+
+
+/**
+ @file The TEFUnit test suite for DisplayText in the SAT.
+*/
+
+#include "ccsatdisplaytextfu.h"
+#include <etel.h>
+#include <etelmm.h>
+#include <satcs.h>
+#include <test/tmockltsydata.h>
+
+CTestSuite* CCSatDisplayTextFU::CreateSuiteL(const TDesC& aName)
+ {
+ SUB_SUITE;
+
+ ADD_TEST_STEP_ISO_CPP(CCSatDisplayTextFU, TestNotifyDisplayTextPCmd0001L);
+ ADD_TEST_STEP_ISO_CPP(CCSatDisplayTextFU, TestNotifyDisplayTextPCmd0001bL);
+ ADD_TEST_STEP_ISO_CPP(CCSatDisplayTextFU, TestNotifyDisplayTextPCmd0002L);
+ ADD_TEST_STEP_ISO_CPP(CCSatDisplayTextFU, TestNotifyDisplayTextPCmd0004L);
+
+ END_SUITE;
+ }
+
+
+/**
+Fills in a Tlv with command details and device identities for DisplayText proactive command
+@param aTlv Tlv to fill in
+@param aPCmdNumber proactive command number
+@param aCommandQualifier DisplayText proactive command qualifier
+*/
+void CCSatDisplayTextFU::DisplayTextPCmdTlvBegin(
+ TTlv& aTlv,
+ TUint8 aPCmdNumber,
+ TUint8 aCommandQualifier)
+ {
+ ProactiveCmdTlvBegin( aTlv, aPCmdNumber, KDisplayText, aCommandQualifier, KDisplay );
+ }
+
+
+/**
+Resets RSat::DisplayTextVx data fields
+@param aDspTxtData data to be reset
+*/
+void ResetDisplayTextData(RSat::TDisplayTextV1& aDspTxtData)
+ {
+ // reset public members
+ switch( aDspTxtData.ExtensionId() )
+ {
+ default:
+ case RSat::KSatV2:
+ (static_cast<RSat::TDisplayTextV2*>(&aDspTxtData))->iDuration.iNumOfUnits = 0;
+ (static_cast<RSat::TDisplayTextV2*>(&aDspTxtData))->iDuration.iTimeUnit = RSat::ETimeUnitNotSet;
+ case RSat::KSatV1:
+ {
+ RSat::TDisplayTextV1& dspTxtDataV1( *static_cast<RSat::TDisplayTextV1*>(&aDspTxtData) );
+
+ dspTxtDataV1.iClearScreenTrigger = RSat::EClearScreenTriggerNotSet;
+ dspTxtDataV1.iIconId.iIdentifier = 0;
+ dspTxtDataV1.iIconId.iQualifier = RSat::EIconQualifierNotSet;
+ dspTxtDataV1.iImmediateRsp = RSat::EImmediateRspNotSet;
+ dspTxtDataV1.iPriority = RSat::EDisplayPriorityNotSet;
+ dspTxtDataV1.iText.SetLength(0);
+ }
+ break;
+ }
+
+ // reset protected members;
+ aDspTxtData.SetPCmdNumber(0);
+ }
+
+
+/**
+Test support in CSATTSY for successful RSat::NotifyDisplayTextPCmd with specified terminal response
+@param aCommandQualifier display text proactive command qualifier
+@param aTextToDisplay text for the Terminal to display
+@param aResp terminal response data
+@param aExpResult expected result of TerminalRsp() execution
+*/
+void CCSatDisplayTextFU::TestNotifyDisplayTextSuccessfulL(
+ TUint8 aCommandQualifier,
+ const TDesC8& aTextToDisplay,
+ const RSat::TDisplayTextRspV1& aResp,
+ const TInt aExpResult)
+ {
+ PrepareMockWithExpDataForPCmdNotifyL(KDisplayText);
+
+ RSat::TDisplayTextV2 dspTxtData;
+ ResetDisplayTextData(dspTxtData);
+ RSat::TDisplayTextV2Pckg dspTxtDataPckg(dspTxtData);
+ TRequestStatus stat;
+ iSat.NotifyDisplayTextPCmd(stat, dspTxtDataPckg);
+
+ TTlv dspTxtTlv;
+ TUint8 dispTextMask = KMessageClearMask; //user must acknowledge the message. normal priority.
+ DisplayTextPCmdTlvBegin( dspTxtTlv, aResp.PCmdNumber(), dispTextMask );
+
+ dspTxtTlv.AddTag(KTlvTextStringTag);
+ dspTxtTlv.AddByte(K8BitDCS); //ETLV_DataCodingScheme
+ dspTxtTlv.AddData(aTextToDisplay);
+
+ PrepareMockWithCompleteDataForPCmdNotifyL(dspTxtTlv.End(), KErrNone);
+
+
+ User::WaitForRequest(stat);
+ ASSERT_EQUALS(KErrNone, stat.Int());
+
+ // check result
+ ASSERT_EQUALS(0, Compare16bitDesWith8bitDesL(aTextToDisplay, dspTxtData.iText));
+ ASSERT_EQUALS(RSat::ENoDurationAvailable, dspTxtData.iDuration.iTimeUnit);
+ ASSERT_EQUALS(RSat::ENormalPriority, dspTxtData.iPriority);
+ ASSERT_EQUALS(RSat::EUserClear, dspTxtData.iClearScreenTrigger);
+ ASSERT_EQUALS(RSat::ENoIconId, dspTxtData.iIconId.iQualifier);
+ ASSERT_EQUALS(RSat::ENoImmediateRsp, dspTxtData.iImmediateRsp);
+ ASSERT_EQUALS(aResp.PCmdNumber(), dspTxtData.PCmdNumber());
+
+ GenerateTerminalResponseL(aCommandQualifier, aResp, aExpResult);
+
+ AssertMockLtsyStatusL();
+ }
+
+
+/**
+Handles sending a terminal response
+@param aCommandQualifier display text proactive command qualifier
+@param aResp terminal response data
+@param aExpResult expected result of TerminalRsp() execution
+*/
+void CCSatDisplayTextFU::GenerateTerminalResponseL(
+ TUint8 aCommandQualifier,
+ const RSat::TDisplayTextRspV1& aResp,
+ const TInt aExpResult)
+ {
+
+ TPtrC genResultAddInfo(KNullDesC);
+ if ( RSat::KMeProblem == aResp.iInfoType )
+ {
+ genResultAddInfo.Set( aResp.iAdditionalInfo );
+ }
+
+ RSat::TDisplayTextRspV1Pckg respPckg(aResp);
+ CCSatComponentTestBase::GenerateTerminalResponseL(
+ aResp.PCmdNumber(),
+ KDisplayText,
+ aCommandQualifier,
+ RSat::EDisplayText,
+ respPckg,
+ genResultAddInfo,
+ aResp.iGeneralResult,
+ KNullDesC8,
+ aExpResult);
+ }
+
+
+//
+// Actual test cases
+//
+
+
+/**
+@SYMTestCaseID BA-CSAT-DT-SNDTPC-0001
+@SYMPREQ 1780
+@SYMComponent telephony_csat
+@SYMTestCaseDesc Test support in CSAT for RSat::NotifyDisplayTextPCmd
+@SYMTestPriority High
+@SYMTestActions Invokes RSat::NotifyDisplayTextPCmd
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCSatDisplayTextFU::TestNotifyDisplayTextPCmd0001L()
+ {
+
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+ OpenSatL();
+
+ //-------------------------------------------------------------------------
+ // TEST C: Successful completion request of
+ // RSat::NotifyDisplayTextPCmd when result is not cached.
+ //-------------------------------------------------------------------------
+ // Expected Sequence 1.1 See ETSI TS 102 384 in subclause 27.22.4.1.1.4.2, Expected Sequence 1.1.
+ // (DISPLAY TEXT normal priority, Unpacked 8 bit data for Text String, successful)
+ //-------------------------------------------------------------------------
+
+ PrepareMockWithExpDataForPCmdNotifyL(KDisplayText);
+
+ RSat::TDisplayTextV2 dspTxtData;
+ ResetDisplayTextData(dspTxtData);
+ RSat::TDisplayTextV2Pckg dspTxtDataPckg(dspTxtData);
+ TRequestStatus requestStatus;
+ iSat.NotifyDisplayTextPCmd(requestStatus, dspTxtDataPckg);
+
+ TTlv dspTxtTlv;
+ TUint8 pcmdNumber = 1;
+ TUint8 dispTextMask = KMessageClearMask; //user must acknowledge the message. normal priority.
+ DisplayTextPCmdTlvBegin( dspTxtTlv, pcmdNumber, dispTextMask );
+
+ dspTxtTlv.AddTag(KTlvTextStringTag);
+ dspTxtTlv.AddByte(K8BitDCS); //ETLV_DataCodingScheme
+ _LIT8(KTextToDisplay, "Toolkit Test 1");
+ dspTxtTlv.AddData(KTextToDisplay);
+
+ PrepareMockWithCompleteDataForPCmdNotifyL(dspTxtTlv.End(), KErrNone);
+
+ User::WaitForRequest(requestStatus);
+ ASSERT_EQUALS(KErrNone, requestStatus.Int());
+
+ // check result
+ ASSERT_EQUALS(0, Compare16bitDesWith8bitDesL(KTextToDisplay, dspTxtData.iText));
+ ASSERT_EQUALS(RSat::ENoDurationAvailable, dspTxtData.iDuration.iTimeUnit);
+ ASSERT_EQUALS(RSat::ENormalPriority, dspTxtData.iPriority);
+ ASSERT_EQUALS(RSat::EUserClear, dspTxtData.iClearScreenTrigger);
+ ASSERT_EQUALS(RSat::ENoIconId, dspTxtData.iIconId.iQualifier);
+ ASSERT_EQUALS(RSat::ENoImmediateRsp, dspTxtData.iImmediateRsp);
+ ASSERT_EQUALS(pcmdNumber, dspTxtData.PCmdNumber());
+
+ //generate the terminal response
+ RSat::TDisplayTextRspV1 resp;
+ resp.iGeneralResult = RSat::KSuccess;
+ resp.iInfoType = RSat::KNoAdditionalInfo;
+ resp.iAdditionalInfo.Zero();
+ resp.SetPCmdNumber(pcmdNumber);
+
+ GenerateTerminalResponseL(dispTextMask, resp);
+ AssertMockLtsyStatusL();
+
+ //-------------------------------------------------------------------------
+ // TEST F: Coverage test(s) for RSat::NotifyDisplayTextPCmd
+ //-------------------------------------------------------------------------
+ // Expected Sequence 1.3 See ETSI TS 102 384 in subclause 27.22.4.1.1.4.2, Expected Sequence 1.3.
+ // (DISPLAY TEXT, high priority, Unpacked 8 bit data for Text String, successful)
+ //-------------------------------------------------------------------------
+
+ PrepareMockWithExpDataForPCmdNotifyL(KDisplayText);
+ ResetDisplayTextData(dspTxtData);
+ iSat.NotifyDisplayTextPCmd(requestStatus, dspTxtDataPckg);
+
+ dispTextMask = KMessageClearMask | KPriorityMask; //user must acknowledge the message. high priority.
+ DisplayTextPCmdTlvBegin( dspTxtTlv, pcmdNumber, dispTextMask );
+
+ dspTxtTlv.AddTag(KTlvTextStringTag);
+ dspTxtTlv.AddByte(K8BitDCS); //ETLV_DataCodingScheme
+ _LIT8(KTextToDisplay2, "Toolkit Test 2");
+ dspTxtTlv.AddData(KTextToDisplay2);
+
+ PrepareMockWithCompleteDataForPCmdNotifyL(dspTxtTlv.End(), KErrNone);
+
+
+ User::WaitForRequest(requestStatus);
+ ASSERT_EQUALS(KErrNone, requestStatus.Int());
+
+
+ // check result
+ ASSERT_EQUALS(0, Compare16bitDesWith8bitDesL(KTextToDisplay2, dspTxtData.iText));
+ ASSERT_EQUALS(RSat::ENoDurationAvailable, dspTxtData.iDuration.iTimeUnit);
+ ASSERT_EQUALS(RSat::EHighPriority, dspTxtData.iPriority);
+ ASSERT_EQUALS(RSat::EUserClear, dspTxtData.iClearScreenTrigger);
+ ASSERT_EQUALS(RSat::ENoIconId, dspTxtData.iIconId.iQualifier);
+ ASSERT_EQUALS(RSat::ENoImmediateRsp, dspTxtData.iImmediateRsp);
+ ASSERT_EQUALS(pcmdNumber, dspTxtData.PCmdNumber());
+
+
+ //generate the terminal response
+ resp.iGeneralResult = RSat::KSuccess;
+ resp.iInfoType = RSat::KNoAdditionalInfo;
+ resp.iAdditionalInfo.Zero();
+ resp.SetPCmdNumber(pcmdNumber);
+
+ GenerateTerminalResponseL(dispTextMask, resp);
+ AssertMockLtsyStatusL();
+
+ //-------------------------------------------------------------------------
+ // Expected Sequence 1.5 See ETSI TS 102 384 in subclause 27.22.4.1.1.4.2, Expected Sequence 1.5.
+ // (DISPLAY TEXT, Clear message after delay, successful)
+ //-------------------------------------------------------------------------
+
+ PrepareMockWithExpDataForPCmdNotifyL(KDisplayText);
+ ResetDisplayTextData(dspTxtData);
+ iSat.NotifyDisplayTextPCmd(requestStatus, dspTxtDataPckg);
+
+ dispTextMask = 0; //Clear message after a delay. normal priority.
+ DisplayTextPCmdTlvBegin( dspTxtTlv, pcmdNumber, dispTextMask );
+
+ dspTxtTlv.AddTag(KTlvTextStringTag);
+ dspTxtTlv.AddByte(K8BitDCS); //ETLV_DataCodingScheme
+ _LIT8(KTextToDisplay4, "Toolkit Test 4");
+ dspTxtTlv.AddData(KTextToDisplay4);
+
+ PrepareMockWithCompleteDataForPCmdNotifyL(dspTxtTlv.End(), KErrNone);
+
+
+ User::WaitForRequest(requestStatus);
+ ASSERT_EQUALS(KErrNone, requestStatus.Int());
+
+
+ // check result
+ ASSERT_EQUALS(0, Compare16bitDesWith8bitDesL(KTextToDisplay4, dspTxtData.iText));
+ ASSERT_EQUALS(RSat::ENoDurationAvailable, dspTxtData.iDuration.iTimeUnit);
+ ASSERT_EQUALS(RSat::ENormalPriority, dspTxtData.iPriority);
+ ASSERT_EQUALS(RSat::EClearAfterDelay, dspTxtData.iClearScreenTrigger);
+ ASSERT_EQUALS(RSat::ENoIconId, dspTxtData.iIconId.iQualifier);
+ ASSERT_EQUALS(RSat::ENoImmediateRsp, dspTxtData.iImmediateRsp);
+ ASSERT_EQUALS(pcmdNumber, dspTxtData.PCmdNumber());
+
+
+ //generate the terminal response
+ resp.iGeneralResult = RSat::KSuccess;
+ resp.iInfoType = RSat::KNoAdditionalInfo;
+ resp.iAdditionalInfo.Zero();
+ resp.SetPCmdNumber(pcmdNumber);
+
+ GenerateTerminalResponseL(dispTextMask, resp);
+ AssertMockLtsyStatusL();
+
+ //-------------------------------------------------------------------------
+ // Expected Sequence 4.1 See ETSI TS 102 384 in subclause 27.22.4.1.4.4.2, Expected Sequence 4.1.
+ // (DISPLAY TEXT, sustained text, unpacked data 8 bits, successful)
+ //-------------------------------------------------------------------------
+
+ PrepareMockWithExpDataForPCmdNotifyL(KDisplayText);
+ ResetDisplayTextData(dspTxtData);
+ iSat.NotifyDisplayTextPCmd(requestStatus, dspTxtDataPckg);
+
+ dispTextMask = KMessageClearMask; //user must acknowledge the message. normal priority.
+ DisplayTextPCmdTlvBegin( dspTxtTlv, pcmdNumber, dispTextMask );
+
+ dspTxtTlv.AddTag(KTlvTextStringTag);
+ dspTxtTlv.AddByte(K8BitDCS); //ETLV_DataCodingScheme
+ dspTxtTlv.AddData(KTextToDisplay);
+
+ dspTxtTlv.AddTag(KTlvImmediateResponseTag);
+
+ PrepareMockWithCompleteDataForPCmdNotifyL(dspTxtTlv.End(), KErrNone);
+
+
+ User::WaitForRequest(requestStatus);
+ ASSERT_EQUALS(KErrNone, requestStatus.Int());
+
+
+ // check result
+ ASSERT_EQUALS(0, Compare16bitDesWith8bitDesL(KTextToDisplay, dspTxtData.iText));
+ ASSERT_EQUALS(RSat::ENoDurationAvailable, dspTxtData.iDuration.iTimeUnit);
+ ASSERT_EQUALS(RSat::ENormalPriority, dspTxtData.iPriority);
+ ASSERT_EQUALS(RSat::EUserClear, dspTxtData.iClearScreenTrigger);
+ ASSERT_EQUALS(RSat::ENoIconId, dspTxtData.iIconId.iQualifier);
+ ASSERT_EQUALS(RSat::EImmediateRsp, dspTxtData.iImmediateRsp);
+ ASSERT_EQUALS(pcmdNumber, dspTxtData.PCmdNumber());
+
+
+ //generate the terminal response
+ resp.iGeneralResult = RSat::KSuccess;
+ resp.iInfoType = RSat::KNoAdditionalInfo;
+ resp.iAdditionalInfo.Zero();
+ resp.SetPCmdNumber(pcmdNumber);
+
+ GenerateTerminalResponseL(dispTextMask, resp);
+ AssertMockLtsyStatusL();
+
+ //-------------------------------------------------------------------------
+ // Expected Sequence 5.1A See ETSI TS 102 384 in subclause 27.22.4.1.5.4.2, Expected Sequence 5.1A.
+ // (DISPLAY TEXT, display of basic icon, self-explanatory, successful)
+ //-------------------------------------------------------------------------
+
+ PrepareMockWithExpDataForPCmdNotifyL(KDisplayText);
+ ResetDisplayTextData(dspTxtData);
+ iSat.NotifyDisplayTextPCmd(requestStatus, dspTxtDataPckg);
+
+ dispTextMask = KMessageClearMask; //user must acknowledge the message. normal priority.
+ DisplayTextPCmdTlvBegin( dspTxtTlv, pcmdNumber, dispTextMask );
+
+ dspTxtTlv.AddTag(KTlvTextStringTag);
+ dspTxtTlv.AddByte(K8BitDCS); //ETLV_DataCodingScheme
+ _LIT8(KTextToDisplay51, "Basic Icon");
+ dspTxtTlv.AddData(KTextToDisplay51);
+
+ dspTxtTlv.AddTag(KTlvIconIdentifierTag);
+ TUint8 iconQualifier = 0; // self explanatory
+ dspTxtTlv.AddByte(iconQualifier); //ETLV_IconQualifier
+ TUint8 iconId = 1; // record 1 in EFIMG
+ dspTxtTlv.AddByte(iconId); //ETLV_IconIdentifier
+
+ PrepareMockWithCompleteDataForPCmdNotifyL(dspTxtTlv.End(), KErrNone);
+
+
+ User::WaitForRequest(requestStatus);
+ ASSERT_EQUALS(KErrNone, requestStatus.Int());
+
+ // check whole result by package
+ ASSERT_EQUALS(0, Compare16bitDesWith8bitDesL(KTextToDisplay51, dspTxtData.iText));
+ ASSERT_EQUALS(RSat::ENoDurationAvailable, dspTxtData.iDuration.iTimeUnit);
+ ASSERT_EQUALS(RSat::ENormalPriority, dspTxtData.iPriority);
+ ASSERT_EQUALS(RSat::EUserClear, dspTxtData.iClearScreenTrigger);
+ ASSERT_EQUALS(RSat::ESelfExplanatory, dspTxtData.iIconId.iQualifier);
+ ASSERT_EQUALS(static_cast<TUint8>(1), dspTxtData.iIconId.iIdentifier);
+ ASSERT_EQUALS(RSat::ENoImmediateRsp, dspTxtData.iImmediateRsp);
+ ASSERT_EQUALS(pcmdNumber, dspTxtData.PCmdNumber());
+
+ //-------------------------------------------------------------------------
+ // Expected Sequence 5.2A See ETSI TS 102 384 in subclause 27.22.4.1.5.4.2, Expected Sequence 5.2A.
+ // (DISPLAY TEXT, display of colour icon, successful)
+ //-------------------------------------------------------------------------
+
+ PrepareMockWithExpDataForPCmdNotifyL(KDisplayText);
+ ResetDisplayTextData(dspTxtData);
+ iSat.NotifyDisplayTextPCmd(requestStatus, dspTxtDataPckg);
+
+ dispTextMask = KMessageClearMask; //user must acknowledge the message. normal priority.
+ DisplayTextPCmdTlvBegin( dspTxtTlv, pcmdNumber, dispTextMask );
+
+ dspTxtTlv.AddTag(KTlvTextStringTag);
+ dspTxtTlv.AddByte(K8BitDCS); //ETLV_DataCodingScheme
+ _LIT8(KTextToDisplay52, "Colour Icon");
+ dspTxtTlv.AddData(KTextToDisplay52);
+
+ dspTxtTlv.AddTag(KTlvIconIdentifierTag);
+ iconQualifier = 1; // not self explanatory
+ dspTxtTlv.AddByte(iconQualifier); //ETLV_IconQualifier
+ iconId = 2; // record 2 in EFIMG
+ dspTxtTlv.AddByte(iconId); //ETLV_IconIdentifier
+
+ PrepareMockWithCompleteDataForPCmdNotifyL(dspTxtTlv.End(), KErrNone);
+
+
+ User::WaitForRequest(requestStatus);
+ ASSERT_EQUALS(KErrNone, requestStatus.Int());
+
+ // check whole result by package
+ ASSERT_EQUALS(0, Compare16bitDesWith8bitDesL(KTextToDisplay52, dspTxtData.iText));
+ ASSERT_EQUALS(RSat::ENoDurationAvailable, dspTxtData.iDuration.iTimeUnit);
+ ASSERT_EQUALS(RSat::ENormalPriority, dspTxtData.iPriority);
+ ASSERT_EQUALS(RSat::EUserClear, dspTxtData.iClearScreenTrigger);
+ ASSERT_EQUALS(RSat::ENotSelfExplanatory, dspTxtData.iIconId.iQualifier);
+ ASSERT_EQUALS(static_cast<TUint8>(2), dspTxtData.iIconId.iIdentifier);
+ ASSERT_EQUALS(RSat::ENoImmediateRsp, dspTxtData.iImmediateRsp);
+ ASSERT_EQUALS(pcmdNumber, dspTxtData.PCmdNumber());
+
+
+ //generate the terminal response
+ resp.iGeneralResult = RSat::KSuccess;
+ resp.iInfoType = RSat::KNoAdditionalInfo;
+ resp.iAdditionalInfo.Zero();
+ resp.SetPCmdNumber(pcmdNumber);
+
+ GenerateTerminalResponseL(dispTextMask, resp);
+ AssertMockLtsyStatusL();
+
+ //-------------------------------------------------------------------------
+ // TEST E: Unsolicited completion of RSat::NotifyDisplayTextPCmd
+ // from LTSY.
+ //-------------------------------------------------------------------------
+
+ dispTextMask = KMessageClearMask; //user must acknowledge the message. normal priority.
+ DisplayTextPCmdTlvBegin( dspTxtTlv, pcmdNumber, dispTextMask );
+
+ dspTxtTlv.AddTag(KTlvTextStringTag);
+ dspTxtTlv.AddByte(K8BitDCS); //ETLV_DataCodingScheme
+ dspTxtTlv.AddData(KTextToDisplay);
+
+ PrepareMockWithCompleteDataForPCmdNotifyL(dspTxtTlv.End(), KErrNone);
+
+ resp.iAdditionalInfo.Zero();
+ resp.iAdditionalInfo.Append(RSat::KNoSpecificMeProblem);
+ PrepareTerminalResponseMockDataL(pcmdNumber, KDisplayText, dispTextMask, resp.iAdditionalInfo, RSat::KMeUnableToProcessCmd, KNullDesC8);
+
+ TRequestStatus mockLtsyStatus;
+ iMockLTSY.NotifyTerminated(mockLtsyStatus);
+ User::WaitForRequest(mockLtsyStatus);
+
+ ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
+ AssertMockLtsyStatusL();
+
+ //-------------------------------------------------------------------------
+ // TEST B: failure on completion of pending request from LTSY->SATTSY
+ //-------------------------------------------------------------------------
+
+ PrepareMockWithExpDataForPCmdNotifyL(KDisplayText);
+ ResetDisplayTextData(dspTxtData);
+ iSat.NotifyDisplayTextPCmd(requestStatus, dspTxtDataPckg);
+
+ dispTextMask = KMessageClearMask; //user must acknowledge the message. normal priority.
+ DisplayTextPCmdTlvBegin( dspTxtTlv, pcmdNumber, dispTextMask );
+
+ dspTxtTlv.AddTag(KTlvTextStringTag);
+ dspTxtTlv.AddByte(K8BitDCS); //ETLV_DataCodingScheme
+ dspTxtTlv.AddData(KTextToDisplay);
+
+ PrepareMockWithCompleteDataForPCmdNotifyL(dspTxtTlv.End(), KErrGeneral);
+
+ User::WaitForRequest(requestStatus);
+
+ ASSERT_EQUALS(KErrGeneral, requestStatus.Int());
+ AssertMockLtsyStatusL();
+
+ CleanupStack::PopAndDestroy(this);
+
+ }
+
+
+/**
+@SYMTestCaseID BA-CSAT-DT-SNDTPC-0001b
+@SYMPREQ 1780
+@SYMComponent telephony_csat
+@SYMTestCaseDesc Test support in CSAT for RSat::NotifyDisplayTextPCmd when problems in processing command
+@SYMTestPriority High
+@SYMTestActions Invokes RSat::NotifyDisplayTextPCmd
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCSatDisplayTextFU::TestNotifyDisplayTextPCmd0001bL()
+ {
+
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+ OpenSatL();
+
+ //-------------------------------------------------------------------------
+ // Expected Sequence 1.2 See ETSI TS 102 384 in subclause 27.22.4.1.1.4.2, Expected Sequence 1.2.
+ // (DISPLAY TEXT normal priority, Unpacked 8 bit data for Text String, screen busy)
+ //-------------------------------------------------------------------------
+
+ TUint8 dispTextMask = KMessageClearMask; //user must acknowledge the message. normal priority.
+ _LIT8(KTextToDisplay, "Toolkit Test 1");
+
+ RSat::TDisplayTextRspV1 resp;
+ resp.iGeneralResult = RSat::KMeUnableToProcessCmd;
+ resp.iInfoType = RSat::KMeProblem;
+ resp.iAdditionalInfo.Zero();
+ resp.iAdditionalInfo.Append(RSat::KScreenBusy);
+ TUint8 pcmdNumber = 1;
+ resp.SetPCmdNumber(pcmdNumber);
+
+ TestNotifyDisplayTextSuccessfulL(dispTextMask, KTextToDisplay, resp);
+
+ //-------------------------------------------------------------------------
+ // Expected Sequence 1.7 See ETSI TS 102 384 in subclause 27.22.4.1.1.4.2, Expected Sequence 1.7.
+ // (DISPLAY TEXT, Backward move in UICC session, successful)
+ //-------------------------------------------------------------------------
+
+ dispTextMask = KMessageClearMask; //user must acknowledge the message. normal priority.
+ _LIT8(KTextToDisplayBackwards, "<GO-BACKWARDS>");
+
+ resp.iGeneralResult = RSat::KBackwardModeRequestedByUser;
+ resp.iInfoType = RSat::KNoAdditionalInfo;
+ resp.iAdditionalInfo.Zero();
+ resp.SetPCmdNumber(pcmdNumber);
+
+ TestNotifyDisplayTextSuccessfulL(dispTextMask, KTextToDisplayBackwards, resp);
+
+ //-------------------------------------------------------------------------
+ // Expected Sequence 1.8 See ETSI TS 102 384 in subclause 27.22.4.1.1.4.2, Expected Sequence 1.8.
+ // (DISPLAY TEXT, session terminated by user)
+ //-------------------------------------------------------------------------
+
+ dispTextMask = KMessageClearMask; //user must acknowledge the message. normal priority.
+ _LIT8(KTextToDisplayAbort, "<ABORT>");
+
+ resp.iGeneralResult = RSat::KPSessionTerminatedByUser;
+ resp.iInfoType = RSat::KNoAdditionalInfo;
+ resp.iAdditionalInfo.Zero();
+ resp.SetPCmdNumber(pcmdNumber);
+
+ TestNotifyDisplayTextSuccessfulL(dispTextMask, KTextToDisplayAbort, resp);
+
+ //-------------------------------------------------------------------------
+ // Expected Sequence 1.9 See ETSI TS 102 384 in subclause 27.22.4.1.1.4.2, Expected Sequence 1.9.
+ // (DISPLAY TEXT, icon and text to be displayed, no text string given, not understood by ME)
+ //-------------------------------------------------------------------------
+
+ PrepareMockWithExpDataForPCmdNotifyL(KDisplayText);
+
+ RSat::TDisplayTextV2 dspTxtData;
+ ResetDisplayTextData(dspTxtData);
+ RSat::TDisplayTextV2Pckg dspTxtDataPckg(dspTxtData);
+ TRequestStatus requestStatus;
+ ResetDisplayTextData(dspTxtData);
+ iSat.NotifyDisplayTextPCmd(requestStatus, dspTxtDataPckg);
+
+ TTlv dspTxtTlv;
+ dispTextMask = KMessageClearMask; //user must acknowledge the message. normal priority.
+ DisplayTextPCmdTlvBegin( dspTxtTlv, pcmdNumber, dispTextMask );
+
+ dspTxtTlv.AddTag(KTlvTextStringTag);
+
+ dspTxtTlv.AddTag(KTlvIconIdentifierTag);
+ dspTxtTlv.AddByte(RSat::ESelfExplanatory); //ETLV_IconQualifier
+ dspTxtTlv.AddByte(1); //ETLV_IconIdentifier
+
+ PrepareMockWithCompleteDataForPCmdNotifyL(dspTxtTlv.End(), KErrNone);
+
+ // terminal response data
+ PrepareTerminalResponseMockDataL(pcmdNumber, KDisplayText, dispTextMask, KNullDesC, RSat::KCmdDataNotUnderstood, KNullDesC8);
+
+ User::WaitForRequest(requestStatus); //for the NotifyDisplayTextPCmd complete
+ ASSERT_EQUALS(KErrCorrupt, requestStatus.Int());
+ AssertMockLtsyStatusL();
+
+ //-------------------------------------------------------------------------
+ // Expected Sequence 2.1 See ETSI TS 102 384 in subclause 27.22.4.1.2.4.2, Expected Sequence 2.1.
+ // (DISPLAY TEXT, no response from user)
+ //-------------------------------------------------------------------------
+
+ dispTextMask = KMessageClearMask; //user must acknowledge the message. normal priority.
+ _LIT8(KTextToDisplayTimeout, "<TIME-OUT>");
+
+ resp.iGeneralResult = RSat::KNoResponseFromUser;
+ resp.iInfoType = RSat::KNoAdditionalInfo;
+ resp.iAdditionalInfo.Zero();
+ resp.SetPCmdNumber(pcmdNumber);
+
+ TestNotifyDisplayTextSuccessfulL(dispTextMask, KTextToDisplayTimeout, resp);
+
+ //-------------------------------------------------------------------------
+ // (DISPLAY TEXT, icon and text to be displayed, no text string tag given, required values missing )
+ //-------------------------------------------------------------------------
+
+ PrepareMockWithExpDataForPCmdNotifyL(KDisplayText);
+ ResetDisplayTextData(dspTxtData);
+ iSat.NotifyDisplayTextPCmd(requestStatus, dspTxtDataPckg);
+
+ // prepare data without text string tag
+ dispTextMask = KMessageClearMask; //user must acknowledge the message. normal priority.
+ DisplayTextPCmdTlvBegin( dspTxtTlv, pcmdNumber, dispTextMask );
+
+ dspTxtTlv.AddTag(KTlvIconIdentifierTag);
+ dspTxtTlv.AddByte(RSat::ESelfExplanatory); //ETLV_IconQualifier
+ dspTxtTlv.AddByte(1); //ETLV_IconIdentifier
+
+ PrepareMockWithCompleteDataForPCmdNotifyL(dspTxtTlv.End(), KErrNone);
+
+ // terminal response data
+ PrepareTerminalResponseMockDataL(pcmdNumber, KDisplayText, dispTextMask, KNullDesC, RSat::KErrorRequiredValuesMissing, KNullDesC8);
+
+ User::WaitForRequest(requestStatus); //for the NotifyDisplayTextPCmd complete
+ ASSERT_EQUALS(KErrCorrupt, requestStatus.Int());
+
+ AssertMockLtsyStatusL();
+
+ //-------------------------------------------------------------------------
+ // (DISPLAY TEXT, command beyond me capabilities)
+ //-------------------------------------------------------------------------
+
+ PrepareMockWithExpDataForPCmdNotifyL(KDisplayText);
+ ResetDisplayTextData(dspTxtData);
+ iSat.NotifyDisplayTextPCmd(requestStatus, dspTxtDataPckg);
+
+ dispTextMask = KMessageClearMask; //user must acknowledge the message. normal priority.
+ DisplayTextPCmdTlvBegin( dspTxtTlv, pcmdNumber, dispTextMask );
+
+ dspTxtTlv.AddTag(KTlvTextStringTag);
+ dspTxtTlv.AddByte(K8BitDCS); //ETLV_DataCodingScheme
+ _LIT8(KTextToDisplayBeyondCaps, "<BEYOND-CAPS>");
+ dspTxtTlv.AddData(KTextToDisplayBeyondCaps);
+
+ PrepareMockWithCompleteDataForPCmdNotifyL(dspTxtTlv.End(), KErrNone);
+
+
+ User::WaitForRequest(requestStatus);
+ ASSERT_EQUALS(KErrNone, requestStatus.Int());
+
+
+ // check result
+ ASSERT_EQUALS(0, Compare16bitDesWith8bitDesL(KTextToDisplayBeyondCaps, dspTxtData.iText));
+ ASSERT_EQUALS(RSat::ENoDurationAvailable, dspTxtData.iDuration.iTimeUnit);
+ ASSERT_EQUALS(RSat::ENormalPriority, dspTxtData.iPriority);
+ ASSERT_EQUALS(RSat::EUserClear, dspTxtData.iClearScreenTrigger);
+ ASSERT_EQUALS(RSat::ENoIconId, dspTxtData.iIconId.iQualifier);
+ ASSERT_EQUALS(RSat::ENoImmediateRsp, dspTxtData.iImmediateRsp);
+ ASSERT_EQUALS(pcmdNumber, dspTxtData.PCmdNumber());
+
+
+ //generate the terminal response
+ resp.iGeneralResult = RSat::KCmdBeyondMeCapabilities;
+ resp.iInfoType = RSat::KNoAdditionalInfo;
+ resp.iAdditionalInfo.Zero();
+ resp.SetPCmdNumber(pcmdNumber);
+
+ GenerateTerminalResponseL(dispTextMask, resp);
+ AssertMockLtsyStatusL();
+
+ //-------------------------------------------------------------------------
+ // Expected Sequence 5.1B See ETSI TS 102 384 in subclause 27.22.4.1.5.4.2, Expected Sequence 5.1B.
+ // (DISPLAY TEXT, display of basic icon, self-explanatory, requested icon could not be displayed)
+ //-------------------------------------------------------------------------
+
+ PrepareMockWithExpDataForPCmdNotifyL(KDisplayText);
+ ResetDisplayTextData(dspTxtData);
+ iSat.NotifyDisplayTextPCmd(requestStatus, dspTxtDataPckg);
+
+ dispTextMask = KMessageClearMask; //user must acknowledge the message. normal priority.
+ DisplayTextPCmdTlvBegin( dspTxtTlv, pcmdNumber, dispTextMask );
+
+ dspTxtTlv.AddTag(KTlvTextStringTag);
+ dspTxtTlv.AddByte(K8BitDCS); //ETLV_DataCodingScheme
+ _LIT8(KTextToDisplay51, "Basic Icon");
+ dspTxtTlv.AddData(KTextToDisplay51);
+
+ dspTxtTlv.AddTag(KTlvIconIdentifierTag);
+ TUint8 iconQualifier = 0; // self explanatory
+ dspTxtTlv.AddByte(iconQualifier); //ETLV_IconQualifier
+ TUint8 iconId = 1; // record 1 in EFIMG
+ dspTxtTlv.AddByte(iconId); //ETLV_IconIdentifier
+
+ PrepareMockWithCompleteDataForPCmdNotifyL(dspTxtTlv.End(), KErrNone);
+
+
+ User::WaitForRequest(requestStatus);
+ ASSERT_EQUALS(KErrNone, requestStatus.Int());
+
+
+ // check result
+ ASSERT_EQUALS(0, Compare16bitDesWith8bitDesL(KTextToDisplay51, dspTxtData.iText));
+ ASSERT_EQUALS(RSat::ENoDurationAvailable, dspTxtData.iDuration.iTimeUnit);
+ ASSERT_EQUALS(RSat::ENormalPriority, dspTxtData.iPriority);
+ ASSERT_EQUALS(RSat::EUserClear, dspTxtData.iClearScreenTrigger);
+ ASSERT_EQUALS(RSat::ESelfExplanatory, dspTxtData.iIconId.iQualifier);
+ ASSERT_EQUALS(static_cast<TUint8>(1), dspTxtData.iIconId.iIdentifier);
+ ASSERT_EQUALS(RSat::ENoImmediateRsp, dspTxtData.iImmediateRsp);
+ ASSERT_EQUALS(pcmdNumber, dspTxtData.PCmdNumber());
+
+
+ //generate the terminal response
+ resp.iGeneralResult = RSat::KSuccessRequestedIconNotDisplayed;
+ resp.iInfoType = RSat::KNoAdditionalInfo;
+ resp.iAdditionalInfo.Zero();
+ resp.SetPCmdNumber(pcmdNumber);
+
+ GenerateTerminalResponseL(dispTextMask, resp);
+ AssertMockLtsyStatusL();
+
+ //-------------------------------------------------------------------------
+ // (DISPLAY TEXT normal priority, Unpacked 8 bit data for Text String, me problem without additional info)
+ //-------------------------------------------------------------------------
+
+ dispTextMask = KMessageClearMask; //user must acknowledge the message. normal priority.
+
+ resp.iGeneralResult = RSat::KMeUnableToProcessCmd;
+ resp.iInfoType = RSat::KMeProblem;
+ resp.iAdditionalInfo.Zero();
+ resp.SetPCmdNumber(pcmdNumber);
+
+ TestNotifyDisplayTextSuccessfulL(dispTextMask, KTextToDisplay, resp, KErrCorrupt);
+
+ CleanupStack::PopAndDestroy(this);
+
+ }
+
+
+/**
+@SYMTestCaseID BA-CSAT-DT-SNDTPC-0002
+@SYMPREQ 1780
+@SYMComponent telephony_csat
+@SYMTestCaseDesc Test support in CSAT for cancelling of RSat::NotifyDisplayTextPCmd
+@SYMTestPriority High
+@SYMTestActions Invokes cancelling of RSat::NotifyDisplayTextPCmd
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCSatDisplayTextFU::TestNotifyDisplayTextPCmd0002L()
+ {
+
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+ OpenSatL();
+
+ TRequestStatus mockLtsyStatus;
+ iMockLTSY.NotifyTerminated(mockLtsyStatus);
+
+ //-------------------------------------------------------------------------
+ // Test cancelling of RSat::NotifyDisplayTextPCmd
+ //-------------------------------------------------------------------------
+
+ PrepareMockWithExpDataForPCmdNotifyL(KDisplayText);
+
+ TTlv dspTxtTlv;
+ TUint8 pcmdNumber = 1;
+ TUint8 dispTextMask = KMessageClearMask; //user must acknowledge the message. normal priority.
+ DisplayTextPCmdTlvBegin( dspTxtTlv, pcmdNumber, dispTextMask );
+
+ dspTxtTlv.AddTag(KTlvTextStringTag);
+ dspTxtTlv.AddByte(K8BitDCS); //ETLV_DataCodingScheme
+ _LIT8(KTextToDisplay, "Toolkit Test 1");
+ dspTxtTlv.AddData(KTextToDisplay);
+
+ PrepareMockWithCompleteDataForPCmdNotifyL(dspTxtTlv.End(), KErrNone, 10);
+
+ RSat::TAdditionalInfo addInfo;
+ addInfo.Zero();
+ addInfo.Append(RSat::KNoSpecificMeProblem);
+ PrepareTerminalResponseMockDataL(
+ pcmdNumber, KDisplayText, dispTextMask,
+ addInfo, RSat::KMeUnableToProcessCmd);
+
+ RSat::TDisplayTextV2 dspTxtData;
+ ResetDisplayTextData(dspTxtData);
+ RSat::TDisplayTextV2Pckg dspTxtDataPckg(dspTxtData);
+ TRequestStatus requestStatus;
+ iSat.NotifyDisplayTextPCmd(requestStatus, dspTxtDataPckg);
+
+ iSat.CancelAsyncRequest(ESatNotifyDisplayTextPCmd);
+
+ User::WaitForRequest(requestStatus);
+ ASSERT_EQUALS(KErrCancel, requestStatus.Int());
+
+ // Wait for completion of iMockLTSY.NotifyTerminated
+ User::WaitForRequest(mockLtsyStatus);
+
+ ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
+
+ AssertMockLtsyStatusL();
+
+ CleanupStack::PopAndDestroy(this);
+
+ }
+
+
+/**
+@SYMTestCaseID BA-CSAT-DT-SNDTPC-0004
+@SYMPREQ 1780
+@SYMComponent telephony_csat
+@SYMTestCaseDesc Test support in CSAT for multiple client requests to RSat::NotifyDisplayTextPCmd
+@SYMTestPriority High
+@SYMTestActions Invokes multiple client requests to RSat::NotifyDisplayTextPCmd
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCSatDisplayTextFU::TestNotifyDisplayTextPCmd0004L()
+ {
+
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+ OpenSatL();
+
+ // Open second client
+ RTelServer telServer2;
+ TInt ret = telServer2.Connect();
+ ASSERT_EQUALS(KErrNone, ret);
+ CleanupClosePushL(telServer2);
+
+ RMobilePhone phone2;
+ ret = phone2.Open(telServer2, KMmTsyPhoneName);
+ ASSERT_EQUALS(KErrNone, ret);
+ CleanupClosePushL(phone2);
+
+ RSat sat2;
+ ret = sat2.Open(phone2);
+ ASSERT_EQUALS(KErrNone, ret);
+ CleanupClosePushL(sat2);
+
+ //-------------------------------------------------------------------------
+ // Test A: Test multiple clients requesting RSat::NotifyDisplayTextPCmd
+ // when they both pass the same T-class version
+ //-------------------------------------------------------------------------
+
+ // send 1st request
+ PrepareMockWithExpDataForPCmdNotifyL(KDisplayText);
+
+ RSat::TDisplayTextV2 dspTxtData;
+ ResetDisplayTextData(dspTxtData);
+ RSat::TDisplayTextV2Pckg dspTxtDataPckg(dspTxtData);
+ TRequestStatus requestStatus;
+ iSat.NotifyDisplayTextPCmd(requestStatus, dspTxtDataPckg);
+
+ // send 2nd request
+ RSat::TDisplayTextV2 dspTxtData2;
+ ResetDisplayTextData(dspTxtData2);
+ RSat::TDisplayTextV2Pckg dspTxtDataPckg2(dspTxtData2);
+ TRequestStatus requestStatus2;
+ sat2.NotifyDisplayTextPCmd(requestStatus2, dspTxtDataPckg2);
+
+ // generate completion
+ TUint8 pcmdNumber = 1;
+
+ TTlv dspTxtTlv;
+ TUint8 dispTextMask = KMessageClearMask; //user must acknowledge the message. normal priority.
+ DisplayTextPCmdTlvBegin( dspTxtTlv, pcmdNumber, dispTextMask );
+
+ dspTxtTlv.AddTag(KTlvTextStringTag);
+ dspTxtTlv.AddByte(K8BitDCS); //ETLV_DataCodingScheme
+ _LIT8(KTextToDisplay, "Toolkit Test 1");
+ dspTxtTlv.AddData(KTextToDisplay);
+
+ PrepareMockWithCompleteDataForPCmdNotifyL(dspTxtTlv.End(), KErrNone);
+
+ // completion of requests
+ User::WaitForRequest(requestStatus);
+ User::WaitForRequest(requestStatus2);
+
+ // check results
+ ASSERT_EQUALS(KErrNone, requestStatus.Int());
+ ASSERT_EQUALS(KErrNone, requestStatus2.Int());
+
+ ASSERT_EQUALS(0, Compare16bitDesWith8bitDesL(KTextToDisplay, dspTxtData.iText));
+ ASSERT_EQUALS(RSat::ENoDurationAvailable, dspTxtData.iDuration.iTimeUnit);
+ ASSERT_EQUALS(RSat::ENormalPriority, dspTxtData.iPriority);
+ ASSERT_EQUALS(RSat::EUserClear, dspTxtData.iClearScreenTrigger);
+ ASSERT_EQUALS(RSat::ENoIconId, dspTxtData.iIconId.iQualifier);
+ ASSERT_EQUALS(RSat::ENoImmediateRsp, dspTxtData.iImmediateRsp);
+ ASSERT_EQUALS(pcmdNumber, dspTxtData.PCmdNumber());
+
+ ASSERT_EQUALS(0, Compare16bitDesWith8bitDesL(KTextToDisplay, dspTxtData2.iText));
+ ASSERT_EQUALS(RSat::ENoDurationAvailable, dspTxtData2.iDuration.iTimeUnit);
+ ASSERT_EQUALS(RSat::ENormalPriority, dspTxtData2.iPriority);
+ ASSERT_EQUALS(RSat::EUserClear, dspTxtData2.iClearScreenTrigger);
+ ASSERT_EQUALS(RSat::ENoIconId, dspTxtData2.iIconId.iQualifier);
+ ASSERT_EQUALS(RSat::ENoImmediateRsp, dspTxtData2.iImmediateRsp);
+ ASSERT_EQUALS(pcmdNumber, dspTxtData2.PCmdNumber());
+
+ // generate the terminal response
+ RSat::TDisplayTextRspV1 resp;
+ resp.iGeneralResult = RSat::KSuccess;
+ resp.iInfoType = RSat::KNoAdditionalInfo;
+ resp.iAdditionalInfo.Zero();
+ resp.SetPCmdNumber(pcmdNumber);
+ GenerateTerminalResponseL(dispTextMask, resp);
+ GenerateTerminalResponseL(dispTextMask, resp);
+
+ AssertMockLtsyStatusL();
+
+ //-------------------------------------------------------------------------
+ // Test B: Test multiple clients requesting RSat::NotifyDisplayTextPCmd
+ // when they both pass different T-class versions
+ //-------------------------------------------------------------------------
+
+ // When multiple clients requesting RSat::NotifyDisplayTextPCmd and they both pass
+ // different packaged parameter versions only the last request completes, because
+ // etel reposts request with new parameter size and looses previous requests.
+ // May be it would be worth to make ESatNotifyDisplayTextPCmd ipc requests flow controlled
+ // by CSATTSY instead of multiple completed by ETEL.
+ ERR_PRINTF2(_L("<font color=Orange>$CSATKnownFailure: defect id = %d</font>"), 58);
+ // Following assert was added to prevent test execution hang
+ ASSERT_TRUE( EFalse );
+
+ // send 1st request
+ PrepareMockWithExpDataForPCmdNotifyL(KDisplayText);
+ ResetDisplayTextData(dspTxtData);
+ iSat.NotifyDisplayTextPCmd(requestStatus, dspTxtDataPckg);
+
+ // send 2nd request
+ RSat::TDisplayTextV5 dspTxtDataV5;
+ ResetDisplayTextData(dspTxtDataV5);
+ RSat::TDisplayTextV5Pckg dspTxtDataV5Pckg(dspTxtDataV5);
+ sat2.NotifyDisplayTextPCmd(requestStatus2, dspTxtDataV5Pckg);
+
+ // generate completion
+ DisplayTextPCmdTlvBegin( dspTxtTlv, pcmdNumber, dispTextMask );
+ dspTxtTlv.AddTag(KTlvTextStringTag);
+ dspTxtTlv.AddByte(K8BitDCS); //ETLV_DataCodingScheme
+ dspTxtTlv.AddData(KTextToDisplay);
+ PrepareMockWithCompleteDataForPCmdNotifyL(dspTxtTlv.End(), KErrNone);
+
+ // completion of requests
+ User::WaitForRequest(requestStatus2);
+ User::WaitForRequest(requestStatus);
+
+ // check results
+ ASSERT_EQUALS(KErrNone, requestStatus.Int());
+ ASSERT_EQUALS(KErrNone, requestStatus2.Int());
+
+ ASSERT_EQUALS(0, Compare16bitDesWith8bitDesL(KTextToDisplay, dspTxtData.iText));
+ ASSERT_EQUALS(RSat::ENoDurationAvailable, dspTxtData.iDuration.iTimeUnit);
+ ASSERT_EQUALS(RSat::ENormalPriority, dspTxtData.iPriority);
+ ASSERT_EQUALS(RSat::EUserClear, dspTxtData.iClearScreenTrigger);
+ ASSERT_EQUALS(RSat::ENoIconId, dspTxtData.iIconId.iQualifier);
+ ASSERT_EQUALS(RSat::ENoImmediateRsp, dspTxtData.iImmediateRsp);
+ ASSERT_EQUALS(pcmdNumber, dspTxtData.PCmdNumber());
+
+ ASSERT_EQUALS(0, Compare16bitDesWith8bitDesL(KTextToDisplay, dspTxtDataV5.iText));
+ ASSERT_EQUALS(RSat::ENoDurationAvailable, dspTxtDataV5.iDuration.iTimeUnit);
+ ASSERT_EQUALS(RSat::ENormalPriority, dspTxtDataV5.iPriority);
+ ASSERT_EQUALS(RSat::EUserClear, dspTxtDataV5.iClearScreenTrigger);
+ ASSERT_EQUALS(RSat::ENoIconId, dspTxtDataV5.iIconId.iQualifier);
+ ASSERT_EQUALS(RSat::ENoImmediateRsp, dspTxtDataV5.iImmediateRsp);
+ ASSERT_TRUE(RSat::ETextAttributeProvided != dspTxtDataV5.iTextAttribute.iStatus);
+ ASSERT_EQUALS(pcmdNumber, dspTxtDataV5.PCmdNumber());
+
+
+ // generate the terminal response
+ resp.iGeneralResult = RSat::KSuccess;
+ resp.iInfoType = RSat::KNoAdditionalInfo;
+ resp.iAdditionalInfo.Zero();
+ resp.SetPCmdNumber(pcmdNumber);
+ GenerateTerminalResponseL(dispTextMask, resp);
+ GenerateTerminalResponseL(dispTextMask, resp);
+
+ AssertMockLtsyStatusL();
+
+ CleanupStack::PopAndDestroy(4, this); // sat2, phone2, telServer2, this
+
+ }
+