apicompatanamdw/bcdrivers/os/cellularsrv/BCSmsUtilitiesTest/src/BCSmsUtilitiesTestCases.cpp
author Maciej Seroka <maciejs@symbian.org>
Thu, 11 Nov 2010 14:03:20 +0000
changeset 26 26ffa9d5444d
parent 2 0cb2248d0edc
permissions -rw-r--r--
Updated knownissues.xml - wk_45_2010

/*
* Copyright (c) 2002 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:  ?Description
*
*/

/* Changed by Vaibhav - 13Aug07 for Removing CodeScanner Warnings - High/medium */

// INCLUDE FILES
#include <e32math.h>
#include "BCSmsUtilitiesTest.h"
#include <gsmunmspacemobmsg.h>
#include <S32file.h>
#include <e32cons.h>
#include <txtrich.h>

#include <gsmuelem.h>
#define KTimeStampSize 32
_LIT(KTestNativeChar, "SmsGsmUtilities");
_LIT8(KTestNativeChar8, "SmsGsmUtilities");
_LIT8(KTestInfo8, "ABCDEFGH");
_LIT8(KTestCommandData8, "CommandData");
_LIT(KTestBuffer1, "ABCDEFGHIJKLMNOPQRSTUVWX");

// ============================= LOCAL FUNCTIONS ===============================
// -----------------------------------------------------------------------------
// Create_Console
// Creates a new Console Window
// -----------------------------------------------------------------------------
LOCAL_C CConsoleBase* Create_ConsoleL(const TDesC& title)
	{
    CConsoleBase* console;
    
    console = Console::NewL(title,TSize( KConsFullScreen, KConsFullScreen));
	CleanupStack::PushL( console );
	return 	console;
	}

// -----------------------------------------------------------------------------
// Print
// Prints the result onto screen
// -----------------------------------------------------------------------------
LOCAL_C void Print(CConsoleBase* base, TInt result, const TDesC& text)
	{
	base->Printf(text);
	if( result == KErrNone)
		{
		base->Printf(_L(" passed\n"));
		}
	else
		{
		base->Printf(_L("::Error code %d\n"), result);
		}
	}
	
// -----------------------------------------------------------------------------
// Remove_Console
// Deletes a new Console Window
// -----------------------------------------------------------------------------
LOCAL_C void Remove_Console(CConsoleBase* base)
	{
	//base->Getch();
	CleanupStack::PopAndDestroy(base);
	}
	
void Check(TInt aValue, TInt aExpected )
	{
	if(aValue != aExpected)
		{
		RDebug::Print(_L("*** Expected value: %d, got: %d\r\n"), aExpected, aValue);
		__ASSERT_ALWAYS(aValue != aExpected, User::Panic(_L("Active object Error"), 1));
		}
	}

// ============================ MEMBER FUNCTIONS ===============================

// -----------------------------------------------------------------------------
// CBCSmsUtilitiesTest::Case
// Returns a test case by number.
//
// This function contains an array of all available test cases 
// i.e pair of case name and test function. If case specified by parameter
// aCaseNumber is found from array, then that item is returned.
// 
// The reason for this rather complicated function is to specify all the
// test cases only in one place. It is not necessary to understand how
// function pointers to class member functions works when adding new test
// cases. See function body for instructions how to add new test case.
// -----------------------------------------------------------------------------
//
const TCaseInfo CBCSmsUtilitiesTest::Case ( 
    const TInt aCaseNumber ) const 
     {


     static TCaseInfoInternal const KCases[] =
        {
        // To add new test cases, add new items to this array
        ENTRY( "CSmsAlphabetConverter", CBCSmsUtilitiesTest::TestSmsAlphabetConverterL ),
        ENTRY( "CSmsBuffer", CBCSmsUtilitiesTest::TestSmsBufferL ),
        ENTRY( "CSmsCommand", CBCSmsUtilitiesTest::TestSmsCommandL ),
        ENTRY( "CSmsDeliver", CBCSmsUtilitiesTest::TestSmsDeliverL ),
        ENTRY( "CSmsDeliverReport", CBCSmsUtilitiesTest::TestSmsDeliverReportL ),
        ENTRY( "CSmsEditorBuffer", CBCSmsUtilitiesTest::TestSmsEditorBufferL ),
        ENTRY( "CSmsInformationElement", CBCSmsUtilitiesTest::TestSmsInformationElementL ),
        ENTRY( "CSmsMessage", CBCSmsUtilitiesTest::TestSmsMessageL ),
        ENTRY( "CSmsPDU", CBCSmsUtilitiesTest::TestSmsPDUL ),
        ENTRY( "CSmsStatusReport", CBCSmsUtilitiesTest::TestSmsStatusReportL ),
        ENTRY( "CSmsSubmit", CBCSmsUtilitiesTest::TestSmsSubmitL ),
        ENTRY( "CSmsSubmitReport", CBCSmsUtilitiesTest::TestSmsSubmitReportL ),
        ENTRY( "CSmsUserData", CBCSmsUtilitiesTest::TestSmsUserDataL ),
         };

    // Verify that case number is valid
    if( (TUint) aCaseNumber >= sizeof( KCases ) / 
                               sizeof( TCaseInfoInternal ) )
        {
        // Invalid case, construct empty object
        TCaseInfo null( (const TText*) L"" );
        null.iMethod = NULL;
        null.iIsOOMTest = EFalse;
        null.iFirstMemoryAllocation = 0;
        null.iLastMemoryAllocation = 0;
        return null;
        } 

    // Construct TCaseInfo object and return it
    TCaseInfo tmp ( KCases[ aCaseNumber ].iCaseName );
    tmp.iMethod = KCases[ aCaseNumber ].iMethod;
    tmp.iIsOOMTest = KCases[ aCaseNumber ].iIsOOMTest;
    tmp.iFirstMemoryAllocation = KCases[ aCaseNumber ].iFirstMemoryAllocation;
    tmp.iLastMemoryAllocation = KCases[ aCaseNumber ].iLastMemoryAllocation;
    return tmp;

    }

// -----------------------------------------------------------------------------
// TestGetAlphabet
// Gets the coding scheme alphabet
// -----------------------------------------------------------------------------
//
LOCAL_C TInt TestGetAlphabet( CStifLogger* aLog, CSmsAlphabetConverter& aAlphabetConv)
	{
	aLog->Log(_L("---------------------------------------------"));
	aLog->Log(_L("Calling Alphabet()"));
	TInt result = KErrNone;
	
	//inline TSmsDataCodingScheme::TSmsAlphabet CSmsAlphabetConverter::Alphabet() const
	TSmsDataCodingScheme::TSmsAlphabet alphabet = aAlphabetConv.Alphabet();
	
	if( alphabet == TSmsDataCodingScheme::ESmsAlphabet8Bit )
		{
		aLog->Log(_L("Alphabet() Completed"));
		aLog->Log(_L("Alphabet fetched"));
		aLog->Log(_L("Get alphabet == PASS"));
		}
	else
		{
		result = KErrGeneral;
		aLog->Log(_L("Get alphabet == FAIL"));
		}
		
	return result;
	}
	
// -----------------------------------------------------------------------------
// TestConvertFromNative
// Converts from the native character set to 
// unpacked user data elements of the desired character set.
// -----------------------------------------------------------------------------
//
LOCAL_C TInt TestConvertFromNative( CStifLogger* aLog, CSmsAlphabetConverter& aAlphabetConv)
	{
	aLog->Log(_L("---------------------------------------------"));
	aLog->Log(_L("Calling ConvertFromNativeL()"));
	
	TBufC<24> nativeChar(KTestNativeChar);
	TBufC8<24> UDElements(KTestNativeChar8);
	//IMPORT_C TPtrC8 ConvertFromNativeL(const TDesC& aNativeCharacters);
	TPtrC8 convChar;
	TRAPD( result, convChar.Set(aAlphabetConv.ConvertFromNativeL(nativeChar))) ;

	TPtrC8 UDElementsPtr(UDElements);
	if(convChar.Compare(UDElementsPtr))
		{
		result = KErrGeneral;
		aLog->Log(_L("Convert from native == FAIL"));	
		}
	else
		{
		aLog->Log(_L("ConvertFromNativeL() Completed"));
		aLog->Log(_L("Conversion successfully performoded"));
		aLog->Log(_L("Convert from native == PASS"));
		}

	return result;
	}

LOCAL_C TInt TestConvertFromNative2L( CStifLogger* aLog, CSmsAlphabetConverter& aAlphabetConv)
	{
	aLog->Log(_L("---------------------------------------------"));
	aLog->Log(_L("Calling ConvertFromNative2L()"));
	
	TBufC<24> nativeChar(KTestNativeChar);
	TBufC8<24> UDElements(KTestNativeChar8);
	
	TInt numUnconvertibleChars;
	TInt numDowngradedChars;
	TPtrC8 convChar;
	TRAPD( result, convChar.Set(aAlphabetConv.ConvertFromNativeL(nativeChar,ESmsEncodingNone,numUnconvertibleChars,numDowngradedChars ))) ;

	TPtrC8 UDElementsPtr(UDElements);
	if(convChar.Compare(UDElementsPtr))
		{
		result = KErrGeneral;
		aLog->Log(_L("Convert from native2 == FAIL"));	
		}
	else
		{
		aLog->Log(_L("ConvertFromNative2L() Completed"));
		aLog->Log(_L("Conversion successfully performoded"));
		aLog->Log(_L("Convert from native2 == PASS"));
		}

	return result;
	}	
// -----------------------------------------------------------------------------
// TestConvertToNative
// Converts the user data elements of the specified character set to 
// the native character set.
// -----------------------------------------------------------------------------
//
LOCAL_C TInt TestConvertToNative( CStifLogger* aLog, CSmsAlphabetConverter& aAlphabetConv)
	{
	aLog->Log(_L("---------------------------------------------"));
	aLog->Log(_L("Calling ConvertToNativeL()"));
	
	TBufC<24> nativeChar(KTestNativeChar);
	TBufC8<24> UDElements(KTestNativeChar8);
	//IMPORT_C TPtrC ConvertToNativeL(const TDesC8& aUDElements);
	TPtrC convChar;
	TRAPD( result, convChar.Set(aAlphabetConv.ConvertToNativeL(UDElements)));
	
	TBufC<24> nativeCharPtr(nativeChar);
	if(convChar.Compare(nativeCharPtr))
		{
		result = KErrGeneral;
		aLog->Log(_L("Convert To native == FAIL"));	
		}
	else
		{
		aLog->Log(_L("ConvertToNativeL() Completed"));
		aLog->Log(_L("Conversion successfully performoded"));
		aLog->Log(_L("Convert To native == PASS"));
		}

	return result;
	}

LOCAL_C TInt TestConvertToNative2L( CStifLogger* aLog, CSmsAlphabetConverter& aAlphabetConv)
	{
	aLog->Log(_L("---------------------------------------------"));
	aLog->Log(_L("Calling ConvertToNative2L()"));
	
	TBufC<24> nativeChar(KTestNativeChar);
	TBufC8<24> UDElements(KTestNativeChar8);
	
	TPtrC convChar;
	TRAPD( result, convChar.Set(aAlphabetConv.ConvertToNativeL(UDElements,ESmsEncodingNone )));
	
	TBufC<24> nativeCharPtr(nativeChar);
	if(convChar.Compare(nativeCharPtr))
		{
		result = KErrGeneral;
		aLog->Log(_L("Convert To native2 == FAIL"));	
		}
	else
		{
		aLog->Log(_L("ConvertToNative2L() Completed"));
		aLog->Log(_L("Conversion successfully performoded"));
		aLog->Log(_L("Convert To native2 == PASS"));
		}

	return result;
	}	
// -----------------------------------------------------------------------------
// TestResetUnconvertedNativeCharacters
// Resets the unconverted native character buffer
// -----------------------------------------------------------------------------
//
LOCAL_C TInt TestResetUnconvertedNativeCharacters( CStifLogger* aLog, CSmsAlphabetConverter& aAlphabetConv)
	{
	aLog->Log(_L("---------------------------------------------"));
	aLog->Log(_L("Calling ResetUnconvertedNativeCharacters()"));

	TInt result = KErrNone;
	
	//inline void ResetUnconvertedNativeCharacters();
	aAlphabetConv.ResetUnconvertedNativeCharacters();
	
	aLog->Log(_L("ResetUnconvertedNativeCharacters() Completed"));
	aLog->Log(_L("Reset performed successfully"));
	aLog->Log(_L("Reset unconverted native characters == PASS"));

	return result;
	}
	
// -----------------------------------------------------------------------------
// TestResetUnconvertedUDElements
// Resets the unconverted user data elements buffer
// -----------------------------------------------------------------------------
//
LOCAL_C TInt TestResetUnconvertedUDElements( CStifLogger* aLog, CSmsAlphabetConverter& aAlphabetConv)
	{
	aLog->Log(_L("---------------------------------------------"));
	aLog->Log(_L("Calling ResetUnconvertedUDElements()"));
	TInt result = KErrNone;
	
	//inline void ResetUnconvertedUDElements();
	aAlphabetConv.ResetUnconvertedUDElements();

	aLog->Log(_L("ResetUnconvertedUDElements() Completed"));
	aLog->Log(_L("Reset performed successfully"));
	aLog->Log(_L("Reset unconverted UD Elements == PASS"));

	return result;
	}
	
// -----------------------------------------------------------------------------
// TestUnconvertedNativeCharacters
// Gets the unconverted native characters
// -----------------------------------------------------------------------------
//
LOCAL_C TInt TestUnconvertedNativeCharacters( CStifLogger* aLog, CSmsAlphabetConverter& aAlphabetConv)
	{
	aLog->Log(_L("---------------------------------------------"));
	aLog->Log(_L("Calling UnconvertedNativeCharacters()"));
	TInt result = KErrNone;
	
	//inline TPtrC UnconvertedNativeCharacters();
	TPtrC nativeCharPtr( aAlphabetConv.UnconvertedNativeCharacters() );
	
	aLog->Log(_L("UnconvertedNativeCharacters() Completed"));
	if(nativeCharPtr != KNullDesC )
		aLog->Log(_L("Result data:Characters: %s"), nativeCharPtr.Ptr());
	else
		aLog->Log(_L("Result data:Characters: NULL "));
	aLog->Log(_L("Get unconverted native characters == PASS"));
	
	return result;
	}
	
// -----------------------------------------------------------------------------
// TestUnconvertedUDElements
// Gets the unconverted user data elements
// -----------------------------------------------------------------------------
//
LOCAL_C TInt TestUnconvertedUDElements( CStifLogger* aLog, CSmsAlphabetConverter& aAlphabetConv)
	{
	aLog->Log(_L("---------------------------------------------"));
	aLog->Log(_L("Calling UnconvertedUDElements()"));
	TInt result = KErrNone;
	
	//inline TPtrC8 UnconvertedUDElements();
	TPtrC8 UDElementsPtr( aAlphabetConv.UnconvertedUDElements());
	
	aLog->Log(_L("UnconvertedUDElements() Completed"));
	if( UDElementsPtr!= KNullDesC8 )
		aLog->Log(_L("Result data:Characters: %s"), UDElementsPtr.Ptr());
	else
		aLog->Log(_L("Result data:Characters: NULL"));
	aLog->Log(_L("Get unconverted UD Elements == PASS"));
	
	return result;
	}
	
// -----------------------------------------------------------------------------
// TestDelete
// Deletes data from the buffer
// -----------------------------------------------------------------------------
//
LOCAL_C TInt TestDelete( CStifLogger* aLog, CSmsBuffer& aBuffer)
	{
	aLog->Log(_L("---------------------------------------------"));
	aLog->Log(_L("Calling DeleteL()"));
	
	TInt position = 2;
	TInt length = 2;
	//IMPORT_C void DeleteL(TInt aPos,TInt aLength);
	TRAPD( result, aBuffer.DeleteL( position, length));
	
	if( result == KErrNone )
		{
		aLog->Log(_L("DeleteL() Completed"));
		aLog->Log(_L("Data successfully deleted"));
		aLog->Log(_L("Delete == PASS"));
		}
	else
		aLog->Log(_L("Delete == FAIL"));
	
	return result;
	}
	
// -----------------------------------------------------------------------------
// TestReset
// Resets the buffer
// -----------------------------------------------------------------------------
//
LOCAL_C TInt TestReset( CStifLogger* aLog, CSmsBuffer& aBuffer)
	{
	aLog->Log(_L("---------------------------------------------"));
	aLog->Log(_L("Calling Reset()"));
	TInt result = KErrNone;
	
	//IMPORT_C void Reset();
	aBuffer.Reset();

	aLog->Log(_L("Reset() Completed"));
	aLog->Log(_L("Data successfully reseted"));
	aLog->Log(_L("Reset == PASS"));
	return result;
	}
	
// -----------------------------------------------------------------------------
// TestExtract
// Extracts buffer data to a descriptor
// -----------------------------------------------------------------------------
//
LOCAL_C TInt TestExtract( CStifLogger* aLog, CSmsBuffer& aBuffer)
	{
	aLog->Log(_L("---------------------------------------------"));
	aLog->Log(_L("Calling Extract()"));
	TInt result = KErrNone;
	
	TBuf<24> buffer;
	TInt position = 2;
	TInt length = 6;
	//IMPORT_C void Extract(TDes& aBuf,TInt aPos,TInt aLength) const;
	aBuffer.Extract(buffer, position, length);
	
	aLog->Log(_L("Extract() Completed"));
	aLog->Log(_L("Data successfully extracted"));
	aLog->Log(_L("Extract == PASS"));
	return result;
	}
	
// -----------------------------------------------------------------------------
// TestInsert
// Inserts data into the buffer
// -----------------------------------------------------------------------------
//
LOCAL_C TInt TestInsert( CStifLogger* aLog, CSmsBuffer& aBuffer)
	{
	aLog->Log(_L("---------------------------------------------"));
	aLog->Log(_L("Calling InsertL()"));
	
	TBufC<24> buffer(KTestBuffer1);
	TInt position = 0;
	//IMPORT_C void InsertL(TInt aPos,const TDesC& aBuf);
	TRAPD( result, aBuffer.InsertL(position, buffer));
	
	if( result == KErrNone )
		{
		aLog->Log(_L("InsertL() Completed"));
		aLog->Log(_L("Data successfully Inserted"));
		aLog->Log(_L("InsertL == PASS"));
		}
	else
		aLog->Log(_L("InsertL == FAIL"));
	
	return result;
	}
	 
// -----------------------------------------------------------------------------
// TestGetLength
// Gets the amount of space currently used in the buffer.
// -----------------------------------------------------------------------------
//
LOCAL_C TInt TestGetLength( CStifLogger* aLog, CSmsBuffer& aBuffer)
	{
	aLog->Log(_L("---------------------------------------------"));
	aLog->Log(_L("Calling Length()"));
	TInt result = KErrNone;
		
	//IMPORT_C TInt Length() const;
	TInt length = aBuffer.Length();
	
	if(length == 22) 
		{
		aLog->Log(_L("Length() Completed"));
		aLog->Log(_L("Result data: Length: %d"), length);
		aLog->Log(_L("Length == PASS"));	
		}
	else
		{
		result = KErrGeneral;
		aLog->Log(_L("Length == FAIL"));
		}
		
	return result;
	}
	 
// -----------------------------------------------------------------------------
// TestExternalize
// Externalises the object.
// -----------------------------------------------------------------------------
//
LOCAL_C TInt TestExternalizeL( CStifLogger* aLog, CSmsBuffer& aBuffer)
	{
	aLog->Log(_L("---------------------------------------------"));
	aLog->Log(_L("Calling ExternalizeL()"));
	
	RFs session;
    User::LeaveIfError(session.Connect());
	TBufC<64> storename = _L("C:\\SMSGSMUtilities_CSmsBuffer");
	RFileWriteStream write;
	
	write.Create(session, storename, EFileWrite);
	TInt err = write.Open(session, storename, EFileWrite);
	
	//IMPORT_C void ExternalizeL(RWriteStream& aStream) const;
	TRAPD( result, aBuffer.ExternalizeL( write ));
	
	write.CommitL();
	write.Close();
	
	session.Close();
	if( result == KErrNone )
		{
		aLog->Log(_L("ExternalizeL() Completed"));
		aLog->Log(_L("Buffer successfully externalized"));
		aLog->Log(_L("ExternalizeL == PASS"));
		}
	else
		aLog->Log(_L("ExternalizeL == FAIL"));
	
	return result;
	}
	 
// -----------------------------------------------------------------------------
// TestInternalize
// Internalises the object.
// -----------------------------------------------------------------------------
//
LOCAL_C TInt TestInternalizeL( CStifLogger* aLog, CSmsBuffer& aBuffer)
	{
	aLog->Log(_L("---------------------------------------------"));
	aLog->Log(_L("Calling InternalizeL()"));
	
	RFs session;
    User::LeaveIfError(session.Connect());
	TBufC<64> storename = _L("C:\\SMSGSMUtilities_CSmsBuffer");
    RFileReadStream read;
		
	TInt erro = read.Open(session, storename, EFileRead);
	
	//IMPORT_C void InternalizeL(RReadStream &aStream)
	TRAPD( result, aBuffer.InternalizeL( read ));
	
	read.Close();
	
	//now delete the store
	TInt err = session.Delete(storename);
	if(err != KErrNone) 
		{
		RDebug::Print(_L("Error %d deleting \"%S\" file.\n"), err, &storename);
		}

	session.Close();
	if( result == KErrNone )	
		{
		aLog->Log(_L("InternalizeL() Completed"));
		aLog->Log(_L("Buffer successfully internalized"));
		aLog->Log(_L("InternalizeL == PASS"));
		}
	else
		aLog->Log(_L("InternalizeL == FAIL"));
	
	return result;
	}
	
// -----------------------------------------------------------------------------
// TestAddInformationElement
// Adds an Information Element.
// -----------------------------------------------------------------------------
//
LOCAL_C TInt TestAddInformationElement( CStifLogger* aLog, CSmsCommand& aCommand)
	{
	aLog->Log(_L("---------------------------------------------"));
	aLog->Log(_L("Calling AddInformationElementL()"));
	
	CSmsInformationElement::TSmsInformationElementIdentifier identifier = CSmsInformationElement::ESmsIEIConcatenatedShortMessages8BitReference;
	TBufC8<24> information(KTestInfo8);
	//IMPORT_C void AddInformationElementL(CSmsInformationElement::TSmsInformationElementIdentifier aIdentifier, TDesC8& aData);
	TRAPD( result, aCommand.AddInformationElementL( identifier, information));
	
	if( result ==KErrNone )
		{
		aLog->Log(_L("AddInformationElementL() completed"));
		aLog->Log(_L("Information element successfully added"));
		aLog->Log(_L("Add information element == PASS"));
		}
	else
		aLog->Log(_L("Add information element == FAIL"));
	
	return result;
	}
	
// -----------------------------------------------------------------------------
// TestRemoveInformationElement
// Removes an Information Element
// -----------------------------------------------------------------------------
//
LOCAL_C TInt TestRemoveInformationElement( CStifLogger* aLog, CSmsCommand& aCommand)
	{
	aLog->Log(_L("---------------------------------------------"));
	aLog->Log(_L("Calling RemoveInformationElement()"));
	TInt result = KErrNone;
		
	TInt index = 0;
	//IMPORT_C void RemoveInformationElement(TInt aIndex);
	aCommand.RemoveInformationElement( index );
	
	aLog->Log(_L("RemoveInformationElement() completed"));
	aLog->Log(_L("Information element successfully removed"));
	aLog->Log(_L("Remove information element == PASS"));
	return result;
	}
	
// -----------------------------------------------------------------------------
// TestMaxCommandDataLength
// Gets the Maximum Data Length of the Command
// -----------------------------------------------------------------------------
//
LOCAL_C TInt TestMaxCommandDataLength( CStifLogger* aLog, CSmsCommand& aCommand)
	{
	aLog->Log(_L("---------------------------------------------"));
	aLog->Log(_L("Calling MaxCommandDataLength()"));
	TInt result = KErrNone;
		
	//IMPORT_C TInt MaxCommandDataLength() const;
	TInt maxLength = aCommand.MaxCommandDataLength();
	
	aLog->Log(_L("MaxCommandDataLength() completed"));
	aLog->Log(_L("Result data:Max length: %d"),maxLength);
	aLog->Log(_L("Get max command data length == PASS"));
	return result;
	}
	
// -----------------------------------------------------------------------------
// TestGetCommandData
// Gets the Command Data
// -----------------------------------------------------------------------------
//
LOCAL_C TInt TestGetCommandData( CStifLogger* aLog, CSmsCommand& aCommand)
	{
	aLog->Log(_L("---------------------------------------------"));
	aLog->Log(_L("Calling CommandData()"));
	TInt result = KErrNone;
	
	//IMPORT_C TPtrC8 CommandData() const;
	TPtrC8 commandPtr = aCommand.CommandData();
	
	if( commandPtr == KTestCommandData8)
		{
		aLog->Log(_L("CommandData() completed"));
		aLog->Log(_L("Result data:Command data: %s"), commandPtr.Ptr());
		aLog->Log(_L("Get command data == PASS"));
		}
	else
		{
		result = KErrGeneral;
		aLog->Log(_L("Get command data == FAIL"));
		}
	return result;
	}
	 
// -----------------------------------------------------------------------------
// TestGetCommandType
// Gets the Command Type
// -----------------------------------------------------------------------------
//
LOCAL_C TInt TestGetCommandType( CStifLogger* aLog, CSmsCommand& aCommand)
	{
	aLog->Log(_L("---------------------------------------------"));
	aLog->Log(_L("Calling CommandType()"));
	TInt result = KErrNone;
	
	//IMPORT_C TInt CommandType() const;
	TInt commandType = aCommand.CommandType();
	
	if( commandType == TSmsCommandType::ESmsCommandTypeEnableStatusReportRequest)
		{
		aLog->Log(_L("CommandType() completed"));
		aLog->Log(_L("Result data:Command Type: %d"), commandType);
		aLog->Log(_L("Get command Type == PASS"));
		}
	else
		{
		result = KErrGeneral;
		aLog->Log(_L("Get command Type == FAIL"));
		}
	
	return result;
	}
	 
// -----------------------------------------------------------------------------
// TestSetCommandType
// Sets the Command Type
// -----------------------------------------------------------------------------
//
LOCAL_C TInt TestSetCommandType( CStifLogger* aLog, CSmsCommand& aCommand)
	{
	aLog->Log(_L("---------------------------------------------"));
	aLog->Log(_L("Calling SetCommandType()"));
	TInt result = KErrNone;
	
	TSmsCommandType::TSmsCommandTypeValue commandType = TSmsCommandType::ESmsCommandTypeEnableStatusReportRequest;
	//IMPORT_C void SetCommandType(TSmsCommandType::TSmsCommandTypeValue aCommandType);
	aCommand.SetCommandType( commandType );
	
	aLog->Log(_L("SetCommandType() completed"));
	aLog->Log(_L("Command type successfully stored"));
	aLog->Log(_L("Set command Type == PASS"));
	return result;
	}
	 

//----------------------------------------------------------------------------
// TestInformationElement
// Gets an Information Element
// -----------------------------------------------------------------------------
//
LOCAL_C TInt TestInformationElement( CStifLogger* aLog, CSmsCommand& aCommand)
	{
	aLog->Log(_L("---------------------------------------------"));
	aLog->Log(_L("Calling InformationElement()"));
	TInt result = KErrNone;
	
	TInt index = 0;
	//IMPORT_C CSmsInformationElement& InformationElement(TInt aIndex) const;
	CSmsInformationElement& element = aCommand.InformationElement(index);	
	
	aLog->Log(_L("InformationElement() completed"));
	aLog->Log(_L("Information element successfully fetched"));
	aLog->Log(_L("Get information element == PASS"));
	 
	return result;
	}
	 
// -----------------------------------------------------------------------------
// TestInformationElementIndex
// Gets index of a specified Information Element.
// -----------------------------------------------------------------------------
//
LOCAL_C TInt TestInformationElementIndex( CStifLogger* aLog, CSmsCommand& aCommand)
	{
	aLog->Log(_L("---------------------------------------------"));
	aLog->Log(_L("Calling InformationElementIndex()"));
	TInt result = KErrNone;
	
	CSmsInformationElement::TSmsInformationElementIdentifier identifier = CSmsInformationElement::ESmsIEIConcatenatedShortMessages8BitReference;;
	TInt index;
	//IMPORT_C TBool InformationElementIndex(CSmsInformationElement::TSmsInformationElementIdentifier aIdentifier,
	//	TInt& aIndex) const;
	TInt length = aCommand.InformationElementIndex(identifier, index);
	
	aLog->Log(_L("InformationElementIndex() completed"));
	aLog->Log(_L("Information element index successfully fetched"));
	aLog->Log(_L("Get information element index == PASS"));
	return result;
	}
	 
// -----------------------------------------------------------------------------
// TestGetMessageNumber
// Gets the Message Number
// -----------------------------------------------------------------------------
//
LOCAL_C TInt TestGetMessageNumber( CStifLogger* aLog, CSmsCommand& aCommand)
	{
	aLog->Log(_L("---------------------------------------------"));
	aLog->Log(_L("Calling MessageNumber()"));
	TInt result = KErrNone;
	
	//IMPORT_C TInt MessageNumber() const;
	TInt number = aCommand.MessageNumber();
	
	if( number == 1 )
		{
		aLog->Log(_L("MessageNumber() completed"));
		aLog->Log(_L("Result data:Message number: %d"),number);
		aLog->Log(_L("Get message number == PASS"));	
		}
	else
		{
		result = KErrGeneral;
		aLog->Log(_L("Get message number == FAIL"));	
		}
	
	return result;
	}

// -----------------------------------------------------------------------------
// TestSetMessageNumber
// Sets the Message Number
// -----------------------------------------------------------------------------
//
LOCAL_C TInt TestSetMessageNumber( CStifLogger* aLog, CSmsCommand& aCommand)
	{
	aLog->Log(_L("---------------------------------------------"));
	aLog->Log(_L("Calling SetMessageNumber()"));
	TInt result = KErrNone;
	
	TInt number = 1;
	//IMPORT_C void SetMessageNumber(TInt aMessageNumber);
	aCommand.SetMessageNumber(number);
	
	aLog->Log(_L("SetMessageNumber() completed"));
	aLog->Log(_L("Message number successfully stored"));
	aLog->Log(_L("Set Message Number == PASS"));

	return result;
	}

// -----------------------------------------------------------------------------
// TestGetMessageReference
// Gets the Message Reference
// -----------------------------------------------------------------------------
//
LOCAL_C TInt TestGetMessageReference( CStifLogger* aLog, CSmsCommand& aCommand)
	{
	aLog->Log(_L("---------------------------------------------"));
	aLog->Log(_L("Calling MessageReference()"));
	TInt result = KErrNone;
	
	//IMPORT_C TInt MessageReference() const;
	TInt getRef = aCommand.MessageReference();
	
	if( getRef == 1 )
		{
		aLog->Log(_L("MessageReference() Completed"));
		aLog->Log(_L("result data:Message reference: %d"), getRef);
		aLog->Log(_L("Get Message Reference == PASS"));
		}
	else
		{
		 result = KErrGeneral;
		 aLog->Log(_L("Get Message Reference == FAIL"));
		}
	
	return result;
	}
	
