--- a/messagingappbase/smsmtm/test/src/T_SmsSendText.cpp Fri Apr 16 14:56:15 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,443 +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_SmsSendText.h"
-#include <smuthdr.h>
-#include <txtrich.h>
-
-#include <testconfigfileparser.h>
-#include <simtsy.h>
-#include <smsuaddr.h>
-#include <e32property.h>
-#include <msvtestutils.h>
-RTest test(_L("T_SmsSendText Testrig"));
-CTrapCleanup* theCleanup;
-
-CSmsSendTextTest::~CSmsSendTextTest()
-/**
- destructor
- */
- {
- // delete iTextSession;
- }
-
-void CSmsSendTextTest::TestSendingL()
-/**
- Tests Sending
- */
- {
- DoTestSendingL(iScriptFile);
- }
-
-void SetTestNumberL(TInt aTestNumber)
- {
- test.Printf(_L("Changing the Test Number to %d\n"), aTestNumber);
- TInt testState;
- TInt error = RProperty::Get(KUidSystemCategory, KUidSASimTsyTestNumberValue, testState);
- if(KErrNone != error)
- {
- User::LeaveIfError(RProperty::Define(KUidSystemCategory, KUidSASimTsyTestNumberValue, RProperty::EInt));
- }
- User::LeaveIfError(RProperty::Set(KUidSystemCategory, KUidSASimTsyTestNumberValue, aTestNumber));
- }
-
-void CSmsSendTextTest::RunAutoL()
-/**
- Runs tests in sequence, checks iStatus
- */
- {
- SetTestNumberL(0);
-
- iSmsTest.TestStart(++iNextTest);
- TestSendNoRecipientsL();
- User::LeaveIfError(iStatus.Int());
- iSmsTest.TestFinish(iNextTest, KErrNone);
-
- CSmsSendTestBase::RunAutoL();
- }
-
-void CSmsSendTextTest::RunL()
-/**
- Handles completed async operations
- */
- {
- if (iOperation)
- iSmsTest.SetProgressL(*iOperation);
-
- switch (iSendTextTestState)
- {
- case EStateSendNoRecipients:
- DoRunSendNoRecipientsL();
- break;
- default:
- CSmsSendTestBase::RunL();
- break;
- }
- }
-
-void CSmsSendTextTest::TestSendNoRecipientsL()
-/**
- Tests sending with no receipients.
- The error -1 (KErrNotFound) is expected.
- */
- {
- iState = EStateOther;
- iSendTextTestState = EStateSendNoRecipients;
-
- iSmsTest.Test().Next(_L("Sending No Recipients"));
-
- iSmsTest.DeleteSmsMessagesL(KMsvGlobalOutBoxIndexEntryId);
-
- TTime now;
- now.HomeTime();
- now += (TTimeIntervalSeconds) 5;
-
- iSelection->Reset();
-
- TBool read = EFalse;
- TRAPD(err, read = iSmsTest.ReadScriptL(iScriptFile, KMsvGlobalOutBoxIndexEntryId, *iSelection, now));
-
- iSmsTest.Test()(!err && read);
-
-
- //Remove Recipients
- TInt count = iSelection->Count();
-
- CSmsHeader* header = CSmsHeader::NewL(CSmsPDU::ESmsSubmit, *iSmsTest.iRichText);
- CleanupStack::PushL(header);
-
- while (count--)
- {
- iSmsTest.SetEntryL(iSelection->At(count));
- CMsvStore* store = iSmsTest.EditStoreL();
- CleanupStack::PushL(store);
-
- header->RestoreL(*store);
-
- header->Recipients().ResetAndDestroy();
-
- header->StoreL(*store);
- store->CommitL();
-
- CleanupStack::PopAndDestroy(); //store
- }
-
- CleanupStack::PopAndDestroy(); //header
-
- iSmsTest.SetEntryL(KMsvGlobalOutBoxIndexEntryId);
-
- delete iOperation;
- iOperation = NULL;
- iOperation = MsvEntry().CopyL(*iSelection, iSmsTest.iSmsServiceId, iStatus);
-
- SetActive();
- CActiveScheduler::Start();
- }
-
-void CSmsSendTextTest::DoRunSendNoRecipientsL()
-/**
- Checks the status and error.
- The error -1 (KErrNotFound) is expected
- */
- {
- CActiveScheduler::Stop();
-
- TSmsProgress prog = iSmsTest.iProgress;
-
- test(prog.iError == KErrNone || iStatus.Int() == KErrNone);
- iStatus = KErrNone;
-
- TInt error = KErrNone;
-
- iSmsTest.DisplaySendingStatesL(*iSelection);
- test(iSmsTest.SendingCompleteL(*iSelection, error));
- test(error == KErrNotFound);
-
- iState = CSmsSendTestBase::EStateWaiting;
- iSendTextTestState = EStateWaiting;
-
- delete iOperation;
- iOperation = NULL;
- }
-
-void CSmsSendTextTest::TestSchedulingL()
-/**
- Tests schedule sending
- */
- {
- DoTestSchedulingL(iScriptFile);
- }
-
-
-CSmsSendTextTest::CSmsSendTextTest(CSmsTestUtils& aSmsTest, const TDesC& aScriptFile, TInt& aCurrentTest)
-: CSmsSendTestBase(aSmsTest, aScriptFile, aCurrentTest)
-/**
- Constructor
- */
- {
- }
-
-LOCAL_C void doMainL()
- {
- // Copying the config file to the root directory
-
- _LIT(KFileName,"config.txt");
- _LIT(KFileName2,"\\msgtest\\sms\\sms.script");
-
- RFs fs;
- User::LeaveIfError(fs.Connect());
- CleanupClosePushL(fs);
-
- fs.SetSessionPath(_L("c:\\"));
- fs.Delete(KFileName); //< Ignore Error
-
- CFileMan* fileMan = CFileMan::NewL(fs);
- CleanupStack::PushL(fileMan);
-
- User::LeaveIfError(fileMan->Copy(KFileName2, KFileName));
-
- CleanupStack::PopAndDestroy(fileMan);
- CleanupStack::PopAndDestroy(&fs);
-
- // Open the socket server
-
- RSocketServ serv;
- RSocket socket;
-
- User::LeaveIfError(serv.Connect());
- CleanupClosePushL(serv);
-
- TProtocolDesc protoinfo;
- TProtocolName protocolname(KSmsDatagram);
- User::LeaveIfError(serv.FindProtocol(protocolname,protoinfo));
- User::LeaveIfError(socket.Open(serv,protoinfo.iAddrFamily,protoinfo.iSockType,protoinfo.iProtocol));
-
- TSmsAddr smsaddr;
- smsaddr.SetSmsAddrFamily(ESmsAddrSendOnly);
- User::LeaveIfError(socket.Bind(smsaddr));
-
- CleanupClosePushL(socket);
-
- CActiveScheduler* scheduler = new (ELeave) CActiveScheduler;
- CleanupStack::PushL(scheduler);
- CActiveScheduler::Install( scheduler );
-
- CSmsTestUtils* smsTest = CSmsTestUtils::NewL(test);
- CleanupStack::PushL(smsTest);
- TInt nextTest = 0;
-
- smsTest->NotifySaPhoneOnL();
- smsTest->WaitForInitializeL();
-
- CSmsSendTextTest* textTest = CSmsSendTextTest::NewL(*smsTest, KSmsScript, nextTest);
- CleanupStack::PushL(textTest);
-
- textTest->StartL();
-
- CleanupStack::PopAndDestroy(3); //SmsTest, scheduler, textTest
-
- CleanupStack::PopAndDestroy(&socket);
- CleanupStack::PopAndDestroy(&serv);
- }
-
-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);
- }
-
-CSmsSendTextTest* CSmsSendTextTest::NewL(CSmsTestUtils& aSmsTest, const TDesC& aScriptFile, TInt& aCurrentTest)
- {
- CSmsSendTextTest* self = new (ELeave) CSmsSendTextTest(aSmsTest, aScriptFile, aCurrentTest);
- CleanupStack::PushL(self);
-
- self->ConstructL();
-
- CleanupStack::Pop();
- return self;
- }
-
-/*void CSmsSendTextTest::TestSendWithDataCallL()
- {
- TestConnectingL();
- DoTestSendingL(KSmsScript);
-
- iTextSession->Disconnect();
- WaitForEndOfDataCallL();
- test.Printf(_L(" Waiting 10s\n"));
- User::After(10000000);
- delete iTextSession;
- iTextSession = NULL;
- }
-
-
- void CSmsSendTextTest::WaitForEndOfDataCallL()
- {
- // Connect to etel
- RTelServer etel;
- User::LeaveIfError(etel.Connect());
- CleanupClosePushL(etel);
-
- // Get tsy name
- TName tsy;
- FaxUtils::GetTsyNameL(tsy);
-
- // Load the TSY
- User::LeaveIfError(etel.LoadPhoneModule(tsy));
-
- // Get phone for the TSY
- RTelServer::TPhoneInfo info;
- test(FaxUtils::GetPhoneInfoForTsyL(etel, tsy, info));
-
- // Load the phone
- RPhone phone;
- User::LeaveIfError(phone.Open(etel, info.iName));
- CleanupClosePushL(phone);
-
- // Get data line info
- RPhone::TLineInfo data;
- test(GetDataLineInfoForPhoneL(phone, data));
-
- // Open the phone line
- RLine line;
- User::LeaveIfError(line.Open(phone, data.iName));
- CleanupClosePushL(line);
-
- // Get line hook status
- RCall::THookStatus hook;
- User::LeaveIfError(line.GetHookStatus(hook));
-
- // Wait until the line is on hook
- if (hook == RCall::EHookStatusOff)
- {
- test.Printf(_L(" Waiting for data call to end\n"));
- TRequestStatus status;
- line.NotifyHookChange(status, hook);
- User::WaitForRequest(status);
- }
-
- // Unload everything
- CleanupStack::PopAndDestroy(2); // line, phone
- User::LeaveIfError(etel.UnloadPhoneModule(tsy));
- CleanupStack::PopAndDestroy(); // etel
- }
-
-void CSmsSendTextTest::TestConnectingL()
- {
- // Create a waiter
- CMsvOperationWait* wait = CMsvOperationWait::NewLC();
-
- // Create text sever session
- iTextSession = CImTextServerSession::NewL();
-
- // Create a timer
- CTestTimer* timer = CTestTimer::NewL();
- CleanupStack::PushL(timer);
-
- // Connect to the internet
- const TInt maxCount = 5;
- TInt count = maxCount;
-
- CImIAPPreferences* pref = CImIAPPreferences::NewLC();
-
- do
- {
- test.Printf(_L(" Connecting to the internet (attempt %d of %d, last error %d)\n"), maxCount - count + 1, maxCount, wait->iStatus.Int());
- iTextSession->QueueConnectL(wait->iStatus,_L("pop3.demon.co.uk"), 110, *pref);
- wait->Start();
- CActiveScheduler::Start();
- } while (wait->iStatus != KErrNone && count--);
-
- CleanupStack::PopAndDestroy(pref);
-
- // Receive stuff
- while (wait->iStatus == KErrNone)
- {
- // Receive some text
- test.Printf(_L(" Receiving data\n"));
- iTextSession->QueueReceiveNextTextLine(wait->iStatus);
- wait->Start();
-
- // Start a timer - so we give up eventually - 10s
- timer->After(10000000);
- CActiveScheduler::Start();
-
- // Did the timer complete?
- if (!timer->IsActive())
- {
- // Cancel the outstanding request
- iTextSession->Cancel();
- CActiveScheduler::Start();
- }
- else
- {
- // Get the data
- timer->Cancel();
- TBuf8<1020> textLineNarrow;
- TBuf<1024> textLineWide;
- iTextSession->GetCurrentTextLine(textLineNarrow);
- textLineWide.Copy(textLineNarrow);
-
- // Make it look nice!
- if (textLineWide.Length() > 0)
- {
- textLineWide.Insert(0, _L(" "));
- textLineWide.Append(_L("\n"));
- test.Printf(textLineWide);
- }
- }
- }
-
- // Tidy up
- test(wait->iStatus == KErrNone || wait->iStatus == KErrCancel);
- CleanupStack::PopAndDestroy(2); // timer, wait
- }
-
-
-
-TBool CSmsSendTextTest::GetDataLineInfoForPhoneL(RPhone& aPhone, RPhone::TLineInfo& aLineInfo)
- {
- // Get number of lines
- TInt line;
- User::LeaveIfError(aPhone.EnumerateLines(line));
-
- // Iterate through all the lines
- while(line--)
- {
- // Get line info
- RPhone::TLineInfo lineInfo;
- User::LeaveIfError(aPhone.GetLineInfo(line, lineInfo));
-
- // Does it support fax?
- if ((lineInfo.iLineCapsFlags & RLine::KCapsData) != 0)
- {
- aLineInfo = lineInfo;
- break;
- }
- }
-
- // Did we find a fax line on the phone?
- return line >= 0;
- }
-*/