--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/telephonyserverplugins/simatktsy/tests/src/ccsatselectitemfu.cpp Tue Feb 02 01:41:59 2010 +0200
@@ -0,0 +1,1841 @@
+// 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 SelectItem in the SAT.
+*/
+
+#include "ccsatselectitemfu.h"
+#include <etel.h>
+#include <etelmm.h>
+#include <satcs.h>
+#include <test/tmockltsydata.h>
+
+#include <cstktsy/tsatutility.h>
+
+const TUint8 KPCmdNumber = 1;
+const TUint8 KSelItmQualifierEmpty = 0x00;
+
+_LIT8(KToolkitSelectAlphaId, "Toolkit Select");
+const TUint8 KNumItemsThree = 3;
+const TUint8 KNumItemsFour = 4;
+const TUint8 KItemIds[KNumItemsFour] = {1,2,3,4};
+_LIT8(KItemName1, "Item 1");
+_LIT8(KItemName2, "Item 2");
+_LIT8(KItemName3, "Item 3");
+_LIT8(KItemName4, "Item 4");
+const TPtrC8 KItemNames[KNumItemsFour] =
+ {
+ KItemName1(),
+ KItemName2(),
+ KItemName3(),
+ KItemName4()
+ };
+
+CTestSuite* CCSatSelectItemFU::CreateSuiteL(const TDesC& aName)
+ {
+ SUB_SUITE;
+
+ ADD_TEST_STEP_ISO_CPP(CCSatSelectItemFU, TestNotifySelectItemPCmd0001L);
+ ADD_TEST_STEP_ISO_CPP(CCSatSelectItemFU, TestNotifySelectItemPCmd0001bL);
+ ADD_TEST_STEP_ISO_CPP(CCSatSelectItemFU, TestNotifySelectItemPCmd0001cL);
+ ADD_TEST_STEP_ISO_CPP(CCSatSelectItemFU, TestNotifySelectItemPCmd0001dL);
+ ADD_TEST_STEP_ISO_CPP(CCSatSelectItemFU, TestNotifySelectItemPCmd0001eL);
+ ADD_TEST_STEP_ISO_CPP(CCSatSelectItemFU, TestNotifySelectItemPCmd0001fL);
+ ADD_TEST_STEP_ISO_CPP(CCSatSelectItemFU, TestNotifySelectItemPCmd0001gL);
+ ADD_TEST_STEP_ISO_CPP(CCSatSelectItemFU, TestNotifySelectItemPCmd0001hL);
+ ADD_TEST_STEP_ISO_CPP(CCSatSelectItemFU, TestNotifySelectItemPCmd0001iL);
+ ADD_TEST_STEP_ISO_CPP(CCSatSelectItemFU, TestNotifySelectItemPCmd0001jL);
+ ADD_TEST_STEP_ISO_CPP(CCSatSelectItemFU, TestNotifySelectItemPCmd0001kL);
+ ADD_TEST_STEP_ISO_CPP(CCSatSelectItemFU, TestNotifySelectItemPCmd0001lL);
+ ADD_TEST_STEP_ISO_CPP(CCSatSelectItemFU, TestNotifySelectItemPCmd0002L);
+ ADD_TEST_STEP_ISO_CPP(CCSatSelectItemFU, TestNotifySelectItemPCmd0004L);
+
+ END_SUITE;
+ }
+
+
+/**
+Resets RSat::SelectItemVx data fields
+@param aSelItmData data to be reset
+*/
+LOCAL_C void ResetSelectItemData(RSat::TMenuItemBaseV1& aSelItmData)
+ {
+ // reset public members
+ switch( aSelItmData.ExtensionId() )
+ {
+ case RSat::KSatV2:
+ (static_cast<RSat::TSelectItemV2*>(&aSelItmData))->iPreference =
+ RSat::ESelectionPreferenceNotSet;
+ // there is no need in break
+ // do the following for both cases
+ case RSat::KSatV1:
+ default:
+ {
+ RSat::TSelectItemV1& selItmDataV1( *static_cast<RSat::TSelectItemV1*>(&aSelItmData) );
+
+ selItmDataV1.iAlphaId.iStatus = RSat::EAlphaIdNotSet;
+ selItmDataV1.iHelp = RSat::EHelpNotSet;
+ selItmDataV1.iDefaultItemId = 0;
+ selItmDataV1.iIconId.iQualifier = RSat::EIconQualifierNotSet;
+ selItmDataV1.iIconListQualifier = RSat::EIconQualifierNotSet;
+ selItmDataV1.iPresentationType = RSat::EPresentationTypeNotSet;
+ selItmDataV1.iAlphaId.iAlphaId.SetLength(0);
+ }
+ break;
+ }
+
+ // reset protected members;
+ aSelItmData.SetPCmdNumber(0);
+ aSelItmData.Reset();
+ }
+
+
+/**
+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
+*/
+LOCAL_C void SelectItemProactiveCmdTlvBegin(
+ TTlv& aTlv,
+ TUint8 aPCmdNumber,
+ TUint8 aCommandQualifier)
+ {
+ ProactiveCmdTlvBegin( aTlv, aPCmdNumber, KSelectItem, aCommandQualifier, KMe );
+ }
+
+
+/**
+Prepares Select Item proactive command complete data for Mock
+@param aPCmdNumber Proactive command number
+@param aCmdQual Command qualifier
+@param aAlphaIdStatus Alpha identifier status
+@param aAlphaId Alpha identifier
+@param aNumItems Number of menu items
+@param aItemIds Array of menu items identifier
+@param aItemNames Array of menu items names
+@param aActionArr Array of next actions
+@param aIconQual Type of icon
+@param aIcon Icon address
+@param aIconListQual Type of icons for menu items
+@param aIconList Array of icon addresses for menu items
+@param aDefaultItem Default item id
+@param aResult Proactive command notify result
+@param aDelay Delay value for MockLtsy completion
+*/
+void CCSatSelectItemFU::PrepareSelItemCompleteDataL(
+ TUint8 aPCmdNumber,
+ TUint8 aCmdQual,
+ RSat::TAlphaIdStatus aAlphaIdStatus,
+ const TDesC8& aAlphaId,
+ TUint8 aNumItems,
+ const TUint8* aItemIds,
+ const TPtrC8* aItemNames,
+ const RArray<TUint32>* aActionArr,
+ RSat::TIconQualifier aIconQual,
+ TUint8 aIcon,
+ RSat::TIconQualifier aIconListQual,
+ const RArray<TUint32>* aIconList,
+ TUint8 aDefaultItem,
+ TInt aResult,
+ TInt aDelay)
+ {
+ TTlv tlv;
+ SelectItemProactiveCmdTlvBegin( tlv, aPCmdNumber, aCmdQual );
+
+ if( (RSat::EAlphaIdProvided == aAlphaIdStatus) ||
+ (RSat::EAlphaIdNull == aAlphaIdStatus))
+ {
+ tlv.AddTag(KTlvAlphaIdentifierTag);
+ tlv.AddData(aAlphaId);//ETLV_AlphaIdentifier
+ }
+
+ for( TInt i = 0; i < aNumItems; i++)
+ {
+ tlv.AddTag(KTlvItemTag);
+ tlv.AddByte(aItemIds[i]); //item identifier
+ tlv.AddData(aItemNames[i]);
+ }
+
+ if(aActionArr)
+ {
+ tlv.AddTag(KTlvItemsNextActionIndicatorTag);
+
+ TInt count = aActionArr->Count();
+ for( TInt i = 0; i < count; i++)
+ {
+ tlv.AddByte((*aActionArr)[i]);
+ }
+ }
+
+ if(RSat::EIconQualifierNotSet != aIconQual)
+ {
+ tlv.AddTag(KTlvIconIdentifierTag);
+ tlv.AddByte((RSat::ESelfExplanatory == aIconQual)?0:1);
+ tlv.AddByte(aIcon);
+ }
+
+ if(RSat::EIconQualifierNotSet != aIconListQual)
+ {
+ tlv.AddTag(KTlvItemIconIdentifierListTag);
+ tlv.AddByte((RSat::ESelfExplanatory == aIconListQual)?0:1);
+
+ if ( aIconList )
+ {
+ TInt iconCount = aIconList->Count();
+ for( TInt i = 0; i < iconCount; i++)
+ {
+ tlv.AddByte((*aIconList)[i]);
+ }
+ }
+ }
+
+ if( 0 < aDefaultItem )
+ {
+ tlv.AddTag(KTlvItemIdentifierTag);
+ tlv.AddByte(aDefaultItem); // ETLV_IdentifierOfItemChosen
+ }
+
+ PrepareMockWithCompleteDataForPCmdNotifyL(tlv.End(), aResult, aDelay);
+ }
+
+
+/**
+Prepares and calls Select Item proactive command
+@param aPCmdNumber Proactive command number
+@param aCmdQual Command qualifier
+@param aParamVersion Parameter version
+@param aAlphaIdStatus Alpha identifier status
+@param aAlphaId Alpha identifier
+@param aNumItems Number of menu items
+@param aItemIds Array of menu items identifier
+@param aItemNames Array of menu items names
+@param aActionArr Array of next actions
+@param aIconQual Type of icon
+@param aIcon Icon address
+@param aIconListQual Type of icons for menu items
+@param aIconList Array of icon addresses for menu items
+@param aDefaultItem Default item id
+@param aResult Proactive command notify result
+@param aAlphaIdCheck Alpha identifier value to ckeck with returned value
+@param aItemNamesCheck Array of menu items names to ckeck with returned value
+*/
+void CCSatSelectItemFU::TestNotifySelectItemPCmdL(
+ TUint8 aPCmdNumber,
+ TUint8 aCmdQual,
+ RSat::TSatVersion aParamVersion,
+ RSat::TAlphaIdStatus aAlphaIdStatus,
+ const TDesC8& aAlphaId,
+ TUint8 aNumItems,
+ const TUint8* const aItemIds,
+ const TPtrC8* aItemNames,
+ const RArray<TUint32>* aActionArr,
+ RSat::TIconQualifier aIconQual,
+ TUint8 aIcon,
+ RSat::TIconQualifier aIconListQual,
+ const RArray<TUint32>* aIconList,
+ TUint8 aDefaultItem,
+ TInt aResult,
+ const TDesC16* aAlphaIdCheck,
+ const TPtrC16* aItemNamesCheck)
+ {
+ PrepareMockWithExpDataForPCmdNotifyL(KSelectItem);
+
+ PrepareSelItemCompleteDataL(
+ aPCmdNumber, aCmdQual, aAlphaIdStatus, aAlphaId, aNumItems, aItemIds,
+ aItemNames, aActionArr, aIconQual, aIcon, aIconListQual, aIconList,
+ aDefaultItem, aResult);
+
+ RSat::TMenuItemBaseV1* selItmData = NULL;
+ TInt selItmDataSize(0);
+ switch ( aParamVersion )
+ {
+ case RSat::KSatV1:
+ {
+ selItmData = new (ELeave) RSat::TSelectItemV1();
+ selItmDataSize = sizeof(RSat::TSelectItemV1);
+ }
+ break;
+ case RSat::KSatV2:
+ default:
+ {
+ selItmData = new (ELeave) RSat::TSelectItemV2();
+ selItmDataSize = sizeof(RSat::TSelectItemV2);
+ aParamVersion = RSat::KSatV2;
+ }
+ break;
+ }
+ CleanupStack::PushL(selItmData);
+ ResetSelectItemData(*selItmData);
+
+ TRequestStatus requestStatus;
+ TPtr8 selItmDataPckg(reinterpret_cast<TUint8*>(selItmData), selItmDataSize, selItmDataSize);
+ iSat.NotifySelectItemPCmd(requestStatus, selItmDataPckg);
+
+ User::WaitForRequest(requestStatus);
+
+ ASSERT_EQUALS(aResult, requestStatus.Int());
+
+ // check results
+ const RSat::TSelectItemV1& selItmDataV1(
+ *static_cast<RSat::TSelectItemV1*>(selItmData));
+ if ( KErrNone == aResult )
+ {
+ ASSERT_EQUALS(aPCmdNumber, selItmDataV1.PCmdNumber());
+
+ if ( RSat::KSatV1 != aParamVersion )
+ {
+ if ( KSelectItemSelectUsingSoftKeyMask ==
+ (KSelectItemSelectUsingSoftKeyMask & aCmdQual) )
+ {
+ ASSERT_EQUALS( RSat::ESoftKeyPreferred,
+ static_cast<RSat::TSelectItemV2*>(selItmData)->iPreference );
+ }
+ else
+ {
+ ASSERT_TRUE( RSat::ESoftKeyPreferred !=
+ static_cast<RSat::TSelectItemV2*>(selItmData)->iPreference );
+ }
+ }
+
+ if ( KHelpAvailabilityMask == (KHelpAvailabilityMask & aCmdQual) )
+ {
+ ASSERT_EQUALS(RSat::EHelpAvailable, selItmDataV1.iHelp);
+ }
+ else
+ {
+ ASSERT_EQUALS(RSat::ENoHelpAvailable, selItmDataV1.iHelp);
+ }
+
+ // Presentation as a choice of navigation options
+ if ( KSelectItemChoiceOfNavigation ==
+ (KSelectItemPresentationTypeMask & aCmdQual) )
+ {
+ ASSERT_EQUALS(RSat::ENavigationOptions, selItmDataV1.iPresentationType);
+ }
+ // Presentation as a choice of data values
+ else if ( KSelectItemChoiceOfData ==
+ (KSelectItemPresentationTypeMask & aCmdQual) )
+ {
+ ASSERT_EQUALS(RSat::EDataValues, selItmDataV1.iPresentationType);
+ }
+ else
+ {
+ ASSERT_TRUE( (RSat::ENotSpecified == selItmDataV1.iPresentationType) );
+ }
+
+ if(RSat::EIconQualifierNotSet != aIconQual)
+ {
+ ASSERT_EQUALS(aIconQual, selItmDataV1.iIconId.iQualifier);
+ ASSERT_EQUALS(aIcon, selItmDataV1.iIconId.iIdentifier);
+ }
+ else
+ {
+ ASSERT_EQUALS(RSat::ENoIconId, selItmDataV1.iIconId.iQualifier);
+ }
+
+ if(RSat::EIconQualifierNotSet != aIconListQual)
+ {
+ ASSERT_EQUALS(aIconListQual, selItmDataV1.iIconListQualifier);
+ }
+ else
+ {
+ ASSERT_EQUALS(RSat::ENoIconId, selItmDataV1.iIconListQualifier);
+ }
+
+ ASSERT_EQUALS(static_cast<TUint8>(aDefaultItem), selItmDataV1.iDefaultItemId);
+
+ if( RSat::EAlphaIdProvided == aAlphaIdStatus )
+ {
+ ASSERT_EQUALS(RSat::EAlphaIdProvided, selItmDataV1.iAlphaId.iStatus);
+ if ( aAlphaIdCheck )
+ {
+ ASSERT_EQUALS( 0, aAlphaIdCheck->Compare(selItmDataV1.iAlphaId.iAlphaId));
+ }
+ else
+ {
+ ASSERT_EQUALS(0, Compare16bitDesWith8bitDesL(aAlphaId, selItmDataV1.iAlphaId.iAlphaId));
+ }
+ }
+ else if ( RSat::EAlphaIdNull == aAlphaIdStatus )
+ {
+ ASSERT_TRUE( RSat::EAlphaIdProvided != selItmDataV1.iAlphaId.iStatus );
+ }
+ else
+ {
+ ASSERT_TRUE( (RSat::EAlphaIdNotPresent == selItmDataV1.iAlphaId.iStatus) ||
+ (RSat::EAlphaIdNotSet == selItmDataV1.iAlphaId.iStatus) );
+ }
+
+ ASSERT_EQUALS(static_cast<TUint>(aNumItems), selItmDataV1.NumberOfItems());
+
+ if(0 < aNumItems)
+ {
+ ASSERT_TRUE( !selItmDataV1.IsRemoveMenu() );
+
+ for(TInt i = 0; i < aNumItems; i++)
+ {
+ RSat::TItem item;
+ TInt action;
+ TInt iconId;
+
+ ASSERT_EQUALS( KErrNone,
+ selItmDataV1.GetItem( i + 1, item, action, iconId));
+
+ ASSERT_EQUALS( aItemIds[i], item.iItemId );
+
+ if ( aItemNamesCheck )
+ {
+ ASSERT_EQUALS( 0, aItemNamesCheck[i].Compare(item.iItemString) );
+ }
+ else
+ {
+ ASSERT_EQUALS(0, Compare16bitDesWith8bitDesL(aItemNames[i], item.iItemString));
+ }
+
+ if( aActionArr && (aNumItems == aActionArr->Count()) )
+ {
+ ASSERT_EQUALS(static_cast<TInt>((*aActionArr)[i]), action);
+ }
+ else
+ {
+ ASSERT_EQUALS(KErrNotFound, action);
+ }
+
+ if( (RSat::EIconQualifierNotSet != aIconListQual) && aIconList && ( aNumItems == aIconList->Count()) )
+ {
+ ASSERT_EQUALS(static_cast<TInt>((*aIconList)[i]), iconId);
+ }
+ else
+ {
+ ASSERT_EQUALS(KErrNotFound, iconId);
+ }
+ }
+ }
+ else
+ {
+ ASSERT_TRUE( selItmDataV1.IsRemoveMenu() );
+ }
+ }
+
+ CleanupStack::PopAndDestroy(selItmData);
+ AssertMockLtsyStatusL();
+ }
+
+
+/**
+Handles sending a terminal response
+@param aSelItmCmdQualifier select item proactive command qualifier
+@param aResp terminal response data
+@param aExpResult expected result of TerminalRsp() execution
+*/
+void CCSatSelectItemFU::GenerateSelItemTerminalResponseL(
+ TUint8 aSelectItemPCmdQualifier,
+ const RSat::TSelectItemRspV1& aResp,
+ const TInt aExpResult)
+ {
+
+ TPtrC genResultAddInfo(KNullDesC);
+ TPtrC8 additionalInfoTlv(KNullDesC8);
+ if ( (RSat::KItemIdentifier == aResp.iInfoType) &&
+ ( (RSat::KHelpRequestedByUser == aResp.iGeneralResult) ||
+ (CommandPerformedSuccessfully(aResp.iGeneralResult)) ) )
+ {
+ TTlv itmChosenTlv;
+ itmChosenTlv.AddTag(KTlvItemIdentifierTag);
+ // ETLV_IdentifierOfItemChosen
+ itmChosenTlv.AddByte( static_cast<TUint8>(aResp.iAdditionalInfo[0]) );
+
+ additionalInfoTlv.Set( itmChosenTlv.GetDataWithoutTopLevelTag() );
+ }
+ else if ( RSat::KMeProblem == aResp.iInfoType )
+ {
+ genResultAddInfo.Set( aResp.iAdditionalInfo );
+ }
+
+ RSat::TSelectItemRspV1Pckg respPckg(aResp);
+ GenerateTerminalResponseL(
+ aResp.PCmdNumber(),
+ KSelectItem,
+ aSelectItemPCmdQualifier,
+ RSat::ESelectItem,
+ respPckg,
+ genResultAddInfo,
+ aResp.iGeneralResult,
+ additionalInfoTlv,
+ aExpResult);
+ }
+
+
+//
+// Actual test cases
+//
+
+
+/**
+@SYMTestCaseID BA-CSAT-SI-SNSIPC-0001
+@SYMPREQ 1780
+@SYMComponent telephony_csat
+@SYMTestCaseDesc Test support in CSAT for RSat::NotifySelectItemPCmd
+@SYMTestPriority High
+@SYMTestActions Invokes RSat::NotifySelectItemPCmd
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCSatSelectItemFU::TestNotifySelectItemPCmd0001L()
+ {
+
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+ OpenSatL();
+
+ //-------------------------------------------------------------------------
+ // TEST E: Unsolicited completion of RSat::NotifySelectItemPCmd
+ // from LTSY.
+ //-------------------------------------------------------------------------
+
+ PrepareSelItemCompleteDataL(
+ KPCmdNumber, KSelItmQualifierEmpty, RSat::EAlphaIdProvided, KToolkitSelectAlphaId,
+ KNumItemsFour, KItemIds, KItemNames);
+
+ RSat::TAdditionalInfo addInfo;
+ addInfo.Append(RSat::KNoSpecificMeProblem);
+ PrepareTerminalResponseMockDataL(
+ KPCmdNumber, KSelectItem, KSelItmQualifierEmpty,
+ addInfo, RSat::KMeUnableToProcessCmd);
+
+ WaitForMockLTSYTerminated();
+ AssertMockLtsyStatusL();
+
+ //-------------------------------------------------------------------------
+ // TEST F: Coverage test(s) for RSat::NotifySelectItemPCmd
+ //-------------------------------------------------------------------------
+ // test for RSat::NotifySelectItemPCmd with RSat::TSelectItemV1 parameter version
+ //-------------------------------------------------------------------------
+
+ TestNotifySelectItemPCmdL(
+ KPCmdNumber, KSelItmQualifierEmpty, RSat::KSatV1, RSat::EAlphaIdProvided, KToolkitSelectAlphaId,
+ KNumItemsFour, KItemIds, KItemNames);
+
+ //generate the terminal response
+ RSat::TSelectItemRspV1 resp;
+ resp.iGeneralResult = RSat::KSuccess;
+ resp.iInfoType = RSat::KItemIdentifier;
+ // Identifier of item chosen(0x02) is passed as additional info
+ // and this value is sufficient because we set information type value as
+ // item identifier(RSat::KItemIdentifier)
+ resp.iAdditionalInfo.Append(0x02);
+ resp.SetPCmdNumber(KPCmdNumber);
+ GenerateSelItemTerminalResponseL( KSelItmQualifierEmpty, resp );
+ AssertMockLtsyStatusL();
+
+ //-------------------------------------------------------------------------
+ // null alpha identifier
+ //-------------------------------------------------------------------------
+
+ TestNotifySelectItemPCmdL(
+ KPCmdNumber, KSelItmQualifierEmpty, RSat::KSatV2, RSat::EAlphaIdNull, KNullDesC8,
+ KNumItemsFour, KItemIds, KItemNames);
+
+ //generate the terminal response
+ GenerateSelItemTerminalResponseL( KSelItmQualifierEmpty, resp );
+ AssertMockLtsyStatusL();
+
+ //-------------------------------------------------------------------------
+ // no alpha identifier, large item, zero length item, screen busy
+ //-------------------------------------------------------------------------
+
+ const TPtrC8 largeItemNames[KNumItemsFour] = {_L8("The SIM shall supply a set of item\
+s from which the user may choose one. Each item comprises a short identifier (u\
+sed to indicat"), KNullDesC8(), _L8("Item 3"), _L8("Item 4")};
+
+ TestNotifySelectItemPCmdL(
+ KPCmdNumber, KSelItmQualifierEmpty, RSat::KSatV2, RSat::EAlphaIdNotSet, KNullDesC8,
+ KNumItemsFour, KItemIds, largeItemNames);
+
+ //generate the terminal response
+ resp.iGeneralResult = RSat::KMeUnableToProcessCmd;
+ resp.iInfoType = RSat::KMeProblem;
+ resp.iAdditionalInfo.Zero();
+ resp.iAdditionalInfo.Append(RSat::KScreenBusy);
+ GenerateSelItemTerminalResponseL( KSelItmQualifierEmpty, resp );
+ AssertMockLtsyStatusL();
+
+ //-------------------------------------------------------------------------
+ // screen busy, without additional info
+ //-------------------------------------------------------------------------
+
+ TestNotifySelectItemPCmdL(
+ KPCmdNumber, KSelItmQualifierEmpty, RSat::KSatV2, RSat::EAlphaIdProvided, KToolkitSelectAlphaId,
+ KNumItemsFour, KItemIds, KItemNames);
+
+ //generate the terminal response
+ resp.iGeneralResult = RSat::KMeUnableToProcessCmd;
+ resp.iInfoType = RSat::KMeProblem;
+ resp.iAdditionalInfo.Zero();
+
+ GenerateSelItemTerminalResponseL( KSelItmQualifierEmpty, resp, KErrCorrupt );
+ AssertMockLtsyStatusL();
+
+ //-------------------------------------------------------------------------
+ // command beyond phone capabilities
+ //-------------------------------------------------------------------------
+
+ TestNotifySelectItemPCmdL(
+ KPCmdNumber, KSelItmQualifierEmpty, RSat::KSatV2, RSat::EAlphaIdProvided, KToolkitSelectAlphaId,
+ KNumItemsFour, KItemIds, KItemNames);
+
+ //generate the terminal response
+ resp.iGeneralResult = RSat::KCmdBeyondMeCapabilities;
+ resp.iInfoType = RSat::KNoAdditionalInfo;
+
+ GenerateSelItemTerminalResponseL( KSelItmQualifierEmpty, resp );
+ AssertMockLtsyStatusL();
+
+ //-------------------------------------------------------------------------
+ // TEST B: failure on completion of pending request from LTSY->CSATTSY
+ //-------------------------------------------------------------------------
+
+ TestNotifySelectItemPCmdL(
+ KPCmdNumber, KSelItmQualifierEmpty, RSat::KSatV2, RSat::EAlphaIdProvided, KToolkitSelectAlphaId,
+ KNumItemsFour, KItemIds, KItemNames,
+ NULL, RSat::EIconQualifierNotSet, 0, RSat::EIconQualifierNotSet, NULL, 0,
+ KErrUnknown);
+
+ CleanupStack::PopAndDestroy(this);
+
+ }
+
+
+/**
+@SYMTestCaseID BA-CSAT-SI-SNSIPC-0001b
+@SYMPREQ 1780
+@SYMComponent telephony_csat
+@SYMTestCaseDesc Test support in CSAT for RSat::NotifySelectItemPCmd
+@SYMTestPriority High
+@SYMTestActions Invokes RSat::NotifySelectItemPCmd
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCSatSelectItemFU::TestNotifySelectItemPCmd0001bL()
+ {
+
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+ OpenSatL();
+
+ //-------------------------------------------------------------------------
+ // Expected Sequence 1.1(ETSI TS 102 384), mandatory features
+ //-------------------------------------------------------------------------
+
+ TestNotifySelectItemPCmdL(
+ KPCmdNumber, KSelItmQualifierEmpty, RSat::KSatV2, RSat::EAlphaIdProvided, KToolkitSelectAlphaId,
+ KNumItemsFour, KItemIds, KItemNames);
+
+ //generate the terminal response
+ RSat::TSelectItemRspV1 resp;
+ resp.iGeneralResult = RSat::KSuccess;
+ resp.iInfoType = RSat::KItemIdentifier;
+ // Identifier of item chosen(0x02) is passed as additional info
+ // and this value is sufficient because we set information type value as
+ // item identifier(RSat::KItemIdentifier)
+ resp.iAdditionalInfo.Append(0x02); // Identifier of item chosen
+ resp.SetPCmdNumber(KPCmdNumber);
+
+ GenerateSelItemTerminalResponseL( KSelItmQualifierEmpty, resp );
+ AssertMockLtsyStatusL();
+
+ //-------------------------------------------------------------------------
+ // Expected Sequence 1.2(ETSI TS 102 384), large menu, successful
+ //-------------------------------------------------------------------------
+
+ _LIT8(KAlphaIdentifierText2, "LargeMenu1");
+ const TUint8 KNumItems2 = 0x1E; // 0x50 - 0x1E + 1 = 0x33
+ TUint8 itemIds2[KNumItems2]; // = {0x50, 0x4F, ..., 0x33}
+ for (TUint8 i = 0; i < KNumItems2; i++)
+ {
+ itemIds2[i]= 0x50 - i;
+ }
+ const TPtrC8 itemNames2[KNumItems2] =
+ {
+ _L8("Zero"), _L8("One"), _L8("Two"), _L8("Three"), _L8("Four"),
+ _L8("Five"), _L8("Six"), _L8("Seven"), _L8("Eight"), _L8("Nine"),
+ _L8("Alpha"), _L8("Bravo"), _L8("Charlie"), _L8("Delta"), _L8("Echo"),
+ _L8("Fox-trot"), _L8("Black"), _L8("Brown"), _L8("Red"), _L8("Orange"),
+ _L8("Yellow"), _L8("Green"), _L8("Blue"), _L8("Violet"), _L8("Grey"),
+ _L8("White"), _L8("milli"), _L8("micro"), _L8("nano"), _L8("pico")
+ };
+ TestNotifySelectItemPCmdL(
+ KPCmdNumber, KSelItmQualifierEmpty, RSat::KSatV2, RSat::EAlphaIdProvided, KAlphaIdentifierText2,
+ KNumItems2, itemIds2, itemNames2);
+
+ //generate the terminal response
+ resp.iAdditionalInfo.Zero();
+ // Identifier of item chosen(0x3D) is passed as additional info
+ // and this value is sufficient because we set information type value as
+ // item identifier(RSat::KItemIdentifier)
+ resp.iAdditionalInfo.Append(0x3D); // Identifier of item chosen
+ GenerateSelItemTerminalResponseL( KSelItmQualifierEmpty, resp );
+ AssertMockLtsyStatusL();
+
+ //-------------------------------------------------------------------------
+ // Expected Sequence 1.3(ETSI TS 102 384), call options, successful
+ //-------------------------------------------------------------------------
+
+ _LIT8(KAlphaIdentifierText3, "LargeMenu2");
+ const TUint8 KNumItems3 = 7;
+ const TUint8 itemIds3[KNumItems3] = {0xFF, 0xFE, 0xFD, 0xFC, 0xFB, 0xFA, 0xF9};
+ const TPtrC8 itemNames3[KNumItems3] =
+ {
+ _L8("Call Forwarding Unconditional"),
+ _L8("Call Forwarding On User Busy"),
+ _L8("Call Forwarding On No Reply"),
+ _L8("Call Forwarding On User Not Reachable"),
+ _L8("Barring Of All Outgoing Calls"),
+ _L8("Barring Of All Outgoing International Calls"),
+ _L8("CLI Presentation")
+ };
+ TestNotifySelectItemPCmdL(
+ KPCmdNumber, KSelItmQualifierEmpty, RSat::KSatV2, RSat::EAlphaIdProvided, KAlphaIdentifierText3,
+ KNumItems3, itemIds3, itemNames3);
+
+ //generate the terminal response
+ resp.iAdditionalInfo.Zero();
+ // Identifier of item chosen(0xFB) is passed as additional info
+ // and this value is sufficient because we set information type value as
+ // item identifier(RSat::KItemIdentifier)
+ resp.iAdditionalInfo.Append(0xFB); // Identifier of item chosen
+ GenerateSelItemTerminalResponseL( KSelItmQualifierEmpty, resp );
+
+ AssertMockLtsyStatusL();
+
+ //-------------------------------------------------------------------------
+ // Expected Sequence 1.4(ETSI TS 102 384), backward move by user, successful
+ //-------------------------------------------------------------------------
+
+ // 1.4.1
+ _LIT8(KAlphaIdentifierText4, "Select Item");
+ const TUint8 KNumItems4 = 2;
+ const TUint8 itemIds4[KNumItems4] = {0x11, 0x12};
+ const TPtrC8 itemNames4[KNumItems4] = {_L8("One"), _L8("Two")};
+ TestNotifySelectItemPCmdL(
+ KPCmdNumber, KSelItmQualifierEmpty, RSat::KSatV2, RSat::EAlphaIdProvided, KAlphaIdentifierText4,
+ KNumItems4, itemIds4, itemNames4);
+
+ //generate the terminal response
+ resp.iGeneralResult = RSat::KBackwardModeRequestedByUser;
+ resp.iInfoType = RSat::KNoAdditionalInfo;
+ resp.iAdditionalInfo.Zero();
+ GenerateSelItemTerminalResponseL( KSelItmQualifierEmpty, resp );
+
+ // 1.4.2
+ TestNotifySelectItemPCmdL(
+ KPCmdNumber, KSelItmQualifierEmpty, RSat::KSatV2, RSat::EAlphaIdProvided, KAlphaIdentifierText4,
+ KNumItems4, itemIds4, itemNames4);
+
+ //generate the terminal response
+ resp.iGeneralResult = RSat::KPSessionTerminatedByUser;
+ GenerateSelItemTerminalResponseL( KSelItmQualifierEmpty, resp );
+
+ AssertMockLtsyStatusL();
+
+ //-------------------------------------------------------------------------
+ // Expected Sequence 1.5(ETSI TS 102 384), "Y", successful
+ //-------------------------------------------------------------------------
+
+ _LIT8(KAlphaIdentifierText5, "The SIM shall supply a set of items from whic\
+h the user may choose one. Each item comprises a short identifier (used to indi\
+cate the selection) and a text string.Optionally the SIM may include an alpha i\
+dentifier. The alpha identifier i");
+ const TUint8 KNumItems5 = 1;
+ TUint8 itemId5 = 0x01;
+ TPtrC8 itemName5(_L8("Y"));
+ TestNotifySelectItemPCmdL(
+ KPCmdNumber, KSelItmQualifierEmpty, RSat::KSatV2, RSat::EAlphaIdProvided, KAlphaIdentifierText5,
+ KNumItems5, &itemId5, &itemName5);
+
+ //generate the terminal response
+ resp.iGeneralResult = RSat::KSuccess;
+ resp.iInfoType = RSat::KItemIdentifier;
+ // Identifier of item chosen(0x01) is passed as additional info
+ // and this value is sufficient because we set information type value as
+ // item identifier(RSat::KItemIdentifier)
+ resp.iAdditionalInfo.Append(0x01); // Identifier of item chosen
+ GenerateSelItemTerminalResponseL( KSelItmQualifierEmpty, resp );
+
+ AssertMockLtsyStatusL();
+
+ CleanupStack::PopAndDestroy(this);
+
+ }
+
+
+/**
+@SYMTestCaseID BA-CSAT-SI-SNSIPC-0001c
+@SYMPREQ 1780
+@SYMComponent telephony_csat
+@SYMTestCaseDesc Test support in CSAT for RSat::NotifySelectItemPCmd
+@SYMTestPriority High
+@SYMTestActions Invokes RSat::NotifySelectItemPCmd
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCSatSelectItemFU::TestNotifySelectItemPCmd0001cL()
+ {
+
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+ OpenSatL();
+
+ //-------------------------------------------------------------------------
+ // Expected Sequence 2.1(ETSI TS 102 384), next action support, successful
+ //-------------------------------------------------------------------------
+
+ RArray<TUint32> actions(KNumItemsThree);
+ CleanupClosePushL(actions);
+ actions.Append(KSendShortMessage);
+ actions.Append(KSetUpCall);
+ actions.Append(KProvideLocalInformation);
+
+ TestNotifySelectItemPCmdL(
+ KPCmdNumber, KSelItmQualifierEmpty, RSat::KSatV2, RSat::EAlphaIdProvided, KToolkitSelectAlphaId,
+ KNumItemsThree, KItemIds, KItemNames, &actions);
+
+ //generate the terminal response
+ RSat::TSelectItemRspV1 resp;
+ resp.iGeneralResult = RSat::KSuccess;
+ resp.iInfoType = RSat::KItemIdentifier;
+ // Identifier of item chosen(0x02) is passed as additional info
+ // and this value is sufficient because we set information type value as
+ // item identifier(RSat::KItemIdentifier)
+ resp.iAdditionalInfo.Append(0x02); // Identifier of item chosen
+ resp.SetPCmdNumber(KPCmdNumber);
+
+ GenerateSelItemTerminalResponseL( KSelItmQualifierEmpty, resp );
+ AssertMockLtsyStatusL();
+
+ //-------------------------------------------------------------------------
+ // number of items in the next action list doesn't match the number of items in the menu
+ //-------------------------------------------------------------------------
+
+ TestNotifySelectItemPCmdL(
+ KPCmdNumber, KSelItmQualifierEmpty, RSat::KSatV2, RSat::EAlphaIdProvided, KToolkitSelectAlphaId,
+ KNumItemsFour, KItemIds, KItemNames, &actions);
+
+ //generate the terminal response
+ TTlv itmChosenTlv;
+ itmChosenTlv.AddTag(KTlvItemIdentifierTag);
+ itmChosenTlv.AddByte( static_cast<TUint8>(resp.iAdditionalInfo[0]) ); // ETLV_IdentifierOfItemChosen
+
+ RSat::TSelectItemRspV1Pckg respPckg(resp);
+ GenerateTerminalResponseL(
+ KPCmdNumber, KSelectItem, KSelItmQualifierEmpty, RSat::ESelectItem,
+ respPckg, KNullDesC, RSat::KPartialComprehension, itmChosenTlv.GetDataWithoutTopLevelTag());
+ AssertMockLtsyStatusL();
+
+ //-------------------------------------------------------------------------
+ // action list and icons
+ //-------------------------------------------------------------------------
+
+ RSat::TIconQualifier iconQual = RSat::ENotSelfExplanatory;
+ TUint8 icon = 1; // record 1 in EFIMG
+ RSat::TIconQualifier iconListQual = RSat::ENotSelfExplanatory;
+
+ RArray<TUint32> iconList(KNumItemsThree);
+ CleanupClosePushL(iconList);
+ // record 5 in EFIMG for each item
+ iconList.Append(5);
+ iconList.Append(5);
+ iconList.Append(5);
+
+ TestNotifySelectItemPCmdL(
+ KPCmdNumber, KSelItmQualifierEmpty, RSat::KSatV2, RSat::EAlphaIdProvided, KToolkitSelectAlphaId,
+ KNumItemsThree, KItemIds, KItemNames, &actions,
+ iconQual, icon, iconListQual, &iconList);
+
+ //generate the terminal response
+ GenerateSelItemTerminalResponseL( KSelItmQualifierEmpty, resp );
+ AssertMockLtsyStatusL();
+
+ CleanupStack::PopAndDestroy(3, this); // iconList, actions, this
+
+ }
+
+
+/**
+@SYMTestCaseID BA-CSAT-SI-SNSIPC-0001d
+@SYMPREQ 1780
+@SYMComponent telephony_csat
+@SYMTestCaseDesc Test support in CSAT for RSat::NotifySelectItemPCmd
+@SYMTestPriority High
+@SYMTestActions Invokes RSat::NotifySelectItemPCmd
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCSatSelectItemFU::TestNotifySelectItemPCmd0001dL()
+ {
+
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+ OpenSatL();
+
+ //-------------------------------------------------------------------------
+ // Expected Sequence 3.1(ETSI TS 102 384), default item support, successful
+ //-------------------------------------------------------------------------
+
+ const TUint8 KDefaultItem = 0x02;
+ TestNotifySelectItemPCmdL(
+ KPCmdNumber, KSelItmQualifierEmpty, RSat::KSatV2, RSat::EAlphaIdProvided, KToolkitSelectAlphaId,
+ KNumItemsThree, KItemIds, KItemNames,
+ NULL, RSat::EIconQualifierNotSet, 0, RSat::EIconQualifierNotSet, NULL,
+ KDefaultItem);
+
+ //generate the terminal response
+ RSat::TSelectItemRspV1 resp;
+ resp.iGeneralResult = RSat::KSuccess;
+ resp.iInfoType = RSat::KItemIdentifier;
+ // Identifier of item chosen(0x03) is passed as additional info
+ // and this value is sufficient because we set information type value as
+ // item identifier(RSat::KItemIdentifier)
+ resp.iAdditionalInfo.Append(0x03); // Identifier of item chosen
+ resp.SetPCmdNumber(KPCmdNumber);
+
+ GenerateSelItemTerminalResponseL( KSelItmQualifierEmpty, resp );
+ AssertMockLtsyStatusL();
+
+ CleanupStack::PopAndDestroy(this);
+
+ }
+
+
+/**
+@SYMTestCaseID BA-CSAT-SI-SNSIPC-0001e
+@SYMPREQ 1780
+@SYMComponent telephony_csat
+@SYMTestCaseDesc Test support in CSAT for RSat::NotifySelectItemPCmd
+@SYMTestPriority High
+@SYMTestActions Invokes RSat::NotifySelectItemPCmd
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCSatSelectItemFU::TestNotifySelectItemPCmd0001eL()
+ {
+
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+ OpenSatL();
+
+ //-------------------------------------------------------------------------
+ // Expected Sequence 4.1(ETSI TS 102 384), help request support, successful
+ //-------------------------------------------------------------------------
+
+ TUint8 selItmQualifier = KHelpAvailabilityMask;
+ TestNotifySelectItemPCmdL(
+ KPCmdNumber, selItmQualifier, RSat::KSatV2, RSat::EAlphaIdProvided, KToolkitSelectAlphaId,
+ KNumItemsThree, KItemIds, KItemNames);
+
+ //generate the terminal response
+ RSat::TSelectItemRspV1 resp;
+ resp.iGeneralResult = RSat::KHelpRequestedByUser;
+ resp.iInfoType = RSat::KItemIdentifier;
+ // Identifier of item chosen(0x01) is passed as additional info
+ // and this value is sufficient because we set information type value as
+ // item identifier(RSat::KItemIdentifier)
+ resp.iAdditionalInfo.Append(0x01); // Identifier of item chosen
+ resp.SetPCmdNumber(KPCmdNumber);
+
+ GenerateSelItemTerminalResponseL( selItmQualifier, resp );
+ AssertMockLtsyStatusL();
+
+ CleanupStack::PopAndDestroy(this);
+
+ }
+
+
+/**
+@SYMTestCaseID BA-CSAT-SI-SNSIPC-0001f
+@SYMPREQ 1780
+@SYMComponent telephony_csat
+@SYMTestCaseDesc Test support in CSAT for RSat::NotifySelectItemPCmd
+@SYMTestPriority High
+@SYMTestActions Invokes RSat::NotifySelectItemPCmd
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCSatSelectItemFU::TestNotifySelectItemPCmd0001fL()
+ {
+
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+ OpenSatL();
+
+ //-------------------------------------------------------------------------
+ // Expected Sequence 5.1(ETSI TS 102 384), icons support, successful
+ //-------------------------------------------------------------------------
+
+ // 5.1A BASIC ICON NOT SELF EXPLANATORY
+ RSat::TIconQualifier iconQual = RSat::ENotSelfExplanatory;
+ TUint8 icon = 1; // record 1 in EFIMG
+ RSat::TIconQualifier iconListQual = RSat::ENotSelfExplanatory;
+
+ RArray<TUint32> iconList(KNumItemsThree);
+ CleanupClosePushL(iconList);
+ // record 5 in EFIMG for each item
+ iconList.Append(5);
+ iconList.Append(5);
+ iconList.Append(5);
+
+ TestNotifySelectItemPCmdL(
+ KPCmdNumber, KSelItmQualifierEmpty, RSat::KSatV2, RSat::EAlphaIdProvided, KToolkitSelectAlphaId,
+ KNumItemsThree, KItemIds, KItemNames,
+ NULL, iconQual, icon, iconListQual, &iconList);
+
+ //generate the terminal response
+ RSat::TSelectItemRspV1 resp;
+ resp.iGeneralResult = RSat::KSuccess;
+ resp.iInfoType = RSat::KItemIdentifier;
+ // Identifier of item chosen(0x01) is passed as additional info
+ // and this value is sufficient because we set information type value as
+ // item identifier(RSat::KItemIdentifier)
+ resp.iAdditionalInfo.Append(0x01); // Identifier of item chosen
+ resp.SetPCmdNumber(KPCmdNumber);
+
+ GenerateSelItemTerminalResponseL( KSelItmQualifierEmpty, resp );
+ AssertMockLtsyStatusL();
+
+ // 5.1B BASIC ICON NOT SELF EXPLANATORY, requested icon could not be displayed
+ TestNotifySelectItemPCmdL(
+ KPCmdNumber, KSelItmQualifierEmpty, RSat::KSatV2, RSat::EAlphaIdProvided, KToolkitSelectAlphaId,
+ KNumItemsThree, KItemIds, KItemNames,
+ NULL, iconQual, icon, iconListQual, &iconList);
+
+ //generate the terminal response
+ resp.iGeneralResult = RSat::KSuccessRequestedIconNotDisplayed;
+
+ GenerateSelItemTerminalResponseL( KSelItmQualifierEmpty, resp );
+ AssertMockLtsyStatusL();
+
+ //-------------------------------------------------------------------------
+ // Expected Sequence 5.2(ETSI TS 102 384), icons support, successful
+ //-------------------------------------------------------------------------
+
+ // 5.2A BASIC ICON SELF EXPLANATORY
+ iconQual = RSat::ESelfExplanatory;
+ iconListQual = RSat::ESelfExplanatory;
+
+ TestNotifySelectItemPCmdL(
+ KPCmdNumber, KSelItmQualifierEmpty, RSat::KSatV2, RSat::EAlphaIdProvided, KToolkitSelectAlphaId,
+ KNumItemsThree, KItemIds, KItemNames,
+ NULL, iconQual, icon, iconListQual, &iconList);
+
+ //generate the terminal response
+ resp.iGeneralResult = RSat::KSuccess;
+
+ GenerateSelItemTerminalResponseL( KSelItmQualifierEmpty, resp );
+ AssertMockLtsyStatusL();
+
+ // 5.2B BASIC ICON SELF EXPLANATORY, requested icon could not be displayed
+ TestNotifySelectItemPCmdL(
+ KPCmdNumber, KSelItmQualifierEmpty, RSat::KSatV2, RSat::EAlphaIdProvided, KToolkitSelectAlphaId,
+ KNumItemsThree, KItemIds, KItemNames,
+ NULL, iconQual, icon, iconListQual, &iconList);
+
+ //generate the terminal response
+ resp.iGeneralResult = RSat::KSuccessRequestedIconNotDisplayed;
+
+ GenerateSelItemTerminalResponseL( KSelItmQualifierEmpty, resp );
+ AssertMockLtsyStatusL();
+
+ //-------------------------------------------------------------------------
+ // number of items in the icon list doesn't match the number of items in the menu
+ //-------------------------------------------------------------------------
+
+ TestNotifySelectItemPCmdL(
+ KPCmdNumber, KSelItmQualifierEmpty, RSat::KSatV2, RSat::EAlphaIdProvided, KToolkitSelectAlphaId,
+ KNumItemsFour, KItemIds, KItemNames, NULL,
+ iconQual, icon, iconListQual, &iconList);
+
+ //generate the terminal response
+ resp.iGeneralResult = RSat::KSuccess;
+ resp.iAdditionalInfo.Zero();
+ // Identifier of item chosen(0x02) is passed as additional info
+ // and this value is sufficient because we set information type value as
+ // item identifier(RSat::KItemIdentifier)
+ resp.iAdditionalInfo.Append(0x02); // Identifier of item chosen
+
+ TTlv itmChosenTlv;
+ itmChosenTlv.AddTag(KTlvItemIdentifierTag);
+ itmChosenTlv.AddByte( static_cast<TUint8>(resp.iAdditionalInfo[0]) ); // ETLV_IdentifierOfItemChosen
+
+ RSat::TSelectItemRspV1Pckg respPckg(resp);
+ GenerateTerminalResponseL(
+ KPCmdNumber, KSelectItem, KSelItmQualifierEmpty, RSat::ESelectItem,
+ respPckg, KNullDesC, RSat::KPartialComprehension, itmChosenTlv.GetDataWithoutTopLevelTag());
+ AssertMockLtsyStatusL();
+
+ CleanupStack::PopAndDestroy(2, this); // iconList, this
+
+ }
+
+
+/**
+@SYMTestCaseID BA-CSAT-SI-SNSIPC-0001g
+@SYMPREQ 1780
+@SYMComponent telephony_csat
+@SYMTestCaseDesc Test support in CSAT for RSat::NotifySelectItemPCmd
+@SYMTestPriority High
+@SYMTestActions Invokes RSat::NotifySelectItemPCmd
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCSatSelectItemFU::TestNotifySelectItemPCmd0001gL()
+ {
+
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+ OpenSatL();
+
+ //-------------------------------------------------------------------------
+ // Expected Sequence 6.1(ETSI TS 102 384),
+ // PRESENTATION AS A CHOICE OF NAVIGATION OPTIONS, successful
+ //-------------------------------------------------------------------------
+
+ TUint8 selItmQualifier = KSelectItemChoiceOfNavigation;
+ TestNotifySelectItemPCmdL(
+ KPCmdNumber, selItmQualifier, RSat::KSatV2, RSat::EAlphaIdProvided, KToolkitSelectAlphaId,
+ KNumItemsThree, KItemIds, KItemNames);
+
+ //generate the terminal response
+ RSat::TSelectItemRspV1 resp;
+ resp.iGeneralResult = RSat::KSuccess;
+ resp.iInfoType = RSat::KItemIdentifier;
+ // Identifier of item chosen(0x01) is passed as additional info
+ // and this value is sufficient because we set information type value as
+ // item identifier(RSat::KItemIdentifier)
+ resp.iAdditionalInfo.Append(0x01); // Identifier of item chosen
+ resp.SetPCmdNumber(KPCmdNumber);
+
+ GenerateSelItemTerminalResponseL( selItmQualifier, resp );
+ AssertMockLtsyStatusL();
+
+ //-------------------------------------------------------------------------
+ // Expected Sequence 6.2(ETSI TS 102 384),
+ // PRESENTATION AS A CHOICE OF DATA VALUES, successful
+ //-------------------------------------------------------------------------
+
+ selItmQualifier = KSelectItemChoiceOfData;
+
+ TestNotifySelectItemPCmdL(
+ KPCmdNumber, selItmQualifier, RSat::KSatV2, RSat::EAlphaIdProvided, KToolkitSelectAlphaId,
+ KNumItemsThree, KItemIds, KItemNames);
+
+ // generate the terminal response
+ GenerateSelItemTerminalResponseL( selItmQualifier, resp );
+ AssertMockLtsyStatusL();
+
+ CleanupStack::PopAndDestroy(this);
+
+ }
+
+
+/**
+@SYMTestCaseID BA-CSAT-SI-SNSIPC-0001h
+@SYMPREQ 1780
+@SYMComponent telephony_csat
+@SYMTestCaseDesc Test support in CSAT for RSat::NotifySelectItemPCmd
+@SYMTestPriority High
+@SYMTestActions Invokes RSat::NotifySelectItemPCmd
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCSatSelectItemFU::TestNotifySelectItemPCmd0001hL()
+ {
+
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+ OpenSatL();
+
+ //-------------------------------------------------------------------------
+ // Expected Sequence 7.1(ETSI TS 102 384), soft keys support, successful
+ //-------------------------------------------------------------------------
+
+ const TUint8 KNumItems7 = 2;
+ TUint8 selItmQualifier = KSelectItemSelectUsingSoftKeyMask;
+ TestNotifySelectItemPCmdL(
+ KPCmdNumber, selItmQualifier, RSat::KSatV2, RSat::EAlphaIdProvided, KToolkitSelectAlphaId,
+ KNumItems7, KItemIds, KItemNames);
+
+ // generate the terminal response
+ RSat::TSelectItemRspV1 resp;
+ resp.iGeneralResult = RSat::KSuccess;
+ resp.iInfoType = RSat::KItemIdentifier;
+ // Identifier of item chosen(0x01) is passed as additional info
+ // and this value is sufficient because we set information type value as
+ // item identifier(RSat::KItemIdentifier)
+ resp.iAdditionalInfo.Append(0x01); // Identifier of item chosen
+ resp.SetPCmdNumber(KPCmdNumber);
+
+ GenerateSelItemTerminalResponseL( selItmQualifier, resp );
+ AssertMockLtsyStatusL();
+
+ CleanupStack::PopAndDestroy(this);
+
+ }
+
+
+/**
+@SYMTestCaseID BA-CSAT-SI-SNSIPC-0001i
+@SYMPREQ 1780
+@SYMComponent telephony_csat
+@SYMTestCaseDesc Test support in CSAT for RSat::NotifySelectItemPCmd
+@SYMTestPriority High
+@SYMTestActions Invokes RSat::NotifySelectItemPCmd
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCSatSelectItemFU::TestNotifySelectItemPCmd0001iL()
+ {
+
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+ OpenSatL();
+
+ //-------------------------------------------------------------------------
+ // Expected Sequence 8.1(ETSI TS 102 384), Support of "No response from user"
+ //-------------------------------------------------------------------------
+
+ _LIT8(KAlphaIdentifierText81,"<TIME-OUT>");
+ TestNotifySelectItemPCmdL(
+ KPCmdNumber, KSelItmQualifierEmpty, RSat::KSatV2, RSat::EAlphaIdProvided, KAlphaIdentifierText81,
+ KNumItemsThree, KItemIds, KItemNames);
+
+ // generate the terminal response
+ RSat::TSelectItemRspV1 resp;
+ resp.iGeneralResult = RSat::KNoResponseFromUser;
+ resp.iInfoType = RSat::KNoAdditionalInfo;
+ resp.SetPCmdNumber(KPCmdNumber);
+
+ GenerateSelItemTerminalResponseL( KSelItmQualifierEmpty, resp );
+ AssertMockLtsyStatusL();
+
+ CleanupStack::PopAndDestroy(this);
+
+ }
+
+
+/**
+@SYMTestCaseID BA-CSAT-SI-SNSIPC-0001j
+@SYMPREQ 1780
+@SYMComponent telephony_csat
+@SYMTestCaseDesc Test support in CSAT for RSat::NotifySelectItemPCmd
+@SYMTestPriority High
+@SYMTestActions Invokes RSat::NotifySelectItemPCmd
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCSatSelectItemFU::TestNotifySelectItemPCmd0001jL()
+ {
+
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+ OpenSatL();
+
+ //-------------------------------------------------------------------------
+ // Expected Sequence 10.1(ETSI TS 102 384),
+ // UCS2 in Cyrillic characters, 0x80 UCS2 coding, successful
+ //-------------------------------------------------------------------------
+
+ _LIT8(KAlphaIdentifierText101, // "Hello" in russian, first byte "\x80" is 0x80 UCS2 coding type for Tlv data
+ "\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");
+ _LIT8(KItemName1011, // "Hello1" in russian, first byte "\x80" is 0x80 UCS2 coding type for Tlv data
+ "\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\x00\x31");
+ _LIT8(KItemName1012, // "Hello2" in russian, first byte "\x80" is 0x80 UCS2 coding type for Tlv data
+ "\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\x00\x32");
+ _LIT8(KItemName1013, // "Hello3" in russian, first byte "\x80" is 0x80 UCS2 coding type for Tlv data
+ "\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\x00\x33");
+ _LIT16(KAlphaIdentifierText10xU, // "Hello" in russian in unicode format for checking results
+ "\x0417\x0414\x0420\x0410\x0412\x0421\x0422\x0412\x0423\x0419\x0422\x0415");
+ const TPtrC8 itemNames101[KNumItemsThree] = {KItemName1011(), KItemName1012(), KItemName1013()};
+ const TPtrC16 itemNames10xU[KNumItemsThree] =
+ { // data for checking results
+ // "Hello1" in russian in unicode format
+ _L16("\x0417\x0414\x0420\x0410\x0412\x0421\x0422\x0412\x0423\x0419\x0422\x0415\x0031"),
+ // "Hello2" in russian in unicode format
+ _L16("\x0417\x0414\x0420\x0410\x0412\x0421\x0422\x0412\x0423\x0419\x0422\x0415\x0032"),
+ // "Hello3" in russian in unicode format
+ _L16("\x0417\x0414\x0420\x0410\x0412\x0421\x0422\x0412\x0423\x0419\x0422\x0415\x0033")
+ };
+
+ TestNotifySelectItemPCmdL(
+ KPCmdNumber, KSelItmQualifierEmpty, RSat::KSatV2, RSat::EAlphaIdProvided, KAlphaIdentifierText101,
+ KNumItemsThree, KItemIds, itemNames101,
+ NULL, RSat::EIconQualifierNotSet, 0, RSat::EIconQualifierNotSet, NULL, 0,
+ KErrNone, &KAlphaIdentifierText10xU, itemNames10xU);
+
+ //generate the terminal response
+ RSat::TSelectItemRspV1 resp;
+ resp.iGeneralResult = RSat::KSuccess;
+ resp.iInfoType = RSat::KItemIdentifier;
+ // Identifier of item chosen(0x02) is passed as additional info
+ // and this value is sufficient because we set information type value as
+ // item identifier(RSat::KItemIdentifier)
+ resp.iAdditionalInfo.Append(0x02); // Identifier of item chosen
+ resp.SetPCmdNumber(KPCmdNumber);
+
+ GenerateSelItemTerminalResponseL( KSelItmQualifierEmpty, resp );
+ AssertMockLtsyStatusL();
+
+ //-------------------------------------------------------------------------
+ // Expected Sequence 10.2(ETSI TS 102 384),
+ // UCS2 in Cyrillic characters, 0x81 UCS2 coding, successful
+ //-------------------------------------------------------------------------
+
+ _LIT8(KAlphaIdentifierText102, // "Hello" in russian, first byte "\x81" is 0x81 UCS2 coding type for Tlv data
+ "\x81\x0C\x08\x97\x94\xA0\x90\x92\xA1\xA2\x92\xA3\x99\xA2\x95");
+ const TPtrC8 itemNames102[KNumItemsThree] =
+ { // first bytes "\x81" is 0x81 UCS2 coding type for Tlv data
+ // "Hello1" in russian
+ _L8("\x81\x0D\x08\x97\x94\xA0\x90\x92\xA1\xA2\x92\xA3\x99\xA2\x95\x31"),
+ // "Hello2" in russian
+ _L8("\x81\x0D\x08\x97\x94\xA0\x90\x92\xA1\xA2\x92\xA3\x99\xA2\x95\x32"),
+ // "Hello3" in russian
+ _L8("\x81\x0D\x08\x97\x94\xA0\x90\x92\xA1\xA2\x92\xA3\x99\xA2\x95\x33")
+ };
+
+ TestNotifySelectItemPCmdL(
+ KPCmdNumber, KSelItmQualifierEmpty, RSat::KSatV2, RSat::EAlphaIdProvided, KAlphaIdentifierText102,
+ KNumItemsThree, KItemIds, itemNames102,
+ NULL, RSat::EIconQualifierNotSet, 0, RSat::EIconQualifierNotSet, NULL, 0,
+ KErrNone, &KAlphaIdentifierText10xU, itemNames10xU);
+
+ //generate the terminal response
+ GenerateSelItemTerminalResponseL( KSelItmQualifierEmpty, resp );
+ AssertMockLtsyStatusL();
+
+ //-------------------------------------------------------------------------
+ // Expected Sequence 10.3(ETSI TS 102 384),
+ // UCS2 in Cyrillic characters, 0x82 UCS2 coding, successful
+ //-------------------------------------------------------------------------
+
+ _LIT8(KAlphaIdentifierText103, // "Hello" in russian, first byte "\x82" is 0x82 UCS2 coding type for Tlv data
+ "\x82\x0C\x04\x10\x87\x84\x90\x80\x82\x91\x92\x82\x93\x89\x92\x85");
+ const TPtrC8 itemNames103[KNumItemsThree] =
+ { // first bytes "\x82" is 0x82 UCS2 coding type for Tlv data
+ // "Hello1" in russian
+ _L8("\x82\x0D\x04\x10\x87\x84\x90\x80\x82\x91\x92\x82\x93\x89\x92\x85\x31"),
+ // "Hello2" in russian
+ _L8("\x82\x0D\x04\x10\x87\x84\x90\x80\x82\x91\x92\x82\x93\x89\x92\x85\x32"),
+ // "Hello3" in russian
+ _L8("\x82\x0D\x04\x10\x87\x84\x90\x80\x82\x91\x92\x82\x93\x89\x92\x85\x33")
+ };
+
+ TestNotifySelectItemPCmdL(
+ KPCmdNumber, KSelItmQualifierEmpty, RSat::KSatV2, RSat::EAlphaIdProvided, KAlphaIdentifierText103,
+ KNumItemsThree, KItemIds, itemNames103,
+ NULL, RSat::EIconQualifierNotSet, 0, RSat::EIconQualifierNotSet, NULL, 0,
+ KErrNone, &KAlphaIdentifierText10xU, itemNames10xU);
+
+ //generate the terminal response
+ GenerateSelItemTerminalResponseL( KSelItmQualifierEmpty, resp );
+ AssertMockLtsyStatusL();
+
+ CleanupStack::PopAndDestroy(this);
+
+ }
+
+
+/**
+@SYMTestCaseID BA-CSAT-SI-SNSIPC-0001k
+@SYMPREQ 1780
+@SYMComponent telephony_csat
+@SYMTestCaseDesc Test support in CSAT for RSat::NotifySelectItemPCmd
+@SYMTestPriority High
+@SYMTestActions Invokes RSat::NotifySelectItemPCmd
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCSatSelectItemFU::TestNotifySelectItemPCmd0001kL()
+ {
+
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+ OpenSatL();
+
+ //-------------------------------------------------------------------------
+ // Expected Sequence 11.1(ETSI TS 102 384), UCS2 in Chinese Characters, successful
+ //-------------------------------------------------------------------------
+
+ _LIT8(KAlphaIdentifierText111, // "Toolkit Select" in Chinese, first byte "\x80" is 0x80 UCS2 coding type for Tlv data
+ "\x80\x5D\xE5\x51\x77\x7B\xB1\x90\x09\x62\xE9");
+ _LIT8(KItemName111, // "Item 1" in Chinese, first byte "\x80" is 0x80 UCS2 coding type for Tlv data
+ "\x80\x98\x79\x76\xEE\x4E\x00");
+ _LIT8(KItemName112, // "Item 2" in Chinese, first byte "\x80" is 0x80 UCS2 coding type for Tlv data
+ "\x80\x98\x79\x76\xEE\x4E\x8C");
+ _LIT8(KItemName113, // "Item 3" in Chinese, first byte "\x80" is 0x80 UCS2 coding type for Tlv data
+ "\x80\x98\x79\x76\xEE\x4E\x09");
+ _LIT8(KItemName114, // "Item 4" in Chinese, first byte "\x80" is 0x80 UCS2 coding type for Tlv data
+ "\x80\x98\x79\x76\xEE\x56\xDB");
+ _LIT16(KAlphaIdentifierText11U, // "Toolkit Select" in Chinese in unicode format for checking results
+ "\x5DE5\x5177\x7BB1\x9009\x62E9");
+ const TPtrC8 itemNames111[KNumItemsFour] = {KItemName111(), KItemName112(), KItemName113(), KItemName114()};
+ const TPtrC16 itemNames11U[KNumItemsFour] =
+ { // data for checking results
+ // "Item 1" in Chinese in unicode format
+ _L16("\x9879\x76EE\x4E00"),
+ // "Item 2" in Chinese in unicode format
+ _L16("\x9879\x76EE\x4E8C"),
+ // "Item 3" in Chinese in unicode format
+ _L16("\x9879\x76EE\x4E09"),
+ // "Item 4" in Chinese in unicode format
+ _L16("\x9879\x76EE\x56DB")
+ };
+
+ TestNotifySelectItemPCmdL(
+ KPCmdNumber, KSelItmQualifierEmpty, RSat::KSatV2, RSat::EAlphaIdProvided, KAlphaIdentifierText111,
+ KNumItemsFour, KItemIds, itemNames111,
+ NULL, RSat::EIconQualifierNotSet, 0, RSat::EIconQualifierNotSet, NULL, 0,
+ KErrNone, &KAlphaIdentifierText11U, itemNames11U);
+
+ //generate the terminal response
+ RSat::TSelectItemRspV1 resp;
+ resp.iGeneralResult = RSat::KSuccess;
+ resp.iInfoType = RSat::KItemIdentifier;
+ // Identifier of item chosen(0x02) is passed as additional info
+ // and this value is sufficient because we set information type value as
+ // item identifier(RSat::KItemIdentifier)
+ resp.iAdditionalInfo.Append(0x02); // Identifier of item chosen
+ resp.SetPCmdNumber(KPCmdNumber);
+
+ GenerateSelItemTerminalResponseL( KSelItmQualifierEmpty, resp );
+ AssertMockLtsyStatusL();
+
+ CleanupStack::PopAndDestroy(this);
+
+ }
+
+
+/**
+@SYMTestCaseID BA-CSAT-SI-SNSIPC-0001l
+@SYMPREQ 1780
+@SYMComponent telephony_csat
+@SYMTestCaseDesc Test support in CSAT for RSat::NotifySelectItemPCmd
+@SYMTestPriority High
+@SYMTestActions Invokes RSat::NotifySelectItemPCmd
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCSatSelectItemFU::TestNotifySelectItemPCmd0001lL()
+ {
+
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+ OpenSatL();
+
+ //-------------------------------------------------------------------------
+ // Expected Sequence 12.1(ETSI TS 102 384),
+ // UCS2 in Katakana characters, 0x80 UCS2 coding, successful
+ //-------------------------------------------------------------------------
+
+ _LIT8(KAlphaIdentifierText121, // Use characters in Katakana, first byte "\x80" is 0x80 UCS2 coding type for Tlv data
+ "\x80\x00\x38\x00\x30\x30\xEB\x00\x30");
+ _LIT8(KItemName1211, // Use characters in Katakana, first byte "\x80" is 0x80 UCS2 coding type for Tlv data
+ "\x80\x00\x38\x00\x30\x30\xEB\x00\x31");
+ _LIT8(KItemName1212, // Use characters in Katakana, first byte "\x80" is 0x80 UCS2 coding type for Tlv data
+ "\x80\x00\x38\x00\x30\x30\xEB\x00\x32");
+ _LIT8(KItemName1213, // Use characters in Katakana, first byte "\x80" is 0x80 UCS2 coding type for Tlv data
+ "\x80\x00\x38\x00\x30\x30\xEB\x00\x33");
+ const TPtrC8 itemNames121[KNumItemsThree] = {KItemName1211(), KItemName1212(), KItemName1213()};
+ _LIT16(KAlphaIdentifierText121U, // Katakana in unicode format for checking results
+ "\x0038\x0030\x30EB\x0030");
+ const TPtrC16 itemNames121U[KNumItemsThree] =
+ { // Katakana in unicode format for checking results
+ _L16("\x0038\x0030\x30EB\x0031"),
+ _L16("\x0038\x0030\x30EB\x0032"),
+ _L16("\x0038\x0030\x30EB\x0033")
+ };
+
+ TestNotifySelectItemPCmdL(
+ KPCmdNumber, KSelItmQualifierEmpty, RSat::KSatV2, RSat::EAlphaIdProvided, KAlphaIdentifierText121,
+ KNumItemsThree, KItemIds, itemNames121,
+ NULL, RSat::EIconQualifierNotSet, 0, RSat::EIconQualifierNotSet, NULL, 0,
+ KErrNone, &KAlphaIdentifierText121U, itemNames121U);
+
+ //generate the terminal response
+ RSat::TSelectItemRspV1 resp;
+ resp.iGeneralResult = RSat::KSuccess;
+ resp.iInfoType = RSat::KItemIdentifier;
+ // Identifier of item chosen(0x02) is passed as additional info
+ // and this value is sufficient because we set information type value as
+ // item identifier(RSat::KItemIdentifier)
+ resp.iAdditionalInfo.Append(0x02); // Identifier of item chosen
+ resp.SetPCmdNumber(KPCmdNumber);
+
+ GenerateSelItemTerminalResponseL( KSelItmQualifierEmpty, resp );
+ AssertMockLtsyStatusL();
+
+ //-------------------------------------------------------------------------
+ // Expected Sequence 12.2(ETSI TS 102 384),
+ // UCS2 in Cyrillic characters, 0x81 UCS2 coding, successful
+ //-------------------------------------------------------------------------
+
+ _LIT8(KAlphaIdentifierText122, // Use characters in Katakana, first byte "\x81" is 0x81 UCS2 coding type for Tlv data
+ "\x81\x04\x61\x38\x31\xEB\x30");
+ const TPtrC8 itemNames122[KNumItemsThree] =
+ { // Use characters in Katakana, first bytes "\x81" is 0x81 UCS2 coding type for Tlv data
+ _L8("\x81\x04\x61\x38\x31\xEB\x31"),
+ _L8("\x81\x04\x61\x38\x31\xEB\x32"),
+ _L8("\x81\x04\x61\x38\x31\xEB\x33")
+ };
+ _LIT16(KAlphaIdentifierText122U, // Katakana in unicode format for checking results
+ "\x0038\x0031\x30EB\x0030");
+ const TPtrC16 itemNames122U[KNumItemsThree] =
+ { // Katakana in unicode format for checking results
+ _L16("\x0038\x0031\x30EB\x0031"),
+ _L16("\x0038\x0031\x30EB\x0032"),
+ _L16("\x0038\x0031\x30EB\x0033")
+ };
+
+ TestNotifySelectItemPCmdL(
+ KPCmdNumber, KSelItmQualifierEmpty, RSat::KSatV2, RSat::EAlphaIdProvided, KAlphaIdentifierText122,
+ KNumItemsThree, KItemIds, itemNames122,
+ NULL, RSat::EIconQualifierNotSet, 0, RSat::EIconQualifierNotSet, NULL, 0,
+ KErrNone, &KAlphaIdentifierText122U, itemNames122U);
+
+ //generate the terminal response
+ GenerateSelItemTerminalResponseL( KSelItmQualifierEmpty, resp );
+ AssertMockLtsyStatusL();
+
+ //-------------------------------------------------------------------------
+ // Expected Sequence 12.3(ETSI TS 102 384),
+ // UCS2 in Cyrillic characters, 0x82 UCS2 coding, successful
+ //-------------------------------------------------------------------------
+
+ _LIT8(KAlphaIdentifierText123, // Use characters in Katakana, first byte "\x82" is 0x82 UCS2 coding type for Tlv data
+ "\x82\x04\x30\xA0\x38\x32\xCB\x30");
+ const TPtrC8 itemNames123[KNumItemsThree] =
+ { // Use characters in Katakana, first bytes "\x82" is 0x82 UCS2 coding type for Tlv data
+ _L8("\x82\x04\x30\xA0\x38\x32\xCB\x31"),
+ _L8("\x82\x04\x30\xA0\x38\x32\xCB\x32"),
+ _L8("\x82\x04\x30\xA0\x38\x32\xCB\x33")
+ };
+ _LIT16(KAlphaIdentifierText123U, // Katakana in unicode format for checking results
+ "\x0038\x0032\x30EB\x0030");
+ const TPtrC16 itemNames123U[KNumItemsThree] =
+ { // Katakana in unicode format for checking results
+ _L16("\x0038\x0032\x30EB\x0031"),
+ _L16("\x0038\x0032\x30EB\x0032"),
+ _L16("\x0038\x0032\x30EB\x0033")
+ };
+
+ TestNotifySelectItemPCmdL(
+ KPCmdNumber, KSelItmQualifierEmpty, RSat::KSatV2, RSat::EAlphaIdProvided, KAlphaIdentifierText123,
+ KNumItemsThree, KItemIds, itemNames123,
+ NULL, RSat::EIconQualifierNotSet, 0, RSat::EIconQualifierNotSet, NULL, 0,
+ KErrNone, &KAlphaIdentifierText123U, itemNames123U);
+
+ //generate the terminal response
+ GenerateSelItemTerminalResponseL( KSelItmQualifierEmpty, resp );
+ AssertMockLtsyStatusL();
+
+ CleanupStack::PopAndDestroy(this);
+
+ }
+
+
+/**
+@SYMTestCaseID BA-CSAT-SI-SNSIPC-0002
+@SYMPREQ 1780
+@SYMComponent telephony_csat
+@SYMTestCaseDesc Test support in CSAT for cancelling of RSat::NotifySelectItemPCmd
+@SYMTestPriority High
+@SYMTestActions Invokes cancelling of RSat::NotifySelectItemPCmd
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCSatSelectItemFU::TestNotifySelectItemPCmd0002L()
+ {
+
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+ OpenSatL();
+
+ TRequestStatus mockLtsyStatus;
+ iMockLTSY.NotifyTerminated(mockLtsyStatus);
+
+ //-------------------------------------------------------------------------
+ // Test cancelling of RSat::NotifySelectItemPCmd
+ //-------------------------------------------------------------------------
+
+ PrepareMockWithExpDataForPCmdNotifyL(KSelectItem);
+
+ PrepareSelItemCompleteDataL(
+ KPCmdNumber, KSelItmQualifierEmpty, RSat::EAlphaIdProvided, KToolkitSelectAlphaId,
+ KNumItemsFour, KItemIds, KItemNames,
+ NULL, RSat::EIconQualifierNotSet, 0, RSat::EIconQualifierNotSet, NULL, 0,
+ KErrNone, 10);
+
+ RSat::TAdditionalInfo addInfo;
+ addInfo.Append(RSat::KNoSpecificMeProblem);
+ PrepareTerminalResponseMockDataL(
+ KPCmdNumber, KSelectItem, KSelItmQualifierEmpty,
+ addInfo, RSat::KMeUnableToProcessCmd);
+
+ RSat::TSelectItemV2 selItmData;
+ ResetSelectItemData(selItmData);
+ RSat::TSelectItemV2Pckg selItmDataPck(selItmData);
+ TRequestStatus requestStatus;
+
+ iSat.NotifySelectItemPCmd(requestStatus, selItmDataPck);
+
+ iSat.CancelAsyncRequest(ESatNotifySelectItemPCmd);
+
+ 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-SI-SNSIPC-0004
+@SYMPREQ 1780
+@SYMComponent telephony_csat
+@SYMTestCaseDesc Test support in CSAT for multiple client requests to RSat::NotifySelectItemPCmd
+@SYMTestPriority High
+@SYMTestActions Invokes multiple client requests to RSat::NotifySelectItemPCmd
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCSatSelectItemFU::TestNotifySelectItemPCmd0004L()
+ {
+
+ 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);
+
+ // prepare proactive command data
+ _LIT8(KAlphaIdentifierText, "Toolkit Select 1");
+ _LIT16(KAlphaIdentifierText16, "Toolkit Select 1");
+
+ // prepare Test A data
+ TRequestStatus requestStatus;
+ TRequestStatus requestStatus2;
+
+ RSat::TSelectItemV2 selItmData;
+ RSat::TSelectItemV2 selItmData2;
+ RSat::TSelectItemV2Pckg selItmDataPckg(selItmData);
+ RSat::TSelectItemV2Pckg selItmDataPckg2(selItmData2);
+
+ ResetSelectItemData(selItmData);
+ ResetSelectItemData(selItmData2);
+
+ // prepare Test B data
+ RSat::TSelectItemV1 selItmDataV1;
+ RSat::TSelectItemV1Pckg selItmDataV1Pckg(selItmDataV1);
+ ResetSelectItemData(selItmDataV1);
+
+ // prepare terminal response data
+ RSat::TSelectItemRspV1 resp;
+ resp.iGeneralResult = RSat::KSuccess;
+ resp.iInfoType = RSat::KItemIdentifier;
+ // Identifier of item chosen(0x02) is passed as additional info
+ // and this value is sufficient because we set information type value as
+ // item identifier(RSat::KItemIdentifier)
+ resp.iAdditionalInfo.Append(0x02);
+ resp.SetPCmdNumber(KPCmdNumber);
+
+ //-------------------------------------------------------------------------
+ // Test A: Test multiple clients requesting RSat::NotifySelectItemPCmd
+ // when they both pass the same T-class version
+ //-------------------------------------------------------------------------
+
+ // prepare Mock data
+ PrepareMockWithExpDataForPCmdNotifyL(KSelectItem);
+ PrepareSelItemCompleteDataL(
+ KPCmdNumber, KSelItmQualifierEmpty, RSat::EAlphaIdProvided, KAlphaIdentifierText,
+ KNumItemsFour, KItemIds, KItemNames,
+ NULL, RSat::EIconQualifierNotSet, 0, RSat::EIconQualifierNotSet, NULL, 0,
+ KErrNone, 10);
+
+ // send requests
+ iSat.NotifySelectItemPCmd(requestStatus, selItmDataPckg);
+ sat2.NotifySelectItemPCmd(requestStatus2, selItmDataPckg2);
+
+ // wait for completion
+ User::WaitForRequest(requestStatus);
+ User::WaitForRequest(requestStatus2);
+
+ // check results
+ ASSERT_EQUALS(KErrNone, requestStatus.Int());
+ ASSERT_EQUALS(KErrNone, requestStatus2.Int());
+
+ const TUint8 KNumClients = 2;
+ const RSat::TSelectItemV2* selItmDataArr[KNumClients] = { &selItmData, &selItmData2};
+ for(TUint8 clientNo = 0; clientNo < KNumClients; clientNo++)
+ {
+ const RSat::TSelectItemV2& selItmData( *(selItmDataArr[clientNo]) );
+
+ ASSERT_EQUALS( KPCmdNumber, selItmData.PCmdNumber() );
+ ASSERT_TRUE( RSat::ESoftKeyPreferred != selItmData.iPreference );
+ ASSERT_EQUALS( RSat::ENoHelpAvailable, selItmData.iHelp );
+ ASSERT_TRUE( ( RSat::ENotSpecified == selItmData.iPresentationType ) ||
+ ( RSat::EPresentationTypeNotSet == selItmData.iPresentationType ) );
+ ASSERT_EQUALS( RSat::ENoIconId, selItmData.iIconId.iQualifier );
+ ASSERT_EQUALS( RSat::ENoIconId, selItmData.iIconListQualifier );
+ ASSERT_EQUALS( static_cast<TUint8>(0), selItmData.iDefaultItemId );
+ ASSERT_EQUALS( 0, KAlphaIdentifierText16().Compare(selItmData.iAlphaId.iAlphaId) );
+ ASSERT_EQUALS( RSat::EAlphaIdProvided, selItmData.iAlphaId.iStatus );
+ ASSERT_TRUE( !selItmData.IsRemoveMenu() );
+ ASSERT_EQUALS( static_cast<TUint>(KNumItemsFour), selItmData.NumberOfItems() );
+ for(TInt i = 0; i < KNumItemsFour; i++)
+ {
+ RSat::TItem item;
+ TInt action;
+ TInt iconId;
+
+ ASSERT_EQUALS( KErrNone, selItmData.GetItem( i + 1, item, action, iconId ) );
+ ASSERT_EQUALS( KItemIds[i], item.iItemId );
+ ASSERT_EQUALS( 0, Compare16bitDesWith8bitDesL(KItemNames[i], item.iItemString) );
+ ASSERT_EQUALS( KErrNotFound, action );
+ ASSERT_EQUALS( KErrNotFound, iconId );
+ }
+ }
+
+ AssertMockLtsyStatusL();
+
+ //generate terminal responses
+ GenerateSelItemTerminalResponseL( KSelItmQualifierEmpty, resp);
+ GenerateSelItemTerminalResponseL( KSelItmQualifierEmpty, resp);
+ AssertMockLtsyStatusL();
+
+ //-------------------------------------------------------------------------
+ // Test B: Test multiple clients requesting RSat::NotifySelectItemPCmd
+ // when they both pass different T-class versions
+ //-------------------------------------------------------------------------
+
+ // When multiple clients requesting RSat::NotifySelectItemPCmd 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 ESatNotifySelectItemPCmd ipc requests flow controlled
+ // by CSATTSY instead of multiple completed by ETEL.
+ ERR_PRINTF2(_L("<font color=Orange>$CSATKnownFailure: defect id = %d</font>"), 51);
+ ASSERT_TRUE( EFalse );
+
+ // send requests
+ PrepareMockWithExpDataForPCmdNotifyL(KSelectItem);
+ PrepareSelItemCompleteDataL(
+ KPCmdNumber, KSelItmQualifierEmpty, RSat::EAlphaIdProvided, KAlphaIdentifierText,
+ KNumItemsFour, KItemIds, KItemNames,
+ NULL, RSat::EIconQualifierNotSet, 0, RSat::EIconQualifierNotSet, NULL, 0,
+ KErrNone, 10);
+
+ ResetSelectItemData(selItmData);
+ iSat.NotifySelectItemPCmd(requestStatus, selItmDataPckg);
+ sat2.NotifySelectItemPCmd(requestStatus2, selItmDataV1Pckg);
+
+ // wait for completion
+ User::WaitForRequest(requestStatus2);
+ User::WaitForRequest(requestStatus);
+
+ // check results
+ ASSERT_EQUALS(KErrNone, requestStatus.Int());
+ ASSERT_EQUALS(KErrNone, requestStatus2.Int());
+
+ // check results general for V2 and V1 parameter versions
+ const RSat::TSelectItemV1* selItmDataV1Arr[KNumClients] = { &selItmData, &selItmDataV1};
+ for(TInt clientNo = 0; clientNo < KNumClients; clientNo++)
+ {
+ const RSat::TSelectItemV1& selItmData( *(selItmDataV1Arr[clientNo]) );
+
+ ASSERT_EQUALS( KPCmdNumber, selItmData.PCmdNumber() );
+ ASSERT_EQUALS( RSat::ENoHelpAvailable, selItmData.iHelp );
+ ASSERT_TRUE( ( RSat::ENotSpecified == selItmData.iPresentationType ) ||
+ ( RSat::EPresentationTypeNotSet == selItmData.iPresentationType ) );
+ ASSERT_EQUALS( RSat::ENoIconId, selItmData.iIconId.iQualifier );
+ ASSERT_EQUALS( RSat::ENoIconId, selItmData.iIconListQualifier );
+ ASSERT_EQUALS( static_cast<TUint8>(0), selItmData.iDefaultItemId );
+ ASSERT_EQUALS( 0, KAlphaIdentifierText16().Compare(selItmData.iAlphaId.iAlphaId) );
+ ASSERT_EQUALS( RSat::EAlphaIdProvided, selItmData.iAlphaId.iStatus );
+ ASSERT_TRUE( !selItmData.IsRemoveMenu() );
+ ASSERT_EQUALS( static_cast<TUint>(KNumItemsFour), selItmData.NumberOfItems() );
+ for(TInt i = 0; i < KNumItemsFour; i++)
+ {
+ RSat::TItem item;
+ TInt action;
+ TInt iconId;
+
+ ASSERT_EQUALS( KErrNone, selItmData.GetItem( i + 1, item, action, iconId ) );
+ ASSERT_EQUALS( KItemIds[i], item.iItemId );
+ ASSERT_EQUALS( 0, Compare16bitDesWith8bitDesL(KItemNames[i], item.iItemString) );
+ ASSERT_EQUALS( KErrNotFound, action );
+ ASSERT_EQUALS( KErrNotFound, iconId );
+ }
+ }
+
+ // check results of V2 parameter version
+ ASSERT_TRUE( RSat::ESoftKeyPreferred != selItmData.iPreference );
+
+ AssertMockLtsyStatusL();
+
+ //generate terminal responses
+ GenerateSelItemTerminalResponseL( KSelItmQualifierEmpty, resp );
+ GenerateSelItemTerminalResponseL( KSelItmQualifierEmpty, resp );
+ AssertMockLtsyStatusL();
+
+ CleanupStack::PopAndDestroy(4, this); // sat2, phone2, telServer2, this
+
+ }
+
+