// -----------------------------------------------------------------------------
// TestSetMessageReference
// Sets the Message Reference
// -----------------------------------------------------------------------------
//
LOCAL_C TInt TestSetMessageReference( CStifLogger* aLog, CSmsCommand& aCommand)
	{
	aLog->Log(_L("---------------------------------------------"));
	aLog->Log(_L("Calling SetMessageReference()"));
	TInt result = KErrNone;
	
	TInt setRef = 1;
	//IMPORT_C void SetMessageReference(TInt aMessageReference);
	aCommand.SetMessageReference(setRef);
	
	aLog->Log(_L("SetMessageReference() Completed"));
	aLog->Log(_L("Message reference successfully stored"));
	aLog->Log(_L("Set Message Reference == PASS"));

	return result;
	}
	
// -----------------------------------------------------------------------------
// TestNumInformationElements
// Gets the number of Information Elements in the User Data
// -----------------------------------------------------------------------------
//
LOCAL_C TInt TestNumInformationElements( CStifLogger* aLog, CSmsCommand& aCommand)
	{
	aLog->Log(_L("---------------------------------------------"));
	aLog->Log(_L("Calling NumInformationElements()"));
	TInt result = KErrNone;
	
	//IMPORT_C TInt NumInformationElements() const;
	TInt numElements = aCommand.NumInformationElements();
	
	aLog->Log(_L("NumInformationElements() Completed"));
	aLog->Log(_L("result data: Number of elements: %d"), numElements);
	aLog->Log(_L("Get Number Of Information Elements == PASS"));

	return result;
	}
	

// -----------------------------------------------------------------------------
// TestGetStatusReportRequest
// Gets Status Report Request flag
// -----------------------------------------------------------------------------
//
LOCAL_C TInt TestGetStatusReportRequest( CStifLogger* aLog, CSmsCommand& aCommand)
	{
	aLog->Log(_L("---------------------------------------------"));
	aLog->Log(_L("Calling StatusReportRequest()"));
	TInt result = KErrNone;
	
	//IMPORT_C TBool StatusReportRequest() const;
	TBool reportReq = aCommand.StatusReportRequest();
	
	if( reportReq )
		{
		aLog->Log(_L("SetStatusReportRequest() completed"));
		aLog->Log(_L("Status report request flag successfully fetched"));
		aLog->Log(_L("Get status report request == PASS"));	
		}
	else
		{
		result = KErrGeneral;
		aLog->Log(_L("Get status report request == FAIL"));	
		}
	
	return result;
	}
	 
// -----------------------------------------------------------------------------
// TestSetStatusReportRequest
// Externalises the object.
// -----------------------------------------------------------------------------
//
LOCAL_C TInt TestSetStatusReportRequest( CStifLogger* aLog, CSmsCommand& aCommand)
	{
	aLog->Log(_L("---------------------------------------------"));
	aLog->Log(_L("Calling SetStatusReportRequest()"));
	TInt result = KErrNone;
	
	TBool reportReq = ETrue;
	//IMPORT_C void SetStatusReportRequest(TBool aRequest);
	aCommand.SetStatusReportRequest(reportReq);
	
	aLog->Log(_L("SetStatusReportRequest() completed"));
	aLog->Log(_L("Status report request flag successfully stored"));
	aLog->Log(_L("Set status report request == PASS"));
	
	return result;
	}
	 
// -----------------------------------------------------------------------------
// TestSetCommandData
// Sets the Command Data
// -----------------------------------------------------------------------------
//
LOCAL_C TInt TestSetCommandData( CStifLogger* aLog, CSmsCommand& aCommand)
	{
	aLog->Log(_L("---------------------------------------------"));
	aLog->Log(_L("Calling SetCommandDataL()"));
	
	TBufC8<24> commandData(KTestCommandData8);
	//IMPORT_C void SetCommandDataL(const TDesC8& aData);
	TRAPD( result, aCommand.SetCommandDataL(commandData));
	
	if( result == KErrNone )
		{
		aLog->Log(_L("SetCommandDataL() completed"));
		aLog->Log(_L("Command data successfully stored"));
		aLog->Log(_L("Set command data == PASS"));
		}
	else
		aLog->Log(_L("Set command data == FAIL"));
	
	return result;
	}
// -----------------------------------------------------------------------------
// TestSmsCommandDuplicateL
// Creates a copy of the object
// -----------------------------------------------------------------------------
//
LOCAL_C TInt TestSmsCommandDuplicateL( CStifLogger* aLog, CSmsCommand& aCommand)
	{
	aLog->Log(_L("---------------------------------------------"));
	aLog->Log(_L("Calling SmsCommandDuplicateL()"));
	
	TInt result = KErrNone;
	
	CSmsCommand* dupObj = aCommand.DuplicateL();
		
		if( dupObj )
			{
		aLog->Log(_L("TestSmsCommandDuplicateL() completed"));
		aLog->Log(_L("Object successfully created"));
		aLog->Log(_L("SmsCommandDuplicateL == PASS"));
		
		}
		else
			{
				result = KErrGeneral;
				aLog->Log(_L("SmsCommandDuplicateL == FAIL"));
			}
			return result;
	}

// -----------------------------------------------------------------------------
// TestSetMoreMessagesToSend
// 
// -----------------------------------------------------------------------------
LOCAL_C TInt TestSetMoreMessagesToSend( CStifLogger* aLog, CSmsDeliver& aDeliver)
	{
	aLog->Log(_L("---------------------------------------------"));
	aLog->Log(_L("Calling SetMoreMessagesToSend()"));
	TInt result = KErrNone;
	
	//void SetMoreMessagesToSend(TBool aMore);
	aDeliver.SetMoreMessagesToSend(EFalse);
	
	aLog->Log(_L("SetMoreMessagesToSend() Completed"));
	aLog->Log(_L("More messages to send - flag successfully stored"));
	aLog->Log(_L("Set more messages to send == PASS"));
	
	return result;
	}

// -----------------------------------------------------------------------------
// TestGetMoreMessagesToSend
// 
// -----------------------------------------------------------------------------
LOCAL_C TInt TestGetMoreMessagesToSend( CStifLogger* aLog, CSmsDeliver& aDeliver)
	{
	aLog->Log(_L("---------------------------------------------"));
	aLog->Log(_L("Calling MoreMessagesToSend()"));
	TInt result = KErrNone;
	
	//TBool MoreMessagesToSend() const;
	TBool msgs = aDeliver.MoreMessagesToSend();
	
	if( msgs == EFalse)
		{
		aLog->Log(_L("MoreMessagesToSend() Completed"));
		aLog->Log(_L("Result Data:More messages to send flag: %d"), msgs);
		aLog->Log(_L("Get more messages to send == PASS"));
		}
	else
		{
		result =KErrGeneral;
		aLog->Log(_L("Get more messages to send == PASS"));
		}
			
	return result;
	}

// -----------------------------------------------------------------------------
// TestSetReplyPath
// Sets Reply Path flag
// -----------------------------------------------------------------------------
LOCAL_C TInt TestSetReplyPath( CStifLogger* aLog, CSmsDeliver& aDeliver)
	{
	aLog->Log(_L("---------------------------------------------"));
	aLog->Log(_L("Calling SetReplyPath()"));
	TInt result = KErrNone;
	
	//void SetReplyPath(TBool aReplyPath);
	aDeliver.SetReplyPath(EFalse);
	
	aLog->Log(_L("SetReplyPath() completed"));
	aLog->Log(_L("Reply path - flag successfully stored"));
	aLog->Log(_L("Set reply path == PASS"));
	
	return result;
	}

// -----------------------------------------------------------------------------
// TestGetReplyPath
// Gets Reply Path flag
// If a Reply Path exists, the recipient of the SMS can reply using the same 
// service center address
// -----------------------------------------------------------------------------
LOCAL_C TInt TestGetReplyPath( CStifLogger* aLog, CSmsDeliver& aDeliver)
	{
	aLog->Log(_L("---------------------------------------------"));
	aLog->Log(_L("Calling ReplyPath()"));
	TInt result = KErrNone;
	
	//TBool ReplyPath() const;
	TBool path = aDeliver.ReplyPath();
	
	if(path == EFalse)
		{
		aLog->Log(_L("ReplyPath() Completed"));
		aLog->Log(_L("Result data:Reply path flag: %d "), path);
		aLog->Log(_L("Get reply path == PASS"));
		}
	else
		{
		result = KErrGeneral;
		aLog->Log(_L("Get reply path == FAIL"));
		}
		
	return result;
	}

// -----------------------------------------------------------------------------
// TestSetStatusReportIndication
// -----------------------------------------------------------------------------
LOCAL_C TInt TestSetStatusReportIndication( CStifLogger* aLog, CSmsDeliver& aDeliver)
	{
	aLog->Log(_L("---------------------------------------------"));
	aLog->Log(_L("Calling SetStatusReportIndication()"));
	TInt result = KErrNone;
	
	//void SetStatusReportIndication(TBool aIndication);
	aDeliver.SetStatusReportIndication(ETrue);
	
	aLog->Log(_L("SetStatusReportIndication() Completed"));
	aLog->Log(_L("Status report flag successfully stored"));
	aLog->Log(_L("Set status report indication == PASS"));
	
	return result;
	}

// -----------------------------------------------------------------------------
// TestGetStatusReportIndication
// -----------------------------------------------------------------------------
LOCAL_C TInt TestGetStatusReportIndication( CStifLogger* aLog, CSmsDeliver& aDeliver)
	{
	aLog->Log(_L("---------------------------------------------"));
	aLog->Log(_L("Calling StatusReportIndication()"));
	TInt result = KErrNone;
	
	//TBool StatusReportIndication() const;
	TBool indication = aDeliver.StatusReportIndication();
	
	if( indication )
		{
		aLog->Log(_L("StatusReportIndication() Completed"));
		aLog->Log(_L("Result data:Status report flag: %d "), indication);
		aLog->Log(_L("Get status report indication == PASS"));
		}
	else
		{
		result = KErrGeneral;
		aLog->Log(_L("Get status report indication == FAIL"));
		}	
	
	return result;
	}
	
// -----------------------------------------------------------------------------
// TestSetServiceCenterTimeStamp
// -----------------------------------------------------------------------------
LOCAL_C TInt TestSetServiceCenterTimeStamp( CStifLogger* aLog, CSmsDeliver& aDeliver)
	{
	aLog->Log(_L("---------------------------------------------"));
	aLog->Log(_L("Calling SetServiceCenterTimeStamp()"));
	TInt result = KErrNone;
	
	const TTime time(TDateTime(2006,EJanuary,01,12,0,0,0));
	//void SetServiceCenterTimeStamp(const TTime& aTime,TInt aNumQuarterHours=0)
	aDeliver.SetServiceCenterTimeStamp(time);
	
	aLog->Log(_L("SetServiceCenterTimeStamp() Completed"));
	aLog->Log(_L("Time stamp successfully stored"));
	aLog->Log(_L("Set service center time stamp == PASS"));
	
	return result;
	}

// -----------------------------------------------------------------------------
// TestGetServiceCenterTimeStamp
// -----------------------------------------------------------------------------
LOCAL_C TInt TestGetServiceCenterTimeStampL( CStifLogger* aLog, CSmsDeliver& aDeliver)
	{
	aLog->Log(_L("---------------------------------------------"));
	aLog->Log(_L("Calling ServiceCenterTimeStamp()"));
	TInt result = KErrNone;
	
	TBuf<30> string;
	_LIT( KFormat, "%*E%*D%X%*N%*Y %1 %2 '%3 %H%:1%T%:2%S");
	TTime setTime(TDateTime(2006,EJanuary,01,12,0,0,0));
	TTime getTime;
	TInt numQuarterHrs;
	//void ServiceCenterTimeStamp(TTime& aTime,TInt& aNumQuarterHours);
	aDeliver.ServiceCenterTimeStamp(getTime, numQuarterHrs);
	
	if( getTime == setTime )
		{
		getTime.FormatL(string, KFormat);
		aLog->Log(_L("ServiceCenterTimeStamp() Completed"));
		aLog->Log(_L("Result data:Time stamp: %S"), &string);
		//aLog->Log(_L("Time zone difference: %d"),  );
		aLog->Log(_L("Get service center time stamp == PASS"));
		}
	else
		{
		result = KErrGeneral;
		aLog->Log(_L("Get service center time stamp == FAIL"));
		}
		
	return result;
	}

// -----------------------------------------------------------------------------
// TestGetProtocolIdentifier
// -----------------------------------------------------------------------------
LOCAL_C TInt TestGetProtocolIdentifier( CStifLogger* aLog, CSmsDeliver& aDeliver)
	{
	aLog->Log(_L("---------------------------------------------"));
	aLog->Log(_L("Calling ProtocolIdentifier()"));
	TInt result = KErrNone;
	
	//const TSmsProtocolIdentifier* ProtocolIdentifier() const;
	const TSmsProtocolIdentifier* id = aDeliver.ProtocolIdentifier();
	
	aLog->Log(_L("ProtocolIdentifier() Completed"));
	aLog->Log(_L("Result data:Protocol identifier: %d"), id->operator TInt());
	aLog->Log(_L("Get protocol identifier == PASS"));
	
	return result;
	}

// -----------------------------------------------------------------------------
// TestSmsDeliverDuplicateL
// Creates a copy of the object
// -----------------------------------------------------------------------------
//
LOCAL_C TInt TestSmsDeliverDuplicateL( CStifLogger* aLog, CSmsDeliver& aDeliver)
	{
	aLog->Log(_L("---------------------------------------------"));
	aLog->Log(_L("Calling SmsDeliverDuplicateL()"));
	
	TInt result = KErrNone;
	
	CSmsDeliver* dupObj = aDeliver.DuplicateL();
		
		if( dupObj )
			{
		aLog->Log(_L("TestSmsDeliverDuplicateL() completed"));
		aLog->Log(_L("Object successfully created"));
		aLog->Log(_L("SmsDeliverDuplicateL == PASS"));
		
		}
		else
			{
				result = KErrGeneral;
				aLog->Log(_L("SmsDeliverDuplicateL == FAIL"));
			}
			return result;
	}
	
// -----------------------------------------------------------------------------
// TestGetIsRPError
// Gets the Reply Path Error flag 
// -----------------------------------------------------------------------------
LOCAL_C TInt TestGetIsRPError (CStifLogger* aLog, CSmsDeliverReport& aDeliverReport)
	{
	aLog->Log( _L("--------------------------------------------------------"));
	aLog->Log( _L("Calling IsRPError()"));
	
	TInt result = KErrNone;
	
	// TBool IsRPError() const
	TBool checkres = aDeliverReport.IsRPError();
	
	if( checkres )
	{
		aLog->Log( _L("IsRPError() completed"));
		aLog->Log(_L("Result data:is RP error flag: %d"),checkres);
		aLog->Log( _L("Get is RP error == PASS"));
	}
	else
		aLog->Log( _L("Get is RP error == FAIL"));
	
	return result;
	}


// -----------------------------------------------------------------------------
// TestSetIsRPError
// Gets the Reply Path Error flag 
// -----------------------------------------------------------------------------
LOCAL_C TInt TestSetIsRPError (CStifLogger* aLog, CSmsDeliverReport& aDeliverReport)
	{
	aLog->Log( _L("--------------------------------------------------------"));
	aLog->Log( _L("Calling SetIsRPError()"));
	
	TInt result = KErrNone;
	TBool tempVar = ETrue;
	
	// inline void SetIsRPError(TBool aIsRPError)
	aDeliverReport.SetIsRPError (tempVar);
	
	aLog->Log( _L("SetIsRPError() completed"));
	aLog->Log( _L("Is RP error flag stored successfully"));
	aLog->Log( _L("Set is RP error == PASS"));
	
	return result;
	}
	

// -----------------------------------------------------------------------------
// TestGetFailureCause
// Gets the Failure Cause 
// -----------------------------------------------------------------------------
LOCAL_C TInt TestGetFailureCause (CStifLogger* aLog, CSmsDeliverReport& aDeliverReport)
	{
	aLog->Log( _L("--------------------------------------------------------"));
	aLog->Log( _L("Calling FailureCause()"));
	
	TInt result = KErrNone;
	 
	// IMPORT_C TInt FailureCause() const
	TInt checkres = aDeliverReport.FailureCause ();
	
	if(checkres == TSmsFailureCause::ESmsPIDErrorCannotReplaceShortMessage)
	{
		aLog->Log( _L("FailureCause() completed"));
		_LIT(tempVal,"result data:failure cause: %d");
		aLog->Log(tempVal,checkres);
		aLog->Log( _L("Get failure cause == PASS"));
	}
	else
		aLog->Log( _L("Get failure cause == FAIL"));
	
	return result;
	}
	
	
// -----------------------------------------------------------------------------
// TestSetFailureCause
// Sets the Failure Cause 
// -----------------------------------------------------------------------------
LOCAL_C TInt TestSetFailureCause (CStifLogger* aLog, CSmsDeliverReport& aDeliverReport)
	{
	aLog->Log( _L("--------------------------------------------------------"));
	aLog->Log( _L("Calling SetFailureCause()"));
	
	TInt result = KErrNone;
	TSmsFailureCause::TSmsFailureCauseError aFailureCause = 
	   TSmsFailureCause::ESmsPIDErrorCannotReplaceShortMessage;
	
	// IMPORT_C void SetFailureCause
	// (TSmsFailureCause::TSmsFailureCauseError aFailureCause)
	aDeliverReport.SetFailureCause (aFailureCause);
	
	if(result == KErrNone)
	{
		aLog->Log( _L("SetFailureCause() completed"));
		aLog->Log( _L("Failure cause stored successfully"));
		aLog->Log( _L("Set failure cause == PASS"));
	}
	else
		aLog->Log( _L("Set failure cause == FAIL"));
	
	return result;
	}

// -----------------------------------------------------------------------------
// TestSmsDeliverReportDuplicateL
// Creates a copy of the object
// -----------------------------------------------------------------------------
//
LOCAL_C TInt TestSmsDeliverReportDuplicateL( CStifLogger* aLog, CSmsDeliverReport& aDeliverReport)
	{
	aLog->Log(_L("---------------------------------------------"));
	aLog->Log(_L("Calling SmsDeliverReportDuplicateL()"));
	
	TInt result = KErrNone;
	
	CSmsDeliverReport* dupObj = aDeliverReport.DuplicateL();
		
		if( dupObj )
			{
		aLog->Log(_L("TestSmsDeliverReportDuplicateL() completed"));
		aLog->Log(_L("Object successfully created"));
		aLog->Log(_L("SmsDeliverReportDuplicateL == PASS"));
		
		}
		else
			{
				result = KErrGeneral;
				aLog->Log(_L("SmsDeliverReportDuplicateL == FAIL"));
			}
			return result;
	}

// -----------------------------------------------------------------------------
// TestDelete
// Deletes data from the buffer
// -----------------------------------------------------------------------------
//
LOCAL_C TInt TestDelete( CStifLogger* aLog, CSmsEditorBuffer& aBuffer)
	{
	aLog->Log(_L("---------------------------------------------"));
	aLog->Log(_L("Calling DeleteL()"));
	
	TInt position = 2;
	TInt length = 2;
	//IMPORT_C void DeleteL(TInt aPos,TInt aLength);
	TRAPD( result, aBuffer.DeleteL( position, length));
	
	if( result == KErrNone )
		{
		aLog->Log(_L("DeleteL() Completed"));
		aLog->Log(_L("Data successfully deleted"));
		aLog->Log(_L("Delete == PASS"));
		}
	else
		aLog->Log(_L("Delete == FAIL"));
	
	return result;
	}
	
// -----------------------------------------------------------------------------
// TestReset
// Resets the buffer
// -----------------------------------------------------------------------------
//
LOCAL_C TInt TestReset( CStifLogger* aLog, CSmsEditorBuffer& aBuffer)
	{
	aLog->Log(_L("---------------------------------------------"));
	aLog->Log(_L("Calling Reset()"));
	TInt result = KErrNone;
	
	//IMPORT_C void Reset();
	aBuffer.Reset();

	aLog->Log(_L("Reset() Completed"));
	aLog->Log(_L("Data successfully reseted"));
	aLog->Log(_L("Reset == PASS"));
	return result;
	}
	
// -----------------------------------------------------------------------------
// TestExtract
// Extracts buffer data to a descriptor
// -----------------------------------------------------------------------------
//
LOCAL_C TInt TestExtract( CStifLogger* aLog, CSmsEditorBuffer& aBuffer)
	{
	aLog->Log(_L("---------------------------------------------"));
	aLog->Log(_L("Calling Extract()"));
	TInt result = KErrNone;
	
	TBuf<24> buffer;
	TInt position = 2;
	TInt length = 6;
	//IMPORT_C void Extract(TDes& aBuf,TInt aPos,TInt aLength) const;
	aBuffer.Extract(buffer, position, length);
	
	aLog->Log(_L("Extract() Completed"));
	aLog->Log(_L("Data successfully extracted"));
	aLog->Log(_L("Extract == PASS"));
	return result;
	}
	
// -----------------------------------------------------------------------------
// TestInsert
// Inserts data into the buffer
// -----------------------------------------------------------------------------
//
LOCAL_C TInt TestInsert( CStifLogger* aLog, CSmsEditorBuffer& aBuffer)
	{
	aLog->Log(_L("---------------------------------------------"));
	aLog->Log(_L("Calling InsertL()"));
	
	TBufC<24> buffer(KTestBuffer1);
	TInt position = 0;
	//IMPORT_C void InsertL(TInt aPos,const TDesC& aBuf);
	TRAPD( result, aBuffer.InsertL(position, buffer));
	
	if( result == KErrNone )
		{
		aLog->Log(_L("InsertL() Completed"));
		aLog->Log(_L("Data successfully Inserted"));
		aLog->Log(_L("Delete == PASS"));
		}
	else
		aLog->Log(_L("Delete == FAIL"));
	
	return result;
	}
	 
// -----------------------------------------------------------------------------
// TestGetLength
// Gets the amount of space currently used in the buffer.
// -----------------------------------------------------------------------------
//
LOCAL_C TInt TestGetLength( CStifLogger* aLog, CSmsEditorBuffer& aBuffer)
	{
	aLog->Log(_L("---------------------------------------------"));
	aLog->Log(_L("Calling Length()"));
	TInt result = KErrNone;
		
	//IMPORT_C TInt Length() const;
	TInt length = aBuffer.Length();
	
	if(length == 22) 
		{
		aLog->Log(_L("Length() Completed"));
		aLog->Log(_L("Result data: Length: %d"), length);
		aLog->Log(_L("Length == PASS"));	
		}
	else
		{
		result = KErrGeneral;
		aLog->Log(_L("Length == FAIL"));
		}
		
	return result;
	}

// -----------------------------------------------------------------------------
// TestGetIdentifier
// 
// -----------------------------------------------------------------------------
LOCAL_C TInt TestGetIdentifier( CStifLogger* aLog, CSmsInformationElement& aElement)
	{
	aLog->Log(_L("---------------------------------------------"));
	aLog->Log(_L("Calling Identifier()"));
	TInt result = KErrNone;
		
	//TSmsInformationElementIdentifier Identifier() const;
	CSmsInformationElement::TSmsInformationElementIdentifier id = aElement.Identifier();
	
	aLog->Log(_L("Identifier() Completed"));
	aLog->Log(_L("Result data: Identifier: %d"),id);
	aLog->Log(_L("Get identifier == PASS"));
	
	return result;
	}

// -----------------------------------------------------------------------------
// TestGetDataTPtr8
// 
// -----------------------------------------------------------------------------
LOCAL_C TInt TestGetDataTPtr8( CStifLogger* aLog, CSmsInformationElement& aElement)
	{
	aLog->Log(_L("---------------------------------------------"));
	aLog->Log(_L("Calling TPtr8 Data()"));
	TInt result = KErrNone;
	
	//TPtr8 Data();
	TPtr8 data = aElement.Data();
	
	aLog->Log(_L("TPtr8 Data() Completed"));
	aLog->Log(_L("Result data: Data: %s"), data.Ptr());
	aLog->Log(_L("Get data (TPtr8) == PASS"));
	
	return result;
	}

// -----------------------------------------------------------------------------
// TestGetDataTDesC8
// 
// -----------------------------------------------------------------------------
LOCAL_C TInt TestGetDataTDesC8( CStifLogger* aLog, CSmsInformationElement& aElement)
	{
	aLog->Log(_L("---------------------------------------------"));
	aLog->Log(_L("Calling TDesC8& Data()"));
	TInt result = KErrNone;
	
	//const TDesC8& Data() const;	
	const TBufC8<32> data = aElement.Data();
		
	aLog->Log(_L("TDesC8& Data() Completed"));
	aLog->Log(_L("Result data: Data: %s"), data.Ptr());
	aLog->Log(_L("Get data (TDesC8) == PASS"));
	
	return result;
	}

// -----------------------------------------------------------------------------
// TestConstructionSmsPDUType
// 
// -----------------------------------------------------------------------------
LOCAL_C TInt TestConstructionTGsmSms_MessageL(CStifLogger* aLog)	
	{
	aLog->Log(_L("---------------------------------------------"));
	aLog->Log(_L("Calling CSmsMessage::NewL(TGsmSms)"));
	TInt result = KErrNone;
	
	RFs session;
	User::LeaveIfError(session.Connect());
	TGsmSms sms;
	CSmsBuffer* buffer = CSmsBuffer::NewL();
	CCnvCharacterSetConverter* characterSetConverter = CCnvCharacterSetConverter::NewL(); 
	//static CSmsPDU* NewL(TSmsPDUType aType,CCnvCharacterSetConverter& aCharacterSetConverter,RFs& aFs,TBool aIsRPError=EFalse);
	CSmsPDU* PDU = CSmsPDU::NewL(CSmsPDU::ESmsDeliver, *characterSetConverter, session);
	PDU->EncodeMessagePDUL( sms );
	
	//static CSmsMessage* NewL(RFs& aFs, const TGsmSms& aGsmSms,CSmsBufferBase* aBuffer, 
	//	TBool aIsRPError=EFalse,TBool aIsMobileTerminated=ETrue);
	CSmsMessage* message = CSmsMessage::NewL(session, sms, buffer);
	CleanupStack::PushL(message);
	
	if(message == NULL )
	   result = KErrGeneral;
	
	CleanupStack::PopAndDestroy();
	session.Close();
   	return result;
	}
	
// -----------------------------------------------------------------------------
// TestGetType
// 
// -----------------------------------------------------------------------------
LOCAL_C TInt TestGetType(CStifLogger* aLog,CSmsMessage& aMessage)
	{
	aLog->Log(_L("---------------------------------------------"));
	aLog->Log(_L("Calling Type()"));
	TInt result = KErrNone;
	
	//CSmsPDU::TSmsPDUType Type() const;
	CSmsPDU::TSmsPDUType type = aMessage.Type();
	
	if( type == CSmsPDU::ESmsDeliver )
		{
		aLog->Log(_L("Type() Completed"));
		aLog->Log(_L("Result data: Type: %d"), type);
		aLog->Log(_L("Get type == PASS"));	
		}
	else
		{
		result = KErrGeneral;
		aLog->Log(_L("Get type == FAIL"));	
		}
	
	return result;
	}
	
// -----------------------------------------------------------------------------
// TestGetIsComplete
// 
// -----------------------------------------------------------------------------
LOCAL_C TInt TestGetIsComplete(CStifLogger* aLog,CSmsMessage& aMessage)
	{
	aLog->Log(_L("---------------------------------------------"));
	aLog->Log(_L("Calling IsComplete()"));
	TInt result = KErrNone;
	
	//TBool IsComplete() const;
	TBool res = aMessage.IsComplete();
	
	aLog->Log(_L("IsComplete() Completed"));
	aLog->Log(_L("Result data: Is completed: %d"), res);
	aLog->Log(_L("Get is complete == PASS"));
	
	return result;
	}
// -----------------------------------------------------------------------------
// TestIsDecoded
// 
// -----------------------------------------------------------------------------
LOCAL_C TInt TestIsDecoded(CStifLogger* aLog,CSmsMessage& aMessage)
	{
	aLog->Log(_L("---------------------------------------------"));
	aLog->Log(_L("Calling IsDecoded()"));
	TInt result = KErrNone;
	
	//TBool IsDecoded() const
	TBool res = aMessage.IsDecoded();
	
	aLog->Log(_L("IsDecoded() Completed"));
	aLog->Log(_L("Result data: IsDecoded: %d"), res);
	aLog->Log(_L("Get is decoded == PASS"));
	
	return result;
	}
	
// -----------------------------------------------------------------------------
// TestSetStorage
// 
// -----------------------------------------------------------------------------
LOCAL_C TInt TestSetStorage(CStifLogger* aLog,CSmsMessage& aMessage)
	{
	aLog->Log(_L("---------------------------------------------"));
	aLog->Log(_L("Calling SetStorage()"));
	TInt result = KErrNone;
	
	//void SetStorage(TMobileSmsStorage aStorage)
	CSmsMessage::TMobileSmsStorage storage = CSmsMessage::ESmsNoStorage;
	aMessage.SetStorage(storage);
	
	aLog->Log(_L("SetStorage() Completed"));	
	aLog->Log(_L("Storage successfully set"));	
	aLog->Log(_L("Set storage == PASS"));	

	return result;
	}
	
// -----------------------------------------------------------------------------
// TestGetStorage
// 
// -----------------------------------------------------------------------------
LOCAL_C TInt TestGetStorage(CStifLogger* aLog,CSmsMessage& aMessage)
	{
	aLog->Log(_L("---------------------------------------------"));
	aLog->Log(_L("Calling Storage()"));
	TInt result = KErrNone;
	
	//TMobileSmsStorage Storage() const
	CSmsMessage::TMobileSmsStorage storage = aMessage.Storage();

	if( storage == CSmsMessage::ESmsNoStorage)
		{
		aLog->Log(_L("Storage() Completed"));	
		aLog->Log(_L("Result data: storage: %d"), storage);	
		aLog->Log(_L("Get storage == PASS"));	
		}
	else
		{
		result = KErrGeneral;
		aLog->Log(_L("Get storage == FAIL"));	
		}
	
	return result;
	}
	
// -----------------------------------------------------------------------------
// TestSetStatus
// 
// -----------------------------------------------------------------------------
LOCAL_C TInt TestSetStatus(CStifLogger* aLog,CSmsMessage& aMessage)
	{
	aLog->Log(_L("---------------------------------------------"));
	aLog->Log(_L("Calling SetStatus()"));
	TInt result = KErrNone;
	
	//void SetStatus(NMobileSmsStore::TMobileSmsStoreStatus aStatus)
	NMobileSmsStore::TMobileSmsStoreStatus status = NMobileSmsStore::EStoredMessageUnknownStatus;
	aMessage.SetStatus(status);
	
	aLog->Log(_L("Status() Completed"));	
	aLog->Log(_L("Result data: status: %d"), status);	
	aLog->Log(_L("Get status == PASS"));	
	
	return result;
	}
	
