diff -r 000000000000 -r 3553901f7fa8 telephonyserverplugins/simatktsy/tests/src/ccsatsendreceivedatafu.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/telephonyserverplugins/simatktsy/tests/src/ccsatsendreceivedatafu.cpp Tue Feb 02 01:41:59 2010 +0200 @@ -0,0 +1,1948 @@ +// 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 SendReceiveData in the SAT. +*/ + +#include "ccsatsendreceivedatafu.h" +#include +#include +#include +#include + +// define used constants +const TUint8 KSendDataStoreMode = 0x00; // constant for store mode +const TUint8 KReceiveDataQualifier = 0x00; // RFU +const TUint8 KIconOne = 1; // record 1 in EFIMG file on sim +const TUint8 KChannelDataLength = 200; // should be non zero + +// additional information for RSat::KNetworkUnableToProcessCmd error +// in processing proactive command +// please see documentation for RSat::KNetworkUnableToProcessCmd +const TUint8 KRequestedFacilityNotImplemented = 69/*see 3GPP TS 24.008*/ | 0x80; + +// define some channel data +_LIT8(KChannelData, "\x00\x01\x02\x03\x04\x05\x06\x07"); + +_LIT8(KBasicIconAlpha, "Basic Icon"); + +//"Hello" in Russian, first byte "\x80" is 0x80 UCS2 coding type for Tlv data +_LIT8(KRussianHello, "\x80\x04\x17\x04\x14\x04\x20\x04\x10\x04\x12\x04\x21\ +\x04\x22\x04\x12\x04\x23\x04\x19\x04\x22\x04\x15"); +//"Hello" in Russian in unicode for checking results +_LIT16(KRussianHelloU, "\x0417\x0414\x0420\x0410\x0412\x0421\x0422\x0412\ +\x0423\x0419\x0422\x0415"); + +//"Hello" in Chinese, first byte "\x80" is 0x80 UCS2 coding type for Tlv data +_LIT8(KChineseHello, "\x80\x4F\x60\x59\x7D"); +//"Hello" in Chinese in unicode for checking results +_LIT16(KChineseHelloU, "\x4F60\x597D"); + +//Characters in Katakana, first byte "\x80" is 0x80 UCS2 coding type for Tlv data +_LIT8(KKatakanaChars, "\x80\x30\xEB"); +//Characters in Katakana in unicode for checking results +_LIT16(KKatakanaCharsU, "\x30EB"); + +CTestSuite* CCSatSendReceiveDataFU::CreateSuiteL(const TDesC& aName) + { + SUB_SUITE; + + ADD_TEST_STEP_ISO_CPP(CCSatSendReceiveDataFU, TestNotifyReceiveDataPCmd0001L); + ADD_TEST_STEP_ISO_CPP(CCSatSendReceiveDataFU, TestNotifyReceiveDataPCmd0001bL); + ADD_TEST_STEP_ISO_CPP(CCSatSendReceiveDataFU, TestNotifyReceiveDataPCmd0002L); + ADD_TEST_STEP_ISO_CPP(CCSatSendReceiveDataFU, TestNotifyReceiveDataPCmd0004L); + ADD_TEST_STEP_ISO_CPP(CCSatSendReceiveDataFU, TestNotifySendDataPCmd0001L); + ADD_TEST_STEP_ISO_CPP(CCSatSendReceiveDataFU, TestNotifySendDataPCmd0001bL); + ADD_TEST_STEP_ISO_CPP(CCSatSendReceiveDataFU, TestNotifySendDataPCmd0002L); + ADD_TEST_STEP_ISO_CPP(CCSatSendReceiveDataFU, TestNotifySendDataPCmd0004L); + + END_SUITE; + } + + +/** +Fills in channel data descriptor +@param aData TDes8 or TDes16 descriptor data to be prepared +*/ +template +LOCAL_C void PrepareChannelData(T& aData) + { + for (TUint8 i = 0; i < KChannelDataLength; i++) + { + aData.Append(i); + } + } + + +/** +Resets RSat::SendDataV2 data fields +@param aSendData data to be reset +*/ +LOCAL_C void ResetSendData(RSat::TSendDataV2& aData) + { + // reset public members + aData.iDestination = RSat::KDeviceIdNotSet; + aData.iMode = RSat::ESendDataModeNotSet; + aData.iAlphaId.iStatus = RSat::EAlphaIdNotSet; + aData.iAlphaId.iAlphaId.Zero(); + aData.iIconId.iQualifier = RSat::EIconQualifierNotSet; + aData.iIconId.iIdentifier = 0; + aData.iChannelData.Zero(); + + // reset protected members; + aData.SetPCmdNumber(0); + } + + +/** +Resets RSat::ReceiveDataV2 data fields +@param aReceiveData data to be reset +*/ +LOCAL_C void ResetReceiveData(RSat::TReceiveDataV2& aData) + { + // reset public members + aData.iDestination = RSat::KDeviceIdNotSet; + aData.iAlphaId.iStatus = RSat::EAlphaIdNotSet; + aData.iAlphaId.iAlphaId.Zero(); + aData.iIconId.iQualifier = RSat::EIconQualifierNotSet; + aData.iIconId.iIdentifier = 0; + aData.iChannelDataLength = 0; + + // reset protected members; + aData.SetPCmdNumber(0); + } + + +/** +Prepares SendData proactive command complete data for MockLtsy +@param aChannelData Channel data +@param aDelay Delay value for MockLtsy completion +*/ +void CCSatSendReceiveDataFU::PrepareSendDataCompleteDataL( + const TDesC8* aChannelData, + TInt aDelay) + { + PrepareSendDataCompleteDataL( + aChannelData, KPCmdNumberOne, KBipSendDataImmediately, RSat::KChannel1, + NULL, RSat::EIconQualifierNotSet, KErrNone, aDelay); + } + +/** +Prepares SendData proactive command complete data for MockLtsy +@param aChannelData Channel data +@param aPCmdNumber Proactive command number. +@param aCmdQual Command qualifier +@param aDestDeviceId Command destination device Id +@param aAlphaId Alpha identifier +@param aIconQual Type of icon +@param aResult Proactive command notify result +@param aDelay Delay value for MockLtsy completion +*/ +void CCSatSendReceiveDataFU::PrepareSendDataCompleteDataL( + const TDesC8* aChannelData, + TUint8 aPCmdNumber, + TUint8 aCmdQual, + TUint8 aDestDeviceId, + const TDesC8* aAlphaId, + RSat::TIconQualifier aIconQual, + TInt aResult, + TInt aDelay) + { + TTlv tlv; + ProactiveCmdTlvBegin(tlv, aPCmdNumber, KSendData, aCmdQual, aDestDeviceId); + + if ( aChannelData ) + { + tlv.AddTag(KTlvChannelDataTag); + tlv.AddData(*aChannelData);//ETLV_ChannelDataString + } + + if ( aAlphaId ) + { + tlv.AddTag(KTlvAlphaIdentifierTag); + tlv.AddData(*aAlphaId);//ETLV_AlphaIdentifier + } + + if ( ( RSat::ESelfExplanatory == aIconQual ) || + ( RSat::ENotSelfExplanatory == aIconQual ) ) + { + tlv.AddTag(KTlvIconIdentifierTag); + tlv.AddByte((RSat::ESelfExplanatory == aIconQual)?0:1);//ETLV_IconQualifier + tlv.AddByte(KIconOne);//ETLV_IconIdentifier + } + + PrepareMockWithCompleteDataForPCmdNotifyL(tlv.End(), aResult, aDelay); + } + + +/** +Tests for successful completion of RSat::NotifySendDataPCmd request +@param aChannelData Channel data +@param aCmdQual Command qualifier +*/ +void CCSatSendReceiveDataFU::TestNotifySendDataPCmdL( + const TDesC8* aChannelData, + TUint8 aCmdQual) + { + TestNotifySendDataPCmdL( + aChannelData, KPCmdNumberOne, aCmdQual, RSat::KChannel1, + NULL, RSat::EIconQualifierNotSet, KErrNone, NULL); + } + + +/** +Tests for completion of RSat::NotifySendDataPCmd request +@param aChannelData Channel data +@param aError Proactive command notify error code for mock data +*/ +void CCSatSendReceiveDataFU::TestNotifySendDataPCmdErrorL( + const TDesC8* aChannelData, + TInt aError) + { + TestNotifySendDataPCmdL( + aChannelData, KPCmdNumberOne, KBipSendDataImmediately, RSat::KChannel1, + NULL, RSat::EIconQualifierNotSet, aError, NULL); + } + + +/** +Tests for successful completion of RSat::NotifySendDataPCmd request +@param aChannelData Channel data +@param aDestDeviceId Command destination device Id +*/ +void CCSatSendReceiveDataFU::TestNotifySendDataPCmdL( + const TDesC8* aChannelData, + RSat::TDeviceId aDestDeviceId) + { + TestNotifySendDataPCmdL( + aChannelData, KPCmdNumberOne, KBipSendDataImmediately, aDestDeviceId, + NULL, RSat::EIconQualifierNotSet, KErrNone, NULL); + } + + +/** +Tests for successful completion of RSat::NotifySendDataPCmd request +@param aChannelData Channel data +@param aAlphaId Alpha identifier +@param aAlphaIdCheck Alpha identifier value to ckeck with returned value +@param aIconQual Type of icon +*/ +void CCSatSendReceiveDataFU::TestNotifySendDataPCmdL( + const TDesC8* aChannelData, + const TDesC8* aAlphaId, + const TDesC16* aAlphaIdCheck, + RSat::TIconQualifier aIconQual) + { + TestNotifySendDataPCmdL( + aChannelData, KPCmdNumberOne, KBipSendDataImmediately, RSat::KChannel1, + aAlphaId, aIconQual, KErrNone, aAlphaIdCheck); + } + + +/** +Tests for completion of RSat::NotifySendDataPCmd request +@param aChannelData Channel data +@param aPCmdNumber Proactive command number +@param aCmdQual Command qualifier +@param aDestDeviceId Command destination device Id +@param aAlphaId Alpha identifier +@param aIconQual Type of icon +@param aResult Proactive command notify result +@param aAlphaIdCheck Alpha identifier value to ckeck with returned value +*/ +void CCSatSendReceiveDataFU::TestNotifySendDataPCmdL( + const TDesC8* aChannelData, + TUint8 aPCmdNumber, + TUint8 aCmdQual, + RSat::TDeviceId aDestDeviceId, + const TDesC8* aAlphaId, + RSat::TIconQualifier aIconQual, + TInt aResult, + const TDesC16* aAlphaIdCheck) + { + // write expected notify request in mockLtsy + PrepareMockWithExpDataForPCmdNotifyL(KSendData); + + // write completion data in mockLtsy to complete notify request + TUint8 destDeviceId = ( RSat::KDeviceIdNotSet==aDestDeviceId )?KDeviceIdNotSet:aDestDeviceId; + PrepareSendDataCompleteDataL( + aChannelData, aPCmdNumber, aCmdQual, destDeviceId, + aAlphaId, aIconQual, aResult); + + // send notify request to CSAT + RSat::TSendDataV2 sendData; + RSat::TSendDataV2Pckg sendDataPckg(sendData); + TRequestStatus requestStatus; + iSat.NotifySendDataPCmd(requestStatus, sendDataPckg); + + // wait for the request completion + User::WaitForRequest(requestStatus); + + // check expected results with recieved data + ASSERT_EQUALS(aResult, requestStatus.Int()); + + if ( KErrNone == aResult ) + { + // proactive command number + ASSERT_EQUALS(aPCmdNumber, sendData.PCmdNumber()); + + ASSERT_EQUALS(aDestDeviceId, sendData.iDestination); + + if ( KBipSendDataImmediately & aCmdQual ) + { + ASSERT_EQUALS(RSat::ESendDataImmediately, sendData.iMode); + } + else + { + ASSERT_EQUALS(RSat::EStoreDataInTxBuffer, sendData.iMode); + } + + if ( aChannelData ) + { + ASSERT_EQUALS( 0, aChannelData->Compare(sendData.iChannelData) ); + } + else + { + ASSERT_EQUALS( 0, KNullDesC8().Compare(sendData.iChannelData) ); + } + + if ( aAlphaId && ( 0 < aAlphaId->Length() ) ) + { + ASSERT_EQUALS(RSat::EAlphaIdProvided, sendData.iAlphaId.iStatus); + if ( aAlphaIdCheck ) + { + ASSERT_EQUALS( 0, aAlphaIdCheck->Compare( + sendData.iAlphaId.iAlphaId)); + } + else + { + ASSERT_EQUALS(0, Compare16bitDesWith8bitDesL( + *aAlphaId, + sendData.iAlphaId.iAlphaId)); + } + } + else if ( aAlphaId && ( 0 == aAlphaId->Length() ) ) + { + ASSERT_EQUALS( RSat::EAlphaIdNull, sendData.iAlphaId.iStatus ); + } + else + { + ASSERT_TRUE( (RSat::EAlphaIdNotPresent == sendData.iAlphaId.iStatus) || + (RSat::EAlphaIdNotSet == sendData.iAlphaId.iStatus) ); + } + + if (RSat::EIconQualifierNotSet != aIconQual) + { + ASSERT_EQUALS(aIconQual, sendData.iIconId.iQualifier); + ASSERT_EQUALS(KIconOne, sendData.iIconId.iIdentifier); + } + else + { + ASSERT_EQUALS(RSat::ENoIconId, sendData.iIconId.iQualifier); + } + } + + AssertMockLtsyStatusL(); + } + + +/** +Handles sending a terminal response +@param aResp terminal response data +*/ +void CCSatSendReceiveDataFU::GenerateSendDataTerminalResponseL( + const RSat::TSendDataRspV2& aResp) + { + GenerateSendDataTerminalResponseL(aResp, KBipSendDataImmediately); + } + + +/** +Handles sending a terminal response +@param aResp terminal response data +@param aCmdQual Command qualifier +@param aExpResult Expected result of TerminalRsp() request +*/ +void CCSatSendReceiveDataFU::GenerateSendDataTerminalResponseL( + const RSat::TSendDataRspV2& aResp, + TUint8 aCmdQual, + TInt aExpResult) + { + TTlv additionalInfoTlv; + TPtrC8 additionalInfoTlvData(KNullDesC8); + + TPtrC genResultAddInfo(KNullDesC); + if ( RSat::KMeProblem == aResp.iInfoType ) + { + // prepare additional info for general result for expected data in mockLtsy + genResultAddInfo.Set( aResp.iAdditionalInfo ); + } + else if ( CommandPerformedSuccessfully(aResp.iGeneralResult) ) + { + // prepare additional info Tlv data for expected data in mockLtsy + additionalInfoTlv.AddTag(KTlvChannelDataLengthTag); + additionalInfoTlv.AddByte(aResp.iChannelDataLength);//ETLV_ChannelDataLength + + additionalInfoTlvData.Set( additionalInfoTlv.GetDataWithoutTopLevelTag() ); + } + + RSat::RSat::TSendDataRspV2Pckg respPckg(aResp); + GenerateTerminalResponseL( + aResp.PCmdNumber(), + KSendData, + aCmdQual, + RSat::ESendData, + respPckg, + genResultAddInfo, + aResp.iGeneralResult, + additionalInfoTlvData, + aExpResult); + + AssertMockLtsyStatusL(); + } + + +/** +Prepares ReceiveData proactive command complete data for MockLtsy +@param aChannelDataLength Channel data length +@param aDelay Delay value for MockLtsy completion +*/ +void CCSatSendReceiveDataFU::PrepareReceiveDataCompleteDataL( + const TUint8* aChannelDataLength, + TInt aDelay) + { + PrepareReceiveDataCompleteDataL( + KPCmdNumberOne, aChannelDataLength, NULL, RSat::EIconQualifierNotSet, + KErrNone, aDelay, RSat::KChannel1); + } + + +/** +Prepares ReceiveData proactive command complete data for MockLtsy +@param aPCmdNumber Proactive command number. +@param aChannelDataLength Channel data length +@param aAlphaId Alpha identifier +@param aIconQual Type of icon +@param aResult Proactive command notify result +@param aDelay Delay value for MockLtsy completion +@param aDestDeviceId Command destination device Id +*/ +void CCSatSendReceiveDataFU::PrepareReceiveDataCompleteDataL( + TUint8 aPCmdNumber, + const TUint8* aChannelDataLength, + const TDesC8* aAlphaId, + RSat::TIconQualifier aIconQual, + TInt aResult, + TInt aDelay, + TUint8 aDestDeviceId) + { + TTlv tlv; + ProactiveCmdTlvBegin(tlv, aPCmdNumber, KReceiveData, KReceiveDataQualifier, aDestDeviceId); + + if ( aChannelDataLength ) + { + tlv.AddTag(KTlvChannelDataLengthTag); + tlv.AddByte(*aChannelDataLength);//ETLV_ChannelDataLength + } + + if ( aAlphaId ) + { + tlv.AddTag(KTlvAlphaIdentifierTag); + tlv.AddData(*aAlphaId);//ETLV_AlphaIdentifier + } + + if ( ( RSat::ESelfExplanatory == aIconQual ) || + ( RSat::ENotSelfExplanatory == aIconQual ) ) + { + tlv.AddTag(KTlvIconIdentifierTag); + tlv.AddByte((RSat::ESelfExplanatory == aIconQual)?0:1);//ETLV_IconQualifier + tlv.AddByte(KIconOne);//ETLV_IconIdentifier + } + + PrepareMockWithCompleteDataForPCmdNotifyL(tlv.End(), aResult, aDelay); + } + + +/** +Tests for completion of RSat::NotifyReceiveDataPCmd request with specified + channel data length and RSat::KChannel1 as the destination device to process + the command +@param aChannelDataLength Channel data length +@param aResult Proactive command notify result +*/ +void CCSatSendReceiveDataFU::TestNotifyReceiveDataPCmdL( + const TUint8* aChannelDataLength, + TInt aResult) + { + TestNotifyReceiveDataPCmdL( + KPCmdNumberOne, aChannelDataLength, NULL, RSat::EIconQualifierNotSet, + aResult, NULL, RSat::KChannel1); + } + + +/** +Tests for successful completion of RSat::NotifyReceiveDataPCmd request with + specified channel data length and destination device to process the command +@param aChannelDataLength Channel data length +@param aDestDeviceId Command destination device Id +*/ +void CCSatSendReceiveDataFU::TestNotifyReceiveDataPCmdL( + const TUint8* aChannelDataLength, + RSat::TDeviceId aDestDeviceId) + { + TestNotifyReceiveDataPCmdL( + KPCmdNumberOne, aChannelDataLength, NULL, RSat::EIconQualifierNotSet, + KErrNone, NULL, aDestDeviceId); + } + + +/** +Tests for successful completion of RSat::NotifyReceiveDataPCmd request +@param aChannelDataLength Channel data length +@param aAlphaId Alpha identifier +@param aAlphaIdCheck Alpha identifier value to ckeck with returned value +@param aIconQual Type of icon +*/ +void CCSatSendReceiveDataFU::TestNotifyReceiveDataPCmdL( + const TUint8* aChannelDataLength, + const TDesC8* aAlphaId, + const TDesC16* aAlphaIdCheck, + RSat::TIconQualifier aIconQual) + { + TestNotifyReceiveDataPCmdL( + KPCmdNumberOne, aChannelDataLength, aAlphaId, aIconQual, + KErrNone, aAlphaIdCheck, RSat::KChannel1); + } + + +/** +Tests for completion of RSat::NotifyReceiveDataPCmd request +@param aPCmdNumber Proactive command number +@param aChannelDataLength Channel data length +@param aAlphaId Alpha identifier +@param aIconQual Type of icon +@param aResult Proactive command notify result +@param aAlphaIdCheck Alpha identifier value to ckeck with returned value +@param aDestDeviceId Command destination device Id +*/ +void CCSatSendReceiveDataFU::TestNotifyReceiveDataPCmdL( + TUint8 aPCmdNumber, + const TUint8* aChannelDataLength, + const TDesC8* aAlphaId, + RSat::TIconQualifier aIconQual, + TInt aResult, + const TDesC16* aAlphaIdCheck, + RSat::TDeviceId aDestDeviceId) + { + // write expected request data in mockLtsy + PrepareMockWithExpDataForPCmdNotifyL(KReceiveData); + + // write completion data in mockLtsy to complete notify request + TUint8 destDeviceId = ( RSat::KDeviceIdNotSet==aDestDeviceId )?KDeviceIdNotSet:aDestDeviceId; + PrepareReceiveDataCompleteDataL( + aPCmdNumber, aChannelDataLength, aAlphaId, + aIconQual, aResult, KDefaultNoDelay, destDeviceId); + + // send notify request to CSAT + RSat::TReceiveDataV2 receiveData; + RSat::TReceiveDataV2Pckg receiveDataPckg(receiveData); + TRequestStatus requestStatus; + iSat.NotifyReceiveDataPCmd(requestStatus, receiveDataPckg); + + // wait for notify request completion + User::WaitForRequest(requestStatus); + + // check expected results with recieved data + ASSERT_EQUALS(aResult, requestStatus.Int()); + + if ( KErrNone == aResult ) + { + ASSERT_EQUALS(aPCmdNumber, receiveData.PCmdNumber()); + + ASSERT_EQUALS(aDestDeviceId, receiveData.iDestination); + + if ( aChannelDataLength ) + { + ASSERT_EQUALS(*aChannelDataLength, receiveData.iChannelDataLength); + } + else + { + ASSERT_EQUALS(static_cast(0), receiveData.iChannelDataLength); + } + + if ( aAlphaId && ( 0 < aAlphaId->Length() ) ) + { + ASSERT_EQUALS(RSat::EAlphaIdProvided, receiveData.iAlphaId.iStatus); + if ( aAlphaIdCheck ) + { + ASSERT_EQUALS( 0, aAlphaIdCheck->Compare( + receiveData.iAlphaId.iAlphaId)); + } + else + { + ASSERT_EQUALS(0, Compare16bitDesWith8bitDesL( + *aAlphaId, + receiveData.iAlphaId.iAlphaId)); + } + } + else if ( aAlphaId && ( 0 == aAlphaId->Length() ) ) + { + ASSERT_EQUALS( RSat::EAlphaIdNull, receiveData.iAlphaId.iStatus ); + } + else + { + ASSERT_TRUE( (RSat::EAlphaIdNotPresent == receiveData.iAlphaId.iStatus) || + (RSat::EAlphaIdNotSet == receiveData.iAlphaId.iStatus) ); + } + + if (RSat::EIconQualifierNotSet != aIconQual) + { + ASSERT_EQUALS(aIconQual, receiveData.iIconId.iQualifier); + ASSERT_EQUALS(KIconOne, receiveData.iIconId.iIdentifier); + } + else + { + ASSERT_EQUALS(RSat::ENoIconId, receiveData.iIconId.iQualifier); + } + } + + AssertMockLtsyStatusL(); + } + + +/** +Handles sending a terminal response +@param aResp terminal response data +@param aExpResult Expected result of TerminalRsp() request +*/ +void CCSatSendReceiveDataFU::GenerateReceiveDataTerminalResponseL( + const RSat::TReceiveDataRspV2& aResp, + TInt aExpResult) + { + TTlv additionalInfoTlv; + TPtrC8 additionalInfoTlvData(KNullDesC8); + + TPtrC genResultAddInfo(KNullDesC); + if ( RSat::KMeProblem == aResp.iInfoType ) + { + // prepare additional info for general result for expected data in mockLtsy + genResultAddInfo.Set( aResp.iAdditionalInfo ); + } + else if ( CommandPerformedSuccessfully(aResp.iGeneralResult) ) + { + // prepare additional info Tlv data for expected data in mockLtsy + additionalInfoTlv.AddTag(KTlvChannelDataTag); + TBuf8 channelData; + channelData.Copy(aResp.iAdditionalInfo); + additionalInfoTlv.AddData(channelData);//ETLV_ChannelDataString + + additionalInfoTlv.AddTag(KTlvChannelDataLengthTag); + additionalInfoTlv.AddByte(aResp.iChannelDataLength);//ETLV_ChannelDataLength + + additionalInfoTlvData.Set( additionalInfoTlv.GetDataWithoutTopLevelTag() ); + } + + RSat::RSat::TReceiveDataRspV2Pckg respPckg(aResp); + GenerateTerminalResponseL( + aResp.PCmdNumber(), + KReceiveData, + KReceiveDataQualifier, + RSat::EReceiveData, + respPckg, + genResultAddInfo, + aResp.iGeneralResult, + additionalInfoTlvData, + aExpResult); + + AssertMockLtsyStatusL(); + } + + +// +// Actual test cases +// + + +/** +@SYMTestCaseID BA-CSAT-SRD-SRDPC-0001 +@SYMPREQ 1780 +@SYMComponent telephony_csat +@SYMTestCaseDesc Test support in CSAT for RSat::NotifyReceiveDataPCmd +@SYMTestPriority High +@SYMTestActions Invokes RSat::NotifyReceiveDataPCmd +@SYMTestExpectedResults Pass +@SYMTestType CT +*/ +void CCSatSendReceiveDataFU::TestNotifyReceiveDataPCmd0001L() + { + + OpenEtelServerL(EUseExtendedError); + CleanupStack::PushL(TCleanupItem(Cleanup,this)); + OpenPhoneL(); + OpenSatL(); + + //------------------------------------------------------------------------- + // TEST C: Successful completion request of + // RSat::NotifyReceiveDataPCmd + //------------------------------------------------------------------------- + + // test for successful completion of RSat::NotifyReceiveDataPCmd request + TestNotifyReceiveDataPCmdL(&KChannelDataLength); + + // generate terminal response to RECEIVE DATA proactive command + RSat::TReceiveDataRspV2 resp; + resp.SetPCmdNumber(KPCmdNumberOne); + resp.iGeneralResult = RSat::KSuccess; + resp.iInfoType = RSat::KChannelData; + // fills in recieved data + PrepareChannelData(resp.iAdditionalInfo); + // fills in the size of available data to recieve + resp.iChannelDataLength = 0xFF; // more than 255 bytes still available + + GenerateReceiveDataTerminalResponseL( resp ); + + //------------------------------------------------------------------------- + // TEST F: Coverage test(s) for RSat::NotifyReceiveDataPCmd + //------------------------------------------------------------------------- + // containing text to display to the user + //------------------------------------------------------------------------- + + // test for successful completion of RSat::NotifyReceiveDataPCmd request + _LIT8(KAlphaId, "Receive Data"); + TestNotifyReceiveDataPCmdL(&KChannelDataLength, &KAlphaId); + + // generate terminal response to RECEIVE DATA proactive command + GenerateReceiveDataTerminalResponseL( resp ); + + //------------------------------------------------------------------------- + // containing text with null data object + //------------------------------------------------------------------------- + + TestNotifyReceiveDataPCmdL(&KChannelDataLength, &KNullDesC8); + + GenerateReceiveDataTerminalResponseL( resp ); + + //------------------------------------------------------------------------- + // containing a self explanatory icon to display to the user, successful + //------------------------------------------------------------------------- + + RSat::TIconQualifier iconQual = RSat::ESelfExplanatory; + TestNotifyReceiveDataPCmdL( + &KChannelDataLength, &KBasicIconAlpha, NULL, iconQual); + + GenerateReceiveDataTerminalResponseL( resp ); + + //------------------------------------------------------------------------- + // containing text & not self-explanatory icon, successful + //------------------------------------------------------------------------- + + iconQual = RSat::ENotSelfExplanatory; + TestNotifyReceiveDataPCmdL( + &KChannelDataLength, &KBasicIconAlpha, NULL, iconQual); + + GenerateReceiveDataTerminalResponseL( resp ); + + //------------------------------------------------------------------------- + // successful, UCS2 text in Cyrillic + //------------------------------------------------------------------------- + + TestNotifyReceiveDataPCmdL( + &KChannelDataLength, &KRussianHello, &KRussianHelloU); + + GenerateReceiveDataTerminalResponseL( resp ); + + //------------------------------------------------------------------------- + // successful, UCS2 text in Chinese + //------------------------------------------------------------------------- + + TestNotifyReceiveDataPCmdL( + &KChannelDataLength, &KChineseHello, &KChineseHelloU); + + GenerateReceiveDataTerminalResponseL( resp ); + + //------------------------------------------------------------------------- + // successful, UCS2 text in Katakana + //------------------------------------------------------------------------- + + TestNotifyReceiveDataPCmdL( + &KChannelDataLength, &KKatakanaChars, &KKatakanaCharsU); + + GenerateReceiveDataTerminalResponseL( resp ); + + //------------------------------------------------------------------------- + // TEST E: Unsolicited completion of RSat::NotifyReceiveDataPCmd + // from LTSY. + //------------------------------------------------------------------------- + + // write completion data in mockLtsy to complete notify + // receive data proactive command request + PrepareReceiveDataCompleteDataL(&KChannelDataLength); + + // write expected request data in mockLtsy + // for terminal response sent by CSAT + RSat::TAdditionalInfo addInfo; + addInfo.Append(RSat::KNoSpecificMeProblem); + PrepareTerminalResponseMockDataL( + KPCmdNumberOne, KReceiveData, KReceiveDataQualifier, + addInfo, RSat::KMeUnableToProcessCmd); + + // wait for completion of requests processing by mockLtsy + WaitForMockLTSYTerminated(); + AssertMockLtsyStatusL(); + + //------------------------------------------------------------------------- + // TEST B: failure on completion of pending request from LTSY->CTSY + //------------------------------------------------------------------------- + + // test for unsuccessful completion of notify + // receive data proactive command request + TestNotifyReceiveDataPCmdL(&KChannelDataLength, KErrUnknown); + + CleanupStack::PopAndDestroy(this); + + } + + +/** +@SYMTestCaseID BA-CSAT-SRD-SRDPC-0001b +@SYMPREQ 1780 +@SYMComponent telephony_csat +@SYMTestCaseDesc Test support in CSAT for RSat::NotifyReceiveDataPCmd when problems in processing command +@SYMTestPriority High +@SYMTestActions Invokes RSat::NotifyReceiveDataPCmd +@SYMTestExpectedResults Pass +@SYMTestType CT +*/ +void CCSatSendReceiveDataFU::TestNotifyReceiveDataPCmd0001bL() + { + + OpenEtelServerL(EUseExtendedError); + CleanupStack::PushL(TCleanupItem(Cleanup,this)); + OpenPhoneL(); + OpenSatL(); + + //------------------------------------------------------------------------- + // TEST F: Coverage test(s) for RSat::NotifyReceiveDataPCmd + //------------------------------------------------------------------------- + // containing a self explanatory icon to display to the user, but + // requested icon could not be displayed + //------------------------------------------------------------------------- + + RSat::TIconQualifier iconQual = RSat::ESelfExplanatory; + TestNotifyReceiveDataPCmdL( + &KChannelDataLength, &KBasicIconAlpha, NULL, iconQual); + + // generate terminal response to RECEIVE DATA proactive command + RSat::TReceiveDataRspV2 resp; + resp.SetPCmdNumber(KPCmdNumberOne); + resp.iGeneralResult = RSat::KSuccessRequestedIconNotDisplayed; + resp.iInfoType = RSat::KChannelData; + // fills in recieved data + PrepareChannelData(resp.iAdditionalInfo); + // fills in the size of available data to recieve + resp.iChannelDataLength = 0xFF; // more than 255 bytes still available + + GenerateReceiveDataTerminalResponseL( resp ); + + //------------------------------------------------------------------------- + // with text & not self-explanatory icon, + // requested icon could not be displayed + //------------------------------------------------------------------------- + + iconQual = RSat::ENotSelfExplanatory; + TestNotifyReceiveDataPCmdL( + &KChannelDataLength, &KBasicIconAlpha, NULL, iconQual); + + GenerateReceiveDataTerminalResponseL( resp ); + + //------------------------------------------------------------------------- + // missing channel data length + //------------------------------------------------------------------------- + + // write expected request data in mockLtsy + PrepareMockWithExpDataForPCmdNotifyL(KReceiveData); + + // write completion data in mockLtsy to complete notify request + // with data missing channel data length + PrepareReceiveDataCompleteDataL(NULL); + + // write expected request data in mockLtsy + // for terminal response sent by CSAT + PrepareTerminalResponseMockDataL( + KPCmdNumberOne, KReceiveData, KReceiveDataQualifier, + KNullDesC, RSat::KErrorRequiredValuesMissing); + + // send notify recieve data proactive command to CSAT + RSat::TReceiveDataV2 receiveData; + RSat::TReceiveDataV2Pckg receiveDataPckg(receiveData); + + TRequestStatus requestStatus; + iSat.NotifyReceiveDataPCmd(requestStatus, receiveDataPckg); + + // wait for unsuccessful request completion + User::WaitForRequest(requestStatus); + ASSERT_EQUALS(KErrCorrupt, requestStatus.Int()); + + AssertMockLtsyStatusL(); + + //------------------------------------------------------------------------- + // network unable to process command + //------------------------------------------------------------------------- + + // test for successful notify request completion + TestNotifyReceiveDataPCmdL(&KChannelDataLength); + + // sent terminal response on the command about + // unsupported error due to procesing the command + resp.iGeneralResult = RSat::KNetworkUnableToProcessCmd; // invalid for this command + resp.iInfoType = RSat::KSatNetworkErrorInfo; + resp.iAdditionalInfo.Zero(); + resp.iAdditionalInfo.Append(KRequestedFacilityNotImplemented); + resp.iChannelDataLength = 0; + GenerateReceiveDataTerminalResponseL( resp, KErrCorrupt ); + + //------------------------------------------------------------------------- + // Me unable to process command + //------------------------------------------------------------------------- + + // test for successful notify request completion + TestNotifyReceiveDataPCmdL(&KChannelDataLength); + + // sent terminal response on the command about + // an error due to procesing the command + resp.iGeneralResult = RSat::KMeUnableToProcessCmd; + resp.iInfoType = RSat::KMeProblem; + resp.iAdditionalInfo.Zero(); + resp.iAdditionalInfo.Append(RSat::KNoSpecificMeProblem); + GenerateReceiveDataTerminalResponseL( resp ); + + //------------------------------------------------------------------------- + // command type not understood + //------------------------------------------------------------------------- + + // test for successful notify request completion + TestNotifyReceiveDataPCmdL(&KChannelDataLength); + + // sent terminal response on the command about + // an error due to procesing the command + resp.iGeneralResult = RSat::KCmdTypeNotUnderstood; + resp.iInfoType = RSat::KNoAdditionalInfo; + resp.iAdditionalInfo.Zero(); + GenerateReceiveDataTerminalResponseL( resp ); + + //------------------------------------------------------------------------- + // command data not understood + //------------------------------------------------------------------------- + + TestNotifyReceiveDataPCmdL(&KChannelDataLength); + + // sent terminal response on the command about + // an error due to procesing the command + resp.iGeneralResult = RSat::KCmdDataNotUnderstood; + GenerateReceiveDataTerminalResponseL( resp ); + + //------------------------------------------------------------------------- + // bearer indep protocol error + //------------------------------------------------------------------------- + + TestNotifyReceiveDataPCmdL(&KChannelDataLength); + + // sent terminal response on the command about + // an error due to procesing the command + resp.iGeneralResult = RSat::KBearerIndepProtocolError; + resp.iInfoType = RSat::KMeProblem; + resp.iAdditionalInfo.Append(RSat::KChannelIdNotValid); + GenerateReceiveDataTerminalResponseL( resp ); + + //------------------------------------------------------------------------- + // command number not known + //------------------------------------------------------------------------- + + TestNotifyReceiveDataPCmdL(&KChannelDataLength); + + // sent terminal response on the command about + // an error due to procesing the command + resp.iGeneralResult = RSat::KCmdNumberNotKnown; + resp.iInfoType = RSat::KNoAdditionalInfo; + resp.iAdditionalInfo.Zero(); + GenerateReceiveDataTerminalResponseL( resp ); + + //------------------------------------------------------------------------- + // command beyond me capabilities + //------------------------------------------------------------------------- + + TestNotifyReceiveDataPCmdL(&KChannelDataLength); + + // sent terminal response on the command about + // an error due to procesing the command + resp.iGeneralResult = RSat::KCmdBeyondMeCapabilities; + GenerateReceiveDataTerminalResponseL( resp ); + + //------------------------------------------------------------------------- + // proactive session terminated by user + //------------------------------------------------------------------------- + + TestNotifyReceiveDataPCmdL(&KChannelDataLength); + + // sent terminal response on the command about + // an error due to procesing the command + resp.iGeneralResult = RSat::KPSessionTerminatedByUser; + GenerateReceiveDataTerminalResponseL( resp ); + + //------------------------------------------------------------------------- + // missing device identities + //------------------------------------------------------------------------- + + // write expected notify request data in mockLtsy + PrepareMockWithExpDataForPCmdNotifyL(KReceiveData); + + // write completion data in mockLtsy to complete notify request + PrepareReceiveDataCompleteDataL( + KPCmdNumberOne, &KChannelDataLength, NULL, RSat::EIconQualifierNotSet, + KErrNone, KDefaultNoDelay, KDeviceIdNotSet); + + // write expected request data in mockLtsy + // for unsuccessful terminal response sent by CSAT + PrepareTerminalResponseMockDataL( + KPCmdNumberOne, KReceiveData, KReceiveDataQualifier, + KNullDesC, RSat::KErrorRequiredValuesMissing); + + // send notify request to CSAT + iSat.NotifyReceiveDataPCmd(requestStatus, receiveDataPckg); + + // wait for notify request completion + User::WaitForRequest(requestStatus); + ASSERT_EQUALS(KErrCorrupt, requestStatus.Int()); + AssertMockLtsyStatusL(); + + //------------------------------------------------------------------------- + // missing information, successful + //------------------------------------------------------------------------- + + TestNotifyReceiveDataPCmdL(&KChannelDataLength); + + // sent terminal response on the command about + // an error due to procesing the command + resp.iGeneralResult = RSat::KMissingInformation; + resp.iInfoType = RSat::KChannelData; + // fills in recieved data + PrepareChannelData(resp.iAdditionalInfo); + // fills in the size of available data to recieve + resp.iChannelDataLength = 0xFF; // more than 255 bytes still available + GenerateReceiveDataTerminalResponseL( resp ); + + //------------------------------------------------------------------------- + // partial comprehension, successful + //------------------------------------------------------------------------- + + TestNotifyReceiveDataPCmdL(&KChannelDataLength); + + resp.iGeneralResult = RSat::KPartialComprehension; + GenerateReceiveDataTerminalResponseL( resp ); + + //------------------------------------------------------------------------- + // interaction with CC permanent error + //------------------------------------------------------------------------- + + TestNotifyReceiveDataPCmdL(&KChannelDataLength); + + // sent terminal response on the command about + // unsupported error due to procesing the command + resp.iGeneralResult = RSat::KInteractionWithCCPermanentError; // invalid for this command + resp.iInfoType = RSat::KMeProblem; + resp.iAdditionalInfo.Zero(); + resp.iAdditionalInfo.Append(RSat::KNoSpecificInteractionError); + resp.iChannelDataLength = 0; + GenerateReceiveDataTerminalResponseL( resp, KErrCorrupt ); + + //------------------------------------------------------------------------- + // Me unable to process command, empty additional info + //------------------------------------------------------------------------- + + TestNotifyReceiveDataPCmdL(&KChannelDataLength); + + // sent terminal response on the command about + // ME problem due to procesing the command + // without addition info on the problem + resp.iGeneralResult = RSat::KMeUnableToProcessCmd; + resp.iAdditionalInfo.Zero(); // invalid for this command + GenerateReceiveDataTerminalResponseL( resp, KErrCorrupt ); + + CleanupStack::PopAndDestroy(this); + + } + + +/** +@SYMTestCaseID BA-CSAT-SRD-SRDPC-0002 +@SYMPREQ 1780 +@SYMComponent telephony_csat +@SYMTestCaseDesc Test support in CSAT for cancelling of RSat::NotifyReceiveDataPCmd +@SYMTestPriority High +@SYMTestActions Invokes cancelling of RSat::NotifyReceiveDataPCmd +@SYMTestExpectedResults Pass +@SYMTestType CT +*/ +void CCSatSendReceiveDataFU::TestNotifyReceiveDataPCmd0002L() + { + + OpenEtelServerL(EUseExtendedError); + CleanupStack::PushL(TCleanupItem(Cleanup,this)); + OpenPhoneL(); + OpenSatL(); + + TRequestStatus mockLtsyStatus; + iMockLTSY.NotifyTerminated(mockLtsyStatus); + + //------------------------------------------------------------------------- + // Test cancelling of RSat::NotifyReceiveDataPCmd + //------------------------------------------------------------------------- + + // write expected notify request data in mockLtsy + PrepareMockWithExpDataForPCmdNotifyL(KReceiveData); + + // write completion data in mockLtsy to complete notify request + + // delay for completion is used for make cancel before + // the completion arrives to CSATTSY + PrepareReceiveDataCompleteDataL(&KChannelDataLength, KDefaultDelay); + + RSat::TAdditionalInfo addInfo; + addInfo.Append(RSat::KNoSpecificMeProblem); + + // write expected request data in mockLtsy + // for unsuccessful terminal response sent by CSAT + // on unsolicited notify request completion + PrepareTerminalResponseMockDataL( + KPCmdNumberOne, KReceiveData, KReceiveDataQualifier, + addInfo, RSat::KMeUnableToProcessCmd); + + // send notify request to CSAT + RSat::TReceiveDataV2 receiveData; + RSat::TReceiveDataV2Pckg receiveDataPckg(receiveData); + TRequestStatus requestStatus; + iSat.NotifyReceiveDataPCmd(requestStatus, receiveDataPckg); + + // cancel notify request + iSat.CancelAsyncRequest(ESatNotifyReceiveDataPCmd); + + // wait for completion of cancelling + User::WaitForRequest(requestStatus); + ASSERT_EQUALS(KErrCancel, requestStatus.Int()); + + // Wait for completion of request processing by mockLtsy + User::WaitForRequest(mockLtsyStatus); + ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int()); + AssertMockLtsyStatusL(); + + CleanupStack::PopAndDestroy(this); + + } + + +/** +@SYMTestCaseID BA-CSAT-SRD-SRDPC-0004 +@SYMPREQ 1780 +@SYMComponent telephony_csat +@SYMTestCaseDesc Test support in CSAT for multiple client requests to RSat::NotifyReceiveDataPCmd +@SYMTestPriority High +@SYMTestActions Invokes multiple client requests to RSat::NotifyReceiveDataPCmd +@SYMTestExpectedResults Pass +@SYMTestType CT +*/ +void CCSatSendReceiveDataFU::TestNotifyReceiveDataPCmd0004L() + { + + 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::NotifyReceiveDataPCmd + // when they both pass the same T-class version + //------------------------------------------------------------------------- + + // write expected notify request data in mockLtsy + PrepareMockWithExpDataForPCmdNotifyL(KReceiveData); + + // write completion data in mockLtsy to complete notify request + + // delay for completion is used for make the 2nd request before + // the completion arrives to CSATTSY + PrepareReceiveDataCompleteDataL(&KChannelDataLength, KDefaultDelay); + + // send notify requests to CSAT + RSat::TReceiveDataV2 receiveData; + RSat::TReceiveDataV2 receiveData2; + RSat::TReceiveDataV2Pckg receiveDataPckg(receiveData); + RSat::TReceiveDataV2Pckg receiveData2Pckg(receiveData2); + TRequestStatus requestStatus; + TRequestStatus requestStatus2; + iSat.NotifyReceiveDataPCmd(requestStatus, receiveDataPckg); + sat2.NotifyReceiveDataPCmd(requestStatus2, receiveData2Pckg); + + // wait for completion of notify requests + User::WaitForRequest(requestStatus); + User::WaitForRequest(requestStatus2); + + // check results + ASSERT_EQUALS(KErrNone, requestStatus.Int()); + ASSERT_EQUALS(KPCmdNumberOne, receiveData.PCmdNumber()); + ASSERT_EQUALS(RSat::KChannel1, receiveData.iDestination); + ASSERT_EQUALS(KChannelDataLength, receiveData.iChannelDataLength); + ASSERT_TRUE( (RSat::EAlphaIdNotPresent == receiveData.iAlphaId.iStatus) || + (RSat::EAlphaIdNotSet == receiveData.iAlphaId.iStatus) ); + ASSERT_EQUALS(RSat::ENoIconId, receiveData.iIconId.iQualifier); + + ASSERT_EQUALS(KErrNone, requestStatus2.Int()); + ASSERT_EQUALS(KPCmdNumberOne, receiveData2.PCmdNumber()); + ASSERT_EQUALS(RSat::KChannel1, receiveData2.iDestination); + ASSERT_EQUALS(KChannelDataLength, receiveData2.iChannelDataLength); + ASSERT_TRUE( (RSat::EAlphaIdNotPresent == receiveData2.iAlphaId.iStatus) || + (RSat::EAlphaIdNotSet == receiveData2.iAlphaId.iStatus) ); + ASSERT_EQUALS(RSat::ENoIconId, receiveData2.iIconId.iQualifier); + + AssertMockLtsyStatusL(); + + // send terminal response on the proactive command + RSat::TReceiveDataRspV2 resp; + resp.SetPCmdNumber(KPCmdNumberOne); + resp.iGeneralResult = RSat::KSuccess; + resp.iInfoType = RSat::KChannelData; + // fills in recieved data + PrepareChannelData(resp.iAdditionalInfo); + // fills in the size of available data to recieve + resp.iChannelDataLength = 0xFF; // more than 255 bytes are available + + // both clients send the terminal response + GenerateReceiveDataTerminalResponseL( resp ); + GenerateReceiveDataTerminalResponseL( resp ); + + //------------------------------------------------------------------------- + // Test B: Test multiple clients requesting RSat::NotifyReceiveDataPCmd + // when they both pass different T-class versions + //------------------------------------------------------------------------- + + // When multiple clients requesting RSat::NotifyReceiveDataPCmd 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 ESatNotifyReceiveDataPCmd ipc requests flow controlled + // by CSATTSY instead of multiple completed by ETEL. Similar defects are 51, 58, 71 and 78 + ERR_PRINTF2(_L("$CSATKnownFailure: defect id = %d"), 86); + ASSERT_TRUE( EFalse ); + + // write expected notify request data in mockLtsy + PrepareMockWithExpDataForPCmdNotifyL(KReceiveData); + + // write completion data in mockLtsy to complete notify request + + // delay for completion is used for make the 2nd request before + // the completion arrives to CSATTSY + PrepareReceiveDataCompleteDataL(&KChannelDataLength, KDefaultDelay); + + // send notify requests to CSAT + RSat::TReceiveDataV5 receiveDataV5; + RSat::TReceiveDataV5Pckg receiveDataV5Pckg(receiveDataV5); + ResetReceiveData(receiveData); + iSat.NotifyReceiveDataPCmd(requestStatus, receiveDataPckg); + sat2.NotifyReceiveDataPCmd(requestStatus2, receiveDataV5Pckg); + + // wait for completion of notify requests + User::WaitForRequest(requestStatus2); + User::WaitForRequest(requestStatus); + + // check results + ASSERT_EQUALS(KErrNone, requestStatus.Int()); + ASSERT_EQUALS(KPCmdNumberOne, receiveData.PCmdNumber()); + ASSERT_EQUALS(RSat::KChannel1, receiveData.iDestination); + ASSERT_EQUALS(KChannelDataLength, receiveData.iChannelDataLength); + ASSERT_TRUE( (RSat::EAlphaIdNotPresent == receiveData.iAlphaId.iStatus) || + (RSat::EAlphaIdNotSet == receiveData.iAlphaId.iStatus) ); + ASSERT_EQUALS(RSat::ENoIconId, receiveData.iIconId.iQualifier); + + ASSERT_EQUALS(KErrNone, requestStatus2.Int()); + ASSERT_EQUALS(KPCmdNumberOne, receiveDataV5.PCmdNumber()); + ASSERT_EQUALS(RSat::KChannel1, receiveDataV5.iDestination); + ASSERT_EQUALS(KChannelDataLength, receiveDataV5.iChannelDataLength); + ASSERT_TRUE( (RSat::EAlphaIdNotPresent == receiveDataV5.iAlphaId.iStatus) || + (RSat::EAlphaIdNotSet == receiveDataV5.iAlphaId.iStatus) ); + ASSERT_EQUALS(RSat::ENoIconId, receiveDataV5.iIconId.iQualifier); + ASSERT_TRUE( RSat::ETextAttributeProvided != + receiveDataV5.iTextAttribute.iStatus ); + + AssertMockLtsyStatusL(); + + // send terminal response on the proactive command + // both clients send the terminal response + GenerateReceiveDataTerminalResponseL( resp ); + GenerateReceiveDataTerminalResponseL( resp ); + + CleanupStack::PopAndDestroy(4, this); // sat2, phone2, telServer2, this + + } + + +/** +@SYMTestCaseID BA-CSAT-SRD-SSDPC-0001 +@SYMPREQ 1780 +@SYMComponent telephony_csat +@SYMTestCaseDesc Test support in CSAT for RSat::NotifySendDataPCmd +@SYMTestPriority High +@SYMTestActions Invokes RSat::NotifySendDataPCmd +@SYMTestExpectedResults Pass +@SYMTestType CT +*/ +void CCSatSendReceiveDataFU::TestNotifySendDataPCmd0001L() + { + + OpenEtelServerL(EUseExtendedError); + CleanupStack::PushL(TCleanupItem(Cleanup,this)); + OpenPhoneL(); + OpenSatL(); + + //------------------------------------------------------------------------- + // TEST C: Successful completion request of + // RSat::NotifySendDataPCmd + //------------------------------------------------------------------------- + // SEND DATA, immediate mode + //------------------------------------------------------------------------- + + // test for successful completion of RSat::NotifySendDataPCmd request + TestNotifySendDataPCmdL( &KChannelData ); + + // generate terminal response to SEND DATA proactive command + RSat::TSendDataRspV2 resp; + resp.SetPCmdNumber(KPCmdNumberOne); + resp.iGeneralResult = RSat::KSuccess; + resp.iInfoType = RSat::KNoAdditionalInfo; + // fills in available space in the Tx buffer + resp.iChannelDataLength = 0xFF; // more than 255 bytes + GenerateSendDataTerminalResponseL( resp ); + + //------------------------------------------------------------------------- + // TEST F: Coverage test(s) for RSat::NotifySendDataPCmd + //------------------------------------------------------------------------- + // SEND DATA, Store mode + //------------------------------------------------------------------------- + + // test for successful completion of RSat::NotifySendDataPCmd request + TBuf8 channelData; + PrepareChannelData(channelData); + TestNotifySendDataPCmdL( &channelData, KSendDataStoreMode ); + + // generate terminal response to SEND DATA proactive command + GenerateSendDataTerminalResponseL( resp, KSendDataStoreMode ); + + //------------------------------------------------------------------------- + // containing text to display to user + //------------------------------------------------------------------------- + + _LIT8(KAlphaId, "Send Data"); + TestNotifySendDataPCmdL(&KChannelData, &KAlphaId); + + GenerateSendDataTerminalResponseL( resp ); + + //------------------------------------------------------------------------- + // containing text of zero length + //------------------------------------------------------------------------- + + TestNotifySendDataPCmdL(&KChannelData, &KNullDesC8); + + GenerateSendDataTerminalResponseL( resp ); + + //------------------------------------------------------------------------- + // containing self explanatory icon to display to user, successful + //------------------------------------------------------------------------- + + RSat::TIconQualifier iconQual = RSat::ESelfExplanatory; + TestNotifySendDataPCmdL(&KChannelData, &KBasicIconAlpha, NULL, iconQual); + + GenerateSendDataTerminalResponseL( resp ); + + //------------------------------------------------------------------------- + // containing text & not self-explanatory icon, successful + //------------------------------------------------------------------------- + + iconQual = RSat::ENotSelfExplanatory; + TestNotifySendDataPCmdL(&KChannelData, &KBasicIconAlpha, NULL, iconQual); + + GenerateSendDataTerminalResponseL( resp ); + + //------------------------------------------------------------------------- + // successful, UCS2 text in Cyrillic + //------------------------------------------------------------------------- + + TestNotifySendDataPCmdL(&KChannelData, &KRussianHello, &KRussianHelloU); + + GenerateSendDataTerminalResponseL( resp ); + + //------------------------------------------------------------------------- + // successful, UCS2 text in Chinese + //------------------------------------------------------------------------- + + TestNotifySendDataPCmdL(&KChannelData, &KChineseHello, &KChineseHelloU); + + GenerateSendDataTerminalResponseL( resp ); + + //------------------------------------------------------------------------- + // successful, UCS2 text in Katakana + //------------------------------------------------------------------------- + + TestNotifySendDataPCmdL(&KChannelData, &KKatakanaChars, &KKatakanaCharsU); + + GenerateSendDataTerminalResponseL( resp ); + + //------------------------------------------------------------------------- + // TEST E: Unsolicited completion of RSat::NotifySendDataPCmd + // from LTSY. + //------------------------------------------------------------------------- + + // write completion data in mockLtsy to complete notify + // send data proactive command request + PrepareSendDataCompleteDataL( &KChannelData ); + + // write expected request data in mockLtsy + // for terminal response sent by CSAT + RSat::TAdditionalInfo addInfo; + addInfo.Append(RSat::KNoSpecificMeProblem); + PrepareTerminalResponseMockDataL( + KPCmdNumberOne, KSendData, KBipSendDataImmediately, + addInfo, RSat::KMeUnableToProcessCmd); + + // wait for completion of requests processing by mockLtsy + WaitForMockLTSYTerminated(); + AssertMockLtsyStatusL(); + + //------------------------------------------------------------------------- + // TEST B: failure on completion of pending request from LTSY->CTSY + //------------------------------------------------------------------------- + + // test for unsuccessful completion of notify + // send data proactive command request + TestNotifySendDataPCmdErrorL(&KChannelData, KErrUnknown); + + CleanupStack::PopAndDestroy(this); + + } + + +/** +@SYMTestCaseID BA-CSAT-SRD-SSDPC-0001b +@SYMPREQ 1780 +@SYMComponent telephony_csat +@SYMTestCaseDesc Test support in CSAT for RSat::NotifySendDataPCmd when problems in processing command +@SYMTestPriority High +@SYMTestActions Invokes RSat::NotifySendDataPCmd +@SYMTestExpectedResults Pass +@SYMTestType CT +*/ +void CCSatSendReceiveDataFU::TestNotifySendDataPCmd0001bL() + { + + OpenEtelServerL(EUseExtendedError); + CleanupStack::PushL(TCleanupItem(Cleanup,this)); + OpenPhoneL(); + OpenSatL(); + + //------------------------------------------------------------------------- + // TEST F: Coverage test(s) for RSat::NotifySendDataPCmd + //------------------------------------------------------------------------- + // Expected Sequence 1.5(ETSI TS 131 124), SEND DATA, + // immediate mode with a bad channel identifier + //------------------------------------------------------------------------- + + // test for successful completion of notify request + TestNotifySendDataPCmdL(&KChannelData, RSat::KChannel2); + + // send unsuccessful terminal response on the proactive command + RSat::TSendDataRspV2 resp; + resp.SetPCmdNumber(KPCmdNumberOne); + resp.iGeneralResult = RSat::KBearerIndepProtocolError; + resp.iInfoType = RSat::KMeProblem; + resp.iAdditionalInfo.Append(RSat::KChannelIdNotValid); + GenerateSendDataTerminalResponseL( resp ); + + //------------------------------------------------------------------------- + // self explanatory icon, requested icon could not be displayed, successful + //------------------------------------------------------------------------- + + // test for successful completion of notify request + RSat::TIconQualifier iconQual = RSat::ESelfExplanatory; + TestNotifySendDataPCmdL(&KChannelData, &KBasicIconAlpha, NULL, iconQual); + + // send terminal response + resp.iGeneralResult = RSat::KSuccessRequestedIconNotDisplayed; + resp.iInfoType = RSat::KNoAdditionalInfo; + resp.iAdditionalInfo.Zero(); + // fills in available space in the Tx buffer + resp.iChannelDataLength = 0xFF; // more than 255 bytes + GenerateSendDataTerminalResponseL( resp ); + + //------------------------------------------------------------------------- + // Alpha identifier & BASIC-ICON, not self-explanatory, + // requested icon could not be displayed + //------------------------------------------------------------------------- + + iconQual = RSat::ENotSelfExplanatory; + TestNotifySendDataPCmdL(&KChannelData, &KBasicIconAlpha, NULL, iconQual); + + GenerateSendDataTerminalResponseL( resp ); + + //------------------------------------------------------------------------- + // missing channel data + //------------------------------------------------------------------------- + + // write expected notify request data in mockLtsy + PrepareMockWithExpDataForPCmdNotifyL(KSendData); + + // write completion data in mockLtsy to complete notify + // send data proactive command request + // with missing channel data + PrepareSendDataCompleteDataL( NULL ); + + // write expected request data in mockLtsy + // for terminal response sent by CSAT + PrepareTerminalResponseMockDataL( + KPCmdNumberOne, KSendData, KBipSendDataImmediately, + KNullDesC, RSat::KErrorRequiredValuesMissing); + + // send notify request + RSat::TSendDataV2 sendData; + RSat::TSendDataV2Pckg sendDataPckg(sendData); + TRequestStatus requestStatus; + iSat.NotifySendDataPCmd(requestStatus, sendDataPckg); + + // wait for notify request completion + User::WaitForRequest(requestStatus); + ASSERT_EQUALS(KErrCorrupt, requestStatus.Int()); + AssertMockLtsyStatusL(); + + //------------------------------------------------------------------------- + // network unable to process cmd + //------------------------------------------------------------------------- + + TestNotifySendDataPCmdL( &KChannelData ); + + // sent terminal response on the command about + // an error due to procesing the command + resp.iGeneralResult = RSat::KNetworkUnableToProcessCmd; + resp.iInfoType = RSat::KSatNetworkErrorInfo; + resp.iAdditionalInfo.Append(KRequestedFacilityNotImplemented); + resp.iChannelDataLength = 0; + GenerateSendDataTerminalResponseL( resp ); + + //------------------------------------------------------------------------- + // command type not understood + //------------------------------------------------------------------------- + + TestNotifySendDataPCmdL( &KChannelData ); + + // sent terminal response on the command about + // an error due to procesing the command + resp.iGeneralResult = RSat::KCmdTypeNotUnderstood; + resp.iInfoType = RSat::KNoAdditionalInfo; + resp.iAdditionalInfo.Zero(); + GenerateSendDataTerminalResponseL( resp ); + + //------------------------------------------------------------------------- + // command data not understood + //------------------------------------------------------------------------- + + TestNotifySendDataPCmdL( &KChannelData ); + + // sent terminal response on the command about + // an error due to procesing the command + resp.iGeneralResult = RSat::KCmdDataNotUnderstood; + GenerateSendDataTerminalResponseL( resp ); + + //------------------------------------------------------------------------- + // bearer indep protocol error + //------------------------------------------------------------------------- + + TestNotifySendDataPCmdL( &KChannelData ); + + // sent terminal response on the command about + // an error due to procesing the command + resp.iGeneralResult = RSat::KBearerIndepProtocolError; + resp.iInfoType = RSat::KMeProblem; + resp.iAdditionalInfo.Append(RSat::KChannelIdNotValid); + GenerateSendDataTerminalResponseL( resp ); + + //------------------------------------------------------------------------- + // command number not known + //------------------------------------------------------------------------- + + TestNotifySendDataPCmdL( &KChannelData ); + + // sent terminal response on the command about + // an error due to procesing the command + resp.iGeneralResult = RSat::KCmdNumberNotKnown; + resp.iInfoType = RSat::KNoAdditionalInfo; + resp.iAdditionalInfo.Zero(); + GenerateSendDataTerminalResponseL( resp ); + + //------------------------------------------------------------------------- + // command beyond me capabilities + //------------------------------------------------------------------------- + + TestNotifySendDataPCmdL( &KChannelData ); + + // sent terminal response on the command about + // an error due to procesing the command + resp.iGeneralResult = RSat::KCmdBeyondMeCapabilities; + GenerateSendDataTerminalResponseL( resp ); + + //------------------------------------------------------------------------- + // proactive session terminated by user + //------------------------------------------------------------------------- + + TestNotifySendDataPCmdL( &KChannelData ); + + // sent terminal response on the command about + // an error due to procesing the command + resp.iGeneralResult = RSat::KPSessionTerminatedByUser; + GenerateSendDataTerminalResponseL( resp ); + + //------------------------------------------------------------------------- + // missing device identities + //------------------------------------------------------------------------- + + // write expected notify request data in mockLtsy + PrepareMockWithExpDataForPCmdNotifyL(KSendData); + + // write completion data in mockLtsy to complete notify request + PrepareSendDataCompleteDataL( + &KChannelData, KPCmdNumberOne, KBipSendDataImmediately, KDeviceIdNotSet, + NULL, RSat::EIconQualifierNotSet, KErrNone, KDefaultNoDelay); + + // write expected request data in mockLtsy + // for unsuccessful terminal response sent by CSAT + PrepareTerminalResponseMockDataL( + KPCmdNumberOne, KSendData, KBipSendDataImmediately, + KNullDesC, RSat::KErrorRequiredValuesMissing); + + // send notify request to CSAT + iSat.NotifySendDataPCmd(requestStatus, sendDataPckg); + + // wait for notify request completion + User::WaitForRequest(requestStatus); + ASSERT_EQUALS(KErrCorrupt, requestStatus.Int()); + AssertMockLtsyStatusL(); + + //------------------------------------------------------------------------- + // Me unable to process command, empty additional info + //------------------------------------------------------------------------- + + TestNotifySendDataPCmdL( &KChannelData ); + + // sent terminal response on the command about + // ME problem due to procesing the command + // without addition info on the problem + resp.iGeneralResult = RSat::KMeUnableToProcessCmd; + resp.iInfoType = RSat::KMeProblem; + GenerateSendDataTerminalResponseL( resp, KBipSendDataImmediately, KErrCorrupt ); + + //------------------------------------------------------------------------- + // interaction with CC permanent error + //------------------------------------------------------------------------- + + TestNotifySendDataPCmdL( &KChannelData ); + + // sent terminal response on the command about + // unsupported error due to procesing the command + resp.iGeneralResult = RSat::KInteractionWithCCPermanentError; // invalid for this command + resp.iAdditionalInfo.Zero(); + resp.iAdditionalInfo.Append(RSat::KNoSpecificInteractionError); + GenerateSendDataTerminalResponseL( resp, KBipSendDataImmediately, KErrCorrupt ); + + //------------------------------------------------------------------------- + // missing information ( successful ) + //------------------------------------------------------------------------- + + TestNotifySendDataPCmdL( &KChannelData ); + + // sent terminal response on the command about + // an error due to procesing the command + resp.iGeneralResult = RSat::KMissingInformation; + resp.iInfoType = RSat::KNoAdditionalInfo; + resp.iAdditionalInfo.Zero(); + resp.iChannelDataLength = 0xFF; + + GenerateSendDataTerminalResponseL( resp ); + + //------------------------------------------------------------------------- + // partial comprehension ( successful ) + //------------------------------------------------------------------------- + + TestNotifySendDataPCmdL( &KChannelData ); + + // sent terminal response on the command about + // an error due to procesing the command + resp.iGeneralResult = RSat::KPartialComprehension; + GenerateSendDataTerminalResponseL( resp ); + + CleanupStack::PopAndDestroy(this); + + } + + +/** +@SYMTestCaseID BA-CSAT-SRD-SSDPC-0002 +@SYMPREQ 1780 +@SYMComponent telephony_csat +@SYMTestCaseDesc Test support in CSAT for cancelling of RSat::NotifySendDataPCmd +@SYMTestPriority High +@SYMTestActions Invokes cancelling of RSat::NotifySendDataPCmd +@SYMTestExpectedResults Pass +@SYMTestType CT +*/ +void CCSatSendReceiveDataFU::TestNotifySendDataPCmd0002L() + { + + OpenEtelServerL(EUseExtendedError); + CleanupStack::PushL(TCleanupItem(Cleanup,this)); + OpenPhoneL(); + OpenSatL(); + + TRequestStatus mockLtsyStatus; + iMockLTSY.NotifyTerminated(mockLtsyStatus); + + //------------------------------------------------------------------------- + // Test cancelling of RSat::NotifySendDataPCmd + //------------------------------------------------------------------------- + + // write expected notify request data in mockLtsy + PrepareMockWithExpDataForPCmdNotifyL(KSendData); + + // write completion data in mockLtsy to complete notify request + + // delay for completion is used for make cancel before + // the completion arrives to CSATTSY + PrepareSendDataCompleteDataL(&KChannelData, KDefaultDelay); + + // write expected request data in mockLtsy + // for unsuccessful terminal response sent by CSAT + // on unsolicited notify request completion + RSat::TAdditionalInfo addInfo; + addInfo.Append(RSat::KNoSpecificMeProblem); + PrepareTerminalResponseMockDataL( + KPCmdNumberOne, KSendData, KBipSendDataImmediately, + addInfo, RSat::KMeUnableToProcessCmd); + + // send notify request to CSAT + RSat::TSendDataV2 sendData; + RSat::TSendDataV2Pckg sendDataPckg(sendData); + TRequestStatus requestStatus; + iSat.NotifySendDataPCmd(requestStatus, sendDataPckg); + + // cancel notify request + iSat.CancelAsyncRequest(ESatNotifySendDataPCmd); + + // wait for completion of cancelling + User::WaitForRequest(requestStatus); + ASSERT_EQUALS(KErrCancel, requestStatus.Int()); + + // Wait for completion of request processing by mockLtsy + User::WaitForRequest(mockLtsyStatus); + ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int()); + AssertMockLtsyStatusL(); + + CleanupStack::PopAndDestroy(this); + + } + + +/** +@SYMTestCaseID BA-CSAT-SRD-SSDPC-0004 +@SYMPREQ 1780 +@SYMComponent telephony_csat +@SYMTestCaseDesc Test support in CSAT for multiple client requests to RSat::NotifySendDataPCmd +@SYMTestPriority High +@SYMTestActions Invokes multiple client requests to RSat::NotifySendDataPCmd +@SYMTestExpectedResults Pass +@SYMTestType CT +*/ +void CCSatSendReceiveDataFU::TestNotifySendDataPCmd0004L() + { + + 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::NotifySendDataPCmd + // when they both pass the same T-class version + //------------------------------------------------------------------------- + + // write expected notify request data in mockLtsy + PrepareMockWithExpDataForPCmdNotifyL(KSendData); + + // write completion data in mockLtsy to complete notify request + + // delay for completion is used for make the 2nd request before + // the completion arrives to CSATTSY + PrepareSendDataCompleteDataL(&KChannelData, KDefaultDelay); + + // send notify requests to CSAT + RSat::TSendDataV2 sendData; + RSat::TSendDataV2 sendData2; + RSat::TSendDataV2Pckg sendDataPckg(sendData); + RSat::TSendDataV2Pckg sendDataPckg2(sendData2); + TRequestStatus requestStatus; + TRequestStatus requestStatus2; + iSat.NotifySendDataPCmd(requestStatus, sendDataPckg); + sat2.NotifySendDataPCmd(requestStatus2, sendDataPckg2); + + // wait for completion of notify requests + User::WaitForRequest(requestStatus); + User::WaitForRequest(requestStatus2); + + // check results + ASSERT_EQUALS(KErrNone, requestStatus.Int()); + ASSERT_EQUALS(KPCmdNumberOne, sendData.PCmdNumber()); + ASSERT_EQUALS(RSat::KChannel1, sendData.iDestination); + ASSERT_EQUALS(RSat::ESendDataImmediately, sendData.iMode); + ASSERT_EQUALS( 0, KChannelData().Compare(sendData.iChannelData) ); + ASSERT_TRUE( (RSat::EAlphaIdNotPresent == sendData.iAlphaId.iStatus) || + (RSat::EAlphaIdNotSet == sendData.iAlphaId.iStatus) ); + ASSERT_EQUALS(RSat::ENoIconId, sendData.iIconId.iQualifier); + + ASSERT_EQUALS(KErrNone, requestStatus2.Int()); + ASSERT_EQUALS(KPCmdNumberOne, sendData2.PCmdNumber()); + ASSERT_EQUALS(RSat::KChannel1, sendData2.iDestination); + ASSERT_EQUALS(RSat::ESendDataImmediately, sendData2.iMode); + ASSERT_EQUALS( 0, KChannelData().Compare(sendData2.iChannelData) ); + ASSERT_TRUE( (RSat::EAlphaIdNotPresent == sendData2.iAlphaId.iStatus) || + (RSat::EAlphaIdNotSet == sendData2.iAlphaId.iStatus) ); + ASSERT_EQUALS(RSat::ENoIconId, sendData2.iIconId.iQualifier); + + AssertMockLtsyStatusL(); + + // send terminal response on the proactive command + RSat::TSendDataRspV2 resp; + resp.SetPCmdNumber(KPCmdNumberOne); + resp.iGeneralResult = RSat::KSuccess; + resp.iInfoType = RSat::KNoAdditionalInfo; + // more than 255 bytes of space available in the Tx buffer + resp.iChannelDataLength = 0xFF; + + // both clients send the terminal response + GenerateSendDataTerminalResponseL( resp ); + GenerateSendDataTerminalResponseL( resp ); + + //------------------------------------------------------------------------- + // Test B: Test multiple clients requesting RSat::NotifySendDataPCmd + // when they both pass different T-class versions + //------------------------------------------------------------------------- + + // When multiple clients requesting RSat::NotifySendDataPCmd 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 ESatNotifySendDataPCmd ipc + // requests flow controlled by CSATTSY instead of multiple completed by ETEL. + // Similar defects are 51, 58, 71, 78 and 86 + ERR_PRINTF2(_L("$CSATKnownFailure: defect id = %d"), 90); + ASSERT_TRUE( EFalse ); + + // write expected notify request data in mockLtsy + PrepareMockWithExpDataForPCmdNotifyL(KSendData); + + // write completion data in mockLtsy to complete notify request + + // delay for completion is used for make the 2nd request before + // the completion arrives to CSATTSY + PrepareSendDataCompleteDataL(&KChannelData, KDefaultDelay); + + // send notify requests to CSAT + RSat::TSendDataV5 sendDataV5; + RSat::TSendDataV5Pckg sendDataV5Pckg(sendDataV5); + ResetSendData(sendData); + iSat.NotifySendDataPCmd(requestStatus, sendDataPckg); + sat2.NotifySendDataPCmd(requestStatus2, sendDataV5Pckg); + + // wait for completion of notify requests + User::WaitForRequest(requestStatus2); + User::WaitForRequest(requestStatus); + + // check results + ASSERT_EQUALS(KErrNone, requestStatus.Int()); + ASSERT_EQUALS(KPCmdNumberOne, sendData.PCmdNumber()); + ASSERT_EQUALS(RSat::KChannel1, sendData.iDestination); + ASSERT_EQUALS(RSat::ESendDataImmediately, sendData.iMode); + ASSERT_EQUALS( 0, KChannelData().Compare(sendData.iChannelData) ); + ASSERT_TRUE( (RSat::EAlphaIdNotPresent == sendData.iAlphaId.iStatus) || + (RSat::EAlphaIdNotSet == sendData.iAlphaId.iStatus) ); + ASSERT_EQUALS(RSat::ENoIconId, sendData.iIconId.iQualifier); + + ASSERT_EQUALS(KErrNone, requestStatus2.Int()); + ASSERT_EQUALS(KPCmdNumberOne, sendDataV5.PCmdNumber()); + ASSERT_EQUALS(RSat::KChannel1, sendDataV5.iDestination); + ASSERT_EQUALS(RSat::ESendDataImmediately, sendDataV5.iMode); + ASSERT_EQUALS( 0, KChannelData().Compare(sendDataV5.iChannelData) ); + ASSERT_TRUE( (RSat::EAlphaIdNotPresent == sendDataV5.iAlphaId.iStatus) || + (RSat::EAlphaIdNotSet == sendDataV5.iAlphaId.iStatus) ); + ASSERT_EQUALS(RSat::ENoIconId, sendDataV5.iIconId.iQualifier); + ASSERT_TRUE( RSat::ETextAttributeProvided != + sendDataV5.iTextAttribute.iStatus ); + + AssertMockLtsyStatusL(); + + // send terminal response on the proactive command + // both clients send the terminal response + GenerateSendDataTerminalResponseL( resp ); + GenerateSendDataTerminalResponseL( resp ); + + CleanupStack::PopAndDestroy(4, this); // sat2, phone2, telServer2, this + + } + +