--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/telephonyserverplugins/simatktsy/tests/src/ccsatsetupmenufu.cpp Tue Feb 02 01:41:59 2010 +0200
@@ -0,0 +1,1542 @@
+// 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 SetUpMenu in the SAT.
+*/
+
+#include <cstktsy/bertlv_defs.h>
+#include <etel.h>
+#include <etelmm.h>
+#include <satcs.h>
+#include <ctsy/ltsy/mltsydispatchsatinterface.h>
+#include <test/mockltsyindicatorids.h>
+#include <test/tmockltsydata.h>
+
+#include "ccsatsetupmenufu.h"
+
+static const TInt KDelay = 10;
+
+CTestSuite* CCSatSetUpMenuFU::CreateSuiteL(const TDesC& aName)
+ {
+ SUB_SUITE;
+
+ ADD_TEST_STEP_ISO_CPP(CCSatSetUpMenuFU, TestNotifySetUpMenuPCmd0001L);
+ ADD_TEST_STEP_ISO_CPP(CCSatSetUpMenuFU, TestNotifySetUpMenuPCmd0001bL);
+ ADD_TEST_STEP_ISO_CPP(CCSatSetUpMenuFU, TestNotifySetUpMenuPCmd0001cL);
+ ADD_TEST_STEP_ISO_CPP(CCSatSetUpMenuFU, TestNotifySetUpMenuPCmd0001dL);
+ ADD_TEST_STEP_ISO_CPP(CCSatSetUpMenuFU, TestNotifySetUpMenuPCmd0001eL);
+ ADD_TEST_STEP_ISO_CPP(CCSatSetUpMenuFU, TestNotifySetUpMenuPCmd0001fL);
+ ADD_TEST_STEP_ISO_CPP(CCSatSetUpMenuFU, TestNotifySetUpMenuPCmd0001gL);
+ ADD_TEST_STEP_ISO_CPP(CCSatSetUpMenuFU, TestNotifySetUpMenuPCmd0001hL);
+ ADD_TEST_STEP_ISO_CPP(CCSatSetUpMenuFU, TestNotifySetUpMenuPCmd0001iL);
+ ADD_TEST_STEP_ISO_CPP(CCSatSetUpMenuFU, TestNotifySetUpMenuPCmd0001jL);
+ ADD_TEST_STEP_ISO_CPP(CCSatSetUpMenuFU, TestNotifySetUpMenuPCmd0002L);
+ ADD_TEST_STEP_ISO_CPP(CCSatSetUpMenuFU, TestNotifySetUpMenuPCmd0004L);
+
+ END_SUITE;
+ }
+
+
+//
+// Actual test cases
+//
+
+
+/**
+@SYMTestCaseID BA-CSAT-SUM-SNSUMPC-0001
+@SYMPREQ 1780
+@SYMComponent telephony_csat
+@SYMTestCaseDesc Test support in CSAT for RSat::NotifySetUpMenuPCmd
+@SYMTestPriority High
+@SYMTestActions Invokes RSat::NotifySetUpMenuPCmd
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCSatSetUpMenuFU::TestNotifySetUpMenuPCmd0001L()
+ {
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+ OpenSatL();
+
+ RBuf8 data;
+ CleanupClosePushL(data);
+
+ TUint8 KPCmdNumber = 1;
+
+ // prepare tlv buffer for serialisation
+ TTlv tlv;
+ tlv.Begin(KBerTlvProactiveSimCommandTag);
+ tlv.AddTag(KTlvCommandDetailsTag);
+ tlv.AddByte(KPCmdNumber);//ETLV_CommandNumber
+ tlv.AddByte(KSetUpMenu); //ETLV_TypeOfCommand
+ tlv.AddByte(0); //ETLV_CommandQualifier
+
+ tlv.AddTag(KTlvDeviceIdentityTag);
+ tlv.AddByte(KSim); //ETLV_SourceDeviceIdentity
+ tlv.AddByte(KDisplay); //ETLV_DestinationDeviceIdentity
+
+ tlv.AddTag(KTlvAlphaIdentifierTag);
+ _LIT8(KSetupMenuTest8,"Menu AlphaIdent");
+ tlv.AddData(KSetupMenuTest8);//ETLV_AlphaIdentifier
+
+ tlv.AddTag(KTlvItemTag);
+ tlv.AddByte(77); //item identifier
+ tlv.AddData(_L8("Item AlphaIdent1"));
+
+ TPtrC8 tlvDsc = tlv.End();
+ TDesC8* tlvDscPtr = &tlvDsc;
+
+ TMockLtsyData1<TDesC8*> tlvDscPack(tlvDscPtr);
+
+ //-------------------------------------------------------------------------
+ // TEST B: failure on completion of pending request from LTSY->CTSY
+ //-------------------------------------------------------------------------
+
+ // tell Mock about forthcoming RSat::NotifySetUpMenuPCmd
+ TUint8 pcmdCode = KSetUpMenu;
+ TMockLtsyData1<TUint8> expLtsyData(pcmdCode);
+ expLtsyData.SerialiseL(data);
+ iMockLTSY.ExpectL(MLtsyDispatchSatPCmdNotification::KLtsyDispatchSatPCmdNotificationApiId,data);
+ data.Close();
+
+ RSat::TSetUpMenuV2 setupMenu;
+ RSat::TSetUpMenuV2Pckg setpPck(setupMenu);
+ TRequestStatus stat;
+ iSat.NotifySetUpMenuPCmd(stat, setpPck);
+
+ tlvDscPack.SerialiseL(data);
+ iMockLTSY.CompleteL(KMockLtsyDispatchSatPcmdIndId, KErrGeneral, data, KDelay);
+
+ User::WaitForRequest(stat);
+ ASSERT_EQUALS(KErrGeneral, stat.Int());
+
+ AssertMockLtsyStatusL();
+
+ //-------------------------------------------------------------------------
+ // TEST E: Unsolicited completion of RSat::NotifySetUpMenuPCmd from LTSY.
+ //-------------------------------------------------------------------------
+
+ TRequestStatus mockLtsyStatus;
+ iMockLTSY.NotifyTerminated(mockLtsyStatus);
+
+ tlvDscPack.SerialiseL(data);
+ iMockLTSY.CompleteL(KMockLtsyDispatchSatPcmdIndId, KErrNone, data, KDelay);
+ data.Close();
+
+ RSat::TAdditionalInfo addInfo;
+ addInfo.Zero();
+ addInfo.Append(RSat::KNoSpecificMeProblem);
+
+ PrepareTerminalResponseMockDataL( KPCmdNumber, KSetUpMenu, 0,
+ addInfo, RSat::KMeUnableToProcessCmd, KNullDesC8);
+
+ User::WaitForRequest(mockLtsyStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
+
+ // test C - Successful completion request of
+ // RSat::NotifySetFramesPCmd() - implemented in 0001b()-0001i() functions
+
+ CleanupStack::PopAndDestroy(2, this); // data, this
+ }
+
+
+/**
+@SYMTestCaseID BA-CSAT-SUM-SNSUMPC-0001b
+@SYMPREQ 1780
+@SYMComponent telephony_csat
+@SYMTestCaseDesc Test support in CSAT for RSat::NotifySetUpMenuPCmd - SET UP MENU (help request support) and ENVELOPE MENU SELECTION
+@SYMTestPriority High
+@SYMTestActions Invokes RSat::NotifySetUpMenuPCmd
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCSatSetUpMenuFU::TestNotifySetUpMenuPCmd0001bL()
+ {
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+ OpenSatL();
+
+ // Expected Sequence 2.1
+ //(SET UP MENU and MENU SELECTION, with Help Request, Replace and Remove a Toolkit Menu)
+ //See ETSI TS 102 384 [26] in subclause 27.22.4.8.2.4.2, Expected Sequence 2.1.
+
+ TUint8 cmdNumber = 1;
+ const TInt KNumItems = 4;
+
+ TUint8 ids[KNumItems] = {1, 2, 3, 4};
+ TPtrC8 idNames[KNumItems] = {_L8("Item 1"), _L8("Item 2"), _L8("Item 3"), _L8("Item 4")};
+
+ SetUpMenuL( cmdNumber, KHelpAvailabilityMask, _L8("Toolkit Menu"), KNumItems, ids, idNames );
+
+ //generate the terminal response
+ RSat::TSetUpMenuRspV1 resp;
+ RSat::TSetUpMenuRspV1Pckg respPck(resp);
+
+ resp.iGeneralResult = RSat::KSuccess;
+ resp.iInfoType = RSat::KNoAdditionalInfo;
+ resp.iAdditionalInfo.Zero();
+ resp.SetPCmdNumber(cmdNumber);
+ GenerateTerminalResponseL(cmdNumber, KSetUpMenu, KHelpAvailabilityMask, RSat::ESetUpMenu,
+ respPck, resp.iAdditionalInfo, resp.iGeneralResult);
+ AssertMockLtsyStatusL();
+
+ // now end session
+ EndProactiveSimSessionL();
+ AssertMockLtsyStatusL();
+
+ // select 2
+ SelectMenuItemL(ids[1], ETrue);
+ AssertMockLtsyStatusL();
+
+ CleanupStack::PopAndDestroy(1, this);
+ }
+
+
+/**
+@SYMTestCaseID BA-CSAT-SUM-SNSUMPC-0001c
+@SYMPREQ 1780
+@SYMComponent telephony_csat
+@SYMTestCaseDesc Test support in CSAT for RSat::NotifySetUpMenuPCmd - SET UP MENU (next action support) and ENVELOPE MENU SELECTION
+@SYMTestPriority High
+@SYMTestActions Invokes RSat::NotifySetUpMenuPCmd
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCSatSetUpMenuFU::TestNotifySetUpMenuPCmd0001cL()
+ {
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+ OpenSatL();
+
+ // Expected Sequence 3.1
+ //(SET UP MENU, next action indicator "Send SM", "Set Up Call", "LaunchBrowser",
+ //"Provide Local Information", successful)
+ //See ETSI TS 102 384 [26] in subclause 27.22.4.8.3.4.2, Expected Sequence 3.1.
+
+ TUint8 cmdNumber = 1;
+ TUint8 noPref(0); // no selection preferences
+ const TInt KNumItems = 4;
+
+ TUint8 ids[KNumItems] = {1, 2, 3, 4};
+ TPtrC8 idNames[KNumItems] = {_L8("Item 1"), _L8("Item 2"), _L8("Item 3"), _L8("Item 4")};
+ TUint8 actions[KNumItems] = {KSendShortMessage, KSetUpCall, KLaunchBrowser, KProvideLocalInformation};
+
+ SetUpMenuL( cmdNumber, noPref, _L8("Toolkit Menu"), KNumItems, ids, idNames, actions );
+
+ //generate the terminal response
+ RSat::TSetUpMenuRspV1 resp;
+ RSat::TSetUpMenuRspV1Pckg respPck(resp);
+
+ resp.iGeneralResult = RSat::KSuccess;
+ resp.iInfoType = RSat::KNoAdditionalInfo;
+ resp.iAdditionalInfo.Zero();
+ resp.SetPCmdNumber(cmdNumber);
+ GenerateTerminalResponseL(cmdNumber, KSetUpMenu, noPref, RSat::ESetUpMenu,
+ respPck, resp.iAdditionalInfo, resp.iGeneralResult);
+ AssertMockLtsyStatusL();
+
+ // now end session
+ EndProactiveSimSessionL();
+ AssertMockLtsyStatusL();
+
+ // select 2
+ SelectMenuItemL(ids[1], ETrue);
+ AssertMockLtsyStatusL();
+
+ CleanupStack::PopAndDestroy(1, this);
+ }
+
+
+
+/**
+@SYMTestCaseID BA-CSAT-SUM-SNSUMPC-0001d
+@SYMPREQ 1780
+@SYMComponent telephony_csat
+@SYMTestCaseDesc Test support in CSAT for RSat::NotifySetUpMenuPCmd - SET UP MENU (display of icons) and ENVELOPE MENU SELECTION
+@SYMTestPriority High
+@SYMTestActions Invokes RSat::NotifySetUpMenuPCmd
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCSatSetUpMenuFU::TestNotifySetUpMenuPCmd0001dL()
+ {
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+ OpenSatL();
+
+ // Expected Sequence 4.1A
+ //(SET UP MENU, BASIC ICON NOT SELF EXPLANATORY in ALPHA ID and ITEMS DATA OBJECTS, successful)
+ //See ETSI TS 102 384 [26] in subclause 27.22.4.8.4.4.2, Expected Sequence 4.1A.
+
+ TUint8 cmdNumber = 1;
+ TUint8 noPref(0); // no preferences
+ const TInt KNumItems = 3;
+
+ TUint8 ids[KNumItems] = {1, 2, 3};
+ TPtrC8 idNames[KNumItems] = {_L8("Item 1"), _L8("Item 2"), _L8("Item 3")};
+ TUint8 iconList[KNumItems] = {5, 5, 5};
+
+ SetUpMenuL( cmdNumber, noPref, _L8("Toolkit Menu"), KNumItems, ids, idNames, NULL,
+ RSat::ENotSelfExplanatory, 1, RSat::ENotSelfExplanatory, iconList );
+
+ //generate the terminal response
+ RSat::TSetUpMenuRspV1 resp;
+ RSat::TSetUpMenuRspV1Pckg respPck(resp);
+
+ resp.iGeneralResult = RSat::KSuccess;
+ resp.iInfoType = RSat::KNoAdditionalInfo;
+ resp.iAdditionalInfo.Zero();
+ resp.SetPCmdNumber(cmdNumber);
+ GenerateTerminalResponseL(cmdNumber, KSetUpMenu, noPref, RSat::ESetUpMenu,
+ respPck, resp.iAdditionalInfo, resp.iGeneralResult);
+ AssertMockLtsyStatusL();
+
+ // now end session
+ EndProactiveSimSessionL();
+ AssertMockLtsyStatusL();
+
+ // select 2
+ SelectMenuItemL(ids[1], ETrue);
+ AssertMockLtsyStatusL();
+
+ //Expected Sequence 4.1B
+ //(SET UP MENU, BASIC ICON NOT SELF EXPLANATORY in ALPHA ID and ITEMS DATA OBJECTS,
+ //requested icon could not be displayed)
+ //See ETSI TS 102 384 [26] in subclause 27.22.4.8.4.4.2, Expected Sequence 4.1B.
+
+ SetUpMenuL( cmdNumber, noPref, _L8("Toolkit Menu"), KNumItems, ids, idNames, NULL,
+ RSat::ENotSelfExplanatory, 1, RSat::ENotSelfExplanatory, iconList );
+
+ //generate the terminal response
+ resp.iGeneralResult = RSat::KSuccessRequestedIconNotDisplayed;
+ GenerateTerminalResponseL(cmdNumber, KSetUpMenu, noPref, RSat::ESetUpMenu,
+ respPck, resp.iAdditionalInfo, resp.iGeneralResult);
+ AssertMockLtsyStatusL();
+
+ // now end session
+ EndProactiveSimSessionL();
+ AssertMockLtsyStatusL();
+
+ // select 2
+ SelectMenuItemL(ids[1], ETrue);
+ AssertMockLtsyStatusL();
+
+ //Expected Sequence 4.2A (SET UP MENU, BASIC ICON SELF EXPLANATORY in ALPHA ID and ITEMS
+ //DATA OBJECTS, successful)
+ //See ETSI TS 102 384 [26] in subclause 27.22.4.8.4.4.2, Expected Sequence 4.2A.
+
+ SetUpMenuL( cmdNumber, noPref, _L8("Toolkit Menu"), KNumItems, ids, idNames, NULL,
+ RSat::ESelfExplanatory, 1, RSat::ESelfExplanatory, iconList );
+
+ //generate the terminal response
+ resp.iGeneralResult = RSat::KSuccess;
+ GenerateTerminalResponseL(cmdNumber, KSetUpMenu, noPref, RSat::ESetUpMenu, respPck,
+ resp.iAdditionalInfo, resp.iGeneralResult);
+ AssertMockLtsyStatusL();
+
+ // now end session
+ EndProactiveSimSessionL();
+ AssertMockLtsyStatusL();
+
+ // select 2
+ SelectMenuItemL(ids[1], ETrue);
+ AssertMockLtsyStatusL();
+
+ //Expected Sequence 4.2B (SET UP MENU, BASIC ICON SELF EXPLANATORY in ALPHA ID and ITEMS
+ //DATA OBJECTS, requested icon could not be displayed)
+ //See ETSI TS 102 384 [26] in subclause 27.22.4.8.4.4.2, Expected Sequence 4.2B.
+
+ SetUpMenuL( cmdNumber, noPref, _L8("Toolkit Menu"), KNumItems, ids, idNames, NULL,
+ RSat::ESelfExplanatory, 1, RSat::ESelfExplanatory, iconList );
+
+ //generate the terminal response
+ resp.iGeneralResult = RSat::KSuccessRequestedIconNotDisplayed;
+ GenerateTerminalResponseL(cmdNumber, KSetUpMenu, noPref, RSat::ESetUpMenu,
+ respPck, resp.iAdditionalInfo, resp.iGeneralResult);
+ AssertMockLtsyStatusL();
+
+ // now end session
+ EndProactiveSimSessionL();
+ AssertMockLtsyStatusL();
+
+ // select 2
+ SelectMenuItemL(ids[1], ETrue);
+ AssertMockLtsyStatusL();
+
+ CleanupStack::PopAndDestroy(1, this);
+ }
+
+
+/**
+@SYMTestCaseID BA-CSAT-SUM-SNSUMPC-0001e
+@SYMPREQ 1780
+@SYMComponent telephony_csat
+@SYMTestCaseDesc Test support in CSAT for RSat::NotifySetUpMenuPCmd - SET UP MENU (soft keys support) and ENVELOPE MENU SELECTION
+@SYMTestPriority High
+@SYMTestActions Invokes RSat::NotifySetUpMenuPCmd
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCSatSetUpMenuFU::TestNotifySetUpMenuPCmd0001eL()
+ {
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+ OpenSatL();
+
+ // Expected Sequence 5.1 (SET UP MENU, SOFT KEY PREFERRED, successful)
+ //See ETSI TS 102 384 [26] in subclause 27.22.4.8.5.4.2, Expected Sequence 5.1.
+
+ TUint8 cmdNumber = 1;
+ const TInt KNumItems = 2;
+
+ TUint8 ids[KNumItems] = {1, 2};
+ TPtrC8 idNames[KNumItems] = {_L8("Item 1"), _L8("Item 2")};
+
+ SetUpMenuL( cmdNumber, KSelectionUsingSoftKey, _L8("Toolkit Menu"), KNumItems, ids, idNames );
+
+ //generate the terminal response
+ RSat::TSetUpMenuRspV1 resp;
+ RSat::TSetUpMenuRspV1Pckg respPck(resp);
+
+ resp.iGeneralResult = RSat::KSuccess;
+ resp.iInfoType = RSat::KNoAdditionalInfo;
+ resp.iAdditionalInfo.Zero();
+ resp.SetPCmdNumber(cmdNumber);
+ GenerateTerminalResponseL(cmdNumber, KSetUpMenu, KSelectionUsingSoftKey, RSat::ESetUpMenu,
+ respPck, resp.iAdditionalInfo, resp.iGeneralResult);
+ AssertMockLtsyStatusL();
+
+ // now end session
+ EndProactiveSimSessionL();
+
+ // select second item
+ SelectMenuItemL(ids[1]);
+
+ AssertMockLtsyStatusL();
+
+ CleanupStack::PopAndDestroy(1, this);
+ }
+
+
+/**
+@SYMTestCaseID BA-CSAT-SUM-SNSUMPC-0001f
+@SYMPREQ 1780
+@SYMComponent telephony_csat
+@SYMTestCaseDesc Test support in CSAT for RSat::NotifySetUpMenuPCmd - SET UP MENU (help request support) and ENVELOPE MENU SELECTION
+@SYMTestPriority High
+@SYMTestActions Invokes RSat::NotifySetUpMenuPCmd
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCSatSetUpMenuFU::TestNotifySetUpMenuPCmd0001fL()
+ {
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+ OpenSatL();
+
+ // Check SATTSY for handling error value
+
+ TUint8 cmdNumber = 1;
+ const TInt KNumItems = 4;
+
+ TUint8 ids[KNumItems] = {1, 2, 3, 4};
+ TPtrC8 idNames[KNumItems] = {_L8("Item 1"), _L8("Item 2"), _L8("Item 3"), _L8("Item 4")};
+
+ SetUpMenuL( cmdNumber, KHelpAvailabilityMask, _L8("Toolkit Menu"), KNumItems, ids, idNames );
+
+ //generate the terminal response
+ RSat::TSetUpMenuRspV1 resp;
+ RSat::TSetUpMenuRspV1Pckg respPck(resp);
+
+ resp.iGeneralResult = RSat::KSuccess;
+ resp.iInfoType = RSat::KNoAdditionalInfo;
+ resp.iAdditionalInfo.Zero();
+ resp.SetPCmdNumber(cmdNumber);
+ GenerateTerminalResponseL(cmdNumber, KSetUpMenu, KHelpAvailabilityMask, RSat::ESetUpMenu,
+ respPck, resp.iAdditionalInfo, resp.iGeneralResult);
+ AssertMockLtsyStatusL();
+
+ // now end session
+ EndProactiveSimSessionL();
+ AssertMockLtsyStatusL();
+
+ // select 2
+ // now tell Mock to return KErrUnknown when dispatching forthcoming RSat::MenuSelection()
+ SelectMenuItemL(ids[1], ETrue, KErrUnknown);
+ AssertMockLtsyStatusL();
+
+ CleanupStack::PopAndDestroy(1, this);
+ }
+
+
+/**
+@SYMTestCaseID BA-CSAT-SUM-SNSUMPC-0001g
+@SYMPREQ 1780
+@SYMComponent telephony_csat
+@SYMTestCaseDesc Test support in CSAT for RSat::NotifySetUpMenuPCmd - SET UP MENU (UCS2 display in Cyrillic) and ENVELOPE MENU SELECTION
+@SYMTestPriority High
+@SYMTestActions Invokes RSat::NotifySetUpMenuPCmd
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCSatSetUpMenuFU::TestNotifySetUpMenuPCmd0001gL()
+ {
+ //"hello" in russian
+ _LIT8(KMenu,
+ "\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");
+
+ //"hello1", "hello2" etc... in russian
+ TPtrC8 idNames[4] =
+ {_L8("\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"),
+ _L8("\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"),
+ _L8("\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"),
+ _L8("\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\x34")};
+
+ //"hello5", "hello6" in russian
+ TPtrC8 idNames2[2] =
+ {_L8("\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\x35"),
+ _L8("\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\x36")};
+
+ CheckForeignSetUpMenuL(KMenu, idNames, idNames2);
+ }
+
+
+/**
+@SYMTestCaseID BA-CSAT-SUM-SNSUMPC-0001h
+@SYMPREQ 1780
+@SYMComponent telephony_csat
+@SYMTestCaseDesc Test support in CSAT for RSat::NotifySetUpMenuPCmd - SET UP MENU (UCS2 display in Chinese) and ENVELOPE MENU SELECTION
+@SYMTestPriority High
+@SYMTestActions Invokes RSat::NotifySetUpMenuPCmd
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCSatSetUpMenuFU::TestNotifySetUpMenuPCmd0001hL()
+ {
+ //"Toolkit menu" in chinese
+ _LIT8(KMenu, "\x80\x5D\xE5\x51\x77\x7B\xB1\x53\x55");
+
+ //"Item 1", "Item 2" etc. in chinese
+ TPtrC8 idNames[4] =
+ {_L8("\x80\x98\x79\x76\xEE\x4E\x00"),
+ _L8("\x80\x98\x79\x76\xEE\x4E\x8C"),
+ _L8("\x80\x98\x79\x76\xEE\x4E\x09"),
+ _L8("\x80\x98\x79\x76\xEE\x56\xDB")};
+
+ //"One", "two" in chinese
+ TPtrC8 idNames2[2] =
+ {_L8("\x80\x4E\x00"),
+ _L8("\x80\x4E\x8C")};
+
+ CheckForeignSetUpMenuL(KMenu, idNames, idNames2);
+ }
+
+
+/**
+@SYMTestCaseID BA-CSAT-SUM-SNSUMPC-0001i
+@SYMPREQ 1780
+@SYMComponent telephony_csat
+@SYMTestCaseDesc Test support in CSAT for RSat::NotifySetUpMenuPCmd - SET UP MENU (UCS2 display in Katakana) and ENVELOPE MENU SELECTION
+@SYMTestPriority High
+@SYMTestActions Invokes RSat::NotifySetUpMenuPCmd
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCSatSetUpMenuFU::TestNotifySetUpMenuPCmd0001iL()
+ {
+ //Menu Header and menu items use characters in Katakana
+ _LIT8(KMenu, "\x80\x00\x38\x00\x30\x30\xEB\x00\x30");
+
+ TPtrC8 idNames[4] =
+ {_L8("\x80\x00\x38\x00\x30\x30\xEB\x00\x31"),
+ _L8("\x80\x00\x38\x00\x30\x30\xEB\x00\x32"),
+ _L8("\x80\x00\x38\x00\x30\x30\xEB\x00\x33"),
+ _L8("\x80\x00\x38\x00\x30\x30\xEB\x00\x34")};
+
+ //second menu items use characters in Katakana
+ TPtrC8 idNames2[2] =
+ {_L8("\x80\x00\x38\x00\x30\x30\xEB\x00\x35"),
+ _L8("\x80\x00\x38\x00\x30\x30\xEB\x00\x36")};
+
+ CheckForeignSetUpMenuL(KMenu, idNames, idNames2);
+ }
+
+
+/**
+* auxiliary function for testing different types of menu alignment
+* @param aAlign - type of alignment for tvl text formatting
+*/
+void CCSatSetUpMenuFU::CheckMenuAlignmentL(TUint8 aAlign)
+ {
+ TUint8 cmdNumber = 1;
+ TUint8 noPref = 0;
+ const TInt KNumItems = 3;
+ _LIT8(KMenu1, "Toolkit Menu 1");
+
+ TUint8 ids[KNumItems] = {1, 2, 3};
+ TPtrC8 idNames[KNumItems] = {_L8("Item 1"), _L8("Item 2"), _L8("Item 3")};
+ TUint8 alphaFormatting[RSat::KTextAttributeBufSize] =
+ {
+ 0, //formatting position
+ 14, //text length
+ aAlign,
+ 0xB4 //Dark Green Foreground(0x04), Bright Yellow Background(0xB0)
+ };
+ TUint8 itemsFormatting[KNumItems][RSat::KTextAttributeBufSize] =
+ {{ 0, 6, aAlign ,0xB4 },
+ { 0, 6, aAlign ,0xB4 },
+ { 0, 6, aAlign ,0xB4 }};
+
+ //Text attributes are not parsed in CSatNotifySetUpMenu::CompleteNotifyL()
+
+ ERR_PRINTF2(_L("<font color=Orange>$CSATKnownFailure: defect id = %d</font>"), 6);
+
+ SetUpMenuL( cmdNumber, noPref, KMenu1, KNumItems, ids, idNames, NULL,
+ RSat::EIconQualifierNotSet, 0, RSat::EIconQualifierNotSet, NULL,
+ alphaFormatting, itemsFormatting );
+
+
+ //generate the terminal response
+ RSat::TSetUpMenuRspV1 resp;
+ RSat::TSetUpMenuRspV1Pckg respPck(resp);
+
+ resp.iGeneralResult = RSat::KSuccess;
+ resp.iInfoType = RSat::KNoAdditionalInfo;
+ resp.iAdditionalInfo.Zero();
+ resp.SetPCmdNumber(cmdNumber);
+ GenerateTerminalResponseL(cmdNumber, KSetUpMenu, noPref, RSat::ESetUpMenu,
+ respPck, resp.iAdditionalInfo, resp.iGeneralResult);
+ AssertMockLtsyStatusL();
+
+ // now end session
+ EndProactiveSimSessionL();
+
+ // select second item
+ SelectMenuItemL(ids[1]);
+
+ AssertMockLtsyStatusL();
+
+ // second menu
+ TUint8 ids2[KNumItems] = {4, 5, 6};
+ TPtrC8 idNames2[KNumItems] = {_L8("Item 4"), _L8("Item 5"), _L8("Item 6") };
+ _LIT8(KMenu2, "Toolkit Menu 2");
+
+ SetUpMenuL( cmdNumber, noPref, KMenu2, KNumItems, ids2, idNames2 );
+
+ GenerateTerminalResponseL(cmdNumber, KSetUpMenu, noPref, RSat::ESetUpMenu,
+ respPck, resp.iAdditionalInfo, resp.iGeneralResult);
+ AssertMockLtsyStatusL();
+
+ // now end session
+ EndProactiveSimSessionL();
+
+ // select second item
+ SelectMenuItemL(ids2[1]);
+
+ AssertMockLtsyStatusL();
+ }
+
+
+/**
+@SYMTestCaseID BA-CSAT-SUM-SNSUMPC-0001j
+@SYMPREQ 1780
+@SYMComponent telephony_csat
+@SYMTestCaseDesc Test support in CSAT for RSat::NotifySetUpMenuPCmd - SET UP MENU (normal) and ENVELOPE MENU SELECTION
+@SYMTestPriority High
+@SYMTestActions Invokes RSat::NotifySetUpMenuPCmd
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCSatSetUpMenuFU::TestNotifySetUpMenuPCmd0001jL()
+ {
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+ OpenSatL();
+
+ // Expected Sequence 1.1
+ //(SET UP MENU and MENU SELECTION, without Help Request, Replace and Remove a Toolkit Menu)
+ // See ETSI TS 102 384 [26] in subclause 27.22.4.8.1.4.2, Expected Sequence 1.1.
+
+ TUint8 cmdNumber = 1;
+ TUint8 noPref(0); // no selection preferences
+ const TInt KNumItems = 4;
+
+ TUint8 ids[KNumItems] = {1, 2, 3, 4};
+ TPtrC8 idNames[KNumItems] = {_L8("Item 1"), _L8("Item 2"), _L8("Item 3"), _L8("Item 4")};
+
+ SetUpMenuL( cmdNumber, noPref, _L8("Toolkit Menu"), KNumItems, ids, idNames );
+
+ //generate the terminal response
+ RSat::TSetUpMenuRspV1 resp;
+ RSat::TSetUpMenuRspV1Pckg respPck(resp);
+
+ resp.iGeneralResult = RSat::KSuccess;
+ resp.iInfoType = RSat::KNoAdditionalInfo;
+ resp.iAdditionalInfo.Zero();
+ resp.SetPCmdNumber(cmdNumber);
+
+ GenerateTerminalResponseL(cmdNumber, KSetUpMenu, noPref, RSat::ESetUpMenu,
+ respPck, resp.iAdditionalInfo, resp.iGeneralResult);
+ AssertMockLtsyStatusL();
+
+ // now end session
+ EndProactiveSimSessionL();
+
+ // select second item
+ SelectMenuItemL(ids[1]);
+
+ // making second menu instead of first
+ const TInt KNumItems2 = 2;
+
+ TUint8 ids2[KNumItems2] = {11, 12};
+ TPtrC8 idNames2[KNumItems2] = {_L8("One"), _L8("Two")};
+
+ SetUpMenuL( cmdNumber, noPref, _L8("Toolkit Menu"), KNumItems2, ids2, idNames2 );
+
+ //generate the terminal response
+ GenerateTerminalResponseL(cmdNumber, KSetUpMenu, noPref,
+ RSat::ESetUpMenu, respPck, resp.iAdditionalInfo, resp.iGeneralResult);
+ AssertMockLtsyStatusL();
+
+ // now end session
+ EndProactiveSimSessionL();
+
+ // select second item
+ SelectMenuItemL(ids2[1]);
+
+ AssertMockLtsyStatusL();
+
+ // remove the menu
+ SetUpMenuL( cmdNumber, noPref, _L8("Toolkit Menu"), 0, NULL, NULL );
+
+ //generate the terminal response
+ GenerateTerminalResponseL(cmdNumber,KSetUpMenu, noPref, RSat::ESetUpMenu,
+ respPck, resp.iAdditionalInfo, resp.iGeneralResult);
+ AssertMockLtsyStatusL();
+
+ // now end session
+ EndProactiveSimSessionL();
+ AssertMockLtsyStatusL();
+
+ //Expected Sequence 1.2
+ //(SET UP MENU, Large Menu with many items or with large items or with Large Alpha Identifier)
+ //See ETSI TS 102 384 [26] in subclause 27.22.4.8.1.4.2, Expected Sequence 1.2.
+
+ // setup large menu
+ const TInt KNumItems3 = 30;
+
+ TUint8 ids3[KNumItems3] =
+ {0x50, 0x4f, 0x4e, 0x4d, 0x4c, 0x4b, 0x4a, 0x49, 0x48, 0x47, 0x46, 0x45, 0x44, 0x43, 0x42, 0x41,
+ 0x40, 0x3f, 0x3e, 0x3d, 0x3c, 0x3b, 0x3a, 0x39, 0x38, 0x37, 0x36, 0x35, 0x34, 0x33};
+ TPtrC8 idNames3[KNumItems3] =
+ {_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")};
+
+ SetUpMenuL( cmdNumber, noPref, _L8("LargeMenu1"), KNumItems3, ids3, idNames3 );
+
+ //generate the terminal response
+ GenerateTerminalResponseL(cmdNumber, KSetUpMenu, noPref, RSat::ESetUpMenu,
+ respPck, resp.iAdditionalInfo, resp.iGeneralResult);
+ AssertMockLtsyStatusL();
+
+ // now end session
+ EndProactiveSimSessionL();
+
+ // select "Orange" 0x3d
+ SelectMenuItemL(ids3[20]);
+
+ AssertMockLtsyStatusL();
+
+ // setup another large menu
+ const TInt KNumItems4 = 7;
+
+ TUint8 ids4[KNumItems4] = {0xff, 0xfe, 0xfd, 0xfc, 0xfb, 0xfa, 0xf9};
+ TPtrC8 idNames4[KNumItems4] =
+ {_L8("1 Call Forward Unconditional"),
+ _L8("2 Call Forward On User Busy"),
+ _L8("3 Call Forward On No Reply"),
+ _L8("4 Call Forward On User Not Reachable"),
+ _L8("5 Barring Of All Outgoing Calls"),
+ _L8("6 Barring Of All Outgoing Int Calls"),
+ _L8("7 CLI Presentation")};
+
+ SetUpMenuL( cmdNumber, noPref, _L8("LargeMenu2"), KNumItems4, ids4, idNames4 );
+
+ //generate the terminal response
+ GenerateTerminalResponseL(cmdNumber, KSetUpMenu, noPref, RSat::ESetUpMenu,
+ respPck, resp.iAdditionalInfo, resp.iGeneralResult);
+ AssertMockLtsyStatusL();
+
+ // now end session
+ EndProactiveSimSessionL();
+
+ // select 0xfb
+ SelectMenuItemL(ids4[4]);
+
+ AssertMockLtsyStatusL();
+
+ // one more large menu
+ const TInt KNumItems5 = 1;
+
+ _LIT8(KSetupMenuTest8,"The SIM shall supply a set of menu items, which shall be integrated with the\
+menu system (or other MMI facility) in order to give the user the opportunity to\
+choose one of these menu items at his own discretion. Each item comprises a sh");
+
+ TUint8 ids5[KNumItems5] = {0x01};
+ TPtrC8 idNames5[KNumItems5] = {_L8("Y")};
+
+ SetUpMenuL( cmdNumber, noPref, KSetupMenuTest8, KNumItems5, ids5, idNames5 );
+
+ //generate the terminal response
+ GenerateTerminalResponseL(cmdNumber, KSetUpMenu, noPref, RSat::ESetUpMenu,
+ respPck, resp.iAdditionalInfo, resp.iGeneralResult);
+ AssertMockLtsyStatusL();
+
+ // now end session
+ EndProactiveSimSessionL();
+
+ // select 1
+ SelectMenuItemL(ids5[0]);
+
+ AssertMockLtsyStatusL();
+
+ CleanupStack::PopAndDestroy(1, this);
+ }
+
+
+/**
+@SYMTestCaseID BA-CSAT-SUM-SNSUMPC-0002
+@SYMPREQ 1780
+@SYMComponent telephony_csat
+@SYMTestCaseDesc Test support in CSAT for cancelling of RSat::NotifySetUpMenuPCmd
+@SYMTestPriority High
+@SYMTestActions Invokes cancelling of RSat::NotifySetUpMenuPCmd
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCSatSetUpMenuFU::TestNotifySetUpMenuPCmd0002L()
+ {
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+ OpenSatL();
+
+ RBuf8 data;
+ CleanupClosePushL(data);
+
+ TUint8 pcmdCode = KSetUpMenu;
+ TMockLtsyData1<TUint8> expLtsyData(pcmdCode);
+ expLtsyData.SerialiseL(data);
+ iMockLTSY.ExpectL(MLtsyDispatchSatPCmdNotification::KLtsyDispatchSatPCmdNotificationApiId,data);
+
+ RSat::TSetUpMenuV2 setupMenu;
+ RSat::TSetUpMenuV2Pckg setpPck(setupMenu);
+ TRequestStatus stat;
+ iSat.NotifySetUpMenuPCmd(stat, setpPck);
+
+ iSat.CancelAsyncRequest(ESatNotifySetUpMenuPCmd);
+
+ User::WaitForRequest(stat);
+ ASSERT_EQUALS(KErrCancel, stat.Int());
+
+ // There is no implementation for RSat::NotifySetUpMenuPCmdCancel(), declared in etelsat.h
+ ERR_PRINTF2(_L("<font color=Orange>$CSATKnownFailure: defect id = %d</font>"), 3);
+ ASSERT_TRUE(EFalse);
+
+ AssertMockLtsyStatusL();
+ CleanupStack::PopAndDestroy(2, this); // data, this
+ }
+
+
+
+/**
+@SYMTestCaseID BA-CSAT-SUM-SNSUMPC-0004
+@SYMPREQ 1780
+@SYMComponent telephony_csat
+@SYMTestCaseDesc Test support in CSAT for multiple client requests to RSat::NotifySetUpMenuPCmd
+@SYMTestPriority High
+@SYMTestActions Invokes multiple client requests to RSat::NotifySetUpMenuPCmd
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCSatSetUpMenuFU::TestNotifySetUpMenuPCmd0004L()
+ {
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+ OpenSatL();
+
+ RBuf8 data;
+ CleanupClosePushL(data);
+
+ // 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;
+ User::LeaveIfError(sat2.Open(phone2));
+ CleanupClosePushL(sat2);
+
+ TUint8 KPCmdNumber = 1;
+
+ TTlv tlv;
+ tlv.Begin(KBerTlvProactiveSimCommandTag);
+ tlv.AddTag(KTlvCommandDetailsTag);
+ tlv.AddByte(KPCmdNumber);//ETLV_CommandNumber
+ tlv.AddByte(KSetUpMenu); //ETLV_TypeOfCommand
+ tlv.AddByte(0); //ETLV_CommandQualifier
+
+ tlv.AddTag(KTlvDeviceIdentityTag);
+ tlv.AddByte(KSim); //ETLV_SourceDeviceIdentity
+ tlv.AddByte(KDisplay); //ETLV_DestinationDeviceIdentity
+
+ tlv.AddTag(KTlvAlphaIdentifierTag);
+ _LIT8(KSetupMenuTest8,"Menu AlphaIdent");
+ _LIT16(KSetupMenuTest16,"Menu AlphaIdent");
+ tlv.AddData(KSetupMenuTest8);//ETLV_AlphaIdentifier
+
+ const TUint8 KItemId = 77;
+ _LIT8(KItem8, "Item AlphaIdent1");
+ _LIT16(KItem16, "Item AlphaIdent1");
+
+ tlv.AddTag(KTlvItemTag);
+ tlv.AddByte(KItemId); //item identifier
+ tlv.AddData(KItem8);
+
+ TPtrC8 tlvDsc = tlv.End();
+ TDesC8* tlvDscPtr = &tlvDsc;
+
+ TMockLtsyData1<TDesC8*> tlvDscPack(tlvDscPtr);
+
+ // tell Mock about forthcoming RSat::NotifySetUpMenuPCmd
+ TUint8 pcmdCode = KSetUpMenu;
+ TMockLtsyData1<TUint8> expLtsyData(pcmdCode);
+ expLtsyData.SerialiseL(data);
+ iMockLTSY.ExpectL(MLtsyDispatchSatPCmdNotification::KLtsyDispatchSatPCmdNotificationApiId,data);
+ data.Close();
+
+ tlvDscPack.SerialiseL(data);
+ iMockLTSY.CompleteL(KMockLtsyDispatchSatPcmdIndId, KErrNone, data, KDelay);
+
+ RSat::TSetUpMenuV2 setupMenu;
+ RSat::TSetUpMenuV2 setupMenu2;
+ RSat::TSetUpMenuV2Pckg setpPck(setupMenu);
+ RSat::TSetUpMenuV2Pckg setpPck2(setupMenu2);
+ TRequestStatus stat;
+ TRequestStatus stat2;
+ iSat.NotifySetUpMenuPCmd(stat, setpPck);
+ sat2.NotifySetUpMenuPCmd(stat2, setpPck2);
+
+ User::WaitForRequest(stat);
+ ASSERT_EQUALS(KErrNone, stat.Int());
+
+ ASSERT_EQUALS(KPCmdNumber, setupMenu.PCmdNumber());
+ ASSERT_EQUALS(RSat::ENoSelectionPreference, setupMenu.iPreference);
+ ASSERT_EQUALS((TInt)EFalse, setupMenu.IsRemoveMenu());
+
+ RSat::TItem item;
+ ASSERT_EQUALS( KErrNone, setupMenu.GetItem( 1, item));
+ ASSERT_EQUALS( KItemId, (item.iItemId));
+ ASSERT_EQUALS(0, item.iItemString.Compare(KItem16));
+ ASSERT_EQUALS((TUint)1, setupMenu.NumberOfItems());
+ ASSERT_EQUALS(RSat::ENoHelpAvailable, setupMenu.iHelp);
+ ASSERT_EQUALS( RSat::ENoIconId, setupMenu.iIconId.iQualifier);
+ ASSERT_EQUALS( RSat::ENoIconId, setupMenu.iIconListQualifier);
+
+ ASSERT_EQUALS(0, setupMenu.iAlphaId.iAlphaId.Compare(KSetupMenuTest16));
+ ASSERT_EQUALS(RSat::EAlphaIdProvided, setupMenu.iAlphaId.iStatus);
+
+ User::WaitForRequest(stat2);
+ ASSERT_EQUALS(KErrNone, stat2.Int());
+
+ ASSERT_EQUALS(KPCmdNumber, setupMenu2.PCmdNumber());
+ ASSERT_EQUALS(RSat::ENoSelectionPreference, setupMenu2.iPreference);
+ ASSERT_EQUALS((TInt)EFalse, setupMenu2.IsRemoveMenu());
+ ASSERT_EQUALS( KErrNone, setupMenu2.GetItem( 1, item));
+ ASSERT_EQUALS( KItemId, item.iItemId);
+ ASSERT_EQUALS(0, item.iItemString.Compare(KItem16));
+ ASSERT_EQUALS((TUint)1, setupMenu2.NumberOfItems());
+ ASSERT_EQUALS(RSat::ENoHelpAvailable, setupMenu2.iHelp);
+ ASSERT_EQUALS( RSat::ENoIconId, setupMenu2.iIconId.iQualifier);
+ ASSERT_EQUALS( RSat::ENoIconId, setupMenu2.iIconListQualifier);
+ ASSERT_EQUALS(0, setupMenu2.iAlphaId.iAlphaId.Compare(KSetupMenuTest16));
+ ASSERT_EQUALS(RSat::EAlphaIdProvided, setupMenu2.iAlphaId.iStatus);
+
+ AssertMockLtsyStatusL();
+ CleanupStack::PopAndDestroy(5, this);
+ }
+
+
+/**
+* auxiliary function for testing different fonts in set up menu
+* @param aFontParam - type of font for tvl text formatting
+*/
+void CCSatSetUpMenuFU::CheckMenuFontL(TUint8 aFontParam)
+ {
+ TUint8 cmdNumber = 1;
+ TUint8 noPref = 0;
+ const TInt KNumItems = 3;
+ _LIT8(KMenu1, "Toolkit Menu 1");
+
+ TUint8 ids[KNumItems] = {1, 2, 3};
+ TPtrC8 idNames[KNumItems] = {_L8("Item 1"), _L8("Item 2"), _L8("Item 3")};
+ TUint8 alphaFormatting[RSat::KTextAttributeBufSize] =
+ {
+ 0, //formatting position
+ 14, //text length
+ aFontParam,
+ 0xB4 //Dark Green Foreground(0x04), Bright Yellow Background(0xB0)
+ };
+ TUint8 itemsFormatting[KNumItems][RSat::KTextAttributeBufSize] =
+ {{ 0, 6, aFontParam ,0xB4 },
+ { 0, 6, aFontParam ,0xB4 },
+ { 0, 6, aFontParam ,0xB4 }};
+
+ SetUpMenuL( cmdNumber, noPref, KMenu1, KNumItems, ids, idNames, NULL,
+ RSat::EIconQualifierNotSet, 0, RSat::EIconQualifierNotSet, NULL,
+ alphaFormatting, itemsFormatting );
+
+
+ //generate the terminal response
+ RSat::TSetUpMenuRspV1 resp;
+ RSat::TSetUpMenuRspV1Pckg respPck(resp);
+
+ resp.iGeneralResult = RSat::KSuccess;
+ resp.iInfoType = RSat::KNoAdditionalInfo;
+ resp.iAdditionalInfo.Zero();
+ resp.SetPCmdNumber(cmdNumber);
+ GenerateTerminalResponseL(cmdNumber, KSetUpMenu, noPref, RSat::ESetUpMenu,
+ respPck, resp.iAdditionalInfo, resp.iGeneralResult);
+ AssertMockLtsyStatusL();
+
+ // now end session
+ EndProactiveSimSessionL();
+
+ // select second item
+ SelectMenuItemL(ids[1]);
+
+ AssertMockLtsyStatusL();
+
+ // second menu
+ TUint8 ids2[KNumItems] = {4, 5, 6};
+ TPtrC8 idNames2[KNumItems] = {_L8("Item 4"), _L8("Item 5"), _L8("Item 6") };
+ _LIT8(KMenu2, "Toolkit Menu 2");
+
+ alphaFormatting[2] = 0x00; // normal font
+ itemsFormatting[0][2] = itemsFormatting[1][2] = itemsFormatting[2][2] = 0x00;
+
+ SetUpMenuL( cmdNumber, noPref, KMenu2, KNumItems, ids2, idNames2, NULL,
+ RSat::EIconQualifierNotSet, 0, RSat::EIconQualifierNotSet, NULL,
+ alphaFormatting, itemsFormatting );
+
+ GenerateTerminalResponseL(cmdNumber, KSetUpMenu, noPref, RSat::ESetUpMenu,
+ respPck, resp.iAdditionalInfo, resp.iGeneralResult);
+ AssertMockLtsyStatusL();
+
+ // now end session
+ EndProactiveSimSessionL();
+
+ // select second item
+ SelectMenuItemL(ids2[1]);
+
+ AssertMockLtsyStatusL();
+
+ // first menu again
+ alphaFormatting[2] = aFontParam;
+ itemsFormatting[0][2] = itemsFormatting[1][2] = itemsFormatting[2][2] = aFontParam;
+
+ SetUpMenuL( cmdNumber, noPref, KMenu1, KNumItems, ids, idNames, NULL,
+ RSat::EIconQualifierNotSet, 0, RSat::EIconQualifierNotSet, NULL,
+ alphaFormatting, itemsFormatting );
+
+ GenerateTerminalResponseL(cmdNumber, KSetUpMenu, noPref, RSat::ESetUpMenu,
+ respPck, resp.iAdditionalInfo, resp.iGeneralResult);
+ AssertMockLtsyStatusL();
+
+ // now end session
+ EndProactiveSimSessionL();
+
+ // select second item
+ SelectMenuItemL(ids[1]);
+
+ AssertMockLtsyStatusL();
+
+ // third menu
+ TUint8 ids3[KNumItems] = {7, 8, 9};
+ TPtrC8 idNames3[KNumItems] = {_L8("Item 7"), _L8("Item 8"), _L8("Item 9") };
+ _LIT8(KMenu3, "Toolkit Menu 3");
+
+ SetUpMenuL( cmdNumber, noPref, KMenu3, KNumItems, ids3, idNames3 );
+
+ GenerateTerminalResponseL(cmdNumber, KSetUpMenu, noPref, RSat::ESetUpMenu,
+ respPck, resp.iAdditionalInfo, resp.iGeneralResult);
+ AssertMockLtsyStatusL();
+
+ // now end session
+ EndProactiveSimSessionL();
+
+ // select second item
+ SelectMenuItemL(ids3[1]);
+
+ AssertMockLtsyStatusL();
+ }
+
+
+/**
+* End Proactive Sim Session
+*/
+void CCSatSetUpMenuFU::EndProactiveSimSessionL()
+ {
+ RBuf8 data;
+ CleanupClosePushL(data);
+
+ TRequestStatus reqStatus;
+ TRequestStatus mockLtsyStatus;
+
+ TUint8 proactiveCommandType = KEndOfTheProactiveSession;
+
+ //this is as a result of the NotifyProactiveSimSessionEnd call down to the LTSY,
+ //this tells the LTSY we are interested in a Sim Session End event
+ //CTSY -> LTSY
+ TMockLtsyData1<TUint8> proactiveCommandTypeDataPack(proactiveCommandType);
+ proactiveCommandTypeDataPack.SerialiseL(data);
+ iMockLTSY.ExpectL(MLtsyDispatchSatPCmdNotification::KLtsyDispatchSatPCmdNotificationApiId,data);
+ data.Close();
+
+ //the client side call to be notifed when the Proactive Sim Session has ended.
+ iSat.NotifyProactiveSimSessionEnd(reqStatus);
+
+ //sometime later the Sim Session ends, indicator up
+ //LTSY -> CTSY
+
+ TUint8 statusWord1 = KSw1NormalEnding;
+ TUint8 statusWord2 = KSw2NormalEnding;
+
+ TMockLtsyData2<TUint8,TUint8> notifyProactiveSimSessionEndDataPack(statusWord1,statusWord2);
+ notifyProactiveSimSessionEndDataPack.SerialiseL(data);
+ iMockLTSY.CompleteL(KMockLtsyDispatchSatNotifyProactiveSimSessionEndIndId,KErrNone,data, KDelay);
+
+ //wait for the client side to be notified
+ User::WaitForRequest(reqStatus);
+ ASSERT_EQUALS(KErrNone, reqStatus.Int());
+ AssertMockLtsyStatusL();
+
+ CleanupStack::PopAndDestroy(1);
+ }
+
+
+/**
+* prepare and call Set Sup Menu proactive command
+* @param aCmdNum - command number
+* @param aCmdQual - command details
+* @param aAlpha - alpha identifier
+* @param aNumItems - number of menu items
+* @param aItemIds - array of menu items identifier
+* @param aItemNames - array of menu items names
+* @param aAction - array of next actions
+* @param aIconQual - type of icon
+* @param aIcon - icon itself
+* @param aIconListQual - type of icons for menu items
+* @param aIconList- array of icons for menu items
+* @param aAlphaFormating- array of KTextAttributeBufSize bytes for alpha identifier formatting
+* @param aItemFormating- array for item strings formating
+*/
+void CCSatSetUpMenuFU::SetUpMenuL(TUint8 aCmdNum,
+ TUint8 aCmdQual,
+ const TDesC8& aAlpha,
+ TUint8 aNumItems,
+ TUint8 aItemIds[],
+ TPtrC8 aItemNames[],
+ TUint8 aAction[],
+ RSat::TIconQualifier aIconQual,
+ TUint8 aIcon,
+ RSat::TIconQualifier aIconListQual,
+ TUint8 aIconList[],
+ TUint8 aAlphaFormating[],
+ TUint8 aItemFormating[][RSat::KTextAttributeBufSize])
+ {
+ RBuf8 data;
+ CleanupClosePushL(data);
+
+ // tell Mock about forthcoming RSat::NotifySetUpMenuPCmd
+ TUint8 pcmdCode = KSetUpMenu;
+ TMockLtsyData1<TUint8> expLtsyData(pcmdCode);
+ expLtsyData.SerialiseL(data);
+ iMockLTSY.ExpectL(MLtsyDispatchSatPCmdNotification::KLtsyDispatchSatPCmdNotificationApiId, data);
+
+ TTlv tlv;
+ tlv.Begin(KBerTlvProactiveSimCommandTag);
+ tlv.AddTag(KTlvCommandDetailsTag);
+ tlv.AddByte(aCmdNum);//ETLV_CommandNumber
+ tlv.AddByte(KSetUpMenu); //ETLV_TypeOfCommand
+ tlv.AddByte(aCmdQual); //ETLV_CommandQualifier
+
+ tlv.AddTag(KTlvDeviceIdentityTag);
+ tlv.AddByte(KSim); //ETLV_SourceDeviceIdentity
+ tlv.AddByte(KDisplay); //ETLV_DestinationDeviceIdentity
+
+ if(0 < aAlpha.Size())
+ {
+ tlv.AddTag(KTlvAlphaIdentifierTag);
+ tlv.AddData(aAlpha);//ETLV_AlphaIdentifier
+ }
+
+ for( TInt i = 0; i < aNumItems; i++)
+ {
+ tlv.AddTag(KTlvItemTag);
+ tlv.AddByte(aItemIds[i]); //item identifier
+ tlv.AddData(aItemNames[i]);
+ }
+
+ if(aAction)
+ {
+ tlv.AddTag(KTlvItemsNextActionIndicatorTag);
+
+ for( TInt i = 0; i < aNumItems; i++)
+ {
+ tlv.AddByte(aAction[i]);
+ }
+ }
+
+ // constants for coding icon details
+ const TUint8 KSelfExp = 0x00;
+ const TUint8 KNotSelfExp = 0x01;
+
+ if(RSat::EIconQualifierNotSet != aIconQual)
+ {
+ tlv.AddTag(KTlvIconIdentifierTag);
+ tlv.AddByte((RSat::ESelfExplanatory == aIconQual) ? KSelfExp : KNotSelfExp);
+ tlv.AddByte(aIcon);
+ }
+
+ if(RSat::EIconQualifierNotSet != aIconListQual)
+ {
+ tlv.AddTag(KTlvItemIconIdentifierListTag);
+ tlv.AddByte((RSat::ESelfExplanatory == aIconListQual) ? KSelfExp : KNotSelfExp);
+
+ for( TInt i = 0; i < aNumItems; i++)
+ {
+ tlv.AddByte(aIconList[i]);
+ }
+ }
+
+ if(aAlphaFormating)
+ {
+ tlv.AddTag(0x50);
+ tlv.AddByte(aAlphaFormating[0]); // text start
+ tlv.AddByte(aAlphaFormating[1]); // text length
+ tlv.AddByte(aAlphaFormating[2]); // formatting
+ tlv.AddByte(aAlphaFormating[3]); // colors
+ }
+
+ if(aItemFormating)
+ {
+ tlv.AddTag(0x51);
+
+ for(TInt i = 0; i < aNumItems; i++)
+ {
+ tlv.AddByte(aItemFormating[i][0]);
+ tlv.AddByte(aItemFormating[i][1]);
+ tlv.AddByte(aItemFormating[i][2]);
+ tlv.AddByte(aItemFormating[i][3]);
+ }
+ }
+
+ TPtrC8 tlvDsc = tlv.End();
+ TDesC8* tlvDscPtr = &tlvDsc;
+
+ data.Close();
+
+ TMockLtsyData1<TDesC8*> tlvDscPack(tlvDscPtr);
+ tlvDscPack.SerialiseL(data);
+ iMockLTSY.CompleteL(KMockLtsyDispatchSatPcmdIndId,KErrNone,data, KDelay);
+
+ RSat::TSetUpMenuV5 setupMenu;
+ RSat::TSetUpMenuV5Pckg setpPck(setupMenu);
+ TRequestStatus requestStatus;
+
+ iSat.NotifySetUpMenuPCmd(requestStatus, setpPck);
+
+ User::WaitForRequest(requestStatus);
+
+ ASSERT_EQUALS(KErrNone, requestStatus.Int());
+
+ ASSERT_EQUALS(aCmdNum, setupMenu.PCmdNumber());
+
+ if ( aCmdQual & KSelectionUsingSoftKey )
+ {
+ ASSERT_EQUALS(RSat::ESoftKeyPreferred, setupMenu.iPreference);
+ }
+ else
+ {
+ ASSERT_EQUALS(RSat::ENoSelectionPreference, setupMenu.iPreference);
+ }
+
+ if(0 < aNumItems)
+ {
+ ASSERT_EQUALS((TInt)EFalse, setupMenu.IsRemoveMenu());
+
+ RBuf16 data16;
+ CleanupClosePushL(data16);
+
+ for(TInt i = 0; i < aNumItems; i++)
+ {
+ RSat::TItem item;
+ RSat::TTextAttribute attr;
+ ASSERT_EQUALS( KErrNone, setupMenu.GetItem( i + 1, item, attr));
+ ASSERT_EQUALS( aItemIds[i], item.iItemId);
+
+ data16.CreateL(aItemNames[i].Length());
+
+ TSatUtility::SetAlphaId( aItemNames[i], data16);
+
+ ASSERT_EQUALS(0, item.iItemString.Compare(data16));
+
+ if(aItemFormating)
+ {
+ ASSERT_EQUALS(RSat::ETextAttributeProvided, attr.iStatus);
+ ASSERT_EQUALS(aItemFormating[i][0], attr.iTextAttributeData[0]);
+ ASSERT_EQUALS(aItemFormating[i][1], attr.iTextAttributeData[1]);
+ ASSERT_EQUALS(aItemFormating[i][2], attr.iTextAttributeData[2]);
+ ASSERT_EQUALS(aItemFormating[i][3], attr.iTextAttributeData[3]);
+ }
+ }
+ CleanupStack::PopAndDestroy(1);
+ }
+ else
+ {
+ ASSERT_EQUALS((TInt)ETrue, setupMenu.IsRemoveMenu());
+ }
+
+ ASSERT_EQUALS((TUint)aNumItems, setupMenu.NumberOfItems());
+
+ if ( aCmdQual & KHelpAvailabilityMask )
+ {
+ ASSERT_EQUALS(RSat::EHelpAvailable, setupMenu.iHelp);
+ }
+ else
+ {
+ ASSERT_EQUALS(RSat::ENoHelpAvailable, setupMenu.iHelp);
+ }
+
+ if(aAlphaFormating)
+ {
+ ASSERT_EQUALS(RSat::ETextAttributeProvided, setupMenu.iTextAttribute.iStatus);
+ ASSERT_EQUALS(aAlphaFormating[0], setupMenu.iTextAttribute.iTextAttributeData[0]);
+ ASSERT_EQUALS(aAlphaFormating[1], setupMenu.iTextAttribute.iTextAttributeData[1]);
+ ASSERT_EQUALS(aAlphaFormating[2], setupMenu.iTextAttribute.iTextAttributeData[2]);
+ ASSERT_EQUALS(aAlphaFormating[3], setupMenu.iTextAttribute.iTextAttributeData[3]);
+ }
+ else
+ {
+ ASSERT_EQUALS(RSat::ETextAttributeNotSet, setupMenu.iTextAttribute.iStatus);
+ }
+
+ if(RSat::EIconQualifierNotSet != aIconQual)
+ {
+ ASSERT_EQUALS( aIconQual, setupMenu.iIconId.iQualifier);
+ ASSERT_EQUALS( aIcon, setupMenu.iIconId.iIdentifier);
+ }
+ else
+ {
+ ASSERT_EQUALS( RSat::ENoIconId, setupMenu.iIconId.iQualifier);
+ }
+
+ if(RSat::EIconQualifierNotSet != aIconListQual)
+ {
+ RSat::TItem item;
+ TInt iconId;
+
+ for( TInt i = 0; i < aNumItems; i++)
+ {
+ setupMenu.GetItemIcon(i+1, item, iconId);
+ ASSERT_EQUALS((TInt)aIconList[i], iconId);
+ }
+ }
+ else
+ {
+ ASSERT_EQUALS( RSat::ENoIconId, setupMenu.iIconListQualifier);
+ }
+
+ if(aAction)
+ {
+ RSat::TItem item;
+ TInt action;
+
+ for( TInt i = 0; i < aNumItems; i++)
+ {
+ setupMenu.GetItem(i+1, item, action);
+ ASSERT_EQUALS((TInt)aAction[i], action);
+ }
+ }
+
+ RBuf16 data16;
+ CleanupClosePushL(data16);
+
+ data16.CreateL(aAlpha.Length());
+
+ TSatUtility::SetAlphaId( aAlpha, data16);
+
+ ASSERT_EQUALS(0, setupMenu.iAlphaId.iAlphaId.Compare(data16));
+ ASSERT_EQUALS(RSat::EAlphaIdProvided, setupMenu.iAlphaId.iStatus);
+
+ CleanupStack::PopAndDestroy(2);
+ }
+
+
+/**
+* prepare and make select menu call
+* @param aItemId - item to select
+* @param aRequestHelp - if help requested
+* @param aErrorForExpect - error code to pass and expect
+*/
+void CCSatSetUpMenuFU::SelectMenuItemL(TUint8 aItemId, TBool aRequestHelp, TInt aErrorForExpect )
+ {
+ RBuf8 data;
+ CleanupClosePushL(data);
+
+ TTlv menuSelTlv;
+ menuSelTlv.Begin( KBerTlvMenuSelectionTag );
+ menuSelTlv.AddTag( KTlvDeviceIdentityTag );
+ menuSelTlv.AddByte( KKeypad );
+ menuSelTlv.AddByte( KSim );
+ menuSelTlv.AddTag( KTlvItemIdentifierTag );
+ menuSelTlv.AddByte( aItemId );
+ if(aRequestHelp)
+ {
+ menuSelTlv.AddTag( KTlvHelpRequestTag );
+ }
+
+ TPtrC8 menuSelDsc = menuSelTlv.End();
+ TDesC8* menuSelPtr = &menuSelDsc;
+ TMockLtsyData1<TDesC8*> menuSelDescPck(menuSelPtr);
+ menuSelDescPck.SerialiseL(data);
+
+ iMockLTSY.ExpectL(MLtsyDispatchSatMenuSelectionEnvelope::KLtsyDispatchSatMenuSelectionEnvelopeApiId, data, aErrorForExpect);
+
+ RSat::TMenuSelectionV1 menuSel;
+ RSat::TMenuSelectionV1Pckg menuSelPckg(menuSel);
+
+ menuSel.iItemId = aItemId;
+ menuSel.iHelp = aRequestHelp ? RSat::EHelpRequested : RSat::EHelpNotRequested;
+
+ TRequestStatus stat;
+
+ iSat.MenuSelection(stat, menuSelPckg);
+ User::WaitForRequest(stat);
+ ASSERT_EQUALS(aErrorForExpect, stat.Int());
+
+ CleanupStack::PopAndDestroy(1);
+ }
+
+
+/**
+* auxiliary function for testing different languages in set up menu
+* @param aTitle - menu header
+* @param aItemNames - first menu strings
+* @param aItemNames - second menu strings
+*/
+void CCSatSetUpMenuFU::CheckForeignSetUpMenuL(const TDesC8& aTitle,
+ TPtrC8 aItemNames[],
+ TPtrC8 aItemNames2[])
+ {
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+ OpenSatL();
+
+ //(SET UP MENU and MENU SELECTION, without Help Request, Replace and Remove a Toolkit Menu)
+
+ TUint8 cmdNumber = 1;
+ TUint8 noPref(0); // no selection preferences
+ const TInt KNumItems = 4;
+
+ TUint8 ids[KNumItems] = {1, 2, 3, 4};
+
+ SetUpMenuL( cmdNumber, noPref, aTitle, KNumItems, ids, aItemNames );
+
+ //generate the terminal response
+ RSat::TSetUpMenuRspV1 resp;
+ RSat::TSetUpMenuRspV1Pckg respPck(resp);
+
+ resp.iGeneralResult = RSat::KSuccess;
+ resp.iInfoType = RSat::KNoAdditionalInfo;
+ resp.iAdditionalInfo.Zero();
+ resp.SetPCmdNumber(cmdNumber);
+ GenerateTerminalResponseL(cmdNumber, KSetUpMenu, noPref, RSat::ESetUpMenu,
+ respPck, resp.iAdditionalInfo, resp.iGeneralResult);
+ AssertMockLtsyStatusL();
+
+ // now end session
+ EndProactiveSimSessionL();
+
+ // select second item
+ SelectMenuItemL(ids[1]);
+
+ // making second menu instead of first
+ const TInt KNumItems2 = 2;
+
+ TUint8 ids2[KNumItems2] = {11, 12};
+
+ SetUpMenuL( cmdNumber, noPref, aTitle, KNumItems2, ids2, aItemNames2 );
+
+ //generate the terminal response
+ GenerateTerminalResponseL(cmdNumber, KSetUpMenu, noPref, RSat::ESetUpMenu,
+ respPck, resp.iAdditionalInfo, resp.iGeneralResult);
+ AssertMockLtsyStatusL();
+
+ // now end session
+ EndProactiveSimSessionL();
+
+ // select second item
+ SelectMenuItemL(ids2[1]);
+
+ AssertMockLtsyStatusL();
+
+ // remove the menu
+ SetUpMenuL( cmdNumber, noPref, aTitle, 0, NULL, NULL );
+
+ //generate the terminal response
+ GenerateTerminalResponseL(cmdNumber, KSetUpMenu, noPref, RSat::ESetUpMenu,
+ respPck, resp.iAdditionalInfo, resp.iGeneralResult);
+ AssertMockLtsyStatusL();
+
+ // now end session
+ EndProactiveSimSessionL();
+ AssertMockLtsyStatusL();
+
+ CleanupStack::PopAndDestroy(1, this);
+ }
+