// -----------------------------------------------------------------------------
// TestGetStatus
// 
// -----------------------------------------------------------------------------
LOCAL_C TInt TestGetStatus(CStifLogger* aLog,CSmsMessage& aMessage)
	{
	aLog->Log(_L("---------------------------------------------"));
	aLog->Log(_L("Calling Status()"));
	TInt result = KErrNone;
	
	//NMobileSmsStore::TMobileSmsStoreStatus Status() const
	NMobileSmsStore::TMobileSmsStoreStatus status = aMessage.Status();
	
	if( status == NMobileSmsStore::EStoredMessageUnknownStatus )
		{
		aLog->Log(_L("Status() Completed"));	
		aLog->Log(_L("Result data: status: %d"), status);	
		aLog->Log(_L("Get status == PASS"));	
		}
	else
		{
		result = KErrGeneral;
		aLog->Log(_L("Get status == FAIL"));
		}

	return result;
	}
	
// -----------------------------------------------------------------------------
// TestSetLogServerId
// 
// -----------------------------------------------------------------------------
LOCAL_C TInt TestSetLogServerId(CStifLogger* aLog,CSmsMessage& aMessage)
	{
	aLog->Log(_L("---------------------------------------------"));
	aLog->Log(_L("Calling SetLogServerId()"));
	TInt result = KErrNone;
	
	//void SetLogServerId(TInt aId)
	TInt id = 1;
	aMessage.SetLogServerId(id);
	
	aLog->Log(_L("SetLogServerId() completed"));	
	aLog->Log(_L("Log server id successfully stored"));	
	aLog->Log(_L("Set log server id == PASS"));	

	return result;
	}
	
// -----------------------------------------------------------------------------
// TestGetLogServerId
// 
// -----------------------------------------------------------------------------
LOCAL_C TInt TestGetLogServerId(CStifLogger* aLog,CSmsMessage& aMessage)
	{
	aLog->Log(_L("---------------------------------------------"));
	aLog->Log(_L("Calling LogServerId()"));
	TInt result = KErrNone;
	
	//TInt LogServerId() const
	TInt id = aMessage.LogServerId();
	
	if( id == 1)
		{
		aLog->Log(_L("LogServerId() completed"));	
		aLog->Log(_L("result data: log server id: %d"), id);	
		aLog->Log(_L("Get log server id == PASS"));	
		}
	else
		{
		result = KErrGeneral;
		aLog->Log(_L("Get log server id == FAIL"));	
		}
	
	return result;
	}
	
// -----------------------------------------------------------------------------
// TestSetTime
// 
// -----------------------------------------------------------------------------
LOCAL_C TInt TestSetTime(CStifLogger* aLog,CSmsMessage& aMessage)
	{
	aLog->Log(_L("---------------------------------------------"));
	aLog->Log(_L("Calling SetTime()"));
	TInt result = KErrNone;
	
	TTime time(TDateTime(2006,EJanuary,01,12,0,0,0));
	//void SetTime(const TTime &aTime)
	aMessage.SetTime(time);
	
	aLog->Log(_L("SetTime() completed"));	
	aLog->Log(_L("Time successfully stored"));	
	aLog->Log(_L("Set time == PASS"));	

	return result;
	}
	
// -----------------------------------------------------------------------------
// TestGetTime
// 
// -----------------------------------------------------------------------------
LOCAL_C TInt TestGetTimeL(CStifLogger* aLog,CSmsMessage& aMessage)
	{
	aLog->Log(_L("---------------------------------------------"));
	aLog->Log(_L("Calling Time()"));
	TInt result = KErrNone;
	
	TBuf<30> string;
	_LIT( KFormat, "%*E%*D%X%*N%*Y %1 %2 '%3 %H%:1%T%:2%S");
	TTime setTime(TDateTime(2006,EJanuary,01,12,0,0,0));
	//const TTime &Time() const
	TTime time = aMessage.Time();
	
	if( time == setTime )
		{
		time.FormatL(string, KFormat);
		aLog->Log(_L("Time() completed"));	
		aLog->Log(_L("result data: time: %S"), &string);	
		aLog->Log(_L("Get time == PASS"));	
		}
	else
		{
		result = KErrGeneral;
		aLog->Log(_L("Get time == FAIL"));			
		}

	return result;
	}
	
// -----------------------------------------------------------------------------
// TestGetSMSPDU
// 
// -----------------------------------------------------------------------------
LOCAL_C TInt TestGetSMSPduL(CStifLogger* aLog,CSmsMessage& aMessage)
	{
	aLog->Log(_L("---------------------------------------------"));
	aLog->Log(_L("Calling SmsPduL()"));
	TInt result = KErrNone;
	
	//CSmsPDU &SmsPduL()
	CSmsPDU& smspdu = aMessage.SmsPDU();
	
	aLog->Log(_L("SmsPduL() completed"));	
	aLog->Log(_L("result data: PDU type: %d"), smspdu.Type());	
	aLog->Log(_L("Get SMS PDU == PASS"));	

	return result;
	}
	
// -----------------------------------------------------------------------------
// TestGetSMSPDUConst
// 
// -----------------------------------------------------------------------------
LOCAL_C TInt TestGetSMSPDUConst(CStifLogger* aLog,CSmsMessage& aMessage)
	{
	aLog->Log(_L("---------------------------------------------"));
	aLog->Log(_L("Calling SmsPduL() const"));
	TInt result = KErrNone;
	
	//const CSmsPDU &SmsPduL() const
	const CSmsPDU& smspdu = aMessage.SmsPDU();
	
	aLog->Log(_L("SmsPduL()  const completed"));	
	aLog->Log(_L("result data: PDU type: %d"), smspdu.Type());	
	aLog->Log(_L("Get SMS PDU == PASS"));	

	return result;
	}
	
// -----------------------------------------------------------------------------
// TestSetSeviceCenterAddress
// 
// -----------------------------------------------------------------------------
LOCAL_C TInt TestSetServiceCenterAddress(CStifLogger* aLog,CSmsMessage& aMessage)
	{
	aLog->Log(_L("---------------------------------------------"));
	aLog->Log(_L("Calling SetServiceCenterAddressL()"));
	
	TPtrC serviceCenter = _L("nokia house");
	//void SetServiceCenterAddressL(const TDesC &aAddress)
	TRAPD( result,aMessage.SetServiceCenterAddressL(serviceCenter));
	
	if( result == KErrNone )
		{
		aLog->Log(_L("SetServiceCenterAddressL() completed"));
		aLog->Log(_L("Service center address successfully stored"));
		aLog->Log(_L("Set service center address == PASS"));
		}
	else
		{
		aLog->Log(_L("Set service center address == FAIL"));
		}	
	
	return result;
	}
	
// -----------------------------------------------------------------------------
// TestGetSeviceCenterAddress
// 
// -----------------------------------------------------------------------------
LOCAL_C TInt TestGetServiceCenterAddress(CStifLogger* aLog,CSmsMessage& aMessage)
	{
	aLog->Log(_L("---------------------------------------------"));
	aLog->Log(_L("Calling ServiceCenterAddress()"));
	TInt result = KErrNone;
	
	TPtrC setServiceCenter = _L("nokia house");
	//TPtrC ServiceCenterAddress() const
	TPtrC serviceCenter = aMessage.ServiceCenterAddress();
	
	if( !setServiceCenter.Compare(serviceCenter) )
		{
		aLog->Log(_L("ServiceCenterAddress() completed"));
		aLog->Log(_L("result data: address: %s"), serviceCenter.Ptr());
		aLog->Log(_L("Get service center address == PASS"));
		}
	else
		{
		aLog->Log(_L("Get service center address == FAIL"));
		}
	
	return result;
	}
	
// -----------------------------------------------------------------------------
// TestSetParsedServiceCenterAddress
// 
// -----------------------------------------------------------------------------
LOCAL_C TInt TestSetParsedServiceCenterAddress(CStifLogger* aLog,CSmsMessage& aMessage)
	{
	aLog->Log(_L("---------------------------------------------"));
	aLog->Log(_L("Calling SetParsedServiceCenterAddressL()"));
	
	//void SetParsedServiceCenterAddressL(const TGsmSmsTelNumber &aParsedAddress);
	TGsmSmsTelNumber telNumber;
	telNumber.iTelNumber = _L("919886757059");
	TRAPD( result, aMessage.SetParsedServiceCenterAddressL(telNumber));
	
	if( result == KErrNone )
		{
		aLog->Log(_L("SetParsedServiceCenterAddressL() completed"));
		aLog->Log(_L("Parsed address successfully stored"));
		aLog->Log(_L("Set parsed service center address == PASS"));
		}
	else
		{
		aLog->Log(_L("Set parsed service center address == FAIL"));		
		}

	return result;
	}
	
// -----------------------------------------------------------------------------
// TestGetParsedServiceCenterAddress
// 
// -----------------------------------------------------------------------------
LOCAL_C TInt TestGetParsedServiceCenterAddress(CStifLogger* aLog,CSmsMessage& aMessage)
	{
	aLog->Log(_L("---------------------------------------------"));
	aLog->Log(_L("Calling ParsedServiceCenterAddress()"));
	TInt result = KErrNone;
	
	TGsmSmsTelNumber setTelNumber;
	setTelNumber.iTelNumber = _L("919886757059");
	//void ParsedServiceCenterAddress(TGsmSmsTelNumber &aParsedAddress) const
	TGsmSmsTelNumber telNumber;
	aMessage.ParsedServiceCenterAddress(telNumber);
	
	if(setTelNumber.iTelNumber == telNumber.iTelNumber)
		{
		aLog->Log(_L("ParsedServiceCenterAddress() completed"));
		aLog->Log(_L("result data: parsed address: %s"), telNumber.iTelNumber.Ptr());
		aLog->Log(_L("Get parsed service center address == PASS"));
		}
	else
		{
		aLog->Log(_L("Get parsed service center address == FAIL"));
		}
	
	return result;
	}
	
// -----------------------------------------------------------------------------
// TestSetToFromAddress
// 
// -----------------------------------------------------------------------------
LOCAL_C TInt TestSetToFromAddress(CStifLogger* aLog,CSmsMessage& aMessage)
	{
	aLog->Log(_L("---------------------------------------------"));
	aLog->Log(_L("Calling SetToFromAddressL()"));
	
	TBufC<12> address(_L("nokia house"));
	
	//void SetToFromAddressL(const TDesC &aAddress)
	TRAPD( result, aMessage.SetToFromAddressL(address));
	
	if( result == KErrNone )
		{
		aLog->Log(_L("SetToFromAddressL() completed"));
		aLog->Log(_L("To from addresses successfully stored"));
		aLog->Log(_L("Set to from address == PASS"));
		}
	else
		{
		aLog->Log(_L("Set to from address == FAIL"));		
		}
	
	return result;
	}
	
// -----------------------------------------------------------------------------
// TestGetToFromAddress
// 
// -----------------------------------------------------------------------------
LOCAL_C TInt TestGetToFromAddress(CStifLogger* aLog,CSmsMessage& aMessage)
	{
	aLog->Log(_L("---------------------------------------------"));
	aLog->Log(_L("Calling ToFromAddress()"));
	TInt result = KErrNone;
	
	TBufC<12> address(_L("nokia house"));
	//TPtrC ToFromAddress() const
	TPtrC addressPtr = aMessage.ToFromAddress();
		
	if( !addressPtr.Compare(address) )
		{
		aLog->Log(_L("ToFromAddress() completed"));
		aLog->Log(_L("result data: to from address: %s"), addressPtr.Ptr());
		aLog->Log(_L("Get to from address ==  PASS"));
		}
	else
		{
		result = KErrGeneral;
		aLog->Log(_L("Get to from address ==  FAIL"));
		}
	
	return result;
	}
	
// -----------------------------------------------------------------------------
// TestSetParsedToFromAddress
// 
// -----------------------------------------------------------------------------
LOCAL_C TInt TestSetParsedToFromAddress(CStifLogger* aLog,CSmsMessage& aMessage)
	{
	aLog->Log(_L("---------------------------------------------"));
	aLog->Log(_L("Calling SetParsedToFromAddressL()"));
	
	//void SetParsedToFromAddressL(const TGsmSmsTelNumber &aParsedAddress)
	TGsmSmsTelNumber address;
	address.iTelNumber = _L("919886757059");
	TRAPD( result, aMessage.SetParsedToFromAddressL(address));

	if( result == KErrNone )
		{
		aLog->Log(_L("SetParsedToFromAddressL() completed"));
		aLog->Log(_L("Parsed to from addresses successfully stored"));
		aLog->Log(_L("Set to from address == PASS"));
		}
	else
		{
		aLog->Log(_L("Set to from address == FAIL"));		
		}
	
	return result;
	}
	
// -----------------------------------------------------------------------------
// TestGetParsedToFromAddress
// 
// -----------------------------------------------------------------------------
LOCAL_C TInt TestGetParsedToFromAddress(CStifLogger* aLog,CSmsMessage& aMessage)
	{
	aLog->Log(_L("---------------------------------------------"));
	aLog->Log(_L("Calling ParsedToFromAddress()"));
	TInt result = KErrNone;
	
	TGsmSmsTelNumber setAddress;
	setAddress.iTelNumber = _L("919886757059");
	//void ParsedToFromAddress(TGsmSmsTelNumber &aParsedAddress) const
	TGsmSmsTelNumber address;
	aMessage.ParsedToFromAddress(address);
	
	if(setAddress.iTelNumber == address.iTelNumber)
		{
		aLog->Log(_L("ParsedToFromAddress() completed"));
		aLog->Log(_L("result data: parsed to from address: %s"), address.iTelNumber.Ptr());
		aLog->Log(_L("Get to from address ==  PASS"));
		}
	else
		{
		aLog->Log(_L("Get to from address ==  FAIL"));
		}
		
	return result;
	}
	
// -----------------------------------------------------------------------------
// TestInternalizeWithoutBuffer
// 
// -----------------------------------------------------------------------------
LOCAL_C TInt TestInternalizeWithoutBufferL(CStifLogger* aLog,CSmsMessage& aMessage)
	{
	aLog->Log(_L("---------------------------------------------"));
	aLog->Log(_L("Calling InternalizeWithoutBufferL()"));

	RFs session;
    User::LeaveIfError(session.Connect());
	TBufC<64> storename = _L("C:\\SMSGSMUtilities_CSmsMessage");
    RFileReadStream read;
		
	TInt erro = read.Open(session, storename, EFileRead);
	
	//void InternalizeWithoutBufferL(RReadStream &aStream)
	TRAPD( result, aMessage.InternalizeWithoutBufferL(read));
	
	read.Close();
	
	//now delete the store
	TInt err = session.Delete(storename);
	if(err != KErrNone) 
		{
		RDebug::Print(_L("Error %d deleting \"%S\" file.\n"), err, &storename);
		}

	session.Close();
	if( result == KErrNone )	
		{
		aLog->Log(_L("InternalizeWithoutBufferL() completed"));
		aLog->Log(_L("Data internalized successfully"));
		aLog->Log(_L("Internalize without buffer == PASS"));
		}
	else
		aLog->Log(_L("Internalize without buffer == FAIL"));
	
	return result;
	}
	
// -----------------------------------------------------------------------------
// TestExternalizeWithoutBufferL
// 
// -----------------------------------------------------------------------------
LOCAL_C TInt TestExternalizeWithoutBufferL(CStifLogger* aLog,CSmsMessage& aMessage)
	{
	aLog->Log(_L("---------------------------------------------"));
	aLog->Log(_L("Calling ExternalizeWithoutBufferL()"));

	RFs session;
    User::LeaveIfError(session.Connect());
	TBufC<64> storename = _L("C:\\SMSGSMUtilities_CSmsMessage");
	RFileWriteStream write;
	
	write.Create(session, storename, EFileWrite);
	TInt err = write.Open(session, storename, EFileWrite);
	
	//void ExternalizeWithoutBufferL(RWriteStream &aStream) const
	TRAPD( result, aMessage.ExternalizeWithoutBufferL(write));
	
	write.CommitL();
	write.Close();
	
	session.Close();
	if( result == KErrNone )
		{
		aLog->Log(_L("ExternalizeWithoutBufferL() completed"));
		aLog->Log(_L("Data externalized successfully"));
		aLog->Log(_L("Externalize without buffer == PASS"));
		}
	else
		aLog->Log(_L("Externalize without buffer == FAIL"));
	
	return result;
	}
	
// -----------------------------------------------------------------------------
// TestInternalize
// 
// -----------------------------------------------------------------------------
LOCAL_C TInt TestInternalizeL(CStifLogger* aLog,CSmsMessage& aMessage)
	{
	aLog->Log(_L("---------------------------------------------"));
	aLog->Log(_L("Calling InternalizeL()"));
	
	RFs session;
    User::LeaveIfError(session.Connect());
	TBufC<64> storename = _L("C:\\SMSGSMUtilities_CSmsMessage");
    RFileReadStream read;
		
	TInt erro = read.Open(session, storename, EFileRead);
	
	//IMPORT_C void InternalizeL(RReadStream &aStream)
	TRAPD( result, aMessage.InternalizeL( read ));
	
	read.Close();
	
	//now delete the store
	TInt err = session.Delete(storename);
	if(err != KErrNone) 
		{
		RDebug::Print(_L("Error %d deleting \"%S\" file.\n"), err, &storename);
		}

	session.Close();
	if( result == KErrNone )	
		{
		aLog->Log(_L("InternalizeL() completed"));
		aLog->Log(_L("Data internalized successfully"));
		aLog->Log(_L("Internalize == PASS"));
		}
	else
		aLog->Log(_L("Internalize == FAIL"));
	
	return result;
	
	}
	
// -----------------------------------------------------------------------------
// TestExternalize
// 
// -----------------------------------------------------------------------------
LOCAL_C TInt TestExternalizeL(CStifLogger* aLog,CSmsMessage& aMessage)
	{
	aLog->Log(_L("---------------------------------------------"));
	aLog->Log(_L("Calling ExternalizeL()"));
	
	RFs session;
    User::LeaveIfError(session.Connect());
	TBufC<64> storename = _L("C:\\SMSGSMUtilities_CSmsMessage");
	RFileWriteStream write;
	
	write.Create(session, storename, EFileWrite);
	TInt err = write.Open(session, storename, EFileWrite);
	
	//IMPORT_C void ExternalizeL(RWriteStream& aStream) const;
	TRAPD( result, aMessage.ExternalizeL( write ));
	
	write.CommitL();
	write.Close();
	
	session.Close();
	if( result == KErrNone )
		{
		aLog->Log(_L("ExternalizeL() completed"));
		aLog->Log(_L("Data externalized successfully"));
		aLog->Log(_L("Externalize == PASS"));
		}
	else
		aLog->Log(_L("Externalize == FAIL"));
	
	return result;
	}
	
// -----------------------------------------------------------------------------
// TestGetBuffer
// 
// -----------------------------------------------------------------------------
LOCAL_C TInt TestGetBufferL(CStifLogger* aLog,CSmsMessage& aMessage)
	{
	aLog->Log(_L("---------------------------------------------"));
	aLog->Log(_L("Calling Buffer()"));
	TInt result = KErrNone;
	
	//CSmsBufferBase &Buffer()
	CSmsBuffer& buffer = STATIC_CAST(CSmsBuffer&, aMessage.Buffer());
	HBufC* buf = HBufC::NewL(buffer.Length());
	TPtr bufPtr = buf->Des();
	
	aLog->Log(_L("Buffer() completed"));
	buffer.Extract(bufPtr, 0, buffer.Length());
	aLog->Log(_L("result data: buffer: %s"), buf);
	aLog->Log(_L("Get buffer ==  PASS"));
	
	return result;
	}
	
// -----------------------------------------------------------------------------
// TestGetBufferConst
// 
// -----------------------------------------------------------------------------
LOCAL_C TInt TestGetBufferConstL(CStifLogger* aLog,CSmsMessage& aMessage)
	{
	aLog->Log(_L("---------------------------------------------"));
	aLog->Log(_L("Calling const Buffer()"));
	TInt result = KErrNone;
	
	//const CSmsBufferBase &Buffer() const
	const CSmsBuffer& buffer = STATIC_CAST(const CSmsBuffer&, aMessage.Buffer());
	HBufC* buf = HBufC::NewL(buffer.Length());
	TPtr bufPtr = buf->Des();
		
	aLog->Log(_L("const Buffer() completed"));
	buffer.Extract(bufPtr, 0, buffer.Length());
	aLog->Log(_L("result data: buffer: %s"), buf);
	aLog->Log(_L("Get buffer const ==  PASS"));
	
	return result;
	}
	
// -----------------------------------------------------------------------------
// TestGetTextPresent
// 
// -----------------------------------------------------------------------------
LOCAL_C TInt TestGetTextPresent(CStifLogger* aLog,CSmsMessage& aMessage)
	{
	aLog->Log(_L("---------------------------------------------"));
	aLog->Log(_L("Calling TextPresent()"));
	TInt result = KErrNone;
	
	//TBool TextPresent() const
	TBool res = aMessage.TextPresent();
	
	aLog->Log(_L("TextPresent() completed"));
	aLog->Log(_L("result data: text present: %d"), res);
	aLog->Log(_L("Get text present ==  PASS"));
	
	return result;
	}
	
// -----------------------------------------------------------------------------
// TestGetNumberOfMessagePDU
// 
// -----------------------------------------------------------------------------
LOCAL_C TInt TestGetNumberOfMessagePduL(CStifLogger* aLog,CSmsMessage& aMessage)
	{
	aLog->Log(_L("---------------------------------------------"));
	aLog->Log(_L("Calling NumMessagePDUsL()"));
	
	//TInt NumMessagePDUsL()
	TInt res = 0;
	TRAPD(result, res = aMessage.NumMessagePDUsL());
	if(result != KErrNone)
		{
		aLog->Log(_L("Leave occured: error code: %d"), result);
		}
	else
		{
		aLog->Log(_L("NumMessagePDUsL() completed"));
		aLog->Log(_L("result data: number of PDUs: %d"), res);
		aLog->Log(_L("Get number of message PDUs ==  PASS"));
		}
	return result;
	}
	
// -----------------------------------------------------------------------------
// TestGetMaxLength
// 
// -----------------------------------------------------------------------------
LOCAL_C TInt TestGetMaxLength(CStifLogger* aLog,CSmsMessage& aMessage)
	{
	aLog->Log(_L("---------------------------------------------"));
	aLog->Log(_L("Calling MaxMessageLength()"));
	TInt result = KErrNone;
	
	//TInt MaxMessageLength()
	TInt res = aMessage.MaxMessageLength();
	
	aLog->Log(_L("MaxMessageLength() completed"));
	aLog->Log(_L("result data: max message length: %d"), res);
	aLog->Log(_L("Get max message length ==  PASS"));

	return result;
	}
	
// -----------------------------------------------------------------------------
// TestGetMessageLength
// 
// -----------------------------------------------------------------------------
LOCAL_C TInt TestGetMessageLength(CStifLogger* aLog,CSmsMessage& aMessage)
	{
	aLog->Log(_L("---------------------------------------------"));
	aLog->Log(_L("Calling MessageLengthL()"));
	
	//TInt MessageLengthL()
	TInt res = 0;
	TRAPD(result, res = aMessage.MessageLengthL());
	if(result != KErrNone)
		{
		aLog->Log(_L("Leave occured: error code: %d"), result);
		}
	else
		{
		aLog->Log(_L("MessageLengthL() completed"));
		aLog->Log(_L("result data: message length: %d"), res);
		aLog->Log(_L("Get message length ==  PASS"));
		}
		
	return result;
	}
	
// -----------------------------------------------------------------------------
// TestOptimizeSettings
// 
// -----------------------------------------------------------------------------
LOCAL_C TInt TestOptimizeSettings(CStifLogger* aLog,CSmsMessage& aMessage)
	{
	aLog->Log(_L("---------------------------------------------"));
	aLog->Log(_L("Calling OptimizeSettingsL()"));
	
	//void OptimizeSettingsL(TInt aOptions)
	TRAPD( result, aMessage.OptimizeSettingsL(CSmsMessage::ESmsFlagOptimizeAlphabet));	
	if(result != KErrNone)
		{
		aLog->Log(_L("Leave occured: error code: %d"), result);
		}
	else
		{
		aLog->Log(_L("OptimizeSettingsL() completed"));
		aLog->Log(_L("User data settings successfully optimized"));
		aLog->Log(_L("Optimize settings == PASS"));
		}
	
	return result;
	}
	
// -----------------------------------------------------------------------------
// TestGetIsSupported
// 
// -----------------------------------------------------------------------------
LOCAL_C TInt TestGetIsSupported(CStifLogger* aLog,CSmsMessage& aMessage)
	{
	aLog->Log(_L("---------------------------------------------"));
	aLog->Log(_L("Calling IsSupportedL()"));
	
	//TBool IsSupportedL(const TDesC &aDes, TInt &aNumberOfUnconvertibleCharacters, TInt &aIndexOfFirstUnconvertibleCharacter)
	TBufC<50> testBuffer = _L("Nokia$123has*some%employees");
	TInt numUnconvertable;
	TInt posFirstUnconvertable;
	TBool res = 0;
	TRAPD( result, res = aMessage.IsSupportedL(testBuffer, numUnconvertable, posFirstUnconvertable));
	
	if(result != KErrNone)
		{
		aLog->Log(_L("Leave occured: error code: %d"), result);
		}
	else
		{
		aLog->Log(_L("IsSupportedL() completed"));
		aLog->Log(_L("result data: is supported: %d"), res);
		aLog->Log(_L("Get is supported == PASS"));
		}
	return result;	
	}


// -----------------------------------------------------------------------------
// TestEncodeMessagePDU
// 
// -----------------------------------------------------------------------------
LOCAL_C TInt TestEncodeMessagePDUL(CStifLogger* aLog,CSmsMessage& aMessage)
	{
	aLog->Log(_L("---------------------------------------------"));
	aLog->Log(_L("Calling EncodeMessagePDUsL()"));
	
	CArrayFix<TGsmSms>* singlePDU = new (ELeave) CArrayFixFlat<TGsmSms>(10);
	aMessage.EncodeIntoSinglePDUL(*singlePDU);
	CArrayFix<TGsmSms>* encodedPDU = new (ELeave) CArrayFixFlat<TGsmSms>(10);
	//EncodeMessagePDUsL(CArrayFix< TGsmSms > &aSmsArray, TInt aReference=0)
	TRAPD( result, aMessage.EncodeMessagePDUsL(*encodedPDU));	
	if(result != KErrNone)
		{
		aLog->Log(_L("Leave occured: error code: %d"), result);
		}
	else
		{
		aLog->Log(_L("EncodeMessagePDUsL() completed"));
		aLog->Log(_L("Message PDUs encoded successfully"));
		aLog->Log(_L("Encode message PDUs == PASS"));
		}
		
	delete singlePDU;
	delete encodedPDU;
	return result;	
	}
	
// -----------------------------------------------------------------------------
// TestDecodeMessagePDU
// 
// -----------------------------------------------------------------------------
LOCAL_C TInt TestDecodeMessagePDUL(CStifLogger* aLog,CSmsMessage& aMessage)
	{
	aLog->Log(_L("---------------------------------------------"));
	aLog->Log(_L("Calling DecodeMessagePDUsL()"));
	
	CArrayFix<TGsmSms>* PDU = new (ELeave) CArrayFixFlat<TGsmSms>(10);
	const TGsmSms* gsmSms = new (ELeave) TGsmSms();
	
	TInt i = 0;
	for(; i<10; i++ )
		{
		  PDU->InsertL(i,*gsmSms);
		}

	//void DecodeMessagePDUsL(const CArrayFix<TGsmSms>& aSmsArray);
	TRAPD( result, aMessage.DecodeMessagePDUsL(*PDU));
	if(result != KErrNone)
		{
		aLog->Log(_L("Leave occured: error code: %d"), result);
		}
	else
		{
		aLog->Log(_L("DecodeMessagePDUsL() completed"));
		aLog->Log(_L("Message PDUs decoded successfully"));
		aLog->Log(_L("Decode message PDUs == PASS"));
		}
	
	delete PDU;	
	return result;
	}
	
// -----------------------------------------------------------------------------
// TestAddEMSInformationElements
// 
// -----------------------------------------------------------------------------
/*LOCAL_C TInt TestAddEMSInformationElements(CStifLogger* aLog,CSmsMessage& aMessage)
	{
	aLog->Log(_L("---------------------------------------------"));
	aLog->Log(_L("Calling AddEMSInformationElementL()"));
	TInt result = KErrNone;
	RFs rfServer; 
    User::LeaveIfError(rfServer.Connect()); 
    
    CCnvCharacterSetConverter* characterSetConverter = CCnvCharacterSetConverter::NewL(); 
    CSmsBuffer* smsBuffer = CSmsBuffer::NewL(); 
	CSmsMessage* smsMessage = CSmsMessage::NewL(rfServer, CSmsPDU::ESmsCommand, smsBuffer ); 	
	CSmsCommand& command = STATIC_CAST(CSmsCommand&, smsMessage->SmsPduL() );
	
	CSmsInformationElement::TSmsInformationElementIdentifier identifier = CSmsInformationElement::ESmsEnhancedVariablePicture;
	TBufC8<24> information(KTestInfo8);
	command.AddInformationElementL( identifier, information);
	
	CEmsInformationElement& element = STATIC_CAST(CEmsInformationElement&, command.InformationElement(0));	
	CleanupStack::PushL(&element);
	
	element.SetStartPosition(0);

//currently not exported
	CEmsSoundIE* element = CEmsSoundIE::NewL();
	CleanupStack::PushL(element);
	
	//void AddEMSInformationElementL(const CEmsInformationElement &aEmsIE)
	TRAPD( result, aMessage.AddEMSInformationElementL(*element));
	
	if(result != KErrNone)
		{
		aLog->Log(_L("Leave occured: error code: %d"), result);
		}
	else
		{
		aLog->Log(_L("AddEMSInformationElementL() completed"));
		aLog->Log(_L("EMS information element added"));
		aLog->Log(_L("Add EMS information elements == PASS"));
		}
	
	CleanupStack::PopAndDestroy(element);
	rfServer.Close();
	return result;	
	}
*/	
// -----------------------------------------------------------------------------
// TestGetEMSInformationElements
// 
// -----------------------------------------------------------------------------
LOCAL_C TInt TestGetEMSInformationElements(CStifLogger* aLog,CSmsMessage& aMessage)
	{
	aLog->Log(_L("---------------------------------------------"));
	aLog->Log(_L("Calling GetEMSInformationElementsL()"));

	//const RPointerArray< const CEmsInformationElement > &GetEMSInformationElementsL() const
	RPointerArray<const CEmsInformationElement> arrayEmsInfo;
	TRAPD( result, arrayEmsInfo = aMessage.GetEMSInformationElementsL());
	
	if(result != KErrNone)
		{
		aLog->Log(_L("Leave occured: error code: %d"), result);
		}
	else
		{
		aLog->Log(_L("GetEMSInformationElementsL() completed"));
		aLog->Log(_L("EMS information elements fetched"));
		aLog->Log(_L("Get EMS information elements ==  PASS"));
		}

	return result;	
	}
	
