messagingappbase/smsmtm/test/src/T_SmsSendAs.cpp
changeset 25 84d9eb65b26f
parent 23 238255e8b033
child 27 e4592d119491
child 37 518b245aa84c
child 79 2981cb3aa489
--- a/messagingappbase/smsmtm/test/src/T_SmsSendAs.cpp	Fri Apr 16 14:56:15 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,431 +0,0 @@
-// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
-// All rights reserved.
-// This component and the accompanying materials are made available
-// under the terms of "Eclipse Public License v1.0"
-// which accompanies this distribution, and is available
-// at the URL "http://www.eclipse.org/legal/epl-v10.html".
-//
-// Initial Contributors:
-// Nokia Corporation - initial contribution.
-//
-// Contributors:
-//
-// Description:
-//
-
-#include "t_smssendas.h"
-#include "smscmds.h"
-#include "smuthdr.h"
-#include <txtrich.h>
-#include <txtfmlyr.h>
-#include "smsclnt.h"
-
-RTest test(_L("T_SmsSendAs Testrig"));
-CTrapCleanup* theCleanup;
-
-_LIT(KSmsScript, "sms.script");
-_LIT(KWapScript, "wap.script");
-_LIT(KNbsScript, "nbs.script");
-
-LOCAL_C void doMainL()
-	{
-	CActiveScheduler* scheduler = new (ELeave) CActiveScheduler;
-	CleanupStack::PushL(scheduler);
-	CActiveScheduler::Install( scheduler );
-
-	CSmsTestUtils* smsTest = CSmsTestUtils::NewL(test);
-	CleanupStack::PushL(smsTest);
-	TInt nextTest = 0;
-
-	smsTest->NotifySaPhoneOnL();
-
-	CSmsSendAsTest* asTest = CSmsSendAsTest::NewL(*smsTest, KNullDesC, nextTest);
-	CleanupStack::PushL(asTest);
-
-	smsTest->WaitForInitializeL();
-
-	asTest->StartL();
-
-	//CleanupStack::PopAndDestroy(3); //SmsTest, scheduler
-	CleanupStack::PopAndDestroy(asTest);
-	CleanupStack::PopAndDestroy(smsTest);
-	CleanupStack::PopAndDestroy(scheduler);
-	}
-
-GLDEF_C TInt E32Main()
-	{	
-	__UHEAP_MARK;
-	test.Start(_L("Setup"));
-	theCleanup = CTrapCleanup::New();
-	TRAPD(ret,doMainL());		
-	test(ret==KErrNone);
-	delete theCleanup;	
-	test.Console()->SetPos(0, 13);
-	test.End();
-	test.Close();
-	__UHEAP_MARKEND;
-	return(KErrNone);
-	}
-
-
-CSmsSendAsTest::~CSmsSendAsTest()
-/**
-	destructor
- */
-	{
-	iSocket.Close();
-	iSocketServ.Close();
-	}
-
-CSmsSendAsTest* CSmsSendAsTest::NewL(CSmsTestUtils& aSmsTest, const TDesC& aScriptFile, TInt& aNextTest)
-	{
-	CSmsSendAsTest* self = new (ELeave) CSmsSendAsTest(aSmsTest, aScriptFile, aNextTest);
-	CleanupStack::PushL(self);
-
-	self->ConstructL();
-
-	CleanupStack::Pop();
-	return self;
-	}
-
-
-
-CSmsSendAsTest::CSmsSendAsTest(CSmsTestUtils& aSmsTest, const TDesC& aScriptFile, TInt& aNextTest)
-: CSmsTestBase(aSmsTest, aScriptFile, aNextTest), iState(EStateWaiting)
-	{
-	}
-
-void CSmsSendAsTest::RunAutoL()
-/**
-	Runs tests in sequence, checks iStatus
- */
-	{
-	iSmsTest.TestStart(++iNextTest, _L("Test SendAs"));
-	TestSendAsL();
-	User::LeaveIfError(iStatus.Int());
-	iSmsTest.TestFinish(iNextTest, KErrNone);
-	
-	iSmsTest.TestStart(++iNextTest, _L("Send the messages"));
-	TestSendingL();
-	User::LeaveIfError(iStatus.Int());
-	iSmsTest.TestFinish(iNextTest, KErrNone);
-	}
-
-void CSmsSendAsTest::ConstructL()
-	{
-	iSmsTest.SetLogToFile();
-	iSmsTest.DeleteServicesL();
-	iSmsTest.CreateServicesL();
-
-	iSelection = new (ELeave) CMsvEntrySelection();
-	iTimer = CTestTimer::NewL();
-
-	User::LeaveIfError(iSocketServ.Connect());
-	TProtocolDesc protoinfo;
-	TProtocolName protocolname(KSmsDatagram);
-	User::LeaveIfError(iSocketServ.FindProtocol(protocolname,protoinfo));
-	User::LeaveIfError(iSocket.Open(iSocketServ,protoinfo.iAddrFamily,protoinfo.iSockType,protoinfo.iProtocol));
-
-	TSmsAddr smsaddr;
-	smsaddr.SetSmsAddrFamily(ESmsAddrSendOnly);
-	User::LeaveIfError(iSocket.Bind(smsaddr));
-
-	CActiveScheduler::Add(this);
-	}
-
-void CSmsSendAsTest::ShowMenuL()
-/**
-	Shows menu
- */
-	{
-	iSmsTest.ResetMenu();
-	iSmsTest.AppendToMenuL(_L("Test SendAs"));
-	iSmsTest.AppendToMenuL(_L("Send the messages"));
-	iSmsTest.AppendToMenuL(_L("Run auto"));
-
-	TInt result = iSmsTest.DisplayMenu(_L("SMS Service Centre Test"));
-
-	if (result <= 0)
-		return;
-
-	switch (result)
-		{
-		case 1:
-			TestSendAsL();
-			break;
-		case 2:
-			TestSendingL();
-			break;
-		case 3:
-			iSmsTest.SetRunAuto(ETrue);
-			RunAutoL();
-			break;
-		default:
-			User::Leave(KErrArgument);
-			break;
-		}
-
-	ShowMenuL();
-	}
-
-void CSmsSendAsTest::RunL()
-/**
-	Handles completed async operations
- */
-	{
-	CActiveScheduler::Stop();
-
-	switch (iState)
-		{
-		case EStateSending:
-			{
-			DoRunSendingL();
-			break;
-			}
-		default:
-			{
-			break;
-			}
-		}
-	}
-
-void CSmsSendAsTest::DoRunSendingL()
-/**
-	Checks the status
- */	
-	{
-	if (iOperation)
-		iSmsTest.SetProgressL(*iOperation);
-
-	if (iStatus == KErrNone)
-		iStatus = iSmsTest.iProgress.iError;
-
-	iSmsTest.Printf(_L("Printing completed with error %d\n"), iStatus.Int());
-
-	iSmsTest.DisplaySendingStatesL(*iSelection);
-	iState = EStateWaiting;
-
-	delete iOperation;
-	iOperation = NULL;
-	}
-
-void CSmsSendAsTest::DoCancel()
-/**
-	Cancels the async operation
- */
-	{
-	if (iOperation)
-		{
-		iOperation->Cancel();
-		iSmsTest.Printf(_L("Operation Cancelled!\n"));
-		}
-	delete iOperation;
-	iOperation = NULL;
-	}
-
-void CSmsSendAsTest::TestSendAsL()
-/**
-	Tests SendAs  
- */
-	{
-	DeleteChildrenL(KMsvGlobalOutBoxIndexEntryId);
-
-	TTime now;
-	now.HomeTime();
-
-	CMsvEntrySelection* sel = new (ELeave) CMsvEntrySelection;
-	CleanupStack::PushL(sel);
-	iSelection->Reset();
-	
-	iSmsTest(iSmsTest.ReadScriptL(KSmsScript, KMsvGlobalOutBoxIndexEntryId, *sel, now));
-	iSmsTest(iSmsTest.ReadScriptL(KWapScript, KMsvGlobalOutBoxIndexEntryId, *sel, now));
-	iSmsTest(iSmsTest.ReadScriptL(KNbsScript, KMsvGlobalOutBoxIndexEntryId, *sel, now));
-	const TInt count = sel->Count();
-
-	iSmsTest(count);
-
-	CRichText* richOld = CRichText::NewL(iSmsTest.iParaFormat, iSmsTest.iCharFormat);
-	CleanupStack::PushL(richOld);
-
-	CRichText* richNew = CRichText::NewL(iSmsTest.iParaFormat, iSmsTest.iCharFormat);
-	CleanupStack::PushL(richNew);
-
-	CSmsHeader* headerOld = CSmsHeader::NewL(CSmsPDU::ESmsSubmit, *richOld);
-	CleanupStack::PushL(headerOld);
-
-	CSmsHeader* headerNew = CSmsHeader::NewL(CSmsPDU::ESmsSubmit, *richNew);
-	CleanupStack::PushL(headerNew);
-
-	for (TInt i = 0; i < count; i++) //order important
-		{
-		//Get the existing message
-		TMsvId id = sel->At(i);
-		iSmsTest.SetEntryL(id);
-
-		TUid bioType;
-		bioType.iUid = iSmsTest.Entry().iBioType;
-
-			iSmsTest.Printf(_L("%d/%d SendAs for BioType %d\n"), i + 1, count, bioType.iUid); 
-
-			CMsvStore* store = iSmsTest.ReadStoreL();
-			CleanupStack::PushL(store);
-			headerOld->RestoreL(*store);
-			store->RestoreBodyTextL(*richOld);
-			CleanupStack::PopAndDestroy(store);
-			
-			CSendAs* sendAs = CSendAs::NewL(*this);
-			CleanupStack::PushL(sendAs);
-			
-			sendAs->SetMtmL(KUidMsgTypeSMS);
-			iSmsTest(sendAs->AvailableServices().Count());
-			sendAs->SetService(0);
-			sendAs->CreateMessageL(KMsvGlobalOutBoxIndexEntryId);
-
-			for (TInt j = 0; j < headerOld->Recipients().Count(); j++)
-				{
-				CSmsNumber* number = headerOld->Recipients()[j];
-				TPtrC name(number->Name());
-				TPtrC addr(number->Address());
-				sendAs->AddRecipientL(addr, name);
-				}
-
-			sendAs->SetBodyL(*richOld);
-
-			if (bioType.iUid != 0)
-				sendAs->SetBioTypeL(bioType);
-
-			sendAs->SaveMessageL(ETrue);
-
-			//Get the new message
-			CSmsClientMtm* mtm = REINTERPRET_CAST(CSmsClientMtm*, &sendAs->ClientMtm());
-			CMsvEntry& entry = mtm->Entry();
-			store = entry.ReadStoreL();
-			CleanupStack::PushL(store);
-			headerNew->RestoreL(*store);
-			store->RestoreBodyTextL(*richNew);
-			CleanupStack::PopAndDestroy(store);
-
-			iSmsTest.Printf(_L("\tCreated %d\n"), entry.EntryId());
-			test(id != entry.EntryId());
-			CompareHeadersL(*headerOld, *headerNew);
-
-			CSmsSettings* msgSettings = CSmsSettings::NewL();
-			CleanupStack::PushL(msgSettings);
-
-			//Check the settings are the same (except charset)
-			headerNew->GetSmsSettingsL(*msgSettings);
-			CompareSettingsL(mtm->ServiceSettings(), *msgSettings);
-			CleanupStack::PopAndDestroy(msgSettings);
-
-			iSelection->AppendL(entry.EntryId());
-
-			CleanupStack::PopAndDestroy(sendAs);
-			}
-
-	CleanupStack::PopAndDestroy(5);
-	}
-
-void CSmsSendAsTest::CompareSettingsL(const CSmsMessageSettings& aS1, const CSmsMessageSettings& aS2)
-/**
-	Compares two sms message settings 
-
-	@param		aS1			A sms message setting
-	@param		aS2			A sms message setting	
- */
-	{
-	RTest& t = iSmsTest.Test();
-	t(aS1.ValidityPeriod() == aS2.ValidityPeriod());
-	t(aS1.ValidityPeriodFormat() == aS2.ValidityPeriodFormat());
-	t(aS1.RejectDuplicate() == aS2.RejectDuplicate());
-	t(aS1.DeliveryReport() == aS2.DeliveryReport());
-	t(aS1.ReplyPath() == aS2.ReplyPath());
-	t(aS1.MessageConversion() == aS2.MessageConversion());
-	}
-
-void CSmsSendAsTest::CompareHeadersL(const CSmsHeader& aH1, const CSmsHeader& aH2) const
-/**
-	Compares two sms headers
-
-	@param		aH1			A sms message header
-	@param		aH2			A sms message header	
- */
-	{
-	RTest& t = iSmsTest.Test();
-	t(aH1.Type() == aH2.Type());
-
-	t(aH1.Recipients().Count() == aH2.Recipients().Count());
-
-	for (TInt i = 0; i < aH1.Recipients().Count(); i++)
-		{
-		CSmsNumber* number1 = aH1.Recipients()[i];
-		CSmsNumber* number2 = aH2.Recipients()[i];
-
-		t(number1->Address().Compare(number2->Address()) == 0);
-		t(number1->Name().Compare(number2->Name()) == 0);
-		}
-
-	t(aH1.FromAddress().CompareF(aH2.FromAddress()) == 0);
-
-	TInt length = aH1.Message().Buffer().Length();
-	HBufC* hBuf1 = HBufC::NewLC(length);
-	TPtr buf1 = hBuf1->Des();
-	aH1.Message().Buffer().Extract(buf1, 0, length);
-	
-	length = aH2.Message().Buffer().Length();
-	HBufC* hBuf2 = HBufC::NewLC(length);
-	TPtr buf2 = hBuf2->Des();
-	aH2.Message().Buffer().Extract(buf2, 0, length);
-
-	t(buf1.Compare(buf2) == 0);
-
-	CleanupStack::PopAndDestroy(2); //hBuf1, hBuf2
-	}
-
-void CSmsSendAsTest::TestSendingL()
-/**
-	Tests sending
- */
-	{
-	iSmsTest.Test().Next(_L("Test Sending"));
-
-	if (!iSelection->Count())
-		User::Leave(KErrNotFound);
-
-	delete iOperation;
-	iOperation = NULL;
-	iState = EStateSending;
-
-	MsvEntry().SetEntryL(KMsvGlobalOutBoxIndexEntryId);
-	iOperation = MsvEntry().CopyL(*iSelection, iSmsTest.iSmsServiceId, iStatus);
-	SetActive();
-	CActiveScheduler::Start();
-	}
-
-
-void CSmsSendAsTest::DeleteChildrenL(TMsvId aParent)
-/**
-	Deletes children
-
-	@param		aParent			A Message Id
- */
-	{
-	iSmsTest.SetEntryL(aParent);
-	CMsvEntrySelection* sel = iSmsTest.ChildrenWithMtmLC(KUidMsgTypeSMS);
-	TInt count = sel->Count();
-
-	while (count--)
-		{
-		iSmsTest.DeleteEntryL(sel->At(count));
-		}
-
-	CleanupStack::PopAndDestroy(sel);
-	}
-
-TBool CSmsSendAsTest::CapabilityOK(TUid /*aCapability*/, TBool /*aResponse*/)
-/**
-	This is required by MSendAsObserver
- */
-	{
-	return ETrue;
-	}
-