telephonyserverplugins/simatktsy/tests/src/ccsatgetinkeyfu.cpp
changeset 0 3553901f7fa8
--- /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
+	}
+