// -----------------------------------------------------------------------------
// TestRemoveEMSInformationElements
// 
// -----------------------------------------------------------------------------
LOCAL_C TInt TestRemoveEMSInformationElements(CStifLogger* aLog,CSmsMessage& aMessage)
	{
	aLog->Log(_L("---------------------------------------------"));
	aLog->Log(_L("Calling RemoveEMSInformationElementsL()"));
	
	//RPointerArray< CEmsInformationElement > *RemoveEMSInformationElementsL(const TUint aStartPosition, const TSmsId aEmsId);
	RPointerArray<CEmsInformationElement>* arrayEmsInfo = new RPointerArray<CEmsInformationElement>(5);
	TRAPD( result, arrayEmsInfo = aMessage.RemoveEMSInformationElementsL(0, CEmsInformationElement::ESmsIEIConcatenatedShortMessages8BitReference));
	
	if(result != KErrNone)
		{
		aLog->Log(_L("Leave occured: error code: %d"), result);
		}
	else
		{
		aLog->Log(_L("RemoveEMSInformationElementsL() completed"));
		aLog->Log(_L("EMS information elements removed"));
		aLog->Log(_L("Remove EMS information elements  PASS"));
		}

	delete arrayEmsInfo;
	return result;	
	}
	
// -----------------------------------------------------------------------------
// TestRemoveEMSInformationElement
// 
// -----------------------------------------------------------------------------
LOCAL_C TInt TestRemoveEMSInformationElement(CStifLogger* aLog,CSmsMessage& aMessage)
	{
	aLog->Log(_L("---------------------------------------------"));
	aLog->Log(_L("Calling RemoveEMSInformationElementL()"));

	//CEmsInformationElement *RemoveEMSInformationElementL(const TUint aStartPosition, const TSmsId aEmsId)
	TRAPD( result, CEmsInformationElement* removedElement = aMessage.RemoveEMSInformationElementL(0, CEmsInformationElement::ESmsIEIConcatenatedShortMessages8BitReference));
	
	if(result != KErrNone)
		{
		aLog->Log(_L("Leave occured: error code: %d"), result);
		}
	else
		{
		aLog->Log(_L("RemoveEMSInformationElementL() completed"));
		aLog->Log(_L("EMS information element removed"));
		aLog->Log(_L("Remove EMS information element  PASS"));
		}

	return result;	
	}
	
// -----------------------------------------------------------------------------
// TestResetEMS
// 
// -----------------------------------------------------------------------------
LOCAL_C TInt TestResetEMS(CStifLogger* aLog,CSmsMessage& aMessage)
	{
	aLog->Log( _L("--------------------------------------------------------"));
	aLog->Log( _L("Calling ResetEMSL()"));
	
	//void ResetEMSL();
	TRAPD( result, aMessage.ResetEMSL());
		
	if(result != KErrNone)
		{
		aLog->Log(_L("Leave occured: error code: %d"), result);
		}
	else
		{
		aLog->Log( _L("ResetEMSL() completed"));
		aLog->Log (_L("EMS information element successfully reseted"));
		aLog->Log( _L("Reset EMS == PASS"));
		}
	
	return result;
	}
	
// -----------------------------------------------------------------------------
// TestCopyEMSElements
// 
// -----------------------------------------------------------------------------
LOCAL_C TInt TestCopyEMSElementsL(CStifLogger* aLog,CSmsMessage& aMessage)
	{
	aLog->Log( _L("--------------------------------------------------------"));
	aLog->Log( _L("Calling CopyEmsElementsL()"));
	
	RFs rfServer; 
    User::LeaveIfError(rfServer.Connect()); 
    
    CCnvCharacterSetConverter* characterSetConverter = CCnvCharacterSetConverter::NewL(); 
    CSmsBuffer* smsBuffer = CSmsBuffer::NewL(); 
	CSmsMessage* message = CSmsMessage::NewL(rfServer, CSmsPDU::ESmsDeliver, smsBuffer ); 	

	//void CopyEmsElementsL(CSmsMessage &aToMessage) const
	TRAPD( result, aMessage.CopyEmsElementsL(*message));
	
	if(result != KErrNone)
		{
		aLog->Log(_L("Leave occured: error code: %d"), result);
		}
	else
		{
		aLog->Log(_L("CopyEmsElementsL() completed"));
		aLog->Log(_L("EMS elements copied successfully"));
		aLog->Log(_L("Copy EMS elements == PASS"));
		}
	
	delete message;
	rfServer.Close();
	
	return result;	
	}
	
// -----------------------------------------------------------------------------
// TestEncodeIntoSinglePDU
// 
// -----------------------------------------------------------------------------
LOCAL_C TInt TestEncodeIntoSinglePDUL(CStifLogger* aLog,CSmsMessage& aMessage)
	{
	aLog->Log( _L("--------------------------------------------------------"));
	aLog->Log( _L("Calling EncodeIntoSinglePDUL()"));
	
	//TBool EncodeIntoSinglePDUL(CArrayFix< TGsmSms > &aSmsArray);
	CArrayFix<TGsmSms>* singlePDU = new (ELeave) CArrayFixFlat<TGsmSms>(10);
	TRAPD( result, TBool res = aMessage.EncodeIntoSinglePDUL(*singlePDU));

	if(result != KErrNone)
		{
		aLog->Log(_L("Leave occured: error code: %d"), result);
		}
	else
		{
		aLog->Log( _L("EncodeIntoSinglePDUL() completed"));
		aLog->Log (_L("Encoded into single PDU successfully"));
		aLog->Log( _L("Get is email header  == PASS"));
		}
	
	delete singlePDU;
	return result;
	}
	
// -----------------------------------------------------------------------------
// TestAddSlot
// 
// -----------------------------------------------------------------------------
LOCAL_C TInt TestAddSlot(CStifLogger* aLog,CSmsMessage& aMessage)
	{
	aLog->Log( _L("--------------------------------------------------------"));
	aLog->Log( _L("Calling AddSlotL()"));
	
	TGsmSmsSlotEntry slotEntry;
	TRAPD( result, aMessage.AddSlotL(slotEntry));
	
	if(result != KErrNone)
		{
		aLog->Log(_L("Leave occured: error code: %d"), result);
		}
	else
		{
		aLog->Log(_L("AddSlotL() completed"));
		aLog->Log(_L("Slot added successfully"));
		aLog->Log(_L("Add slot == PASS"));
		}

	return result;	
	}
	
// -----------------------------------------------------------------------------
// TestMatchSlots
// 
// -----------------------------------------------------------------------------
LOCAL_C TInt TestMatchSlotsL(CStifLogger* aLog,CSmsMessage& aMessage)
	{
	aLog->Log( _L("--------------------------------------------------------"));
	aLog->Log( _L("Calling MatchSlots()"));
	TInt result = KErrNone;
	
	const CArrayFixFlat<TGsmSmsSlotEntry>* slotArray = new(ELeave) CArrayFixFlat<TGsmSmsSlotEntry>(5);
	//TBool MatchSlots(const CArrayFixFlat<TGsmSmsSlotEntry>& aSlotArray);
	TBool match = aMessage.MatchSlots(*slotArray);
	
	aLog->Log(_L("MatchSlots() Completed"));
	aLog->Log(_L("Slots matched successfully"));
	aLog->Log(_L("Match Slots == PASS"));
	
	return result;
	}
	
// -----------------------------------------------------------------------------
// TestAddEmailHeader
// 
// -----------------------------------------------------------------------------
LOCAL_C TInt TestAddEmailHeader(CStifLogger* aLog,CSmsMessage& aMessage)
	{
	aLog->Log( _L("--------------------------------------------------------"));
	aLog->Log( _L("Calling AddEmailHeader()"));
	
	const TBufC<24> header(_L("EMail Header"));
	TBufC<64> body(_L("EMail Body"));
	//void AddEmailHeaderL(const TDesC& aEmailHeader,const TDesC& aEmailBody);
	TRAPD( result, aMessage.AddEmailHeaderL(header, body));
	if(result != KErrNone)
		{
		aLog->Log(_L("Leave occured: error code: %d"), result);
		}
	else
		{
		aLog->Log(_L("AddEmailHeaderL() completed"));
		aLog->Log(_L("Email header added successfully"));
		aLog->Log(_L("Add email header == PASS"));
		}

	return result;	
	}
	
// -----------------------------------------------------------------------------
// TestGetIsEmailHeader
// 
// -----------------------------------------------------------------------------
LOCAL_C TInt TestGetIsEmailHeader(CStifLogger* aLog,CSmsMessage& aMessage)
	{
	aLog->Log( _L("--------------------------------------------------------"));
	aLog->Log( _L("Calling IsEmailHeader()"));
	
	TInt result = KErrNone;
	
	//TBool IsEmailHeader() const
	TBool res = aMessage.IsEmailHeader();
	
	aLog->Log( _L("IsEmailHeader() completed"));
	aLog->Log (_L("result data: is e-mail header : %d"), res);
	aLog->Log( _L("Get is email header  == PASS"));

	return result;
	}
	
// -----------------------------------------------------------------------------
// TestGetEmailHeader
// 
// -----------------------------------------------------------------------------
LOCAL_C TInt TestGetEmailHeaderL(CStifLogger* aLog,CSmsMessage& aMessage)
	{
	aLog->Log( _L("--------------------------------------------------------"));
	aLog->Log( _L("Calling GetEmailHeaderL()"));
	
	HBufC* emailHeader	= HBufC::NewL(1024);
	HBufC* emailBody	= HBufC::NewL(1024);
	TBool res;
	//TBool GetEmailHeaderL(HBufC **aEmailHeader, HBufC **aEmailBody);
	TRAPD( result, res = aMessage.GetEmailHeaderL(&emailHeader, &emailBody));
	
	if( res && (result == KErrNone) )
		{
		aLog->Log( _L("GetEmailHeaderL() completed"));
		aLog->Log (_L("result data: e-mail header: %s"), emailHeader);
		aLog->Log (_L("result data: e-mail body: %s"), emailBody);		
		aLog->Log( _L("Get email header == PASS"));
		}
	else
		{
		result = KErrGeneral;
		aLog->Log( _L("Get email header == FAIL"));
		}
		
	return result;
	}
	
// -----------------------------------------------------------------------------
// TestSetIs16BitConcatenation
// 
// -----------------------------------------------------------------------------
LOCAL_C TInt TestSetIs16BitConcatenation(CStifLogger* aLog,CSmsMessage& aMessage)
	{
	aLog->Log( _L("--------------------------------------------------------"));
	aLog->Log( _L("Calling Set16BitConcatenation()"));
	
	TInt result = KErrNone;
	
	//void Set16BitConcatenation(TBool aIs16BitConcatenation)
	aMessage.Set16BitConcatenation(ETrue);
	
	if( aMessage.Is16BitConcatenation() )
		{
		aLog->Log( _L("Set16BitConcatenation() completed"));
		aLog->Log (_L("16 bit concatenation flag stored successfully"));
		aLog->Log( _L("Set is 16 bit concatenation  == PASS"));
		}
	else
		{
		aLog->Log( _L("Set is 16 bit concatenation  == FAIL"));		
		}

	return result;
	}
	
// -----------------------------------------------------------------------------
// TestGetIs16BitConcatenation
// 
// -----------------------------------------------------------------------------
LOCAL_C TInt TestGetIs16BitConcatenation(CStifLogger* aLog,CSmsMessage& aMessage)
	{
	aLog->Log( _L("--------------------------------------------------------"));
	aLog->Log( _L("Calling Is16BitConcatenation()"));
	
	TInt result = KErrNone;
	
	//TBool Is16BitConcatenation() const
	TBool res = aMessage.Is16BitConcatenation();
	
	aLog->Log( _L("Is16BitConcatenation() completed"));
	aLog->Log (_L("result data: 16 bit concatenation flag : %d"), res);
	aLog->Log( _L("Get is 16 bit concatenation == PASS"));

	return result;
	}
	
// -----------------------------------------------------------------------------
// TestUpdateSlots
// 
// -----------------------------------------------------------------------------
LOCAL_C TInt TestUpdateSlotsL(CStifLogger* aLog,CSmsMessage& aMessage)
	{
	aLog->Log( _L("--------------------------------------------------------"));
	aLog->Log( _L("Calling UpdateSlotsL()"));

	TInt8 storeid = CSmsMessage::ESmsSIMStorage;
	TBuf8<128> slot_buffer;
	TBufC<32> file(_L("c:\\SmsSlots"));
	CArrayFixFlat<TGsmSmsSlotEntry>* slot = new(ELeave) CArrayFixFlat<TGsmSmsSlotEntry>(5);
	RFs session;
	RFileWriteStream write;
	RFileReadStream read;
	
	User::LeaveIfError( session.Connect() );
	write.Create(session, file, EFileWrite);
	TInt err = write.Open(session, file, EFileWrite);
	
	TInt size = sizeof(slot);
	write.WriteUint8L(storeid);
	write.WriteL((TUint16*)slot, size);
	write.CommitL();
	write.Close();
	TInt erro = read.Open(session, file, EFileRead);
	
	read.ReadL(slot_buffer, size+1);
	//void UpdateSlotsL(TDesC8& aBuf);
	TRAPD( result, aMessage.UpdateSlotsL(slot_buffer));
	
	read.Close();
	session.Delete(file);
	session.Close();
	
	if(result != KErrNone)
		{
		aLog->Log(_L("Leave occured: error code: %d"), result);
		}
	else
		{
		aLog->Log(_L("UpdateSlotsL() completed"));
		aLog->Log(_L("Slot information updated successfully"));
		aLog->Log(_L("Update slots == PASS"));
		}
	return result;
	}

// -----------------------------------------------------------------------------
// TestGetEncodingInfoL
// 
// -----------------------------------------------------------------------------

LOCAL_C TInt TestGetEncodingInfoL(CStifLogger* aLog, CSmsMessage& aMessage)
{
	aLog->Log( _L("--------------------------------------------------------"));
	aLog->Log( _L("Calling GetEncodingInfoL()"));
	
	TInt pdus =1;
	TInt unconvertedchars=0;
	TInt downgradedchars = 0;
	TInt freeudunitsinlastfreepdu = 0;
	
	aMessage.GetEncodingInfoL(pdus, unconvertedchars, downgradedchars, freeudunitsinlastfreepdu);
	
	return KErrNone;
}

// -----------------------------------------------------------------------------
// TestSetAlternative7bitEncoding
// 
// -----------------------------------------------------------------------------

LOCAL_C TInt TestSetAlternative7bitEncoding(CStifLogger* aLog, CSmsMessage& aMessage)
{
	aLog->Log( _L("--------------------------------------------------------"));
	aLog->Log( _L("Calling SetAlternative7bitEncoding()"));
	
	
	TInt ret = aMessage.SetAlternative7bitEncoding(ESmsEncodingNone);
	TSmsEncoding id = aMessage.Alternative7bitEncoding();
	
	return ret;
}

LOCAL_C TInt TestGetIsSupported2(CStifLogger* aLog,CSmsMessage& aMessage)
	{
	aLog->Log(_L("---------------------------------------------"));
	aLog->Log(_L("Calling IsSupported2L()"));
	
	//TBool IsSupportedL(const TDesC &aDes, TInt &aNumberOfUnconvertibleCharacters, TInt &aIndexOfFirstUnconvertibleCharacter)
	TBufC<50> testBuffer = _L("Nokia$123has*some%employees");
	TInt numUnconvertable;
	TInt posFirstUnconvertable;
	TInt numreqAlternativeEncoding;
	TInt numDowngradedChars;
	TBool res = 0;
	TRAPD( result, res = aMessage.IsSupportedL(testBuffer, numUnconvertable, numDowngradedChars, numreqAlternativeEncoding, posFirstUnconvertable));
	
	if(result != KErrNone)
		{
		aLog->Log(_L("Leave occured: error code: %d"), result);
		}
	else
		{
		aLog->Log(_L("IsSupported2L() completed"));
		aLog->Log(_L("result data: is supported: %d"), res);
		aLog->Log(_L("Get is supported == PASS"));
		}
	return result;	
	}
//----------------------------------------------------------------
// TestConstructionTGsmSms
// 
// -----------------------------------------------------------------------------
LOCAL_C TInt TestConstructionTGsmSms_PduL(CStifLogger* aLog, CSmsPDU& pdu)	
	{
	aLog->Log(_L("---------------------------------------------"));
	aLog->Log(_L("Calling CSmsPDU::NewL(TGsmSms)"));
	TInt result = KErrNone;
	
	RFs session;
	User::LeaveIfError(session.Connect());
	TGsmSms sms;
	pdu.EncodeMessagePDUL( sms );
	CCnvCharacterSetConverter* converter = CCnvCharacterSetConverter::NewL();
	CleanupStack::PushL(converter);
	
	//static CSmsPDU* NewL(const TGsmSms& aGsmSms,CCnvCharacterSetConverter& aCharacterSetConverter
	//,RFs& aFs,TBool aIsRPError=EFalse,TBool aIsMobileTerminated=ETrue);
	CSmsPDU* PDU = CSmsPDU::NewL(sms, *converter, session, ETrue, EFalse);
	CleanupStack::PushL(PDU);
	
	if( PDU != NULL)
		{
		aLog->Log(_L("CSmsPDU::NewL(TGsmSms) Completed"));
		aLog->Log(_L("CSmsPDU::NewL(TGsmSms) == PASS"));
		}
	else
		{
		result = KErrGeneral;
		aLog->Log(_L("CSmsPDU::NewL(TGsmSms) == FAIL"));	
		}
	   
	CleanupStack::PopAndDestroy(2);
	session.Close();
	return result;
	}
	
// -----------------------------------------------------------------------------
// TestConstructionStream
// 
// -----------------------------------------------------------------------------
LOCAL_C TInt TestConstructionStreamL(CStifLogger* aLog, CSmsPDU& PDU)
	{
	aLog->Log( _L("--------------------------------------------------------"));
	aLog->Log( _L("Calling CSmsPDU::NewL(RReadStream)"));
	TInt result = KErrNone;
	
	RFs session;
    User::LeaveIfError(session.Connect());
	TBufC<64> storename = _L("C:\\CSmsPDU_Construction");
	RFileWriteStream write;
	RFileReadStream read;
	CCnvCharacterSetConverter* charSet = CCnvCharacterSetConverter::NewL();
	write.Create(session, storename, EFileWrite);
	TInt erro = write.Open(session, storename, EFileWrite);
	PDU.ExternalizeL( write );
	write.CommitL();
	write.Close();
	
	erro = read.Open(session, storename, EFileRead);
	CSmsPDU* aPDU = CSmsPDU::NewL( read, *charSet, session);
	read.Close();
	//now delete the store
	TInt err = session.Delete(storename);
	session.Close();
	
	if( aPDU != NULL)
		{
		aLog->Log(_L("CSmsPDU::NewL(RReadStream) Completed"));
		aLog->Log(_L("CSmsPDU::NewL(RReadStream) == PASS"));
		}
	else
		{
		result = KErrGeneral;
		aLog->Log(_L("CSmsPDU::NewL(RReadStream) == FAIL"));
		}
	
	delete aPDU;
	delete charSet;
	return result;
	}	

// -----------------------------------------------------------------------------
// TestGetType
// Gets the PDU type
// -----------------------------------------------------------------------------
LOCAL_C TInt TestGetType (CStifLogger* aLog, CSmsPDU& aSmsPdu)
	{
	aLog->Log( _L("--------------------------------------------------------"));
	aLog->Log( _L("Calling Type ()"));
	TInt result = KErrNone;
	 
	// inline TSmsPDUType Type() const
	CSmsPDU::TSmsPDUType checkres = aSmsPdu.Type ();
	
	if( checkres == CSmsPDU::ESmsDeliver)
		{
		aLog->Log( _L("Type() completed"));
		aLog->Log (_L("Result data:type: %d"),checkres);
		aLog->Log( _L("Get type == PASS"));
		}
	else
		{
		result = KErrGeneral;
		aLog->Log( _L("Get type == FAIL"));	
		}
		
	return result;
	}

// -----------------------------------------------------------------------------
// TestExternalizeL
// Externalises the object
// -----------------------------------------------------------------------------
LOCAL_C TInt TestExternalizeL (CStifLogger* aLog, CSmsPDU& aSmsPdu)
	{
	aLog->Log(_L("---------------------------------------------"));
	aLog->Log(_L("Calling ExternalizeL()"));
	
	RFs session;
    User::LeaveIfError(session.Connect());
	TBufC<64> storename = _L("C:\\SMSGSMUtilities_CSmsPDU");
	RFileWriteStream write;
	
	write.Create(session, storename, EFileWrite);
	TInt err = write.Open(session, storename, EFileWrite);
	
	//IMPORT_C void ExternalizeL(RWriteStream& aStream) const;
	TRAPD( result, aSmsPdu.ExternalizeL( write ));
	
	write.CommitL();
	write.Close();
	
	session.Close();
	if( result == KErrNone )
		{
		aLog->Log( _L("ExternalizeL() completed"));
		aLog->Log( _L("Data externalized successfully"));
		aLog->Log( _L("Externalize == PASS"));
		}
	else
		aLog->Log( _L("Externalize == FAIL"));
	
	return result;
	}


// -----------------------------------------------------------------------------
// TestEncodeMessagePDUs
// Encodes a TGsmSms for the given type of CSmsPDU
// -----------------------------------------------------------------------------
LOCAL_C TInt TestEncodeMessagePDUs (CStifLogger* aLog, CSmsPDU& aSmsPdu)
	{
	aLog->Log( _L("--------------------------------------------------------"));
	aLog->Log( _L("Calling EncodeMessagePDUsL()"));
	TGsmSms testSms;
	
	// IMPORT_C void EncodeMessagePDUL(TGsmSms &aGsmSms) const
	TRAPD(result, aSmsPdu.EncodeMessagePDUL (testSms));
	
	if( result == KErrNone)
	{
		aLog->Log( _L("EncodeMessagePDUsL() completed"));
		aLog->Log( _L("Message PDUs encoded successfully"));
		aLog->Log( _L("Encode message PDUs == PASS"));
		
	}
	else
		aLog->Log( _L("Encode message PDUs == FAIL"));
	
	return result;
	}


// -----------------------------------------------------------------------------
// TestGetServiceCenterAddress
// Gets the service center address
// -----------------------------------------------------------------------------
LOCAL_C TInt TestGetServiceCenterAddress (CStifLogger* aLog, CSmsPDU& aSmsPdu)
	{
	aLog->Log( _L("--------------------------------------------------------"));
	aLog->Log( _L("Calling ServiceCenterAddress()"));
	
	TInt result = KErrNone;
	TPtrC address = _L("Test String");
				
	// IMPORT_C TPtrC ServiceCenterAddress() const
	TPtrC checkres = aSmsPdu.ServiceCenterAddress ();
	
	if(!checkres.Compare (address))
	{
		aLog->Log( _L("GetServiceCenterAddressL() completed"));
		aLog->Log (_L("Result data:address: %s"),checkres.Ptr());
		aLog->Log( _L("Get service center address == PASS"));
	}
	else
		aLog->Log( _L("Get service center address == FAIL"));
	
	return result;
	}


// -----------------------------------------------------------------------------
// TestSetServiceCenterAddress
// Sets the service center address
// -----------------------------------------------------------------------------
LOCAL_C TInt TestSetServiceCenterAddress (CStifLogger* aLog, CSmsPDU& aSmsPdu)
	{
	aLog->Log( _L("--------------------------------------------------------"));
	aLog->Log( _L("Calling SetServiceCenterAddressL()"));

	TPtrC address = _L("Test String");
		
	// IMPORT_C void SetServiceCenterAddressL(const TDesC &aAddress);
	TRAPD(result, aSmsPdu.SetServiceCenterAddressL (address));
	
	if(result == KErrNone)
	{
		aLog->Log( _L("SetServiceCenterAddressL() completed"));
		aLog->Log( _L("Service center address successfully stored"));
		aLog->Log( _L("Set service center address == PASS"));
	}
	else
		aLog->Log( _L("Set service center address == FAIL"));
	
	return result;
	}


// -----------------------------------------------------------------------------
// TestGetParsedServiceCenterAddress
// Gets the service center address in a TGsmSmsTelNumber object
// -----------------------------------------------------------------------------
LOCAL_C TInt TestGetParsedServiceCenterAddress (CStifLogger* aLog, CSmsPDU& aSmsPdu)
	{
	aLog->Log( _L("--------------------------------------------------------"));
	aLog->Log( _L("Calling ParsedServiceCenterAddress()"));
	
	TInt result = KErrNone;
	TGsmSmsTelNumber testTelNo;
	_LIT(str,"9945563472");
	TBuf<20> telno (str);
	
	
	// IMPORT_C void ParsedServiceCenterAddress(TGsmSmsTelNumber 
	//     &aParsedAddress) const
	aSmsPdu.ParsedServiceCenterAddress (testTelNo);
	
	if(!(testTelNo.iTelNumber).Compare (telno))
	{
		aLog->Log( _L("ParsedServiceCenterAddress() completed"));
		aLog->Log (_L("result data:parsed address: %s"),testTelNo.iTelNumber.Ptr());
		aLog->Log( _L("Get parsed service center address == PASS"));
	}
	else
		aLog->Log( _L("Get parsed service center address == FAIL"));
	
	return result;
	}


// -----------------------------------------------------------------------------
// TestSetParsedServiceCenterAddress
// Sets the service center address in a TGsmSmsTelNumber object
// -----------------------------------------------------------------------------
LOCAL_C TInt TestSetParsedServiceCenterAddress (CStifLogger* aLog, CSmsPDU& aSmsPdu)
	{
	aLog->Log( _L("--------------------------------------------------------"));
	aLog->Log( _L("Calling SetParsedServiceCenterAddressL()"));
	
	TGsmSmsTelNumber testTelNo;
	_LIT(str,"9945563472");
	TBuf<20> telno (str);
	testTelNo.iTelNumber = telno;

	
	// IMPORT_C void SetParsedServiceCenterAddressL(const TGsmSmsTelNumber
	//    &aParsedAddress);
	TRAPD(result, aSmsPdu.SetParsedServiceCenterAddressL (testTelNo));
	
	if(result == KErrNone)
	{
		aLog->Log( _L("SetParsedServiceCenterAddressL() completed"));
		aLog->Log( _L("Parsed address successfully stored"));
		aLog->Log( _L("Set parsed service center address == PASS"));
	}
	else
		aLog->Log( _L("Set parsed service center address == FAIL"));
	
	return result;
	}

// -----------------------------------------------------------------------------
// TestGetToFromAddress
// Gets the "to from" address
// -----------------------------------------------------------------------------
LOCAL_C TInt TestGetToFromAddress (CStifLogger* aLog, CSmsPDU& aSmsPdu)
	{
	aLog->Log( _L("--------------------------------------------------------"));
	aLog->Log( _L("Calling ToFromAddress()"));
	
	TInt result = KErrNone;
	_LIT(str,"TestAddress");
	TBufC<20> testadd (str);
	
	// IMPORT_C TPtrC ToFromAddress() const
	TPtrC checkres = aSmsPdu.ToFromAddress();
	
	if( ! checkres.Compare (testadd))
	{
		aLog->Log( _L("ToFromAddress() completed"));
		aLog->Log(_L("Result data:to from address: %s"),checkres.Ptr());
		aLog->Log( _L("Get to from address == PASS"));
	}
	else
		aLog->Log( _L("Get to from address == FAIL"));
	
	return result;
	}

// -----------------------------------------------------------------------------
// TestSetToFromAddress
// Gets the "to from" address
// -----------------------------------------------------------------------------
LOCAL_C TInt TestSetToFromAddress (CStifLogger* aLog, CSmsPDU& aSmsPdu)
	{
	aLog->Log( _L("--------------------------------------------------------"));
	aLog->Log( _L("Calling SetToFromAddressL()"));
	
	_LIT(str,"TestAddress");
	TBufC<20> testadd (str);
	
	// IMPORT_C void SetToFromAddressL(const TDesC &aAddress)
	TRAPD( result, aSmsPdu.SetToFromAddressL (testadd));
	
	if(result == KErrNone)
	{
		aLog->Log( _L("SetToFromAddressL() completed"));
		aLog->Log( _L("To from addresses successfully stored"));
		aLog->Log( _L("Set to from address == PASS"));
	}
	else
		aLog->Log( _L("Set to from address == FAIL"));
	
	return result;
	}


// -----------------------------------------------------------------------------
// TestGetParsedToFromAddress
// Gets the "to from" in a TGsmSmsTelNumber object
// -----------------------------------------------------------------------------
LOCAL_C TInt TestGetParsedToFromAddress (CStifLogger* aLog, CSmsPDU& aSmsPdu)
	{
	aLog->Log( _L("--------------------------------------------------------"));
	aLog->Log( _L("Calling ParsedToFromAddress()"));
	
	TInt result = KErrNone;	
	TGsmSmsTelNumber testTelNo;
	_LIT(str,"9945563472");
	TBuf<20> telno (str);
	
	// IMPORT_C void ParsedToFromAddress(TGsmSmsTelNumber &aParsedAddress) const
	aSmsPdu.ParsedToFromAddress (testTelNo);
	
	if(!(testTelNo.iTelNumber).Compare (telno))
	{
		aLog->Log( _L("ParsedToFromAddress() completed"));
		_LIT(tempVal,"result data:parsed to from address: %s");
		aLog->Log (tempVal,testTelNo.iTelNumber.Ptr());
		aLog->Log( _L("Get parsed to from address == PASS"));
	}
	else
		aLog->Log( _L("Get parsed to from address == FAIL"));
	
	return result;
	}


// -----------------------------------------------------------------------------
// TestSetParsedToFromAddress
// Sets the "to from" with a TGsmSmsTelNumber object
// -----------------------------------------------------------------------------
LOCAL_C TInt TestSetParsedToFromAddress (CStifLogger* aLog, CSmsPDU& aSmsPdu)
	{
	aLog->Log( _L("--------------------------------------------------------"));
	aLog->Log( _L("Calling SetParsedToFromAddressL()"));
	
	TGsmSmsTelNumber testTelNo;
	_LIT(str,"9945563472");
	TBuf<20> telno (str);
	testTelNo.iTelNumber = telno;

	
	// IMPORT_C void SetParsedToFromAddressL(const TGsmSmsTelNumber 
	//     &aParsedAddress);
	TRAPD( result, aSmsPdu.SetParsedToFromAddressL (testTelNo));
	
	if(result == KErrNone)
	{
		aLog->Log( _L("SetParsedToFromAddressL() completed"));
		aLog->Log( _L("Parsed to from addresses successfully stored"));
		aLog->Log( _L("Set parsed to from address == PASS"));
	}
	else
		aLog->Log( _L("Set parsed to from address == FAIL"));
	
	return result;
	}


// -----------------------------------------------------------------------------
// TestGetBits7To4
// Gets bits 7 to 4 on the data coding scheme
// -----------------------------------------------------------------------------
LOCAL_C TInt TestGetBits7To4 (CStifLogger* aLog, CSmsPDU& aSmsPdu)
	{
	aLog->Log( _L("--------------------------------------------------------"));
	aLog->Log( _L("Calling Bits7To4()"));
	
	TInt result = KErrNone;
	TSmsDataCodingScheme::TSmsDCSBits7To4 bitsVal;
	
	// IMPORT_C TSmsDataCodingScheme::TSmsDCSBits7To4 Bits7To4() const
	bitsVal = aSmsPdu.Bits7To4 ();
	
	if(bitsVal == TSmsDataCodingScheme::ESmsDCSTextUncompressedWithNoClassInfo)
	{
		aLog->Log( _L("Bits7To4() completed"));
		_LIT(tempVal,"result data:bits 7 to 4: %d");
		aLog->Log (tempVal,bitsVal);
		aLog->Log( _L("Get bits 7 to 4 == PASS"));
	}
	else
		aLog->Log( _L("Get bits 7 to 4 == FAIL"));
	
	return result;
	}


