--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/telephonyserverplugins/simatktsy/tests/src/ccsatgetinkeyfu.cpp Tue Feb 02 01:41:59 2010 +0200
@@ -0,0 +1,903 @@
+// 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 GetInkey in the SAT.
+*/
+
+#include <cstktsy/bertlv_defs.h>
+#include <etel.h>
+#include <etelmm.h>
+#include <satcs.h>
+#include <ctsy/ltsy/sat_defs.h>
+
+
+#include <ctsy/ltsy/mltsydispatchsatinterface.h>
+#include <test/mockltsyindicatorids.h>
+#include <test/tmockltsydata.h>
+
+#include "ccsatgetinkeyfu.h"
+
+static const TUint8 KCommandNumber = 1;
+static const TUint8 KCommandType = KGetInkey;
+static const TUint8 KSourceDevice = KSim;
+static const TUint8 KDestinationDevice = KMe;
+
+static const TInt KDelay = 10;
+
+_LIT8(KEnterPlus, "Enter \"+\"");
+_LIT8(KPlus, "+");
+_LIT8(KNOCAUSE, "\x00");
+
+CCSatGetInkeyFU::TData::TIcon::TIcon()
+ {
+ Clear();
+ }
+
+void CCSatGetInkeyFU::TData::TIcon::Clear()
+ {
+ iIfUse = EFalse;
+ iQualifier = 0;
+ iIdentifier = 0;
+ }
+
+CTestSuite* CCSatGetInkeyFU::CreateSuiteL(const TDesC& aName)
+ {
+ SUB_SUITE;
+
+ ADD_TEST_STEP_ISO_CPP(CCSatGetInkeyFU, TestNotifyGetInkeyPCmd0001L);
+ ADD_TEST_STEP_ISO_CPP(CCSatGetInkeyFU, TestNotifyGetInkeyPCmd0002L);
+ ADD_TEST_STEP_ISO_CPP(CCSatGetInkeyFU, TestNotifyGetInkeyPCmd0004L);
+
+ ADD_TEST_STEP_ISO_CPP(CCSatGetInkeyFU, TestNotifyGetInkeyPCmd0001bL);
+
+ END_SUITE;
+ }
+
+void CCSatGetInkeyFU::PrepareTlvData ( TTlv& aTlvData )
+ {
+ aTlvData.Begin(KBerTlvProactiveSimCommandTag);
+
+ aTlvData.AddTag(KTlvCommandDetailsTag); // Command details
+ aTlvData.AddByte(KCommandNumber); // Command number
+ aTlvData.AddByte(KCommandType); // Command type
+ aTlvData.AddByte(iData.iCommandQualifier); // Command qualifier
+
+ aTlvData.AddTag(KTlvDeviceIdentityTag); // Device identities
+ aTlvData.AddByte(KSourceDevice); // Source device
+ aTlvData.AddByte(KDestinationDevice); // Destination device
+
+ if (iData.iText.Length() > 0 )
+ {
+ aTlvData.AddTag(KTlvTextStringTag);
+ aTlvData.AddByte(iData.iCodingScheme);
+ aTlvData.AddData(iData.iText);
+ }
+
+ if ( iData.iIcon.iIfUse )
+ {
+ aTlvData.AddTag(KTlvIconIdentifierTag);
+ aTlvData.AddByte(iData.iIcon.iQualifier);
+ aTlvData.AddByte(iData.iIcon.iIdentifier);
+ }
+ }
+
+void CCSatGetInkeyFU::PrepareExpectDataL ()
+ {
+ RBuf8 data;
+ CleanupClosePushL(data);
+
+ TUint8 commandType = KGetInkey;
+ TMockLtsyData1<TUint8> expLtsyData(commandType);
+ expLtsyData.SerialiseL(data);
+ iMockLTSY.ExpectL(MLtsyDispatchSatPCmdNotification::KLtsyDispatchSatPCmdNotificationApiId, data);
+
+ CleanupStack::PopAndDestroy(1); // data
+ }
+
+void CCSatGetInkeyFU::PrepareCompleteDataL ( TInt aResultCode )
+ {
+ RBuf8 data;
+ CleanupClosePushL(data);
+
+ TTlv tlv;
+ PrepareTlvData( tlv );
+
+ TPtrC8 tlvDsc = tlv.End();
+ TDesC8* tlvDscPtr = &tlvDsc;
+ TMockLtsyData1<TDesC8*> tlvDscPack(tlvDscPtr);
+ tlvDscPack.SerialiseL(data);
+ iMockLTSY.CompleteL(KMockLtsyDispatchSatPcmdIndId, aResultCode, data, KDelay);
+
+ CleanupStack::PopAndDestroy(1); // data
+ }
+
+void CCSatGetInkeyFU::ProactiveCommandCallL( RSat::TGetInkeyV2& aGetInkeyData,
+ TInt aCompleteErrorCode,
+ TInt aResultCode )
+ {
+ TRequestStatus requestStatus;
+
+ PrepareExpectDataL ();
+
+ TPckg< RSat::TGetInkeyV2 > setpPck(aGetInkeyData);
+ iSat.NotifyGetInkeyPCmd(requestStatus, setpPck);
+
+ PrepareCompleteDataL ( aCompleteErrorCode );
+
+ User::WaitForRequest(requestStatus);
+ ASSERT_EQUALS(aResultCode, requestStatus.Int());
+ }
+
+void CCSatGetInkeyFU::TerminalResponseCallL(
+ const RSat& aSat,
+ RSat::TPCmdResult aGeneralResult,
+ TUint aInfoType,
+ const TDesC8& aText,
+ TUint8 aCodingScheme,
+ TInt aCodeError,
+ RSat::TGetInkeyRspFormat aRspFormat)
+ {
+ RSat::TGetInkeyRspV2 getInkeyRspV2;
+ RSat::TGetInkeyRspV2Pckg getInkeyRspV2Pckg(getInkeyRspV2);
+ TTlv getInpRspTlv;
+ TRequestStatus requestStatus;
+
+ getInkeyRspV2.iGeneralResult = aGeneralResult;
+ getInkeyRspV2.iRspFormat = aRspFormat;
+ getInkeyRspV2.SetPCmdNumber(KCommandNumber);
+ getInkeyRspV2.iInfoType = aInfoType;
+
+ TInt length = aText.Length();
+ if (length > 0)
+ {
+ for (TInt i = 0; i < length; i+=2)
+ {
+ TUint16 element = aText[i];
+ if ( (i+1) < length )
+ {
+ element = ( element<<8 ) | aText[i+1];
+ }
+ getInkeyRspV2.iAdditionalInfo.Append( element );
+ }
+
+ getInpRspTlv.AddTag(KTlvTextStringTag);
+ getInpRspTlv.AddByte(aCodingScheme);
+ getInpRspTlv.AddData(aText);
+ }
+
+ PrepareTerminalResponseMockDataL(
+ KCommandNumber,
+ KCommandType,
+ iData.iCommandQualifier,
+ KNullDesC16,
+ getInkeyRspV2.iGeneralResult,
+ getInpRspTlv.GetDataWithoutTopLevelTag());
+
+ aSat.TerminalRsp(requestStatus, RSat::EGetInkey, getInkeyRspV2Pckg);
+ User::WaitForRequest(requestStatus);
+ ASSERT_EQUALS(aCodeError, requestStatus.Int());
+ }
+
+void CCSatGetInkeyFU::DataInitialization(
+ const TData::TIcon& aIcon,
+ const TDesC8& aText,
+ TUint8 aCommandQualifier,
+ TUint8 aCodingScheme)
+ {
+ iData.iCommandQualifier = aCommandQualifier;
+ iData.iCodingScheme = aCodingScheme;
+ iData.iText.Copy(aText);
+ iData.iIcon = aIcon;
+ }
+
+void CCSatGetInkeyFU::DataCompareL( const RSat::TGetInkeyV2& aGetInkeyData )
+{
+ RSat::TGetInkeyRspFormat rspFormat;
+ switch( iData.iCommandQualifier )
+ {
+ case 0x0:
+ rspFormat = RSat::EDigitOnly;
+ break;
+ case 0x01:
+ rspFormat = RSat::ECharSmsDefaultAlphabet;
+ break;
+ case 0x03:
+ rspFormat = RSat::ECharUcs2Alphabet;
+ break;
+ case 0x04:
+ rspFormat = RSat::EYesNo;
+ break;
+ default:
+ rspFormat = RSat::EGetInkeyRspFormatNotSet;
+ }
+
+ RSat::TIconQualifier iconQualifier;
+ if ( !iData.iIcon.iIfUse )
+ {
+ iconQualifier = RSat::ENoIconId;
+ }
+ else
+ {
+ if ( iData.iIcon.iQualifier )
+ {
+ iconQualifier = RSat::ENotSelfExplanatory;
+ }
+ else
+ {
+ iconQualifier = RSat::ESelfExplanatory;
+ }
+ }
+
+ ASSERT_EQUALS( rspFormat, aGetInkeyData.iRspFormat );
+
+ ASSERT_EQUALS( iconQualifier, aGetInkeyData.iIconId.iQualifier );
+ ASSERT_EQUALS( iData.iIcon.iIdentifier, aGetInkeyData.iIconId.iIdentifier );
+
+ RSat::TGetInkeyText text;
+ if ( iData.iCodingScheme == K8BitDCS )
+ {
+ text.Copy( iData.iText );
+ }
+ else if ( iData.iCodingScheme == KUCS2DCS )
+ {
+ TSatUtility::Copy8to16LE( iData.iText, text );
+ }
+ else if ( iData.iCodingScheme == K7BitDefaultSmsDCS )
+ {
+ TBuf8<RSat::KGetInkeyTextMaxSize> string;
+ TSatUtility::Packed7to8Unpacked( iData.iText, string );
+
+ TInt maxLength = text.MaxLength();
+ if ( maxLength < string.Length() )
+ {
+ string.SetLength( maxLength );
+ }
+ // Convert to unicode format
+ TSatUtility::Convert7BitToUnicode16( string, text );
+ }
+
+ ASSERT_EQUALS( 0, text.Compare( aGetInkeyData.iText ) );
+
+}
+
+//
+// Actual test cases
+//
+
+
+/**
+@SYMTestCaseID BA-CSAT-GUI-NGIPC-0001
+@SYMPREQ 1780
+@SYMComponent telephony_csat
+@SYMTestCaseDesc Test support in CSAT for RSat::NotifyGetInkeyPCmd
+@SYMTestPriority High
+@SYMTestActions Invokes RSat::NotifyGetInkeyPCmd
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCSatGetInkeyFU::TestNotifyGetInkeyPCmd0001L()
+ {
+
+ static const RSat::TPCmdResult KArrayGR[] = {
+ RSat::KErrorRequiredValuesMissing,
+ RSat::KHelpRequestedByUser
+ };
+
+ static const TUint KArrayInfoType[] = {
+ RSat::KMeProblem,
+ RSat::KTextString
+ };
+
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+ OpenSatL();
+
+ TRequestStatus requestStatus;
+
+ RSat::TGetInkeyV2 getInkeyData;
+ TData::TIcon icon;
+
+ DataInitialization(icon);
+
+ //-------------------------------------------------------------------------
+ // TEST C: Successful completion request of
+ // RSat::NotifyGetInkeyPCmd
+ //-------------------------------------------------------------------------
+
+ // test C - implemented in 0001b function
+
+ //-------------------------------------------------------------------------
+ // TEST E: Coverage test(s) for RSat::NotifyGetInkeyPCmd
+ //-------------------------------------------------------------------------
+
+ iMockLTSY.NotifyTerminated(requestStatus);
+
+ PrepareCompleteDataL ();
+
+ RSat::TAdditionalInfo additionalInfo;
+ additionalInfo.Append(KNoCause);
+
+ PrepareTerminalResponseMockDataL(
+ KCommandNumber,
+ KCommandType,
+ iData.iCommandQualifier,
+ additionalInfo,
+ RSat::KMeUnableToProcessCmd,
+ KNullDesC8);
+
+ User::WaitForRequest(requestStatus);
+ ASSERT_EQUALS(KErrNone, requestStatus.Int());
+ AssertMockLtsyStatusL();
+
+ //-------------------------------------------------------------------------
+ // to increase CSatNotifyGetInkey::CompleteNotifyL coverage
+ // in case of "if ( KHelpAvailabilityMask & cmdQualifier )"
+ // in CSatNotifyGetInkey::CompleteNotifyL()
+ //-------------------------------------------------------------------------
+
+ DataInitialization(
+ icon,
+ KEnterPlus,
+ KHelpAvailabilityMask);
+
+ ProactiveCommandCallL(getInkeyData);
+ AssertMockLtsyStatusL();
+
+ //-------------------------------------------------------------------------
+ // to increase CSatNotifyGetInkey::CompleteNotifyL coverage
+ // in case of "if ( KImmediateDigitResponse & cmdQualifier )"
+ // in CSatNotifyGetInkey::CompleteNotifyL()
+ //-------------------------------------------------------------------------
+
+ DataInitialization(
+ icon,
+ KEnterPlus,
+ KImmediateDigitResponse);
+
+ ProactiveCommandCallL(getInkeyData);
+ AssertMockLtsyStatusL();
+
+ //-------------------------------------------------------------------------
+ // to increase CSatNotifyGetInkey::CompleteNotifyL coverage
+ // in case of "if ( KImmediateDigitResponse & cmdQualifier )"
+ // in CSatNotifyGetInkey::CreateTerminalRespL()
+ //-------------------------------------------------------------------------
+
+ TInt size = sizeof(KArrayGR)/sizeof(KArrayGR[0]);
+
+ for ( TInt i = 0; i < size; i++ )
+ {
+ DataInitialization(
+ icon,
+ KEnterPlus);
+
+ ProactiveCommandCallL(getInkeyData);
+ TerminalResponseCallL(iSat, KArrayGR[i]);
+ AssertMockLtsyStatusL();
+ }
+
+ //-------------------------------------------------------------------------
+ // to increase CSatNotifyGetInkey::CompleteNotifyL coverage
+ // in case of "if ( KErrNone == returnValue )"
+ //-------------------------------------------------------------------------
+
+ RSat::TGetInkeyRspV2 getInkeyRspV2;
+ RSat::TGetInkeyRspV2Pckg getInkeyRspV2Pckg(getInkeyRspV2);
+
+ getInkeyRspV2.iGeneralResult = RSat::KErrorRequiredValuesMissing;
+ getInkeyRspV2.iRspFormat = RSat::EGetInkeyRspFormatNotSet;
+ getInkeyRspV2.SetPCmdNumber(KCommandNumber);
+ getInkeyRspV2.iInfoType = RSat::KNoAdditionalInfo;
+ getInkeyRspV2.iAdditionalInfo.Copy( KNOCAUSE );
+
+ DataInitialization(
+ icon,
+ KNullDesC8);
+
+ PrepareExpectDataL ();
+ TPckg< RSat::TGetInkeyV2 > setpPck(getInkeyData);
+ iSat.NotifyGetInkeyPCmd(requestStatus, setpPck);
+
+ PrepareCompleteDataL ( KErrNone );
+
+ PrepareTerminalResponseMockDataL(
+ KCommandNumber,
+ KCommandType,
+ iData.iCommandQualifier,
+ KNullDesC16,
+ getInkeyRspV2.iGeneralResult,
+ KNullDesC8);
+
+ User::WaitForRequest(requestStatus);
+ ASSERT_EQUALS(KErrCorrupt, requestStatus.Int());
+ AssertMockLtsyStatusL();
+
+ //-------------------------------------------------------------------------
+ // to increase CSatNotifyGetInkey::TerminalResponseL coverage for
+ // RSat::TGetInkeyRspV2::iInfotype
+ //-------------------------------------------------------------------------
+
+ RSat::TPCmdResult generalResult = RSat::KSuccess;
+ TUint infoType = RSat::KSatNetworkErrorInfo; // bad infoType
+
+ TerminalResponseCallL(
+ iSat,
+ generalResult,
+ infoType,
+ KNOCAUSE(),
+ K8BitDCS,
+ KErrCorrupt);
+ AssertMockLtsyStatusL();
+
+ //-------------------------------------------------------------------------
+ // to increase CSatNotifyGetInkey::TerminalResponseL coverage for
+ // RSat::TGetInkeyRspV2::IRspFormat
+ //-------------------------------------------------------------------------
+
+ RSat::TGetInkeyRspFormat rspFormat = RSat::EGetInkeyRspFormatNotSet;
+ infoType = RSat::KNoAdditionalInfo;
+
+ TerminalResponseCallL(
+ iSat,
+ generalResult,
+ infoType,
+ KNOCAUSE(),
+ K8BitDCS,
+ KErrCorrupt,
+ rspFormat);
+ AssertMockLtsyStatusL();
+
+ //-------------------------------------------------------------------------
+ // to increase CSatNotifyGetInkey::TerminalResponseL coverage for
+ // Rsat::TGetInkeyRspV2::iAdditionalInfo
+ //-------------------------------------------------------------------------
+
+ getInkeyRspV2.iAdditionalInfo.Zero();
+ size = sizeof(KArrayInfoType)/sizeof(KArrayInfoType[0]);
+ for ( TInt i = 0; i < size; i++ )
+ {
+ TTlv tlv;
+ tlv.AddTag(KTlvTextStringTag);
+ tlv.AddByte(K8BitDCS);
+ tlv.AddData(KNOCAUSE());
+
+ getInkeyRspV2.iGeneralResult = RSat::KPartialComprehension;
+ getInkeyRspV2.iRspFormat = RSat::EDigitOnly;
+ getInkeyRspV2.SetPCmdNumber(KCommandNumber);
+ getInkeyRspV2.iInfoType = KArrayInfoType[i];
+
+ PrepareTerminalResponseMockDataL(
+ KCommandNumber,
+ KCommandType,
+ iData.iCommandQualifier,
+ KNullDesC16,
+ getInkeyRspV2.iGeneralResult,
+ tlv.GetDataWithoutTopLevelTag());
+
+ iSat.TerminalRsp(requestStatus, RSat::EGetInkey, getInkeyRspV2Pckg);
+ User::WaitForRequest(requestStatus);
+ ASSERT_EQUALS(KErrCorrupt, requestStatus.Int());
+ AssertMockLtsyStatusL();
+ }
+
+ //-------------------------------------------------------------------------
+ // TEST B: failure on completion of pending request from LTSY->CTSY
+ //-------------------------------------------------------------------------
+
+ ProactiveCommandCallL( getInkeyData, KErrUnknown, KErrUnknown);
+
+ AssertMockLtsyStatusL();
+ CleanupStack::PopAndDestroy(1); // this
+
+ }
+
+
+/**
+@SYMTestCaseID BA-CSAT-GUI-NGIPC-0002
+@SYMPREQ 1780
+@SYMComponent telephony_csat
+@SYMTestCaseDesc Test support in CSAT for cancelling of RSat::NotifyGetInkeyPCmd
+@SYMTestPriority High
+@SYMTestActions Invokes cancelling of RSat::NotifyGetInkeyPCmd
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCSatGetInkeyFU::TestNotifyGetInkeyPCmd0002L()
+ {
+
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+ OpenSatL();
+
+ TRequestStatus requestStatus;
+
+ RSat::TGetInkeyV2 getInkey;
+ RSat::TGetInkeyV2Pckg getInkeyPck(getInkey);
+
+ //-------------------------------------------------------------------------
+ // Test cancelling of RSat::NotifyGetInkeyPCmd
+ //-------------------------------------------------------------------------
+
+ PrepareExpectDataL();
+
+ iSat.NotifyGetInkeyPCmd(requestStatus, getInkeyPck);
+
+ iSat.CancelAsyncRequest(ESatNotifyGetInkeyPCmd);
+
+ User::WaitForRequest(requestStatus);
+ ASSERT_EQUALS(KErrCancel, requestStatus.Int());
+ AssertMockLtsyStatusL();
+
+ CleanupStack::PopAndDestroy(1); // this
+
+ }
+
+/**
+@SYMTestCaseID BA-CSAT-GUI-NGIPC-0004
+@SYMPREQ 1780
+@SYMComponent telephony_csat
+@SYMTestCaseDesc Test support in CSAT for multiple client requests to RSat::NotifyGetInkeyPCmd
+@SYMTestPriority High
+@SYMTestActions Invokes multiple client requests to RSat::NotifyGetInkeyPCmd
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCSatGetInkeyFU::TestNotifyGetInkeyPCmd0004L()
+ {
+
+ 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(iPhone);
+ ASSERT_EQUALS(KErrNone, ret);
+ CleanupClosePushL(sat2);
+
+ TRequestStatus requestStatus1;
+ TRequestStatus requestStatus2;
+
+ TData::TIcon icon;
+ DataInitialization(
+ icon,
+ KEnterPlus);
+
+ //-------------------------------------------------------------------------
+ // Test A: Test multiple clients requesting RSat::NotifyGetInkeyPCmd
+ // when they both pass the same T-class version
+ //-------------------------------------------------------------------------
+
+ PrepareExpectDataL();
+
+ RSat::TGetInkeyV2 getInkey1;
+ RSat::TGetInkeyV2Pckg getInkey1Pck1(getInkey1);
+ iSat.NotifyGetInkeyPCmd(requestStatus1, getInkey1Pck1);
+
+ RSat::TGetInkeyV2 getInkey2;
+ RSat::TGetInkeyV2Pckg getInkey1Pck2(getInkey2);
+ sat2.NotifyGetInkeyPCmd(requestStatus2, getInkey1Pck2);
+
+ PrepareCompleteDataL();
+
+ User::WaitForRequest(requestStatus1);
+ User::WaitForRequest(requestStatus2);
+
+ ASSERT_EQUALS(KErrNone, requestStatus1.Int());
+ //probably «KErrServerBusy?is more appropriate result here
+ ASSERT_EQUALS(KErrNone, requestStatus2.Int());
+
+ RSat::TPCmdResult generalResult = RSat::KSuccess;
+ TUint infoType = RSat::KTextString;
+
+ TerminalResponseCallL(
+ iSat,
+ generalResult,
+ infoType,
+ KNOCAUSE() );
+
+ TerminalResponseCallL(
+ sat2,
+ generalResult,
+ infoType,
+ KNOCAUSE() );
+
+ DataCompareL( getInkey1 );
+ DataCompareL( getInkey2 );
+
+ AssertMockLtsyStatusL();
+ CleanupStack::PopAndDestroy(4, this); // sat2, phone2, telServer2, this
+
+ }
+
+/*
+@SYMTestCaseID BA-CSAT-GUI-NGIPC-0001b
+@SYMPREQ 1780
+@SYMComponent telephony_csat
+@SYMTestCaseDesc Test support in CSAT for RSat::NotifyGetInkeyPCmd ( Expected Sequence 1 See ETSI TS 102 384 )
+@SYMTestPriority High
+@SYMTestActions Invokes RSat::NotifyGetInkeyPCmd
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCSatGetInkeyFU::TestNotifyGetInkeyPCmd0001bL()
+ {
+ // "Enter "0"" string in K7BitDefaultSmsDCS coding scheme
+ _LIT8( KStringPC1, "\x45\x37\xBD\x2C\x07\x89\x60\x22" );
+ // string in KUCS2DCS coding scheme
+ _LIT8( KStringPC2, "\x04\x17\x04\x14\x04\x20\x04\x10\x04\x12\x04\x21\x04\x22\x04\x12\x04\x23\x04\x19\
+x04\x22\x04\x15" );
+ // string in KUCS2DCS coding scheme
+ _LIT8( KStringTR1, "\x04\x14" ); // char in KUCS2DCS coding scheme
+ _LIT8( KGOBACKWARDS, "<GO-BACKWARDS>" );
+ _LIT8( KABORT, "<ABORT>" );
+ _LIT8( KEnterq, "Enter \"q\"" );
+ _LIT8( KLongString1, "Enter \"x\". This command instructs the ME to display text, and to \
+expect the user to enter a single character. Any response entered by the user shall be passed t" );
+ _LIT8( KTIMEOUT, "<TIME-OUT>" );
+ _LIT8( KEnter, "Enter" );
+ _LIT8( KEnterYES, "Enter YES" );
+ _LIT8( KEnterNO, "Enter NO" );
+ _LIT8( KNOICON, "<NO-ICON>" );
+ _LIT8( KBASICICON, "<BASIC-ICON>" );
+ _LIT8( KCOLOURICON, "<COLOUR-ICON>" );
+ _LIT8( KNULL, "0" );
+ _LIT8( Kq, "q" );
+ _LIT8( Kx, "x" );
+ _LIT8( KHexNULL, "\x00" );
+ _LIT8( KHexOne, "\x01" );
+ _LIT8( KLargeString, "\x04\x17\x04\x14\x04\x20\x04\x10\x04\x12\x04\x21\x04\x22\x04\x12\x04\x23\x04\x19\
+x04\x22\x04\x15\x04\x17\x04\x14\x04\x20\x04\x10\x04\x12\x04\x21\x04\x22\x04\x12\x04\x23\x04\x19\
+x04\x22\x04\x15\x04\x17\x04\x14\x04\x20\x04\x10\x04\x12\x04\x21\x04\x22\x04\x12\x04\x23\x04\x19\
+x04\x22\x04\x15\x04\x17\x04\x14\x04\x20\x04\x10\x04\x12\x04\x21\x04\x22\x04\x12\x04\x23\x04\x19\
+x04\x22\x04\x15\x04\x17\x04\x14\x04\x20\x04\x10\x04\x12\x04\x21\x04\x22\x04\x12\x04\x23\x04\x19" );
+
+ const TPtrC8 KTextPCArray[] =
+ {
+ KEnterPlus(),
+ KStringPC1(),
+ KGOBACKWARDS(),
+ KABORT(),
+ KEnterq(),
+ KLongString1(),
+ KTIMEOUT(),
+ KStringPC2(),
+ KLargeString(),
+ KEnter(),
+ KEnterYES(),
+ KEnterNO(),
+ KNOICON(),
+ KBASICICON(),
+ KNOICON(),
+ KCOLOURICON(),
+ KEnterPlus()
+ };
+
+ const TPtrC8 KTextTRArray[] =
+ {
+ KPlus(),
+ KNULL(),
+ KNullDesC8(),
+ KNullDesC8(),
+ Kq(),
+ Kx(),
+ KNullDesC8(),
+ KPlus(),
+ KPlus(),
+ KStringTR1(),
+ KHexOne(),
+ KHexNULL(),
+ KPlus(),
+ KPlus(),
+ KPlus(),
+ KPlus(),
+ KNullDesC8()
+ };
+
+ const TUint8 KSizeArray = sizeof(KTextPCArray)/sizeof(KTextPCArray[0]);
+
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+ OpenSatL();
+
+ //
+ // See ETSI TS 102 384 V6.5.0 (2007-02) in subclause 27.22.4.2.1
+ // Expected Sequence 1.1 - 7.1
+ //
+
+ for (TUint8 i = 0; i < KSizeArray; i++)
+ {
+ TUint8 commandQualifier = 0; // digits (0-9, *, # and +) only, no help information available
+ TUint8 codingSchemePC = K8BitDCS;
+ TUint8 codingSchemeTR = K8BitDCS;
+ RSat::TPCmdResult generalResult = RSat::KSuccess;
+ TUint infoType = RSat::KTextString;
+ TData::TIcon icon;
+ TBool iconNotDisplayed = EFalse;
+
+ switch( i )
+ {
+ case 1:
+ {
+ // in case of Expected Sequence 1.2
+ codingSchemePC = K7BitDefaultSmsDCS;
+ break;
+ }
+ case 2:
+ {
+ // in case of Expected Sequence 1.3
+ generalResult = RSat::KBackwardModeRequestedByUser;
+ infoType = RSat::KNoAdditionalInfo;
+ break;
+ }
+ case 3:
+ {
+ // in case of Expected Sequence 1.4
+ generalResult = RSat::KPSessionTerminatedByUser;
+ infoType = RSat::KNoAdditionalInfo;
+ break;
+ }
+ case 4:
+ {
+ // in case of Expected Sequence 1.5
+ commandQualifier = 0x01; // SMS default alphabet, no help information available
+ break;
+ }
+ case 5:
+ {
+ // in case of Expected Sequence 1.6
+ commandQualifier = 0x01; // SMS default alphabet, no help information available
+ break;
+ }
+ case 6:
+ {
+ // in case of Expected Sequence 2.1
+ infoType = RSat::KNoAdditionalInfo;
+ generalResult = RSat::KNoResponseFromUser;
+ break;
+ }
+ case 7:
+ {
+ // in case of Expected Sequence 3.1
+ codingSchemePC = KUCS2DCS;
+ break;
+ }
+ case 8:
+ {
+ // in case of Expected Sequence 3.2
+ codingSchemePC = KUCS2DCS;
+ break;
+ }
+ case 9:
+ {
+ // in case of Expected Sequence 4.1
+ codingSchemeTR = KUCS2DCS;
+ commandQualifier = 0x03; // characters from UCS2 alphabet, no help information available
+ break;
+ }
+ case 10:
+ {
+ // in case of Expected Sequence 5.1
+ commandQualifier = 0x04; // "Yes/No" Response, no help information available
+ break;
+ }
+ case 11:
+ {
+ // in case of Expected Sequence 5.2
+ commandQualifier = 0x04; // "Yes/No" Response, no help information available
+ break;
+ }
+ case 12:
+ {
+ // in case of Expected Sequence 6.1A, 6.1B
+ icon.iIfUse = ETrue;
+ icon.iIdentifier = 0;
+ icon.iQualifier = 0x01;
+ iconNotDisplayed = ETrue;
+ break;
+ }
+ case 13:
+ {
+ // in case of Expected Sequence 6.2A, 6.2B
+ icon.iIfUse = ETrue;
+ icon.iIdentifier = 0x01;
+ icon.iQualifier = 0x01;
+ iconNotDisplayed = ETrue;
+ break;
+ }
+ case 14:
+ {
+ // in case of Expected Sequence 6.3A, 6.3B
+ icon.iIfUse = ETrue;
+ icon.iIdentifier = 0x00;
+ icon.iQualifier = 0x02;
+ iconNotDisplayed = ETrue;
+ break;
+ }
+ case 15:
+ {
+ // in case of Expected Sequence 6.4A, 6.4B
+ icon.iIfUse = ETrue;
+ icon.iIdentifier = 0x01;
+ icon.iQualifier = 0x02;
+ iconNotDisplayed = ETrue;
+ break;
+ }
+ case 16:
+ {
+ // in case of Expected Sequence 7.1
+ generalResult = RSat::KHelpRequestedByUser;
+ infoType = RSat::KNoAdditionalInfo;
+ break;
+ }
+ default:
+ // in case of Expected Sequence 1.1
+ break;
+ }
+
+ TInt iteration_number = 1;
+ if ( iconNotDisplayed )
+ {
+ iteration_number = 2;
+ }
+
+ for (TInt j = 0; j < iteration_number; j++)
+ {
+ RSat::TGetInkeyV2 getInkeyData;
+
+ DataInitialization(
+ icon,
+ KTextPCArray[i],
+ commandQualifier,
+ codingSchemePC);
+ ProactiveCommandCallL(getInkeyData);
+
+ TerminalResponseCallL(
+ iSat,
+ generalResult,
+ infoType,
+ KTextTRArray[i],
+ codingSchemeTR);
+ AssertMockLtsyStatusL();
+
+ DataCompareL( getInkeyData );
+
+ if ( iconNotDisplayed )
+ {
+ generalResult = RSat::KSuccessRequestedIconNotDisplayed;
+ }
+ }
+ }
+
+ CleanupStack::PopAndDestroy(this); // this
+ }
+