// -----------------------------------------------------------------------------
// TestSetBits7To4
// Sets bits 7 to 4 on the data coding scheme
// -----------------------------------------------------------------------------
LOCAL_C TInt TestSetBits7To4 (CStifLogger* aLog, CSmsPDU& aSmsPdu)
	{
	aLog->Log( _L("--------------------------------------------------------"));
	aLog->Log( _L("Calling SetBits7To4()"));
	
	TInt result = KErrNone;
	TSmsDataCodingScheme::TSmsDCSBits7To4 bitsVal (TSmsDataCodingScheme::
	    ESmsDCSTextUncompressedWithNoClassInfo);
	
	// IMPORT_C void SetBits7To4(TSmsDataCodingScheme::TSmsDCSBits7To4 
	//     aBits7To4)
	aSmsPdu.SetBits7To4 (bitsVal);
	
	aLog->Log( _L("SetBits7To4() completed"));
	aLog->Log( _L("Bits 7 to 4 stored successfully"));
	aLog->Log( _L("Set bits 7 to 4 == PASS"));
	
	return result;
	}

// -----------------------------------------------------------------------------
// TestGetAlphabet
// Gets the alphabet encoded in the data coding scheme
// -----------------------------------------------------------------------------
LOCAL_C TInt TestGetAlphabet (CStifLogger* aLog, CSmsPDU& aSmsPdu)
	{
	aLog->Log( _L("--------------------------------------------------------"));
	aLog->Log( _L("Calling Alphabet()"));
	
	TInt result = KErrNone;
	TSmsDataCodingScheme::TSmsAlphabet testAlphabet;
	
	// IMPORT_C TSmsDataCodingScheme::TSmsAlphabet Alphabet() const
	testAlphabet = aSmsPdu.Alphabet();
	
	if(testAlphabet == TSmsDataCodingScheme::ESmsAlphabet7Bit)
	{
		aLog->Log( _L("Alphabet() completed"));
		_LIT(tempVal,"result data:alphabet: %d");
		aLog->Log (tempVal,testAlphabet);
		aLog->Log( _L("Get alphabet == PASS"));
	}
	else
		aLog->Log( _L("Get alphabet == FAIL"));
	
	return result;
	}


// -----------------------------------------------------------------------------
// TestSetAlphabet
// Sets the alphabet encoded in the data coding scheme
// -----------------------------------------------------------------------------
LOCAL_C TInt TestSetAlphabet (CStifLogger* aLog, CSmsPDU& aSmsPdu)
	{
	aLog->Log( _L("--------------------------------------------------------"));
	aLog->Log( _L("Calling SetAlphabet()"));
	
	TInt result = KErrNone;
	TSmsDataCodingScheme::TSmsAlphabet testAlphabet (TSmsDataCodingScheme::
	    ESmsAlphabet7Bit);
	
	// IMPORT_C void SetAlphabet(TSmsDataCodingScheme::TSmsAlphabet aAlphabet)
	aSmsPdu.SetAlphabet (testAlphabet);
	
	aLog->Log( _L("SetAlphabet() completed"));
	aLog->Log( _L("Alphabet stored successfully"));
	aLog->Log( _L("Set alphabet == PASS"));
	
	return result;
	}


// -----------------------------------------------------------------------------
// TestGetClass
// Gets the GSM SMS PDU class in the data coding scheme
// -----------------------------------------------------------------------------
LOCAL_C TInt TestGetClass (CStifLogger* aLog, CSmsPDU& aSmsPdu)
	{
	aLog->Log( _L("--------------------------------------------------------"));
	aLog->Log( _L("Calling Class()"));
	
	TInt result = KErrNone;
	TSmsDataCodingScheme::TSmsClass testClass (TSmsDataCodingScheme::
	    ESmsClass0);
	
	//TBool Class(TSmsDataCodingScheme::TSmsClass &aClass) const
	TBool checkres = aSmsPdu.Class (testClass);
	
	if( checkres )
	{
		aLog->Log( _L("Class() completed"));
		aLog->Log(_L("Result data:class: %d"),testClass);
		aLog->Log( _L("Get class == PASS"));
	}
	else
		aLog->Log( _L("Get class == FAIL"));
	
	return result;
	}


// -----------------------------------------------------------------------------
// TestSetClass
// Sets the GSM SMS PDU class in the data coding scheme
// -----------------------------------------------------------------------------
LOCAL_C TInt TestSetClass (CStifLogger* aLog, CSmsPDU& aSmsPdu)
	{
	aLog->Log( _L("--------------------------------------------------------"));
	aLog->Log( _L("Calling SetClass()"));
	
	TInt result = KErrNone;
	TSmsDataCodingScheme::TSmsClass testClass (TSmsDataCodingScheme::ESmsClass0);
	
	//void SetClass(TBool aClassDefined, TSmsDataCodingScheme::TSmsClass aClass)
	aSmsPdu.SetClass (ETrue, testClass);
	
	aLog->Log( _L("SetClass() completed"));
	aLog->Log( _L("Class stored successfully"));
	aLog->Log( _L("Set class == PASS"));
	
	return result;
	}


// -----------------------------------------------------------------------------
// TestGetTextCompressed
// True if Text Compressed is encoded in the data coding scheme
// -----------------------------------------------------------------------------
LOCAL_C TInt TestGetTextCompressed (CStifLogger* aLog, CSmsPDU& aSmsPdu)
	{
	aLog->Log( _L("--------------------------------------------------------"));
	aLog->Log( _L("Calling TextCompressed()"));
	
	TInt result = KErrNone;
	
	// IMPORT_C TBool TextCompressed() const
	TBool checkres = aSmsPdu.TextCompressed ();
	
	if( checkres )
	{
		aLog->Log( _L("TextCompressed() completed"));
		_LIT(tempVal,"result data:text compressed: %d");
		aLog->Log (tempVal,checkres);
		aLog->Log( _L("Get text compresed == PASS"));
	}
	else
		aLog->Log( _L("Get text compresed == FAIL"));
	
	return result;
	}



// -----------------------------------------------------------------------------
// TestSetTextCompressed
// Set to encode Text Compressed in the data coding scheme
// -----------------------------------------------------------------------------
LOCAL_C TInt TestSetTextCompressed (CStifLogger* aLog, CSmsPDU& aSmsPdu)
	{
	aLog->Log( _L("--------------------------------------------------------"));
	aLog->Log( _L("Calling SetTextCompressed()"));
	
	TInt result = KErrNone;
	
	// IMPORT_C void SetTextCompressed(TBool aCompressed);
	aSmsPdu.SetTextCompressed (ETrue);
	
	aLog->Log( _L("SetTextCompressed() completed"));
	aLog->Log( _L("Text compressed flag successfully stored"));
	aLog->Log( _L("Set text compresed == PASS"));
	
	return result;
	}


// -----------------------------------------------------------------------------
// TestGetIndicationState
// Gets the Indication State encoded in the data coding scheme.
// -----------------------------------------------------------------------------
LOCAL_C TInt TestGetIndicationState (CStifLogger* aLog, CSmsPDU& aSmsPdu)
	{
	aLog->Log( _L("--------------------------------------------------------"));
	aLog->Log( _L("Calling IndicationState()"));
	
	TInt result = KErrNone;
	TSmsDataCodingScheme::TSmsIndicationState testState;
	
	// IMPORT_C TSmsDataCodingScheme::TSmsIndicationState IndicationState() const
	testState = aSmsPdu.IndicationState (); 
	
	if(testState == TSmsDataCodingScheme::ESmsIndicationInactive)
	{
		aLog->Log( _L("IndicationState() completed"));
		_LIT(tempVal,"result data:indication state: %d");
		aLog->Log (tempVal,testState);
		aLog->Log( _L("Get indication state == PASS"));
	}
	else
		aLog->Log( _L("Get indication state == FAIL"));
	
	return result;
	}


// -----------------------------------------------------------------------------
// TestSetIndicationState
// Sets the Indication State encoded in the data coding scheme.
// -----------------------------------------------------------------------------
LOCAL_C TInt TestSetIndicationState (CStifLogger* aLog, CSmsPDU& aSmsPdu)
	{
	aLog->Log( _L("--------------------------------------------------------"));
	aLog->Log( _L("Calling SetIndicationState()"));
	
	TInt result = KErrNone;
	TSmsDataCodingScheme::TSmsIndicationState testState (TSmsDataCodingScheme::
	    ESmsIndicationInactive);
	
	// IMPORT_C void SetIndicationState(TSmsDataCodingScheme::
	//    TSmsIndicationState aState);
	aSmsPdu.SetIndicationState (testState);
	
	aLog->Log( _L("SetIndicationState() completed"));
	aLog->Log( _L("Indication state stored successfully"));
	aLog->Log( _L("Set indication state == PASS"));

	return result;
	}


// -----------------------------------------------------------------------------
// TestGetIndicationType 
// Gets the Indication Type encoded in the data coding scheme.
// -----------------------------------------------------------------------------
LOCAL_C TInt TestGetIndicationType (CStifLogger* aLog, CSmsPDU& aSmsPdu)
	{
	aLog->Log( _L("--------------------------------------------------------"));
	aLog->Log( _L("Calling IndicationType()"));
	
	TInt result = KErrNone;
	TSmsDataCodingScheme::TSmsIndicationType testIndicationType;
	
	//TSmsDataCodingScheme::TSmsIndicationType IndicationType() const
	testIndicationType = aSmsPdu.IndicationType ();
	
	if(testIndicationType == TSmsDataCodingScheme::ESmsVoicemailMessageWaiting)
	{
		aLog->Log( _L("IndicationType() completed"));
		_LIT(tempVal,"result data:indication type: %d");
		aLog->Log (tempVal,testIndicationType);
		aLog->Log( _L("Get indication type == PASS"));
	}
	else
		aLog->Log( _L("Get indication type == FAIL"));
	
	return result;
	}


// -----------------------------------------------------------------------------
// TestSetIndicationType
// Sets the Indication Type encoded in the data coding scheme.
// -----------------------------------------------------------------------------
LOCAL_C TInt TestSetIndicationType (CStifLogger* aLog, CSmsPDU& aSmsPdu)
	{
	aLog->Log( _L("--------------------------------------------------------"));
	aLog->Log( _L("Calling SetIndicationType()"));
	
	TInt result = KErrNone;
	TSmsDataCodingScheme::TSmsIndicationType testIndicationType (
	   TSmsDataCodingScheme::ESmsVoicemailMessageWaiting);
	
	//void SetIndicationType(TSmsDataCodingScheme::TSmsIndicationType aType);
    aSmsPdu.SetIndicationType (testIndicationType);
    
   	aLog->Log( _L("SetIndicationType() completed"));
   	aLog->Log( _L("Indication type stored successfully"));
   	aLog->Log( _L("Set indication type == PASS"));
    
    return result;
	}


// -----------------------------------------------------------------------------
// TestGetTextConcatenated
// Tests if the PDU is part of a concatenated message
// -----------------------------------------------------------------------------
LOCAL_C TInt TestGetTextConcatenated (CStifLogger* aLog, CSmsPDU& aSmsPdu)
	{
	aLog->Log( _L("--------------------------------------------------------"));
	aLog->Log( _L("Calling TextConcatenated()"));
	
	TInt result = KErrNone;
	
	// IMPORT_C TBool TextConcatenated(TBool *aIs16Bit=0) const
	TBool checkres = aSmsPdu.TextConcatenated ();
	
	if( checkres )
	{
		aLog->Log( _L("TextConcatenated() completed"));
		_LIT(tempVal,"result data:text concatenated: %d");
		aLog->Log (tempVal,checkres);
		aLog->Log( _L("Get text concatenated == PASS"));
	}
	else
		aLog->Log( _L("Get text concatenated == FAIL"));
	
	return result;
	}


// -----------------------------------------------------------------------------
// TestSetTextConcatenated
// Tests if the PDU is part of a concatenated message.
// -----------------------------------------------------------------------------
LOCAL_C TInt TestSetTextConcatenated (CStifLogger* aLog, CSmsPDU& aSmsPdu)
	{
	aLog->Log( _L("--------------------------------------------------------"));
	aLog->Log( _L("Calling SetTextConcatenatedL()"));
	
    // IMPORT_C void SetTextConcatenatedL(TBool aConcatenated, 
    //     TBool aIs16Bit=EFalse);
    TRAPD( result, aSmsPdu.SetTextConcatenatedL (ETrue));
    
    if(result == KErrNone)
    {
    	aLog->Log( _L("SetTextConcatenatedL() completed"));
    	aLog->Log( _L("Text concatenated flag successfully stored"));
    	aLog->Log( _L("Set text concatenated == PASS"));
    }
    else
    	aLog->Log( _L("Set text concatenated == FAIL"));
    
    return result;
	}

// -----------------------------------------------------------------------------
// TestGetConcatenatedMessageReference
// Gets the reference contained in the Concatenation Information Element
// -----------------------------------------------------------------------------
LOCAL_C TInt TestGetConcatenatedMessageReference (CStifLogger* aLog, CSmsPDU& aSmsPdu)
	{
	aLog->Log( _L("--------------------------------------------------------"));
	aLog->Log( _L("Calling ConcatenatedMessageReference()"));
	
	TInt result = KErrNone;
	
	// IMPORT_C TInt ConcatenatedMessageReference() const
	TInt checkres = aSmsPdu.ConcatenatedMessageReference ();
	
	if(checkres == 1)
	{
		aLog->Log( _L("ConcatenatedMessageReference() completed"));
		_LIT(tempVal,"result data:concatenated message reference: %d");
		aLog->Log (tempVal, checkres);
		aLog->Log( _L("Get concatenated message reference == PASS"));
	}
	else
		aLog->Log( _L("Get concatenated message reference == FAIL"));
	
	return result;
	}


// -----------------------------------------------------------------------------
// TestSetConcatenatedMessageReference
// Sets the reference contained in the Concatenation Information Element
// -----------------------------------------------------------------------------
LOCAL_C TInt TestSetConcatenatedMessageReference (CStifLogger* aLog, CSmsPDU& aSmsPdu)
	{
	aLog->Log( _L("--------------------------------------------------------"));
	aLog->Log( _L("Calling SetConcatenatedMessageReference()"));
	
	TInt result = KErrNone;
	TInt SetVal = 1;
	
	// IMPORT_C void SetConcatenatedMessageReference(TInt aReference)
	aSmsPdu.SetConcatenatedMessageReference (SetVal);
	
	aLog->Log( _L("SetConcatenatedMessageReference() completed"));
	aLog->Log( _L("Concatenated message reference stored successfully"));
	aLog->Log( _L("Set concatenated message reference == PASS"));
	
	return result;
	}


// -----------------------------------------------------------------------------
// TestGetNumberOfConcatenatedMessageL
// Gets the number of PDU's in a Concatenated Message.
// -----------------------------------------------------------------------------
LOCAL_C TInt TestGetNumberOfConcatenatedMessageL (CStifLogger* aLog, CSmsPDU& aSmsPdu)
	{
	aLog->Log( _L("--------------------------------------------------------"));
	aLog->Log( _L("Calling NumConcatenatedMessagePDUs()"));
	
	TInt result = KErrNone;
	
	// IMPORT_C TInt NumConcatenatedMessagePDUs() const
	TInt checkres = aSmsPdu.NumConcatenatedMessagePDUs ();
	
	if(checkres == 10)
	{
		aLog->Log( _L("NumConcatenatedMessagePDUs() completed"));
	    _LIT(tempVal,"result data:number of concatenated PDUs: %d");
	    aLog->Log (tempVal,checkres);
	    aLog->Log( _L("Get number of concatenated message PDUs == PASS"));
	}
	else
		aLog->Log( _L("Get number of concatenated message PDUs == FAIL"));
	
	return result;
	}


// -----------------------------------------------------------------------------
// TestSetNumberOfConcatenatedMessageL
// Sets the number of PDU's in a Concatenated Message.
// -----------------------------------------------------------------------------
LOCAL_C TInt TestSetNumberOfConcatenatedMessageL (CStifLogger* aLog, CSmsPDU& aSmsPdu)
	{
	aLog->Log( _L("--------------------------------------------------------"));
	aLog->Log( _L("Calling SetNumConcatenatedMessagePDUs()"));
	
	TInt result = KErrNone;
	TInt setVal = 10;
	
	// IMPORT_C void SetNumConcatenatedMessagePDUs(TInt aNum);
	aSmsPdu.SetNumConcatenatedMessagePDUs (setVal);
	
	aLog->Log( _L("SetNumConcatenatedMessagePDUs() completed"));
	aLog->Log( _L("Number of concatenated PDUs stored successfully"));
	aLog->Log( _L("Set number of concatenated message PDUs == PASS"));

	return result;
	}


// -----------------------------------------------------------------------------
// TestGetConcatenatedMessagePDUIndex
// Gets the index of the PDU within the Concatenated Message.
// -----------------------------------------------------------------------------
LOCAL_C TInt TestGetConcatenatedMessagePDUIndex (CStifLogger* aLog, CSmsPDU& aSmsPdu)
	{
	aLog->Log( _L("--------------------------------------------------------"));
	aLog->Log( _L("Calling ConcatenatedMessagePDUIndex()"));
	
	TInt result = KErrNone;
	
	// IMPORT_C TInt ConcatenatedMessagePDUIndex() const;
	TInt checkres = aSmsPdu.ConcatenatedMessagePDUIndex ();
	
	if(checkres == 5)
	{
		aLog->Log( _L("ConcatenatedMessagePDUIndex() completed"));
		_LIT(tempVal,"result data:concatenated message PDU index: %d");
		aLog->Log (tempVal, checkres);
		aLog->Log( _L("Get concatenated message PDU index == PASS"));
	}
	else
		aLog->Log( _L("Get concatenated message PDU index == FAIL"));
	
	return result;
	}


// -----------------------------------------------------------------------------
// TestSetConcatenatedMessagePDUIndex
// Sets the index of the PDU within the Concatenated Message.
// -----------------------------------------------------------------------------
LOCAL_C TInt TestSetConcatenatedMessagePDUIndex (CStifLogger* aLog, CSmsPDU& aSmsPdu)
	{
	aLog->Log( _L("--------------------------------------------------------"));
	aLog->Log( _L("Calling SetConcatenatedMessagePDUIndex()"));
	
	TInt result = KErrNone;
	TInt setVal = 5;
	
	// IMPORT_C void SetConcatenatedMessagePDUIndex(TInt aIndex)
	aSmsPdu.SetConcatenatedMessagePDUIndex (setVal);
	
	aLog->Log( _L("SetConcatenatedMessagePDUIndex() completed"));
	aLog->Log( _L("Concatenated message PDU index stored successfully"));
	aLog->Log( _L("Set concatenated message PDU index == PASS"));

	return result;
	}


// -----------------------------------------------------------------------------
// TestGetApplicationPortAddressing
// Gets application port addressing information in the user data.
// -----------------------------------------------------------------------------
LOCAL_C TInt TestGetApplicationPortAddressing (CStifLogger* aLog, CSmsPDU& aSmsPdu)
	{
	aLog->Log( _L("--------------------------------------------------------"));
	aLog->Log( _L("Calling ApplicationPortAddressing()"));
	
	TInt result = KErrNone;
	TInt aDestination, aOriginator;
	
	// IMPORT_C TBool ApplicationPortAddressing(TInt &aDestination, 
	//     TInt &aOriginator, TBool *aIs16Bit=0) const
	TBool checkres = aSmsPdu.ApplicationPortAddressing (aDestination,aOriginator);
	
	if( checkres )
	{
		aLog->Log( _L("ApplicationPortAddressing() completed"));
		_LIT(tempVal,"result data:destination: %d originator: %d is 16 bit: %d");
		aLog->Log (tempVal, aDestination, aOriginator, checkres);
		aLog->Log( _L("Get application port addressing == PASS"));
	}
	else
		aLog->Log( _L("Get application port addressing == FAIL"));
	
	return result;
	}

// -----------------------------------------------------------------------------
// TestSetApplicationPortAddressing
// Sets application port addressing information in the user data.
// -----------------------------------------------------------------------------
LOCAL_C TInt TestSetApplicationPortAddressing (CStifLogger* aLog, CSmsPDU& aSmsPdu)
	{
	aLog->Log( _L("--------------------------------------------------------"));
	aLog->Log( _L("SetCalling ApplicationPortAddressingL()"));
	
	// IMPORT_C void SetApplicationPortAddressingL(TBool aAddressing, 
	//     TInt aDestination, TInt aOriginator, TBool aIs16Bit=EFalse)
	TRAPD( result, aSmsPdu.SetApplicationPortAddressingL (ETrue, 240,241));
	
	if(result == KErrNone)
	{
		aLog->Log( _L("SetApplicationPortAddressingL() completed"));
		aLog->Log( _L("Application port addressing settings successfully stored"));
		aLog->Log( _L("Set application port addressing == PASS"));
	}
	else
		aLog->Log( _L("Set application port addressing == FAIL"));
	
	return result;
	}


// -----------------------------------------------------------------------------
// TestGetPIDType
// Gets key bits 7 and 6 of the PID field.
// -----------------------------------------------------------------------------
LOCAL_C TInt TestGetPIDType (CStifLogger* aLog, CSmsPDU& aSmsPdu)
	{
	aLog->Log( _L("--------------------------------------------------------"));
	aLog->Log( _L("Calling PIDType()"));
	
	TInt result = KErrNone;
	TSmsProtocolIdentifier::TSmsPIDType testPIDType;
	
	// IMPORT_C TSmsProtocolIdentifier::TSmsPIDType PIDType() const
	testPIDType = aSmsPdu.PIDType ();
	
	if(testPIDType == TSmsProtocolIdentifier::ESmsPIDTelematicInterworking)
	{
		aLog->Log( _L("PIDType() completed"));
		_LIT(tempVal,"result data:PID type: %d");
		aLog->Log (tempVal,testPIDType);
		aLog->Log( _L("Get PID type == PASS"));
	}
	else
		aLog->Log( _L("Get PID type == FAIL"));
	
	return result;
	}


// -----------------------------------------------------------------------------
// TestSetPIDType
// Sets key bits 7 and 6 of the PID field.
// -----------------------------------------------------------------------------
LOCAL_C TInt TestSetPIDType (CStifLogger* aLog, CSmsPDU& aSmsPdu)
	{
	aLog->Log( _L("--------------------------------------------------------"));
	aLog->Log( _L("Calling SetPIDType()"));
	TInt result = KErrNone;
	
	TSmsProtocolIdentifier::TSmsPIDType testPIDType (TSmsProtocolIdentifier::
	    ESmsPIDShortMessageType);
	
	// IMPORT_C void SetPIDType(TSmsProtocolIdentifier::TSmsPIDType aSmsPIDType)
	aSmsPdu.SetPIDType (testPIDType);
	
	aLog->Log( _L("SetPIDType() completed"));
	aLog->Log( _L("PID type stored successfully"));
	aLog->Log( _L("Set PID type == PASS"));
	
	return result;
	}


// -----------------------------------------------------------------------------
// TestGetTelematicDeviceIndicator
// Gets the Telematic device indicator from the PID field.
// -----------------------------------------------------------------------------
LOCAL_C TInt TestGetTelematicDeviceIndicator (CStifLogger* aLog, CSmsPDU& aSmsPdu)
	{
	aLog->Log( _L("--------------------------------------------------------"));
	aLog->Log( _L("Calling TelematicDeviceIndicator()"));
	
	TInt result = KErrNone;
	TSmsProtocolIdentifier::TSmsTelematicDeviceIndicator testDeviceIndicator;
	
	// IMPORT_C TSmsProtocolIdentifier::TSmsTelematicDeviceIndicator 
	//    TelematicDeviceIndicator() const
	testDeviceIndicator = aSmsPdu.TelematicDeviceIndicator ();
	
	if(testDeviceIndicator == TSmsProtocolIdentifier::ESmsNoTelematicDevice)
	{
		aLog->Log( _L("TelematicDeviceIndicator() completed"));
		_LIT(tempVal,"result data:telematic device indicator: %d");
		aLog->Log (tempVal, testDeviceIndicator);
		aLog->Log( _L("Get telematic device indicator == PASS"));
	}
	else
		aLog->Log( _L("Get telematic device indicator == FAIL"));
	
	return result;
	}


// -----------------------------------------------------------------------------
// TestSetTelematicDeviceIndicator
// Sets the Telematic device indicator from the PID field.
// -----------------------------------------------------------------------------
LOCAL_C TInt TestSetTelematicDeviceIndicator (CStifLogger* aLog, CSmsPDU& aSmsPdu)
	{
	aLog->Log( _L("--------------------------------------------------------"));
	aLog->Log( _L("Calling SetTelematicDeviceIndicator()"));
	TInt result = KErrNone;
	
	TSmsProtocolIdentifier::TSmsPIDType testPIDType (TSmsProtocolIdentifier::ESmsPIDTelematicInterworking);
	aSmsPdu.SetPIDType (testPIDType);

	TSmsProtocolIdentifier::TSmsTelematicDeviceIndicator testDeviceIndicator (
	    TSmsProtocolIdentifier::ESmsTelematicDevice);
	
	// IMPORT_C void SetTelematicDeviceIndicator(TSmsProtocolIdentifier::
	//     TSmsTelematicDeviceIndicator aIndicator);
	aSmsPdu.SetTelematicDeviceIndicator (testDeviceIndicator);
	
	aLog->Log( _L("SetTelematicDeviceIndicator() completed"));
    aLog->Log( _L("Telematic device indicator stored successfully"));
	aLog->Log( _L("Set telematic device indicator == PASS"));
		
	return result;
	}


// -----------------------------------------------------------------------------
// TestGetShortMessageType
// Gets the Short Message Type in the PID field.
// -----------------------------------------------------------------------------
LOCAL_C TInt TestGetShortMessageType (CStifLogger* aLog, CSmsPDU& aSmsPdu)
	{
	aLog->Log( _L("--------------------------------------------------------"));
	aLog->Log( _L("Calling ShortMessageType()"));
	
	TInt result = KErrNone;
	TSmsProtocolIdentifier::TSmsShortMessageType testMessageType;
	
	// IMPORT_C TSmsProtocolIdentifier::TSmsShortMessageType 
	//     ShortMessageType() const;
	testMessageType = aSmsPdu.ShortMessageType ();
	
	if(testMessageType == TSmsProtocolIdentifier::ESmsShortMessageType0)
	{
		aLog->Log( _L("ShortMessageType() completed"));
		_LIT(tempVal, "result data:short message type: %d");
		aLog->Log (tempVal, testMessageType);
		aLog->Log( _L("Get short message type == PASS"));
	}
	else
		aLog->Log( _L("Get short message type == FAIL"));
	
	return result;
	}


// -----------------------------------------------------------------------------
// TestSetShortMessageType
// Sets the Short Message Type in the PID field.
// -----------------------------------------------------------------------------
LOCAL_C TInt TestSetShortMessageType (CStifLogger* aLog, CSmsPDU& aSmsPdu)
	{
	aLog->Log( _L("--------------------------------------------------------"));
	aLog->Log( _L("Calling SetShortMessageType()"));
	TInt result = KErrNone;
	
	TSmsProtocolIdentifier::TSmsShortMessageType testMessageType (
	    TSmsProtocolIdentifier::ESmsShortMessageType0);
	
	// IMPORT_C void SetShortMessageType(TSmsProtocolIdentifier::
	//     TSmsShortMessageType aShortMessageType);
	aSmsPdu.SetShortMessageType (testMessageType);

	aLog->Log( _L("SetShortMessageType() completed"));
	aLog->Log( _L("Short message type stored successfully"));
	aLog->Log( _L("Set short message type == PASS"));
	
	return result;
	}


// -----------------------------------------------------------------------------
// TestGetTelematicDeviceType
// Gets the Telematic device type in the PID field
// -----------------------------------------------------------------------------
LOCAL_C TInt TestGetTelematicDeviceType (CStifLogger* aLog, CSmsPDU& aSmsPdu)
	{
	aLog->Log( _L("--------------------------------------------------------"));
	aLog->Log( _L("Calling TelematicDeviceType()"));
	
	TInt result = KErrNone;
	TSmsProtocolIdentifier::TSmsTelematicDeviceType testDeviceType;
	
	// IMPORT_C TSmsProtocolIdentifier::TSmsTelematicDeviceType 
	//     TelematicDeviceType() const
	testDeviceType = aSmsPdu.TelematicDeviceType ();
	
	if(testDeviceType == TSmsProtocolIdentifier::ESmsSCSpecificDevice)
	{
		aLog->Log( _L("TelematicDeviceType() completed"));
		_LIT(tempVal,"result data:telematic device type: %d");
		aLog->Log (tempVal, testDeviceType);
		aLog->Log( _L("Get telematic device type == PASS"));
	}
	else
		aLog->Log( _L("Get telematic device type == FAIL"));
	
	return result;
	}


// -----------------------------------------------------------------------------
// TestSetTelematicDeviceType
// Sets the Telematic device type in the PID field
// -----------------------------------------------------------------------------
LOCAL_C TInt TestSetTelematicDeviceType (CStifLogger* aLog, CSmsPDU& aSmsPdu)
	{
	aLog->Log( _L("--------------------------------------------------------"));
	aLog->Log( _L("Calling SetTelematicDeviceType()"));
	
	TInt result = KErrNone;
	TSmsProtocolIdentifier::TSmsTelematicDeviceType testDeviceType (
	   TSmsProtocolIdentifier::ESmsSCSpecificDevice);
	
	// IMPORT_C void SetTelematicDeviceType(TSmsProtocolIdentifier::
	//    TSmsTelematicDeviceType aDeviceType);
	aSmsPdu.SetTelematicDeviceType (testDeviceType);
	
	aLog->Log( _L("SetTelematicDeviceType() completed"));
	aLog->Log( _L("Telematic device type stored successfully"));
	aLog->Log( _L("Set telematic device type == PASS"));
	
	return result;
	}


// -----------------------------------------------------------------------------
// TestGetUserDataPresent
// Tests if the User Data Header Indicator is set.
// -----------------------------------------------------------------------------
LOCAL_C TInt TestGetUserDataPresent (CStifLogger* aLog, CSmsPDU& aSmsPdu)
	{
	aLog->Log( _L("--------------------------------------------------------"));
	aLog->Log( _L("Calling UserDataPresent()"));
	TInt result = KErrNone;
	
	// IMPORT_C TBool UserDataPresent() const
	TBool checkres = aSmsPdu.UserDataPresent ();
	
	if( checkres )
	{
		aLog->Log( _L("UserDataPresent() completed"));
		aLog->Log( _L("result data:user data present: %d"), checkres);
		aLog->Log( _L("Get user data present == PASS"));
	}
	else
		aLog->Log( _L("Get user data present == FAIL"));
	
	return result;
	}


// -----------------------------------------------------------------------------
// TestSetUserDataPresent
// Sets or unsets the User Data Header Indicator.
// -----------------------------------------------------------------------------
LOCAL_C TInt TestSetUserDataPresent (CStifLogger* aLog, CSmsPDU& aSmsPdu)
	{
	aLog->Log( _L("--------------------------------------------------------"));
	aLog->Log( _L("Calling SetUserDataPresent()"));
	
	TInt result = KErrNone;
	TBool SetVal = ETrue;
	
	// IMPORT_C void SetUserDataPresent(TBool aPresent);
	aSmsPdu.SetUserDataPresent (SetVal);
	
	aLog->Log( _L("SetUserDataPresent() completed"));
	aLog->Log( _L("User data present flag stored successfully"));
	aLog->Log( _L("Set user data present == PASS"));
	
	return result;
	}


// -----------------------------------------------------------------------------
// TestGetDataCodingSchemePresent 
// Tests if data coding scheme is present.
// -----------------------------------------------------------------------------
LOCAL_C TInt TestGetDataCodingSchemePresent (CStifLogger* aLog, CSmsPDU& aSmsPdu)
	{
	aLog->Log( _L("--------------------------------------------------------"));
	aLog->Log( _L("Calling DataCodingSchemePresent()"));
	
	TInt result = KErrNone;
	
	// IMPORT_C TBool DataCodingSchemePresent() const;
	TBool checkres = aSmsPdu.DataCodingSchemePresent ();
	
	if( checkres )
	{
		aLog->Log( _L("DataCodingSchemePresent() completed"));
		aLog->Log (_L("result data:data coding scheme present: %d"),checkres);
		aLog->Log (_L("Get data coding scheme present == PASS"));
	}
	else
		aLog->Log( _L("Get data coding scheme present == FAIL"));
	
	return result;
	}


// -----------------------------------------------------------------------------
// TestSetDataCodingSchemePresent 
// Sets if data coding scheme is present.
// -----------------------------------------------------------------------------
LOCAL_C TInt TestSetDataCodingSchemePresent (CStifLogger* aLog, CSmsPDU& aSmsPdu)
	{
	aLog->Log( _L("--------------------------------------------------------"));
	aLog->Log( _L("Calling SetDataCodingSchemePresent()"));
	
	TInt result = KErrNone;
	TBool SetVal = ETrue;
	
	// IMPORT_C void SetDataCodingSchemePresent(TBool aPresent)
	aSmsPdu.SetDataCodingSchemePresent (SetVal);
	
	aLog->Log( _L("SetDataCodingSchemePresent() completed"));
	aLog->Log( _L("Data coding scheme present flag stored successfully"));
	aLog->Log( _L("Set data coding scheme present == PASS"));
	
	return result;
	}

// -----------------------------------------------------------------------------
// TestGetProtocolIdentifierPresent
// Tests if Protocol Identifier is present.
// -----------------------------------------------------------------------------
LOCAL_C TInt TestGetProtocolIdentifierPresent (CStifLogger* aLog, CSmsPDU& aSmsPdu)
	{
	aLog->Log( _L("--------------------------------------------------------"));
	aLog->Log( _L("Calling ProtocolIdentifierPresent()"));
	
	TInt result = KErrNone;
	
	// IMPORT_C TBool ProtocolIdentifierPresent() const
	TBool checkres = aSmsPdu.ProtocolIdentifierPresent ();
	
	if( checkres )
	{
		aLog->Log( _L("ProtocolIdentifierPresent() completed"));
		_LIT(tempVal,"result data:protocol identifier present: %d");
		aLog->Log (tempVal, checkres);
		aLog->Log( _L("Get protocol identifier present == PASS"));
	}
	else
		aLog->Log( _L("Get protocol identifier present == FAIL"));
	
	return result;
	}


// -----------------------------------------------------------------------------
// TestSetProtocolIdentifierPresent
// Tests if Protocol Identifier is present.
// -----------------------------------------------------------------------------
LOCAL_C TInt TestSetProtocolIdentifierPresent (CStifLogger* aLog, CSmsPDU& aSmsPdu)
	{
	aLog->Log( _L("--------------------------------------------------------"));
	aLog->Log( _L("Calling SetProtocolIdentifierPresent()"));
		
	TInt result = KErrNone;
	TBool SetVal = ETrue;
	
	// IMPORT_C void SetProtocolIdentifierPresent(TBool aPresent);
	aSmsPdu.SetProtocolIdentifierPresent (SetVal);
	
	aLog->Log( _L("SetProtocolIdentifierPresent() completed"));
	aLog->Log( _L("Protocol identifier present flag stored successfully"));
	aLog->Log( _L("Set protocol identifier present == PASS"));
	
	return result;
	}

// -----------------------------------------------------------------------------
// TestGetUserData
// Gets User Data (non-const).
// -----------------------------------------------------------------------------
LOCAL_C TInt TestGetUserData (CStifLogger* aLog, CSmsPDU& aSmsPdu)
	{
	aLog->Log( _L("--------------------------------------------------------"));
	aLog->Log( _L("Calling UserData()"));
	
	TInt result = KErrNone;
	
	// IMPORT_C CSmsUserData &UserData();
	CSmsUserData& testUserData = aSmsPdu.UserData ();
	
	aLog->Log(_L("UserData() completed"));
	aLog->Log(_L("result data:user data (body): %s"), testUserData.Body().Ptr());
	aLog->Log(_L("Get user data == PASS"));
	
	return result;
	}


// -----------------------------------------------------------------------------
// TestGetUserDataConst
// Gets User Data (const).
// -----------------------------------------------------------------------------
LOCAL_C TInt TestGetUserDataConst (CStifLogger* aLog, CSmsPDU& aSmsPdu)
	{
	aLog->Log( _L("--------------------------------------------------------"));
	aLog->Log( _L("Calling UserData()"));
	
	TInt result = KErrNone;
	
	// IMPORT_C const CSmsUserData &UserData() const
	const CSmsUserData& testUserData = aSmsPdu.UserData ();
	
	aLog->Log( _L("UserData() completed"));
	aLog->Log (_L("result data:user data (body): %s"),testUserData.Body().Ptr());
	aLog->Log( _L("Get user data == PASS"));
	
	return result;
	}

LOCAL_C TInt TestSetNationalLanguageEncodingL (CStifLogger* aLog, CSmsPDU& aSmsPdu)
	{
	aLog->Log( _L("--------------------------------------------------------"));
	aLog->Log( _L("Calling SetNationalLanguageEncodingL()"));
	
	TInt result = KErrNone;
		
	aSmsPdu.SetNationalLanguageEncodingL (ESmsEncodingNone);
	TSmsEncoding id = aSmsPdu.NationalLanguageEncoding();
	
	aLog->Log( _L("SetDataCodingSchemePresent() completed"));
	aLog->Log( _L("Data coding scheme present flag stored successfully"));
	aLog->Log( _L("Set data coding scheme present == PASS"));
	
	return result;
	}

// -----------------------------------------------------------------------------
// TestSmsPDUDuplicateL
// Creates a copy of the object
// -----------------------------------------------------------------------------
//
LOCAL_C TInt TestSmsPDUDuplicateL( CStifLogger* aLog, CSmsPDU& aSmsPdu)
	{
	aLog->Log(_L("---------------------------------------------"));
	aLog->Log(_L("Calling SmsPDUDuplicateL()"));
	
	TInt result = KErrNone;
	
	CSmsPDU* dupObj = aSmsPdu.DuplicateL();
		
		if( dupObj )
			{
		aLog->Log(_L("TestSmsPDUDuplicateL() completed"));
		aLog->Log(_L("Object successfully created"));
		aLog->Log(_L("SmsPDUDuplicateL == PASS"));
		
		}
		else
			{
				result = KErrGeneral;
				aLog->Log(_L("SmsPDUDuplicateL == FAIL"));
			}
			return result;
	}	

// -----------------------------------------------------------------------------
// TestDecode
// -----------------------------------------------------------------------------
/*LOCAL_C TInt TestDecode(CStifLogger* aLog, CSmsPDU& aSmsPdu)
	{
	aLog->Log( _L("--------------------------------------------------------"));
	aLog->Log( _L("Calling DecodeL()"));
	
	TBufC8<16> str(KTestGsmPdu8);
	TGsmuLex8 aPduL(str);
	
	// virtual void DecodeL(TGsmuLex8 &aPdu)=0;
	TRAPD( result, aSmsPdu.DecodeL (aPdu));
	
	if(result == KErrNone)
	{
		aLog->Log( _L("DecodeL() completed"));
		aLog->Log( _L("Decode performed successfully"));
		aLog->Log( _L("Decode == PASS"));
	}
	else
		aLog->Log( _L("Decode == FAIL"));
	
	CleanupStack::Pop();
	return result;
	}
*/
// -----------------------------------------------------------------------------
// TestSetParameterIndicatorPresent
// 
// -----------------------------------------------------------------------------
LOCAL_C TInt TestSetParameterIndicatorPresent( CStifLogger* aLog, CSmsStatusReport& aReport)
	{
	aLog->Log(_L("---------------------------------------------"));
	aLog->Log(_L("Calling SetParameterIndicatorPresent()"));
	TInt result = KErrNone;
	
	//inline void SetParameterIndicatorPresent(TBool aPresent);
	aReport.SetParameterIndicatorPresent(ETrue);
	
	aLog->Log(_L("SetParameterIndicatorPresent() completed"));
	aLog->Log(_L("Parameter indicator present flag stored successfully"));
	aLog->Log(_L("Set parameter indicator present == PASS"));
	
	return result;
	}
	
// -----------------------------------------------------------------------------
// TestGetParameterIndicatorPresent
// 
// -----------------------------------------------------------------------------
LOCAL_C TInt TestGetParameterIndicatorPresent( CStifLogger* aLog, CSmsStatusReport& aReport)
	{
	aLog->Log(_L("---------------------------------------------"));
	aLog->Log(_L("Calling ParameterIndicatorPresent()"));
	TInt result = KErrNone;
	
	//inline TBool ParameterIndicatorPresent() const;
	TBool indicator = aReport.ParameterIndicatorPresent();
	
	if( indicator )
		{
		aLog->Log(_L("ParameterIndicatorPresent() Completed"));
		aLog->Log(_L("Result data: Parameter indicator present: %d"), indicator);
		aLog->Log(_L("Get parameter indicator present == PASS"));
		}
	else
		aLog->Log(_L("Get parameter indicator present == FAIL"));
	
	return result;
	}

// -----------------------------------------------------------------------------
// TestSetMoreMessagesToSend
// 
// -----------------------------------------------------------------------------
LOCAL_C TInt TestSetMoreMessagesToSend( CStifLogger* aLog, CSmsStatusReport& aReport)
	{
	aLog->Log(_L("---------------------------------------------"));
	aLog->Log(_L("Calling SetMoreMessagesToSend()"));
	TInt result = KErrNone;
	
	//void SetMoreMessagesToSend(TBool aMore);
	aReport.SetMoreMessagesToSend(ETrue);
	
	aLog->Log(_L("SetMoreMessagesToSend() Completed"));
	aLog->Log(_L("More messages to send - flag successfully stored"));
	aLog->Log(_L("Set more messages to send == PASS"));
	
	return result;
	}

// -----------------------------------------------------------------------------
// TestGetMoreMessagesToSend
// 
// -----------------------------------------------------------------------------
LOCAL_C TInt TestGetMoreMessagesToSend( CStifLogger* aLog, CSmsStatusReport& aReport)
	{
	aLog->Log(_L("---------------------------------------------"));
	aLog->Log(_L("Calling MoreMessagesToSend()"));
	TInt result = KErrNone;
	
	//TBool MoreMessagesToSend() const;
	TBool msgs = aReport.MoreMessagesToSend();
	
	if(msgs)
		{
		aLog->Log(_L("MoreMessagesToSend() Completed"));
		aLog->Log(_L("Result Data:More messages to send flag: %d"), msgs);
		aLog->Log(_L("Get more messages to send == PASS"));
		}
	else
		{
		result =KErrGeneral;
		aLog->Log(_L("Get more messages to send == PASS"));
		}
			
	return result;
	}
	
// -----------------------------------------------------------------------------
// TestSetStatusReportQualifier
// 
// -----------------------------------------------------------------------------
LOCAL_C TInt TestSetStatusReportQualifier( CStifLogger* aLog, CSmsStatusReport& aReport)
	{
	aLog->Log(_L("---------------------------------------------"));
	aLog->Log(_L("Calling SetStatusReportQualifier()"));
	TInt result = KErrNone;
	
	TSmsFirstOctet::TSmsStatusReportQualifier qualifier = TSmsFirstOctet::ESmsStatusReportResultOfSubmit;
	//void SetStatusReportQualifier(TSmsFirstOctet::TSmsStatusReportQualifier aQualifier);
	aReport.SetStatusReportQualifier( qualifier );
	
	aLog->Log(_L("SetStatusReportQualifier() Completed"));
	aLog->Log(_L("Status report qualifier stored successfully"));
	aLog->Log(_L("Set status report qualifier == PASS"));
	
	return result;
	}
	
// -----------------------------------------------------------------------------
// TestGetStatusReportQualifier
// 
// -----------------------------------------------------------------------------
LOCAL_C TInt TestGetStatusReportQualifier( CStifLogger* aLog, CSmsStatusReport& aReport)
	{
	aLog->Log(_L("---------------------------------------------"));
	aLog->Log(_L("Calling StatusReportQualifier()"));
	TInt result = KErrNone;
	
	//TSmsFirstOctet::TSmsStatusReportQualifier StatusReportQualifier() const;
	TSmsFirstOctet::TSmsStatusReportQualifier qualifier = aReport.StatusReportQualifier();
	
	if( qualifier == TSmsFirstOctet::ESmsStatusReportResultOfSubmit )
		{
		aLog->Log(_L("StatusReportQualifier() Completed"));
		aLog->Log(_L("Result data: Status report qualifier: %d"), qualifier);
		aLog->Log(_L("Get status report qualifier == PASS"));
		}
	else
		aLog->Log(_L("Get status report qualifier == FAIL"));
	
	return result;
	}

// -----------------------------------------------------------------------------
// TestGetMessageReference
// Gets the Message Reference
// -----------------------------------------------------------------------------
//
LOCAL_C TInt TestGetMessageReference( CStifLogger* aLog, CSmsStatusReport& aReport)
	{
	aLog->Log(_L("---------------------------------------------"));
	aLog->Log(_L("Calling MessageReference()"));
	TInt result = KErrNone;
	
	//IMPORT_C TInt MessageReference() const;
	TInt getRef = aReport.MessageReference();
	
	aLog->Log(_L("MessageReference() Completed"));
	aLog->Log(_L("result data:Message reference: %d"), getRef);
	aLog->Log(_L("Get Message Reference == PASS"));

	return result;
	}
	
// -----------------------------------------------------------------------------
// TestSetMessageReference
// Sets the Message Reference
// -----------------------------------------------------------------------------
//
LOCAL_C TInt TestSetMessageReference( CStifLogger* aLog, CSmsStatusReport& aReport)
	{
	aLog->Log(_L("---------------------------------------------"));
	aLog->Log(_L("Calling SetMessageReference()"));
	TInt result = KErrNone;
	
	TInt setRef = 1;
	//IMPORT_C void SetMessageReference(TInt aMessageReference);
	aReport.SetMessageReference(setRef);
	
	aLog->Log(_L("SetMessageReference() Completed"));
	aLog->Log(_L("Message reference successfully stored"));
	aLog->Log(_L("Set Message Reference == PASS"));

	return result;
	}
	
// -----------------------------------------------------------------------------
// TestSetServiceCenterTimeStamp
// -----------------------------------------------------------------------------
LOCAL_C TInt TestSetServiceCenterTimeStamp( CStifLogger* aLog, CSmsStatusReport& aReport)
	{
	aLog->Log(_L("---------------------------------------------"));
	aLog->Log(_L("Calling SetServiceCenterTimeStamp()"));
	TInt result = KErrNone;
	
	const TTime time(_L("20060201:000000.000000"));
	TInt numQuarterHours = 1;
	//IMPORT_C void SetServiceCenterTimeStamp(const TTime& aTime,TInt& aNumQuarterHours);
	aReport.SetServiceCenterTimeStamp(time, numQuarterHours);
	
	aLog->Log(_L("SetServiceCenterTimeStamp() Completed"));
	aLog->Log(_L("Time stamp successfully stored"));
	aLog->Log(_L("Set service center time stamp == PASS"));
	
	return result;
	}

// -----------------------------------------------------------------------------
// TestGetServiceCenterTimeStamp
// -----------------------------------------------------------------------------
LOCAL_C TInt TestGetServiceCenterTimeStampL( CStifLogger* aLog, CSmsStatusReport& aReport)
	{
	aLog->Log(_L("---------------------------------------------"));
	aLog->Log(_L("Calling ServiceCenterTimeStamp()"));
	TInt result = KErrNone;
	
	TBuf<30> string;
	_LIT( KFormat, "%*E%*D%X%*N%*Y %1 %2 '%3 %H%:1%T%:2%S");
	TTime setTime(TDateTime(2006,EJanuary,01,12,0,0,0));
	TTime getTime;
	TInt numQuarterHrs;
	//void ServiceCenterTimeStamp(TTime& aTime,TInt& aNumQuarterHours);
	aReport.ServiceCenterTimeStamp(getTime, numQuarterHrs);
	
	if( getTime == setTime )
		{
		getTime.FormatL(string, KFormat);
		aLog->Log(_L("ServiceCenterTimeStamp() Completed"));
		aLog->Log(_L("Result data:Time stamp: %S"), &string);
		aLog->Log(_L("Get service center time stamp == PASS"));
		}
	else
		{
		result = KErrGeneral;
		aLog->Log(_L("Get service center time stamp == FAIL"));
		}
		
	return result;
	}
	
// -----------------------------------------------------------------------------
// TestSetDischargeTime
// -----------------------------------------------------------------------------
LOCAL_C TInt TestSetDischargeTime( CStifLogger* aLog, CSmsStatusReport& aReport)
	{
	aLog->Log(_L("---------------------------------------------"));
	aLog->Log(_L("Calling SetDischargeTime()"));
	TInt result = KErrNone;
	
	const TTime time(_L("20060201:000000.000000"));
	TInt numQuarterHrs = 2;
	//void SetDischargeTime(const TTime& aTime,TInt& aNumQuarterHours);	
	aReport.SetDischargeTime(time, numQuarterHrs);
	
	aLog->Log(_L("SetDischargeTime Completed"));
	aLog->Log(_L("Discharge time stored successfully"));
	aLog->Log(_L("Set discharge time == PASS"));
	
	return result;	
	}
	
// -----------------------------------------------------------------------------
// TestGetDischargeTime
// -----------------------------------------------------------------------------
LOCAL_C TInt TestGetDischargeTimeL( CStifLogger* aLog, CSmsStatusReport& aReport)
	{
	aLog->Log(_L("---------------------------------------------"));
	aLog->Log(_L("Calling DischargeTime()"));
	TInt result = KErrNone;
	
	TBuf<30> string;
	_LIT( KFormat, "%*E%*D%X%*N%*Y %1 %2 '%3 %H%:1%T%:2%S");
	TTime setTime(TDateTime(2006,EJanuary,01,12,0,0,0));
	TTime time;
	TInt numQuarterHrs;
	//void DischargeTime(TTime& aTime,TInt& aNumQuarterHours);
	aReport.DischargeTime(time, numQuarterHrs);
	
	if( time == setTime )
		{
		time.FormatL(string, KFormat);
		aLog->Log(_L("DischargeTime() Completed"));
		aLog->Log(_L("Result data: Discharge time: %S"), &string);
		aLog->Log(_L("Get discharge time == PASS"));
		}
	else
		aLog->Log(_L("Get discharge time == FAIL"));
	
	return result;	
	}
	
// -----------------------------------------------------------------------------
// TestSetStatus
// 
// -----------------------------------------------------------------------------
LOCAL_C TInt TestSetStatus(CStifLogger* aLog, CSmsStatusReport& aReport)
	{
	aLog->Log(_L("---------------------------------------------"));
	aLog->Log(_L("Calling SetStatus()"));
	TInt result = KErrNone;
	
	//void SetStatus(TSmsStatus::TSmsStatusValue aValue);
	TSmsStatus::TSmsStatusValue status = TSmsStatus::ESmsShortMessageReceivedBySME;
	aReport.SetStatus(status);
	
	aLog->Log(_L("Status() Completed"));	
	aLog->Log(_L("Result data: status: %d"), status);	
	aLog->Log(_L("Get status == PASS"));	
	
	return result;
	}
	
// -----------------------------------------------------------------------------
// TestGetStatus
// 
// -----------------------------------------------------------------------------
LOCAL_C TInt TestGetStatus(CStifLogger* aLog, CSmsStatusReport& aReport)
	{
	aLog->Log(_L("---------------------------------------------"));
	aLog->Log(_L("Calling Status()"));
	TInt result = KErrNone;
	
	//TSmsStatus::TSmsStatusValue Status() const;
	TSmsStatus::TSmsStatusValue status = aReport.Status();
	
	if( status == TSmsStatus::ESmsShortMessageReceivedBySME )
		{
		aLog->Log(_L("Status() Completed"));	
		aLog->Log(_L("Result data: status: %d"), status);	
		aLog->Log(_L("Get status == PASS"));	
		}
	else
		aLog->Log(_L("Get status == FAIL"));	
	
	return result;
	}

// -----------------------------------------------------------------------------
// TestSmsStatusReportDuplicateL
// Creates a copy of the object
// -----------------------------------------------------------------------------
//
LOCAL_C TInt TestSmsStatusReportDuplicateL( CStifLogger* aLog, CSmsStatusReport& aReport)
	{
	aLog->Log(_L("---------------------------------------------"));
	aLog->Log(_L("Calling SmsStatusReportDuplicateL()"));
	
	TInt result = KErrNone;
	
	CSmsStatusReport* dupObj = aReport.DuplicateL();
		
		if( dupObj )
			{
		aLog->Log(_L("TestSmsStatusReportDuplicateL() completed"));
		aLog->Log(_L("Object successfully created"));
		aLog->Log(_L("SmsStatusReportDuplicateL == PASS"));
		
		}
		else
			{
				result = KErrGeneral;
				aLog->Log(_L("SmsStatusReportDuplicateL == FAIL"));
			}
			return result;
	}	
// -----------------------------------------------------------------------------
// TestGetRejectDuplicates 
// 
// -----------------------------------------------------------------------------
LOCAL_C TInt TestGetRejectDuplicates(CStifLogger* aLog, CSmsSubmit& aSmsSub)
	{
	aLog->Log( _L("--------------------------------------------------------"));
	aLog->Log( _L("Calling RejectDuplicates()"));
	
	TInt result = KErrNone;
	
	//TBool RejectDuplicates() const;
	TBool reject = aSmsSub.RejectDuplicates();
	
	if( reject )
		{
		aLog->Log(_L("RejectDuplicates() Completed"));
		aLog->Log(_L("Result data: Reject duplicates: %d"), reject);
		aLog->Log(_L("Get reject duplicates == PASS"));
		}
		
	return result;	
	}
	
// -----------------------------------------------------------------------------
// TestSetRejectDuplicates 
// 
// -----------------------------------------------------------------------------
LOCAL_C TInt TestSetRejectDuplicates(CStifLogger* aLog, CSmsSubmit& aSmsSub)
	{
	aLog->Log( _L("--------------------------------------------------------"));
	aLog->Log( _L("Calling SetRejectDuplicates()"));
	
	TInt result = KErrNone;
	TBool reject = ETrue;
	//void SetRejectDuplicates(TBool aRejectDuplicates);
	aSmsSub.SetRejectDuplicates(reject);
	
	aLog->Log(_L("SetRejectDuplicates() Completed"));
	aLog->Log(_L("Reject duplicate flag stored successfully"));
	aLog->Log(_L("Set reject duplicates == PASS"));
	
	return result;	
	}

// -----------------------------------------------------------------------------
// TestGetValidityPeriodFormat 
// Gets the Validity Period Format
// -----------------------------------------------------------------------------
LOCAL_C TInt TestGetValidityPeriodFormat (CStifLogger* aLog, CSmsSubmit& aSmsSub)
	{
	aLog->Log( _L("--------------------------------------------------------"));
	aLog->Log( _L("Calling ValidityPeriodFormat()"));
	
	TInt result = KErrNone;
	
	// IMPORT_C TSmsFirstOctet::TSmsValidityPeriodFormat ValidityPeriodFormat() const
	TSmsFirstOctet::TSmsValidityPeriodFormat pformat = aSmsSub.ValidityPeriodFormat ();
	
	if(pformat == TSmsFirstOctet::ESmsVPFNone)
		{
		aLog->Log(_L("ValidityPeriodFormat() completed"));
		aLog->Log(_L("Validity period format: %d"),pformat);
		aLog->Log(_L("Get validity period format == PASS"));
		}
	else
		aLog->Log( _L("ValidityPeriodFormat() == FAIL"));
	
	return result;
	}
	
// -----------------------------------------------------------------------------
// TestSetValidityPeriodFormat
// Sets the Validity Period Format
// -----------------------------------------------------------------------------
LOCAL_C TInt TestSetValidityPeriodFormat (CStifLogger* aLog, CSmsSubmit& aSmsSub)
	{
	aLog->Log( _L("--------------------------------------------------------"));
	aLog->Log( _L("Calling SetValidityPeriodFormat()"));
	
	TInt result = KErrNone;
	
	// IMPORT_C void SetValidityPeriodFormat(TSmsFirstOctet::TSmsValidityPeriodFormat aValidityPeriodFormat)
	TSmsFirstOctet::TSmsValidityPeriodFormat aValidityPeriodFormat (TSmsFirstOctet::ESmsVPFNone);
	
	aSmsSub.SetValidityPeriodFormat (aValidityPeriodFormat);
	
	aLog->Log( _L("SetValidityPeriodFormat() completed"));
	aLog->Log( _L("Validity period format stored successfully"));
	aLog->Log( _L("Set validity period format == PASS"));

	return result;
	}


// -----------------------------------------------------------------------------
// TestGetReplyPath
// Gets Reply Path flag
// If a Reply Path exists, the recipient of the SMS can reply using the same 
// service center address
// -----------------------------------------------------------------------------
LOCAL_C TInt TestGetReplyPath (CStifLogger* aLog, CSmsSubmit& aSmsSub)
	{
	aLog->Log( _L("--------------------------------------------------------"));
	aLog->Log( _L("Calling ReplyPath()"));
	
	TInt result = KErrNone;
	
	// IMPORT_C TBool ReplyPath() const
	TBool checkres = aSmsSub.ReplyPath ();
	
	if( checkres )
	{
		aLog->Log (_L("ReplyPath() completed"));
		aLog->Log (_L("Result data:reply path flag: %d"),checkres);
		aLog->Log (_L("Get reply path == PASS"));
	}
	else
		aLog->Log (_L("Get reply path == FAIL"));
	
	return result;
	}
	

// -----------------------------------------------------------------------------
// TestSetReplyPath
// Sets Reply Path flag
// -----------------------------------------------------------------------------
LOCAL_C TInt TestSetReplyPath (CStifLogger* aLog, CSmsSubmit& aSmsSub)
	{
	aLog->Log( _L("--------------------------------------------------------"));
	aLog->Log( _L("Calling SetReplyPath()"));
	
	TInt result = KErrNone;
	TBool tempVar = ETrue;
	
	// IMPORT_C void SetReplyPath (TBool aReplyPath)
	aSmsSub.SetReplyPath (tempVar);
	
	aLog->Log( _L("SetReplyPath() completed"));
	aLog->Log( _L("Reply path flag stored successfully"));
	aLog->Log( _L("Set reply path == PASS"));
	
	return result;	
	}


// -----------------------------------------------------------------------------
// TestGetStatusReportRequest 
// Gets Status Report Request flag
// A sender can request STATUS REPORTs for the SUBMIT being sent
// -----------------------------------------------------------------------------
LOCAL_C TInt TestGetStatusReportRequest (CStifLogger* aLog, CSmsSubmit& aSmsSub)
	{
	aLog->Log( _L("--------------------------------------------------------"));
	aLog->Log( _L("Calling StatusReportRequest()"));
	TInt result = KErrNone;
	
	// IMPORT_C TBool StatusReportRequest() const
	TBool checkres = aSmsSub.StatusReportRequest();
	
	if( checkres )
	{
		aLog->Log(_L("StatusReportRequest() completed"));
		aLog->Log (_L("result data:status report request flag: %d"),checkres);
		aLog->Log(_L("Get status report request == PASS"));
	}
	else
		aLog->Log( _L("Get status report request == FAIL"));
	
	return result;	
	}


// -----------------------------------------------------------------------------
// TestSetStatusReportRequest 
// Sets Status Report Request flag
// -----------------------------------------------------------------------------
LOCAL_C TInt TestSetStatusReportRequest (CStifLogger* aLog, CSmsSubmit& aSmsSub)
	{
	aLog->Log( _L("--------------------------------------------------------"));
	aLog->Log( _L("Calling SetStatusReportRequest()"));
	
	TInt result = KErrNone;
	TBool tempVar = ETrue;
	
	// IMPORT_C void SetStatusReportRequest(TBool aRequest);
	aSmsSub.SetStatusReportRequest (tempVar);
	
	aLog->Log( _L("SetStatusReportRequest() completed"));
	aLog->Log( _L("Status report request flag stored successfully"));
	aLog->Log( _L("Set status report request == PASS"));
	
	return result;
	}


// -----------------------------------------------------------------------------
// TestGetMessageReference  
// Gets the Message Reference
// -----------------------------------------------------------------------------
LOCAL_C TInt TestGetMessageReference (CStifLogger* aLog, CSmsSubmit& aSmsSub)
	{
	aLog->Log( _L("--------------------------------------------------------"));
	aLog->Log( _L("Calling MessageReference()"));
	
	TInt result = KErrNone;
	
	// IMPORT_C TInt MessageReference() const
	TInt checkres = aSmsSub.MessageReference();
	
	if(checkres == 10)
	{
		aLog->Log( _L("MessageReference() completed"));
		_LIT(tempStr,"result data:message reference: %d");
		aLog->Log (tempStr,checkres);
		aLog->Log( _L("Get message reference == PASS"));
	}
	else
		aLog->Log( _L("Get message reference == FAIL"));
	
	return result;
	}


// -----------------------------------------------------------------------------
// TestSetMessageReference  
// Sets the Message Reference
// -----------------------------------------------------------------------------
LOCAL_C TInt TestSetMessageReference (CStifLogger* aLog, CSmsSubmit& aSmsSub)
	{
	aLog->Log( _L("--------------------------------------------------------"));
	aLog->Log( _L("Calling SetMessageReference()"));
	
	TInt result = KErrNone;
	
	// IMPORT_C void SetMessageReference(TInt aMessageReference)
	aSmsSub.SetMessageReference (10);
	
	aLog->Log( _L("SetMessageReference() completed"));
	aLog->Log( _L("Message reference stored successfully"));
	aLog->Log( _L("Set message reference == PASS"));
	
	return result;
	}


// -----------------------------------------------------------------------------
// TestGetValidityPeriod   
// Gets the Validity Period for the SUBMIT
// -----------------------------------------------------------------------------
LOCAL_C TInt TestGetValidityPeriod (CStifLogger* aLog, CSmsSubmit& aSmsSub)
	{
	aLog->Log( _L("--------------------------------------------------------"));
	aLog->Log( _L("Calling ValidityPeriod()"));
	
	TInt result = KErrNone;
	
	// IMPORT_C const TTimeIntervalMinutes &ValidityPeriod() const
	TTimeIntervalMinutes timeinterval;
	timeinterval = aSmsSub.ValidityPeriod ();
	
	if(timeinterval.Int() == 1)
	{
		aLog->Log( _L("ValidityPeriod() completed"));
		_LIT(tempVal,"result data:validity period: %d");
		aLog->Log (tempVal,timeinterval.Int() );
		aLog->Log( _L("Get validity period == PASS"));
	}
	else
		aLog->Log( _L("Get validity period == FAIL"));
		
	return result;
	}


// -----------------------------------------------------------------------------
// TestSetValidityPeriod
// Sets the Validity Period for the SUBMIT
// -----------------------------------------------------------------------------
LOCAL_C TInt TestSetValidityPeriod (CStifLogger* aLog, CSmsSubmit& aSmsSub)
	{
	aLog->Log( _L("--------------------------------------------------------"));
	aLog->Log( _L("Calling SetValidityPeriod()"));
	
	TInt result = KErrNone;
	
	// IMPORT_C void SetValidityPeriod(const TTimeIntervalMinutes 
	// &aTimeIntervalMinutes)
	TTimeIntervalMinutes timeinterval = 1;
	aSmsSub.SetValidityPeriod (timeinterval);
	
	aLog->Log( _L("SetValidityPeriod() completed"));
	aLog->Log( _L("Validity period stored successfully"));
	aLog->Log( _L("Set validity period == PASS"));
	
	return result;
	}

// -----------------------------------------------------------------------------
// TestSmsSubmitDuplicateL
// Creates a copy of the object
// -----------------------------------------------------------------------------
//
LOCAL_C TInt TestSmsSubmitDuplicateL( CStifLogger* aLog, CSmsSubmit& aSmsSub)
	{
	aLog->Log(_L("---------------------------------------------"));
	aLog->Log(_L("Calling SmsSubmitDuplicateL()"));
	
	TInt result = KErrNone;
	
	CSmsSubmit* dupObj = aSmsSub.DuplicateL();
		
		if( dupObj )
			{
		aLog->Log(_L("TestSmsSubjectDuplicateL() completed"));
		aLog->Log(_L("Object successfully created"));
		aLog->Log(_L("SmsSubmitDuplicateL == PASS"));
			}
		else
			{
				result = KErrGeneral;
				aLog->Log(_L("SmsSubmitDuplicateL == FAIL"));
			}
			return result;
	}

// -----------------------------------------------------------------------------
// TestGetIsRPError
// Gets the Reply Path Error flag 
// -----------------------------------------------------------------------------
LOCAL_C TInt TestGetIsRPError (CStifLogger* aLog, CSmsSubmitReport& aSmsSubReport)
	{
	aLog->Log( _L("--------------------------------------------------------"));
	aLog->Log( _L("Calling IsRPError()"));
	
	TInt result = KErrNone;
	 
	// TBool IsRPError() const
	TBool checkres = aSmsSubReport.IsRPError();
	
	if( checkres )
	{
		aLog->Log(_L("IsRPError() completed"));
		aLog->Log(_L("Result data:is RP error flag: %d"),checkres);
		aLog->Log(_L("Get is RP error == PASS"));
	}
	else
		aLog->Log(_L("Get is RP error == FAIL"));
	
	return result;
	}


// -----------------------------------------------------------------------------
// TestSetIsRPError
// Gets the Reply Path Error flag 
// -----------------------------------------------------------------------------
LOCAL_C TInt TestSetIsRPError (CStifLogger* aLog, CSmsSubmitReport& aSmsSubReport)
	{
	aLog->Log( _L("--------------------------------------------------------"));
	aLog->Log( _L("Calling SetIsRPError()"));
	
	TInt result = KErrNone;
	TBool tempVar = ETrue;
	
	// inline void SetIsRPError(TBool aIsRPError)
	aSmsSubReport.SetIsRPError (tempVar);
	
	aLog->Log( _L("SetIsRPError() completed"));
	aLog->Log( _L("Is RP error flag stored successfully"));
	aLog->Log( _L("Set is RP error == PASS"));
	
	return result;
	}
	

// -----------------------------------------------------------------------------
// TestGetFailureCause
// Gets the Failure Cause 
// -----------------------------------------------------------------------------
LOCAL_C TInt TestGetFailureCause (CStifLogger* aLog, CSmsSubmitReport& aSmsSubReport)
	{
	aLog->Log( _L("--------------------------------------------------------"));
	aLog->Log( _L("Calling FailureCause()"));
	
	TInt result = KErrNone;
	 
	// IMPORT_C TInt FailureCause() const
	TInt checkres = aSmsSubReport.FailureCause ();
	
	if(checkres == TSmsFailureCause::ESmsPIDErrorCannotReplaceShortMessage)
	{
		aLog->Log( _L("FailureCause() completed"));
		_LIT(tempVal,"result data:failure cause: %d");
		aLog->Log(tempVal,checkres);
		aLog->Log( _L("Get failure cause == PASS"));
	}
	else
		aLog->Log( _L("Get failure cause == FAIL"));
	
	return result;
	}
	
	
// -----------------------------------------------------------------------------
// TestSetFailureCause
// Sets the Failure Cause 
// -----------------------------------------------------------------------------
LOCAL_C TInt TestSetFailureCause (CStifLogger* aLog, CSmsSubmitReport& aSmsSubReport)
	{
	aLog->Log( _L("--------------------------------------------------------"));
	aLog->Log( _L("Calling SetFailureCause()"));
	
	TInt result = KErrNone;
	TSmsFailureCause::TSmsFailureCauseError aFailureCause = 
	   TSmsFailureCause::ESmsPIDErrorCannotReplaceShortMessage;
	
	// IMPORT_C void SetFailureCause
	// (TSmsFailureCause::TSmsFailureCauseError aFailureCause)
	aSmsSubReport.SetFailureCause (aFailureCause);
	
	aLog->Log( _L("SetFailureCause() completed"));
	aLog->Log( _L("Failure cause stored successfully"));
	aLog->Log( _L("Set failure cause == PASS"));
	
	return result;
	}

// -----------------------------------------------------------------------------
// TestSmsSubmitReportDuplicateL
// Creates a copy of the object
// -----------------------------------------------------------------------------
//
LOCAL_C TInt TestSmsSubmitReportDuplicateL( CStifLogger* aLog, CSmsSubmitReport& aSmsSubReport)
	{
	aLog->Log(_L("---------------------------------------------"));
	aLog->Log(_L("Calling SmsSubmitReportDuplicateL()"));
	
	TInt result = KErrNone;
	
	CSmsSubmitReport* dupObj = aSmsSubReport.DuplicateL();
		
		if( dupObj )
			{
		aLog->Log(_L("TestSmsSubmitReportDuplicateL() completed"));
		aLog->Log(_L("Object successfully created"));
		aLog->Log(_L("SmsSubmitReportDuplicateL == PASS"));
		
		}
		else
			{
				result = KErrGeneral;
				aLog->Log(_L("SmsSubmitReportDuplicateL == FAIL"));
			}
			return result;
	}

// -----------------------------------------------------------------------------
// TestGetNumberOfInformationElements 
// Gets the number of information elements
// -----------------------------------------------------------------------------
LOCAL_C TInt TestGetNumberOfInformationElements (CStifLogger* aLog, CSmsUserData& aSmsUsr)
	{
	aLog->Log( _L("--------------------------------------------------------"));
	aLog->Log( _L("Calling NumInformationElements()"));
	
	TInt result = KErrNone;
	
	// inline TInt NumInformationElements() const
	TInt checkres = aSmsUsr.NumInformationElements();
	
	if( checkres == 0)
	{
		aLog->Log( _L("NumInformationElements() completed"));
		_LIT(tempVal,"result:number of information elements: %d");
		aLog->Log(tempVal, checkres);
		aLog->Log( _L("Get number of information elements == PASS"));
	}
	else
		aLog->Log( _L("Get number of information elements == FAIL"));
	
	return result;	
	}


// -----------------------------------------------------------------------------
// TestGetInformationElement 
// Gets an information element by index
// -----------------------------------------------------------------------------
LOCAL_C TInt TestGetInformationElement (CStifLogger* aLog, CSmsUserData& aSmsUsr)
	{
	aLog->Log( _L("--------------------------------------------------------"));
	aLog->Log( _L("Calling InformationElement()"));
	
	TInt result = KErrNone;
	TInt index = 0;
	
	// IMPORT_C CSmsInformationElement &InformationElement(TInt aIndex) const
	CSmsInformationElement& infoElem = aSmsUsr.InformationElement (index);
	
	aLog->Log( _L("InformationElement() completed"));
	aLog->Log(_L("Information element (identifier): %d"), infoElem.Identifier());
	aLog->Log( _L("Get information element == PASS"));
	
	return result;
	}


// -----------------------------------------------------------------------------
// TestGetInformationElementIndex
// Gets the index of an information element
// -----------------------------------------------------------------------------
LOCAL_C TInt TestGetInformationElementIndex (CStifLogger* aLog, CSmsUserData& aSmsUsr)
	{
	aLog->Log( _L("--------------------------------------------------------"));
	aLog->Log( _L("Calling InformationElementIndex()"));
	
	TInt result = KErrNone;
	TInt index;
	CSmsInformationElement::TSmsInformationElementIdentifier aIdentifier 
	 ( CSmsInformationElement::ESmsIEISpecialSMSMessageIndication);
		
	// IMPORT_C TBool InformationElementIndex(
	// CSmsInformationElement::TSmsInformationElementIdentifier aIdentifier, 
	// TInt &aIndex) const
	TBool checkres = aSmsUsr.InformationElementIndex (aIdentifier,index); 
	
	if( checkres )
		{
		aLog->Log(_L("InformationElementIndex() completed"));
		aLog->Log(_L("Result data:information element index: %d"), checkres);
		aLog->Log(_L("Get information element index == PASS"));
		}
	else
		aLog->Log(_L("Get information element index == FAIL"));
	
	return result;
	}


// -----------------------------------------------------------------------------
// TestAddInformationElement 
// Adds an information element
// -----------------------------------------------------------------------------
LOCAL_C TInt TestAddInformationElement (CStifLogger* aLog, CSmsUserData& aSmsUsr)
	{
	aLog->Log( _L("--------------------------------------------------------"));
	aLog->Log( _L("Calling AddInformationElementL()"));
	
	_LIT8(str,"test string");
	const TBufC8<20> data (str);
	TSmsId testObject (CSmsInformationElement::ESmsIEISpecialSMSMessageIndication);
	
	// IMPORT_C void AddInformationElementL(TSmsId aIdentifier, 
	// const TDesC8 &aData)
	TRAPD( result, aSmsUsr.AddInformationElementL (testObject,data));
	
	if(result == KErrNone)
		{
		aLog->Log( _L("AddInformationElementL() completed"));
		aLog->Log( _L("Information element added successfully"));
		aLog->Log( _L("Add information element == PASS"));
		}
	else
		aLog->Log( _L("Add information element == FAIL"));
	
	return result;
	}


// -----------------------------------------------------------------------------
// TestRemoveInformationElement
// Removes an information element at the specified index
// -----------------------------------------------------------------------------
LOCAL_C TInt TestRemoveInformationElement (CStifLogger* aLog, CSmsUserData& aSmsUsr)
	{
	aLog->Log( _L("--------------------------------------------------------"));
	aLog->Log( _L("Calling RemoveInformationElement()"));
	
	TInt result = KErrNone;
	TInt index = 0;
	
	// IMPORT_C void RemoveInformationElement(TInt aIndex)
	aSmsUsr.RemoveInformationElement (index);
	
	aLog->Log( _L("RemoveInformationElement() completed"));
	aLog->Log( _L("Information element removed successfully"));
	aLog->Log( _L("Remove information element == PASS"));
	
	return result;
	}


// -----------------------------------------------------------------------------
// TestMaxBodyLengthInChars 
// Gets the maximum characters in body length of user data
// -----------------------------------------------------------------------------
LOCAL_C TInt TestMaxBodyLengthInChars (CStifLogger* aLog, CSmsUserData& aSmsUsr)
	{
	aLog->Log( _L("--------------------------------------------------------"));
	aLog->Log( _L("Calling MaxBodyLengthInChars()"));
	
	TInt result = KErrNone;
	 	
	// IMPORT_C TInt MaxBodyLengthInChars() const
	TInt charret = aSmsUsr.MaxBodyLengthInChars ();
	
	aLog->Log( _L("MaxBodyLengthInChars() completed"));
	_LIT(tempVal, "result data:max body length in chars: %d");
	aLog->Log(tempVal,charret);
	aLog->Log( _L("Get max body length in chars == PASS"));
	
	return result;
	}


// -----------------------------------------------------------------------------
// TestGetBody 
// Gets the unpacked User Data Elements
// -----------------------------------------------------------------------------
LOCAL_C TInt TestGetBody (CStifLogger* aLog, CSmsUserData& aSmsUsr)
	{
	aLog->Log( _L("--------------------------------------------------------"));
	aLog->Log( _L("Calling Body()"));
	
	TInt result = KErrNone;
	_LIT8 (str,"Test String");
	TBufC8<20> tempVar (str);
	
	// IMPORT_C TPtrC8 Body() const
	TPtrC8 checkres( aSmsUsr.Body() );
	
	if(!checkres.Compare (tempVar))
	{
		aLog->Log( _L("Body() completed"));
		aLog->Log(_L("result data:body: %s"),checkres.Ptr());
		aLog->Log( _L("Get body == PASS"));
	}
	else
		aLog->Log( _L("Get body == FAIL"));
	
	return result;
	}

// -----------------------------------------------------------------------------
// TestSetBody 
// Sets the unpacked User Data Elements
// -----------------------------------------------------------------------------
LOCAL_C TInt TestSetBody (CStifLogger* aLog, CSmsUserData& aSmsUsr)
	{
	aLog->Log( _L("--------------------------------------------------------"));
	aLog->Log( _L("Calling SetBodyL()"));
	
	_LIT8 (str,"Test String");
	TBufC8<20> tempVar (str);
	
	// IMPORT_C void SetBodyL(const TDesC8 &aBody)
	TRAPD( result , aSmsUsr.SetBodyL (tempVar));
	
	if(result == KErrNone)
	{
		aLog->Log( _L("SetBodyL() completed"));
		aLog->Log( _L("Body stored successfully"));
		aLog->Log( _L("Set body == PASS"));
	}
	else
		aLog->Log(_L("Set body == FAIL"));
	
	return result;
	}


// -----------------------------------------------------------------------------
// TestGetIsSupported 
// Tests if the User Data supports a specified character
// -----------------------------------------------------------------------------
LOCAL_C TInt TestGetIsSupported (CStifLogger* aLog, CSmsUserData& aSmsUsr)
	{
	aLog->Log( _L("--------------------------------------------------------"));
	aLog->Log( _L("Calling IsSupportedL()"));
	
	TChar testChar ('&');
	// IMPORT_C TBool IsSupportedL(TChar aChar)
	TBool checkres;
	TRAPD(result, checkres = aSmsUsr.IsSupportedL (testChar));
	
	if(result == KErrNone)
	{
		aLog->Log( _L("IsSupportedL() completed"));
		_LIT(tempVal,"result data:is supported flag: %d");
		aLog->Log(tempVal, checkres);
		aLog->Log( _L("Get is supported == PASS"));
	}
	else
		aLog->Log( _L("Get is supported == FAIL"));
	
	return result;
	}

// -----------------------------------------------------------------------------
// TestGetIsSupported2
// 
// -----------------------------------------------------------------------------
LOCAL_C TInt TestGetIsSupported2(CStifLogger* aLog,CSmsUserData& aSmsUsr)
	{
	aLog->Log(_L("---------------------------------------------"));
	aLog->Log(_L("Calling IsSupported2L()"));
	
	
	TBufC<50> testBuffer = _L("Nokia$123has*some%employees");
	TInt numUnconvertable;
	TInt posFirstUnconvertable;
	TInt numDowngradedChars;
	TInt numReqAlternativeEncoding;
	
	TBool res = 0;
	TRAPD( result, res = aSmsUsr.IsSupportedL(testBuffer, ESmsEncodingNone, numUnconvertable, numDowngradedChars, numReqAlternativeEncoding, posFirstUnconvertable));
	
	if(result != KErrNone)
		{
		aLog->Log(_L("Leave occured: error code: %d"), result);
		}
	else
		{
		aLog->Log(_L("IsSupported2L() completed"));
		aLog->Log(_L("result data: is supported: %d"), res);
		aLog->Log(_L("Get is supported == PASS"));
		}
	return result;	
	}
// -----------------------------------------------------------------------------
// TestGetIsSupported3
// 
// -----------------------------------------------------------------------------

LOCAL_C TInt TestGetIsSupported3(CStifLogger* aLog,CSmsUserData& aSmsUsr)
	{
	aLog->Log(_L("---------------------------------------------"));
	aLog->Log(_L("Calling IsSupported3L()"));
	
	
	TBufC<50> testBuffer = _L("Nokia$123has*some%employees");
	TInt numUnconvertable;
	TInt posFirstUnconvertable;
		
	TBool res = 0;
	TRAPD( result, res = aSmsUsr.IsSupportedL(testBuffer, numUnconvertable, posFirstUnconvertable));
	
	if(result != KErrNone)
		{
		aLog->Log(_L("Leave occured: error code: %d"), result);
		}
	else
		{
		aLog->Log(_L("IsSupported3L() completed"));
		aLog->Log(_L("result data: is supported: %d"), res);
		aLog->Log(_L("Get is supported == PASS"));
		}
	return result;	
	}
// -----------------------------------------------------------------------------
// CBCSmsUtilitiesTest::TestSmsAlphabetConverter
// Simple printing to UI test.
// -----------------------------------------------------------------------------
//
TInt CBCSmsUtilitiesTest::TestSmsAlphabetConverterL( 
    TTestResult& aResult )
    {
	_LIT(KSmsAlphabetConverter, "Calling CSmsAlphabetConverter");
	iLog->Log(KSmsAlphabetConverter);
	TInt result = KErrNone;
	
	CCnvCharacterSetConverter* charSet = CCnvCharacterSetConverter::NewLC();
	TSmsDataCodingScheme::TSmsAlphabet smsAlphabet = TSmsDataCodingScheme::ESmsAlphabet8Bit;
	TBool isBinary = EFalse;
	
    CSmsAlphabetConverter* converter = CSmsAlphabetConverter::NewLC(*charSet, iSession, smsAlphabet, isBinary);
	CConsoleBase* console = Create_ConsoleL(_L("CSmsAlphabetConverter"));
//Get alphabet
	result = TestGetAlphabet(iLog, *converter);
	Print(console, result, _L("Alphabet") );

//ConvertFromNative	
	result = TestConvertFromNative(iLog, *converter);
	Print(console, result, _L("ConvertFromNative") );
	
//ConvertToNative
	result = TestConvertToNative(iLog, *converter);
	Print(console, result, _L("ConvertToNative") );

//ConvertFromNative2	
	result = TestConvertFromNative2L(iLog, *converter);
	Print(console, result, _L("ConvertFromNative2") );
	
//ConvertToNative2
	result = TestConvertToNative2L(iLog, *converter);
	Print(console, result, _L("ConvertToNative2") );
	
//UnconvertedNativeCharacters	
	result = TestUnconvertedNativeCharacters(iLog, *converter);
	Print(console, result, _L("UnconvertedUDCharacters") );

//UnconvertedUDElements    
    result = TestUnconvertedUDElements(iLog, *converter);
	Print(console, result, _L("ResetUnconvertedUDElements") );
	
//ResetUnconvertedNativeCharacters	
	result = TestResetUnconvertedNativeCharacters(iLog, *converter);
	Print(console, result, _L("ResetUnconvertedNativeCharacters") );

//ResetUnconvertedUDElements	
	result = TestResetUnconvertedUDElements(iLog, *converter);
	Print(console, result, _L("ResetUnconvertedUDElements") );

	Remove_Console(console);
	CleanupStack::PopAndDestroy(2);
// Case was executed
    return KErrNone;

    }

// -----------------------------------------------------------------------------
// CBCSmsUtilitiesTest::TestSmsBuffer
// Simple printing to UI test.
// -----------------------------------------------------------------------------
//
TInt CBCSmsUtilitiesTest::TestSmsBufferL( 
    TTestResult& aResult )
    {
    _LIT(KSmsBuffer, "Calling CSmsBuffer");
	iLog->Log(KSmsBuffer);
	TInt result = KErrNone;
	
	CSmsBuffer* buffer = CSmsBuffer::NewL();
	CleanupStack::PushL(buffer);
	
	CConsoleBase* console = Create_ConsoleL(_L("CSmsBuffer"));
//Construction
//Destruction
//Insert
	result = TestInsert(iLog, *buffer);
	Print(console, result, _L("Insert") );
	
//Delete
	result = TestDelete(iLog, *buffer);
	Print(console, result, _L("DeleteL") );
	
//Extract
	result = TestExtract(iLog, *buffer);
	Print(console, result, _L("Extract") );
	
//GetLength
	result = TestGetLength(iLog, *buffer);
	Print(console, result, _L("Length") );
	
//Externalize
	result = TestExternalizeL(iLog, *buffer);
	Print(console, result, _L("ExternalizeL") );
	
//Internalize
	result = TestInternalizeL(iLog, *buffer);
	Print(console, result, _L("InternalizeL") );

//Reset
	result = TestReset(iLog, *buffer);
	Print(console, result, _L("Reset") );
	
	Remove_Console(console);
	CleanupStack::PopAndDestroy();
// Case was executed
    return KErrNone;

    }

// -----------------------------------------------------------------------------
// CBCSmsUtilitiesTest::TestSmsCommand
// Simple printing to UI test.
// -----------------------------------------------------------------------------
//
TInt CBCSmsUtilitiesTest::TestSmsCommandL( 
    TTestResult& aResult )
    {
   _LIT(KSmsBufferBase, "Calling CSmsBufferBase");
	iLog->Log(KSmsBufferBase);
	TInt result = KErrNone;
	
    RFs rfServer; 
    User::LeaveIfError(rfServer.Connect()); 
    
    CCnvCharacterSetConverter* characterSetConverter = CCnvCharacterSetConverter::NewL(); 
    CSmsBuffer* smsBuffer = CSmsBuffer::NewL(); 
	CSmsMessage* smsMessage = CSmsMessage::NewL(rfServer, CSmsPDU::ESmsCommand, smsBuffer ); 	

	CSmsCommand& command = STATIC_CAST(CSmsCommand&, smsMessage->SmsPDU() );
	CSmsCommand * ptrCommand = &command;
	CleanupStack::PushL(ptrCommand);
	
	CConsoleBase* console = Create_ConsoleL(_L("CSmsCommand"));
//Construction
//Add information element
	result = TestAddInformationElement(iLog, command);
	Print(console, result, _L("AddInformationElement") );

//Get information element
	result = TestInformationElement(iLog, command);
	Print(console, result, _L("InformationElement"));
	
//Get information element index
	result = TestInformationElementIndex(iLog, command);
	Print(console, result, _L("InformationElementIndex"));
	
//Get number of information elements
	result = TestNumInformationElements(iLog, command);
	Print(console, result, _L("NumInformationElements"));
	
//Remove information element
	result = TestRemoveInformationElement(iLog, command);
	Print(console, result, _L("RemoveInformationElement") );

//Get max command data length
	result = TestMaxCommandDataLength(iLog, command);
	Print(console, result, _L("MaxCommandDataLength") );
	
//Set command data
	result = TestSetCommandData(iLog, command);
	Print(console, result, _L("SetCommandData"));
	
//Get command data
	result = TestGetCommandData(iLog, command);
	Print(console, result, _L("CommandData") );
	
//Set Command Type
	result = TestSetCommandType(iLog, command);
	Print(console, result, _L("SetCommandType") );
	
//Get Command Type
	result = TestGetCommandType(iLog, command);
	Print(console, result, _L("CommandType") );
	
//Set message number
	result = TestSetMessageNumber(iLog, command);
	Print(console, result, _L("SetMessageNumber"));
	
//Get message number
	result = TestGetMessageNumber(iLog, command);
	Print(console, result, _L("MessageNumber"));
	
//Set Message Reference
	result = TestSetMessageReference(iLog, command);
	Print(console, result, _L("SetMessageReference"));
	
//Get Message Reference
	result = TestGetMessageReference(iLog, command);
	Print(console, result, _L("MessageReference"));
	
//Set status report request
	result = TestSetStatusReportRequest(iLog, command);
	Print(console, result, _L("SetStatusReportRequest"));
	
//Get status report request
	result = TestGetStatusReportRequest(iLog, command);
	Print(console, result, _L("StatusReportRequest"));
	
//DuplicateL
	result = TestSmsCommandDuplicateL(iLog, command);
	Print(console, result, _L("SmsCommandDuplicateL"));
	
	Remove_Console(console);
	CleanupStack::PopAndDestroy(&command);
	rfServer.Close();
   // Case was executed
    return KErrNone;

    }

// -----------------------------------------------------------------------------
// CBCSmsUtilitiesTest::TestSmsDeliver
// Simple printing to UI test.
// -----------------------------------------------------------------------------
//
TInt CBCSmsUtilitiesTest::TestSmsDeliverL( 
    TTestResult& aResult )
    {
 	_LIT(KSmsDeliver, "Calling CSmsDeliver");
	iLog->Log(KSmsDeliver);
	TInt result = KErrNone;
	
	RFs rfServer; 
    User::LeaveIfError(rfServer.Connect()); 
    
    CCnvCharacterSetConverter* characterSetConverter = CCnvCharacterSetConverter::NewL(); 
    CSmsBuffer* smsBuffer = CSmsBuffer::NewL(); 
	CSmsMessage* smsMessage = CSmsMessage::NewL(rfServer, CSmsPDU::ESmsDeliver, smsBuffer ); 	

	CSmsDeliver& deliver = STATIC_CAST(CSmsDeliver&, smsMessage->SmsPDU() );
	CSmsDeliver *ptrDeliver = &deliver;
	CleanupStack::PushL(ptrDeliver);
	
	CConsoleBase* console = Create_ConsoleL(_L("CSmsDeliver"));
//Construction
//Set more messages to send
	result = TestSetMoreMessagesToSend(iLog, deliver);
	Print(console, result, _L("SetMoreMessagesToSend"));
	
//Get more messages to send
	result = TestGetMoreMessagesToSend(iLog, deliver);
	Print(console, result, _L("MoreMessagesToSend"));
	
//Set reply path
	result = TestSetReplyPath(iLog, deliver);
	Print(console, result, _L("SetReplyPath"));
	
//Get reply path
	result = TestGetReplyPath(iLog, deliver);
	Print(console, result, _L("ReplyPath"));
	
//Set status report indication
	result = TestSetStatusReportIndication(iLog, deliver);
	Print(console, result, _L("SetStatusReportIndication"));
	
//Get status report indication
	result = TestGetStatusReportIndication(iLog, deliver);
	Print(console, result, _L("StatusReportIndication"));
	
//Set service center time stamp
	result = TestSetServiceCenterTimeStamp(iLog, deliver);
	Print(console, result, _L("SetServiceCenterTimeStamp"));
	
//Get service center time stamp
	result = TestGetServiceCenterTimeStampL(iLog, deliver);
	Print(console, result, _L("ServiceCenterTimeStamp"));
	
//Get protocol identifier
	result = TestGetProtocolIdentifier(iLog, deliver);
	Print(console, result, _L("ProtocolIdentifier"));

//DuplicateL
	result = TestSmsDeliverDuplicateL(iLog, deliver);
	Print(console, result, _L("SmsDeliverDuplicateL"));	
	
	Remove_Console(console);
	CleanupStack::PopAndDestroy(&deliver);
	rfServer.Close();
    // Case was executed
    return KErrNone;

    }

// -----------------------------------------------------------------------------
// CBCSmsUtilitiesTest::TestSmsDeliverReport
// Simple printing to UI test.
// -----------------------------------------------------------------------------
//
TInt CBCSmsUtilitiesTest::TestSmsDeliverReportL( 
    TTestResult& aResult )
    {
 	_LIT(KSmsDeliverReport, "Calling CSmsDeliverReport");
	iLog->Log(KSmsDeliverReport);
	TInt result = KErrNone;
	
	RFs rfServer; 
    User::LeaveIfError(rfServer.Connect()); 
    
    CCnvCharacterSetConverter* characterSetConverter = CCnvCharacterSetConverter::NewL(); 
    CSmsBuffer* smsBuffer = CSmsBuffer::NewL(); 
	CSmsMessage* smsMessage = CSmsMessage::NewL(rfServer, CSmsPDU::ESmsDeliverReport, smsBuffer ); 	

	CSmsDeliverReport& deliverReport = STATIC_CAST(CSmsDeliverReport&, smsMessage->SmsPDU() );
	CSmsDeliverReport* ptrDeliverReport = &deliverReport;
	CleanupStack::PushL(ptrDeliverReport);
	
	CConsoleBase* console = Create_ConsoleL(_L("CSmsDeliverReport"));
//Construction
//Set is RP error
	result = TestSetIsRPError(iLog, deliverReport);
	Print(console, result, _L("SetIsRPError"));
	
//Get is RP error
	result = TestGetIsRPError(iLog, deliverReport);
	Print(console, result, _L("IsRPError"));
	
//Set failure cause
	result = TestSetFailureCause(iLog, deliverReport);
	Print(console, result, _L("SetFailureCause"));
	
//Get failure cause
	result = TestGetFailureCause(iLog, deliverReport);
	Print(console, result, _L("FailureCause"));
	
//DuplicateL
	result = TestSmsDeliverReportDuplicateL(iLog, deliverReport);
	Print(console, result, _L("SmsDeliverReportDuplicateL"));
	
	Remove_Console(console);
	CleanupStack::PopAndDestroy(&deliverReport);
	rfServer.Close();
    return KErrNone;

    }

// -----------------------------------------------------------------------------
// CBCSmsUtilitiesTest::TestSmsEditorBuffer
// 
// -----------------------------------------------------------------------------
//
TInt CBCSmsUtilitiesTest::TestSmsEditorBufferL( 
    TTestResult& aResult )
    {
	_LIT(KSmsEditorBuffer, "Calling CSmsEditorBuffer");
	iLog->Log(KSmsEditorBuffer);
	TInt result = KErrNone;
	
	CParaFormatLayer* para = CParaFormatLayer::NewL();
	CCharFormatLayer* charlayer = CCharFormatLayer::NewL();
	
	CRichText* text = CRichText::NewL(para, charlayer);
	CSmsEditorBuffer* editor = CSmsEditorBuffer::NewL(*text);
	CleanupStack::PushL(editor);
	
	CConsoleBase* console = Create_ConsoleL(_L("CSmsEditorBuffer"));
//Construction
//Destruction
//Insert
	result = TestInsert(iLog, *editor);
	Print(console, result, _L("Insert") );
	
//Delete
	result = TestDelete(iLog, *editor);
	Print(console, result, _L("DeleteL") );
	
//Extract
	result = TestExtract(iLog, *editor);
	Print(console, result, _L("Extract") );
	
//GetLength
	result = TestGetLength(iLog, *editor);
	Print(console, result, _L("Length") );
	
//Reset
	result = TestReset(iLog, *editor);
	Print(console, result, _L("Reset") );
	
	Remove_Console(console);
	CleanupStack::PopAndDestroy(editor);
    // Case was executed
    return result;

    }

// -----------------------------------------------------------------------------
// CBCSmsUtilitiesTest::TestSmsInformationElement
// 
// -----------------------------------------------------------------------------
//
TInt CBCSmsUtilitiesTest::TestSmsInformationElementL( 
    TTestResult& aResult )
    {
	_LIT(KSmsInformationElement, "Calling CSmsInformationElement");
	iLog->Log(KSmsInformationElement);
	TInt result = KErrNone;
	RFs rfServer; 
    User::LeaveIfError(rfServer.Connect()); 
    
    CCnvCharacterSetConverter* characterSetConverter = CCnvCharacterSetConverter::NewL(); 
    CSmsBuffer* smsBuffer = CSmsBuffer::NewL(); 
	CSmsMessage* smsMessage = CSmsMessage::NewL(rfServer, CSmsPDU::ESmsCommand, smsBuffer ); 	
	CSmsCommand& command = STATIC_CAST(CSmsCommand&, smsMessage->SmsPDU() );
	
	CSmsInformationElement::TSmsInformationElementIdentifier identifier = CSmsInformationElement::ESmsIEIConcatenatedShortMessages8BitReference;
	TBufC8<24> information(KTestInfo8);
	command.AddInformationElementL( identifier, information);
	
	CSmsInformationElement& element = command.InformationElement(0);	
	CSmsInformationElement *ptrElement = &element;
	CleanupStack::PushL(ptrElement);
	
	CConsoleBase* console = Create_ConsoleL(_L("CSmsInformationElement"));
//Construction
//Get Identifier
	result = TestGetIdentifier(iLog, element);
	Print(console, result, _L("Identifier") );
	
//Get data (TPtr8)
	result = TestGetDataTPtr8(iLog, element);
	Print(console, result, _L("TPtr8 Data") );
	
//Get data (TDesC8)
	result = TestGetDataTDesC8(iLog, element);
	Print(console, result, _L("TDesC8 Data") );
	
	Remove_Console(console);
	CleanupStack::PopAndDestroy(&element);
	rfServer.Close();
	
	// Case was executed
    return KErrNone;

    }

// -----------------------------------------------------------------------------
// CBCSmsUtilitiesTest::TestSmsMessage
// Simple printing to UI test.
// -----------------------------------------------------------------------------
//
TInt CBCSmsUtilitiesTest::TestSmsMessageL( 
    TTestResult& aResult )
    {
 	_LIT(KSmsMessage, "Calling CSmsMessage");
	iLog->Log(KSmsMessage);
	TInt result = KErrNone;
	
	RFs rfServer; 
    User::LeaveIfError(rfServer.Connect()); 
    
    CCnvCharacterSetConverter* characterSetConverter = CCnvCharacterSetConverter::NewL(); 
    CSmsBuffer* smsBuffer = CSmsBuffer::NewL(); 
  
  	//static CSmsMessage* NewL(RFs& aFs, CSmsPDU::TSmsPDUType aType,CSmsBufferBase* aBuffer
	//,TBool aIsRPError=EFalse);    
	CSmsMessage* message = CSmsMessage::NewL(rfServer, CSmsPDU::ESmsDeliver, smsBuffer ); 	
	CleanupStack::PushL( message ); 
	
	CConsoleBase* console = Create_ConsoleL(_L("CSmsMessage"));
	
//Construction (TGsmSms)
	result = TestConstructionTGsmSms_MessageL(iLog);
		
//Destruction
//Get type
	result = TestGetType(iLog, *message);
	Print(console, result, _L("Type") );
		
//Get is complete
	result = TestGetIsComplete(iLog, *message);
	Print(console, result, _L("IsComplete") );
	
//Get is decoded
	result = TestIsDecoded(iLog, *message);
	Print(console, result, _L("IsDecoded") );
	
//Set storage
	result = TestSetStorage(iLog, *message);
	Print(console, result, _L("SetStorage") );
		
//Get storage
	result = TestGetStorage(iLog, *message);
	Print(console, result, _L("Storage") );
		
//Set status
	result = TestSetStatus(iLog, *message);
	Print(console, result, _L("SetStatus") );
		
//Get status
	result = TestGetStatus(iLog, *message);
	Print(console, result, _L("Status") );
		
//Set log server id
	result = TestSetLogServerId(iLog, *message);
	Print(console, result, _L("SetLogServerId") );
		
//Get log server id
	result = TestGetLogServerId(iLog, *message);
	Print(console, result, _L("LogServerId") );
	
//Set time
	result = TestSetTime(iLog, *message);
	Print(console, result, _L("SetTime") );
			
//Get time
	result = TestGetTimeL(iLog, *message);
	Print(console, result, _L("Time") );
		
//Get SMS PDU
	result = TestGetSMSPduL(iLog, *message);
	Print(console, result, _L("SmsPDU") );
		
//Get SMS PDU const
	result = TestGetSMSPDUConst(iLog, *message);
	Print(console, result, _L("SmsPDU const") );
		
//Set service center address
	result = TestSetServiceCenterAddress(iLog, *message);
	Print(console, result, _L("SetSeviceCenterAddress") );
		
//Get service center address
	result = TestGetServiceCenterAddress(iLog, *message);
	Print(console, result, _L("SeviceCenterAddress") );
	
//Set parsed service center address
	result = TestSetParsedServiceCenterAddress(iLog, *message);
	Print(console, result, _L("SetParsedServiceCenterAddress") );
		
//Get parsed service center address
	result = TestGetParsedServiceCenterAddress(iLog, *message);
	Print(console, result, _L("ParsedServiceCenterAddress") );
		
//Set to from address
	result = TestSetToFromAddress(iLog, *message);
	Print(console, result, _L("SetToFromAddressL") );
		
//Get to from address
	result = TestGetToFromAddress(iLog, *message);
	Print(console, result, _L("ToFromAddress") );
		
//Set parsed to from address
	result = TestSetParsedToFromAddress(iLog, *message);
	Print(console, result, _L("SetParsedToFromAddressL") );
		
//Get parsed to from address
	result = TestGetParsedToFromAddress(iLog, *message);
	Print(console, result, _L("ParsedToFromAddress") );
		
//Externalize without buffer
	result = TestExternalizeWithoutBufferL(iLog, *message);
	Print(console, result, _L("ExternalizeWithoutBuffer") );
		
//Internalize without buffer
	result = TestInternalizeWithoutBufferL(iLog, *message);
	Print(console, result, _L("InternalizeWithoutBuffer") );
		
//Externalize
	result = TestExternalizeL(iLog, *message);
	Print(console, result, _L("Externalize") );
		
//Internalize
	result = TestInternalizeL(iLog, *message);
	Print(console, result, _L("Internalize") );
		
//Get buffer
	result = TestGetBufferL(iLog, *message);
	Print(console, result, _L("Buffer") );
		
//Get buffer const
	result = TestGetBufferConstL(iLog, *message);
	Print(console, result, _L("Buffer const") );
		
//Get text present
	result = TestGetTextPresent(iLog, *message);
	Print(console, result, _L("TextPresent") );
		
//Get number of message PDUs
	result = TestGetNumberOfMessagePduL(iLog, *message);
	Print(console, result, _L("NumMessagePDUsL") );
		
//Get max message length
	result = TestGetMaxLength(iLog, *message);
	Print(console, result, _L("MaxMessagelength") );
		
//Get message length
	result = TestGetMessageLength(iLog, *message);
	Print(console, result, _L("MessageLengthL") );
		
//Set user data settings
//Get user data settings
//Cannot be executed

//Optimize settings
	result = TestOptimizeSettings(iLog, *message);
	Print(console, result, _L("OptimizeSettings") );
		
//Get is supported
	result = TestGetIsSupported(iLog, *message);
	Print(console, result, _L("IsSupported") );
		
//Encode message PDUs
	result = TestEncodeMessagePDUL(iLog, *message);
	Print(console, result, _L("EncodeMessagePDUsL") );
		
//Decode message PDUs
	result = TestDecodeMessagePDUL(iLog, *message);
	Print(console, result, _L("DecodeMessagePDUsL") );
		
//Add EMS information elements
//This currently does not work, changes in build required
/*	result = TestAddEMSInformationElements(iLog, *message);
	Print(console, result, _L("AddEMSInformationElements") );
*/		
//Copy EMS elements
	result = TestCopyEMSElementsL(iLog, *message);
	Print(console, result, _L("CopyEMSElements") );
		
//Get EMS information elements
	result = TestGetEMSInformationElements(iLog, *message);
	Print(console, result, _L("EMSInformationElements") );
		
//Remove EMS information elements
	result = TestRemoveEMSInformationElements(iLog, *message);
	Print(console, result, _L("RemoveEMSInformationElements") );
		
//Remove EMS information element
	result = TestRemoveEMSInformationElement(iLog, *message);
	Print(console, result, _L("RemoveEMSInformationElement") );
		
//Reset EMS
	result = TestResetEMS(iLog, *message);
	Print(console, result, _L("ResetEMS") );
		
//Encode into single PDU
	result = TestEncodeIntoSinglePDUL(iLog, *message);
	Print(console, result, _L("EncodeIntoSinglePDU") );
		
//Add slot
	result = TestAddSlot(iLog, *message);
	Print(console, result, _L("AddSlot") );
		
//Match slots
	result = TestMatchSlotsL(iLog, *message);
	Print(console, result, _L("MatchSlots") );
		
//Add email header
	result = TestAddEmailHeader(iLog, *message);
	Print(console, result, _L("AddEmailHeader") );
		
//Get is email header
	result = TestGetIsEmailHeader(iLog, *message);
	Print(console, result, _L("IsEmailHeader") );
		
//Get email header
	result = TestGetEmailHeaderL(iLog, *message);
	Print(console, result, _L("EmailHeader") );
		
//Set is 16 bit concatenation
	result = TestSetIs16BitConcatenation(iLog, *message);
	Print(console, result, _L("Is16BitConcatenation") );
		
//Get is 16 bit concatenation
	result = TestGetIs16BitConcatenation(iLog, *message);
	Print(console, result, _L("Is16BitConcatenation") );
		
//Update slots
	result = TestUpdateSlotsL(iLog, *message);
	Print(console, result, _L("UpdateSlots") );

//GetEncodingInfoL	
	result = TestGetEncodingInfoL(iLog, *message);
	Print(console, result, _L("GetEncodingInfoL") );

//SetAlternative7bitEncoding	
	result = TestSetAlternative7bitEncoding(iLog, *message);
	Print(console, result, _L("SetAlternative7bitEncoding") );
	
//Get is supported2
	result = TestGetIsSupported2(iLog, *message);
	Print(console, result, _L("IsSupported2") );

	Remove_Console(console);
	CleanupStack::PopAndDestroy(message);
	rfServer.Close();
    // Case was executed
    return result;

    }

// -----------------------------------------------------------------------------
// CBCSmsUtilitiesTest::TestSmsPDU
// Simple printing to UI test.
// -----------------------------------------------------------------------------
//
TInt CBCSmsUtilitiesTest::TestSmsPDUL( 
    TTestResult& aResult )
    {
    _LIT(KSmsPDU, "Calling CSmsPDU");
	iLog->Log(KSmsPDU);
	TInt result = KErrNone;
	CCnvCharacterSetConverter* characterSetConverter = CCnvCharacterSetConverter::NewL(); 
	CleanupStack::PushL(characterSetConverter);
		
	//static CSmsPDU* NewL(TSmsPDUType aType,CCnvCharacterSetConverter& aCharacterSetConverter,RFs& aFs,TBool aIsRPError=EFalse);
	CSmsPDU* PDU = CSmsPDU::NewL(CSmsPDU::ESmsDeliver, *characterSetConverter, iSession);
	CleanupStack::PushL(PDU);	
	
	//static CSmsPDU* NewL(TSmsPDUType aType,CCnvCharacterSetConverter& aCharacterSetConverter,RFs& aFs,TBool aIsRPError=EFalse);
	CSmsPDU* PDUReport = CSmsPDU::NewL(CSmsPDU::ESmsDeliverReport, *characterSetConverter, iSession);
	CleanupStack::PushL(PDUReport);

	CConsoleBase* console = Create_ConsoleL(_L("CSmsPDU"));
//Construction (RReadStream)
	result = TestConstructionStreamL(iLog, *PDU);
	
//Construction (TGsmSms)
	result = TestConstructionTGsmSms_PduL(iLog, *PDU);

//Get type
	result = TestGetType(iLog, *PDU);
	Print(console, result, _L("Type") );

//Externalize
	result = TestExternalizeL(iLog, *PDU);
	Print(console, result, _L("Externalize") );
	
//Encode message PDUs	
	result = TestEncodeMessagePDUs(iLog, *PDU);
	Print(console, result, _L("EncodeMessagePDUs") );
	
//Set service center address
	result = TestSetServiceCenterAddress(iLog, *PDU);
	Print(console, result, _L("SetServiceCenterAddress") );
	
//Get service center address
	result = TestGetServiceCenterAddress(iLog, *PDU);
	Print(console, result, _L("ServiceCenterAddress") );
	
//Set parsed service center address
	result = TestSetParsedServiceCenterAddress(iLog, *PDU);
	Print(console, result, _L("SetParsedServiceCenterAddress") );
	
//Get parsed service center address
	result = TestGetParsedServiceCenterAddress(iLog, *PDU);
	Print(console, result, _L("ParsedServiceCenterAddress") );
	
//Set to from address
	result = TestSetToFromAddress(iLog, *PDU);
	Print(console, result, _L("SetToFromAddress") );
	
//Get to from address
	result = TestGetToFromAddress(iLog, *PDU);
	Print(console, result, _L("ToFromAddress") );
	
//Set parsed to from address
	result = TestSetParsedToFromAddress(iLog, *PDU);
	Print(console, result, _L("SetParsedToFromAddress") );

//Get parsed to from address	
	result = TestGetParsedToFromAddress(iLog, *PDU);
	Print(console, result, _L("ParsedToFromAddress") );
	
//Set bits 7 to 4
	result = TestSetBits7To4(iLog, *PDU);
	Print(console, result, _L("SetBits7To4") );

//Get bits 7 to 4
	result = TestGetBits7To4(iLog, *PDU);
	Print(console, result, _L("Bits7To4") );
	
//Set alphabet
	result = TestSetAlphabet(iLog, *PDU);
	Print(console, result, _L("SetAlphabet") );
	
//Get alphabet
	result = TestGetAlphabet(iLog, *PDU);
	Print(console, result, _L("Alphabet") );
	
//Set class
	result = TestSetClass(iLog, *PDU);
	Print(console, result, _L("SetClass") );
	
//Get class
	result = TestGetClass(iLog, *PDU);
	Print(console, result, _L("Class") );
	
//Set text compressed
	result = TestSetTextCompressed(iLog, *PDU);
	Print(console, result, _L("SetTextCompressed") );
	
//Get text compressed
	result = TestGetTextCompressed(iLog, *PDU);
	Print(console, result, _L("TextCompressed") );
	
//Set indication state
	result = TestSetIndicationState(iLog, *PDU);
	Print(console, result, _L("SetIndicationState") );
	
//Get indication state	
	result = TestGetIndicationState(iLog, *PDU);
	Print(console, result, _L("IndicationState") );
	
//Set indication type
	result = TestSetIndicationType(iLog, *PDU);
	Print(console, result, _L("SetIndicationType") );
	
//Get indication type
	result = TestGetIndicationType(iLog, *PDU);
	Print(console, result, _L("IndicationType") );
	
//Set text concatenated
	result = TestSetTextConcatenated(iLog, *PDU);
	Print(console, result, _L("SetTextConcatenated") );
	
//Get text concatenated
	result = TestGetTextConcatenated(iLog, *PDU);
	Print(console, result, _L("TextConcatenated") );
	
//Set concatenated message reference
	result = TestSetConcatenatedMessageReference(iLog, *PDU);
	Print(console, result, _L("SetConcatenatedMessageReference") );
	
//Get concatenated message reference
	result = TestGetConcatenatedMessageReference(iLog, *PDU);
	Print(console, result, _L("ConcatenatedMessageReference") );
	
//Set number of concatenated message PDUs
	result = TestSetNumberOfConcatenatedMessageL(iLog, *PDU);
	Print(console, result, _L("SetNumberOfConcatenatedMessage") );
	
//Get number of concatenated message PDUs
	result = TestGetNumberOfConcatenatedMessageL(iLog, *PDU);
	Print(console, result, _L("NumberOfConcatenatedMessage") );
	
//Set concatenated message PDU index	
	result = TestSetConcatenatedMessagePDUIndex(iLog, *PDU);
	Print(console, result, _L("SetConcatenatedMessagePDUIndex") );
	
//Get concatenated message PDU index
	result = TestGetConcatenatedMessagePDUIndex(iLog, *PDU);
	Print(console, result, _L("ConcatenatedMessagePDUIndex") );
	
//set application port addressing
	result = TestSetApplicationPortAddressing(iLog, *PDU);
	Print(console, result, _L("SetApplicationPortAddressing") );
	
//Get application port addressing
	result = TestGetApplicationPortAddressing(iLog, *PDU);
	Print(console, result, _L("ApplicationPortAddressing") );
	
//set PID type
	result = TestSetPIDType(iLog, *PDU);
	Print(console, result, _L("SetPIDType") );
	
//Get PID type
	result = TestGetPIDType(iLog, *PDU);
	Print(console, result, _L("PIDType") );
	
//Set short message type
	result = TestSetShortMessageType(iLog, *PDU);
	Print(console, result, _L("SetShortMessageType") );
	
//Get short message type
	result = TestGetShortMessageType(iLog, *PDU);
	Print(console, result, _L("ShortMessageType") );
	
//Set telematic device indicator
	result = TestSetTelematicDeviceIndicator(iLog, *PDU);
	Print(console, result, _L("SetTelematicDeviceIndicator") );
	
//Get telematic device indicator
	result = TestGetTelematicDeviceIndicator(iLog, *PDU);
	Print(console, result, _L("TelematicDeviceIndicator") );
	
//Set telematic device type
	result = TestSetTelematicDeviceType(iLog, *PDU);
	Print(console, result, _L("SetTelematicDeviceType") );
	
//Get telematic device type
	result = TestGetTelematicDeviceType(iLog, *PDU);
	Print(console, result, _L("TelematicDeviceType") );
	
//Get user data
	result = TestGetUserData(iLog, *PDU);
	Print(console, result, _L("UserData") );
	
//Get user data const
	result = TestGetUserDataConst(iLog, *PDU);
	Print(console, result, _L("UserDataConst") );

//Set user data present
	result = TestSetUserDataPresent(iLog, *PDUReport);
	Print(console, result, _L("SetUserDataPresent") );	
	
//Get user data present
	result = TestGetUserDataPresent(iLog, *PDUReport);
	Print(console, result, _L("UserDataPresent") );
	
//Set data coding scheme present
	result = TestSetDataCodingSchemePresent(iLog, *PDUReport);
	Print(console, result, _L("SetDataCodingSchemePresent") );
	
//Get data coding scheme present
	result = TestGetDataCodingSchemePresent(iLog, *PDUReport);
	Print(console, result, _L("DataCodingSchemePresent") );
	
//Set protocol identifier present
	result = TestSetProtocolIdentifierPresent(iLog, *PDUReport);
	Print(console, result, _L("SetProtocolIdentifierPresent") );
	
//Get protocol identifier present
	result = TestGetProtocolIdentifierPresent(iLog, *PDUReport);
	Print(console, result, _L("ProtocolIdentifierPresent") );

//Set national language encoding
	result = TestSetNationalLanguageEncodingL(iLog, *PDUReport);
	Print(console, result, _L("SetNationalLanguageEncodingL") );
		
//DuplicateL
	result = TestSmsPDUDuplicateL(iLog, *PDUReport);
	Print(console, result, _L("SmsPDUDuplicateL"));
	
	Remove_Console(console);
	CleanupStack::PopAndDestroy(3);
	return KErrNone;
    }

// -----------------------------------------------------------------------------
// CBCSmsUtilitiesTest::TestSmsStatusReport
// Simple printing to UI test.
// -----------------------------------------------------------------------------
//
TInt CBCSmsUtilitiesTest::TestSmsStatusReportL( 
    TTestResult& aResult )
    {
  	_LIT(KSmsStatusReport, "Calling CSmsStatusReport");
	iLog->Log(KSmsStatusReport);
	TInt result = KErrNone;
		
	RFs rfServer; 
    User::LeaveIfError(rfServer.Connect()); 
    
    CCnvCharacterSetConverter* characterSetConverter = CCnvCharacterSetConverter::NewL(); 
    CSmsBuffer* smsBuffer = CSmsBuffer::NewL(); 
	CSmsMessage* smsMessage = CSmsMessage::NewL(rfServer, CSmsPDU::ESmsStatusReport, smsBuffer ); 	

	CSmsStatusReport& statusReport = STATIC_CAST(CSmsStatusReport&, smsMessage->SmsPDU() );
	CSmsStatusReport *ptrStatusReport = &statusReport;
	CleanupStack::PushL(ptrStatusReport);

	CConsoleBase* console = Create_ConsoleL(_L("CSmsStatusReport"));
//Construction
//Set parameter indicator present
	result = TestSetParameterIndicatorPresent(iLog, statusReport);
	Print(console, result, _L("SetIsRPError"));
	
//Get parameter indicator present
	result = TestGetParameterIndicatorPresent(iLog, statusReport);
	Print(console, result, _L("IsRPError"));
	
//Set more messages to send
	result = TestSetMoreMessagesToSend(iLog, statusReport);
	Print(console, result, _L("SetFailureCause"));
	
//Get more messages to send
	result = TestGetMoreMessagesToSend(iLog, statusReport);
	Print(console, result, _L("FailureCause"));
	
//Set status report qualifier
	result = TestSetStatusReportQualifier(iLog, statusReport);
	Print(console, result, _L("DataCodingScheme"));
	
//Get status report qualifier
	result = TestGetStatusReportQualifier(iLog, statusReport);
	Print(console, result, _L("ProtocolIdentifier"));
	
//Set message reference
	result = TestSetMessageReference(iLog, statusReport);
	Print(console, result, _L("SetMessageReference"));
	
//Get message reference
	result = TestGetMessageReference(iLog, statusReport);
	Print(console, result, _L("MessageReference"));
	
//Set service center time stamp
	result = TestSetServiceCenterTimeStamp(iLog, statusReport);
	Print(console, result, _L("UserDataPointer"));
	
//Get service center time stamp
	result = TestGetServiceCenterTimeStampL(iLog, statusReport);
	Print(console, result, _L("Encode"));
	
//Set discharge time
	result = TestSetDischargeTime(iLog, statusReport);
	Print(console, result, _L("Decode"));
	
//Get discharge time
	result = TestGetDischargeTimeL(iLog, statusReport);
	Print(console, result, _L("Decode"));
	
//Set status
	result = TestSetStatus(iLog, statusReport);
	Print(console, result, _L("SetStatus"));
	
//Get status
	result = TestGetStatus(iLog, statusReport);
	Print(console, result, _L("Status"));
	
//DuplicateL
	result = TestSmsStatusReportDuplicateL(iLog, statusReport);
	Print(console, result, _L("SmsStatusReportDuplicateL"));
	
	Remove_Console(console);
	CleanupStack::PopAndDestroy(&statusReport);
	rfServer.Close();
    return KErrNone;

    }

// -----------------------------------------------------------------------------
// CBCSmsUtilitiesTest::TestSmsSubmit
// Simple printing to UI test.
// -----------------------------------------------------------------------------
//
TInt CBCSmsUtilitiesTest::TestSmsSubmitL( 
    TTestResult& aResult )
    {
    _LIT(KSmsSubmit, "Calling CSmsSubmit");
	iLog->Log(KSmsSubmit);
	TInt result = KErrNone;
		
	RFs rfServer; 
    User::LeaveIfError(rfServer.Connect()); 
    
    CCnvCharacterSetConverter* characterSetConverter = CCnvCharacterSetConverter::NewL(); 
    CSmsBuffer* smsBuffer = CSmsBuffer::NewL(); 
	CSmsMessage* smsMessage = CSmsMessage::NewL(rfServer, CSmsPDU::ESmsSubmit, smsBuffer ); 	

	CSmsSubmit& submit = STATIC_CAST(CSmsSubmit&, smsMessage->SmsPDU() );
	CSmsSubmit *ptrSubmit = &submit;
	CleanupStack::PushL(ptrSubmit);
	
	CConsoleBase* console = Create_ConsoleL(_L("CSmsSubmit"));
//Construction
//Set reject duplicates
	result = TestSetRejectDuplicates(iLog, submit);
	Print(console, result, _L("SetRejectDuplicates"));
	
//Get reject duplicates
	result = TestGetRejectDuplicates(iLog, submit);
	Print(console, result, _L("RejectDuplicates"));
	
//Set validity period format
	result = TestSetValidityPeriodFormat(iLog, submit);
	Print(console, result, _L("SetValidityPeriodFormat"));
	
//Get validity period format
	result = TestGetValidityPeriodFormat(iLog, submit);
	Print(console, result, _L("ValidityPeriodFormat"));
	
//Set reply path
	result = TestSetReplyPath(iLog, submit);
	Print(console, result, _L("SetReplyPath"));
	
//Get reply path
	result = TestGetReplyPath(iLog, submit);
	Print(console, result, _L("ReplyPath"));
	
//Set status report request	
	result = TestSetStatusReportRequest(iLog, submit);
	Print(console, result, _L("SetStatusReportRequest"));
	
//Get status report request	
	result = TestGetStatusReportRequest(iLog, submit);
	Print(console, result, _L("StatusReportRequest"));
	
//Set message reference
	result = TestSetMessageReference(iLog, submit);
	Print(console, result, _L("SetMessageReferenc"));
	
//Get message reference
	result = TestGetMessageReference(iLog, submit);
	Print(console, result, _L("MessageReference"));
	
//Set validity period
	result = TestSetValidityPeriod(iLog, submit);
	Print(console, result, _L("SetValidityPeriod"));
	
//Get validity period
	result = TestGetValidityPeriod(iLog, submit);
	Print(console, result, _L("ValidityPeriod"));

//DuplicateL
	result = TestSmsSubmitDuplicateL(iLog, submit);
	Print(console, result, _L("SmsSubmitDuplicateL"));
	
	Remove_Console(console);
	CleanupStack::PopAndDestroy(&submit);
	rfServer.Close();
// Case was executed
   return KErrNone;

    }

// -----------------------------------------------------------------------------
// CBCSmsUtilitiesTest::TestSmsSubmitReport
// Simple printing to UI test.
// -----------------------------------------------------------------------------
//
TInt CBCSmsUtilitiesTest::TestSmsSubmitReportL( 
    TTestResult& aResult )
    {
    _LIT(KSmsSubmitReport, "Calling CSmsSubmitReport");
	iLog->Log(KSmsSubmitReport);
	TInt result = KErrNone;
		
	RFs rfServer; 
    User::LeaveIfError(rfServer.Connect()); 
    
    CCnvCharacterSetConverter* characterSetConverter = CCnvCharacterSetConverter::NewL(); 
    CSmsBuffer* smsBuffer = CSmsBuffer::NewL(); 
	CSmsMessage* smsMessage = CSmsMessage::NewL(rfServer, CSmsPDU::ESmsSubmitReport, smsBuffer ); 	

	CSmsSubmitReport& submitReport = STATIC_CAST(CSmsSubmitReport&, smsMessage->SmsPDU() );
	CSmsSubmitReport *ptrSubmitReport = &submitReport;
	CleanupStack::PushL(ptrSubmitReport);

	CConsoleBase* console = Create_ConsoleL(_L("CSmsSubmitReport"));
//Construction
//Set is RP error
	result = TestSetIsRPError(iLog, submitReport);
	Print(console, result, _L("SetIsRPError"));
	
//Get is RP error
	result = TestGetIsRPError(iLog, submitReport);
	Print(console, result, _L("IsRPError"));
	
//Set failure cause
	result = TestSetFailureCause(iLog, submitReport);
	Print(console, result, _L("SetFailureCause"));
	
//Get failure cause
	result = TestGetFailureCause(iLog, submitReport);
	Print(console, result, _L("FailureCause"));
	
//DuplicateL
	result = TestSmsSubmitReportDuplicateL(iLog, submitReport);
	Print(console, result, _L("SmsSubmitReportDuplicateL"));
	
	Remove_Console(console);
	CleanupStack::PopAndDestroy(&submitReport);
	rfServer.Close();
    return KErrNone;
    }

// -----------------------------------------------------------------------------
// CBCSmsUtilitiesTest::TestSmsUserData
// Simple printing to UI test.
// -----------------------------------------------------------------------------
//
TInt CBCSmsUtilitiesTest::TestSmsUserDataL( 
    TTestResult& aResult )
    {
    _LIT(KSmsUserData, "Calling CSmsUserData");
	iLog->Log(KSmsUserData);
	TInt result = KErrNone;
	
	CCnvCharacterSetConverter* characterSetConverter = CCnvCharacterSetConverter::NewL(); 
	//static CSmsPDU* NewL(TSmsPDUType aType,CCnvCharacterSetConverter& aCharacterSetConverter,RFs& aFs,TBool aIsRPError=EFalse);
	CSmsPDU* PDU = CSmsPDU::NewL(CSmsPDU::ESmsDeliver, *characterSetConverter, iSession);
		
	CSmsUserData& userData = STATIC_CAST(CSmsUserData&, PDU->UserData() );
	CSmsUserData *ptrUserData = &userData;
	CleanupStack::PushL(ptrUserData);

	CConsoleBase* console = Create_ConsoleL(_L("CSmsUserData"));
	
//Add information element
	result = TestAddInformationElement(iLog, userData);
	Print(console, result, _L("AddInformationElement"));
   		
//Get number of information elements
  result = TestGetNumberOfInformationElements(iLog, userData);
 	Print(console, result, _L("NumInformationElement"));
   	
//Get information element   	
	result = TestGetInformationElement(iLog, userData);
	Print(console, result, _L("InformationElement"));
   		
//Get information element index
	result = TestGetInformationElementIndex(iLog, userData);
	Print(console, result, _L("InformationElementIndex"));
	

//Remove information element
	result = TestRemoveInformationElement(iLog, userData);
	Print(console, result, _L("RemoveInformationElement"));
   		
//Get max body length in chars
	result = TestMaxBodyLengthInChars(iLog, userData);
	Print(console, result, _L("MaxBodyLengthInChars"));
   		
//Set body
	result = TestSetBody(iLog, userData);
	Print(console, result, _L("SetBody"));
   		
//Get is supported
	result = TestGetIsSupported(iLog, userData);
	Print(console, result, _L("IsSupported"));

//Get is supported2
	result = TestGetIsSupported2(iLog, userData);
	Print(console, result, _L("IsSupported2"));   

//Get is supported3
	result = TestGetIsSupported3(iLog, userData);
	Print(console, result, _L("IsSupported3")); 
			
//Get body
	result = TestGetBody(iLog, userData);
	Print(console, result, _L("GetBody"));
   		
    Remove_Console(console);
	CleanupStack::PopAndDestroy(&userData);
    // Case was executed
    return KErrNone;

    }

//  End of File