diff -r 000000000000 -r 8e480a14352b messagingfw/msgtest/integration/sms/src/T_smcm.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/messagingfw/msgtest/integration/sms/src/T_smcm.cpp Mon Jan 18 20:36:02 2010 +0200 @@ -0,0 +1,354 @@ +// Copyright (c) 2000-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_smcm.h" + + #include + +CSmcmTest::CSmcmTest(CSmsTestUtils& aSmsTest, const TDesC& aScriptFile, TInt& aNextTest) +: CSmsTestBase(aSmsTest, aScriptFile, aNextTest) + { + } + +void CSmcmTest::RunAutoL() + { + iSmsTest.TestStart(++iNextTest, _L("CSmsSettings")); + TestSettingsL(); + iSmsTest.TestFinish(iNextTest); + + iSmsTest.TestStart(++iNextTest, _L("CSmsClientMtm Capabilities")); + TestCapabilitiesL(); + iSmsTest.TestFinish(iNextTest); + + iSmsTest.TestStart(++iNextTest, _L("CSmsClientMtm Global Find")); + TestFindL(); + iSmsTest.TestFinish(iNextTest); + + iSmsTest.TestStart(++iNextTest, _L("CSmsClientMtm Reply")); + TestReplyL(); + iSmsTest.TestFinish(iNextTest); + + iSmsTest.TestStart(++iNextTest, _L("CSmsClientMtm Forward")); + TestForwardL(); + iSmsTest.TestFinish(iNextTest); + + iSmsTest.TestStart(++iNextTest, _L("CSmsClientMtm Async Functions")); +// There are no async function in sms client mtm + iSmsTest.TestFinish(iNextTest); + + iSmsTest.TestStart(++iNextTest, _L("CSmsClientMtm Sync Functions")); + TestSyncFunctionsL(); + iSmsTest.TestFinish(iNextTest); + } + +CSmcmTest::~CSmcmTest() + { + delete iSmsHeader; + delete iRichText; + delete iParaLayer; + delete iCharLayer; + } + +void CSmcmTest::ConstructL() + { + SetTestNameL(KSmsClientMtmTestName); + iSmsTest.SetLogToFile(); // Lets log to a file + iSmsTest.InstantiateClientMtmsL(); + + iSelection = new (ELeave) CMsvEntrySelection(); + iTimer = CTestTimer::NewL(); + + iParaLayer =CParaFormatLayer::NewL(); // Rich Text for the body part of the message + iCharLayer = CCharFormatLayer::NewL(); + iRichText = CRichText::NewL(iParaLayer, iCharLayer, CEditableText::EFlatStorage,256); + + CActiveScheduler::Add(this); + } + +CSmcmTest* CSmcmTest::NewLC(CSmsTestUtils& aSmsTest, const TDesC& aScriptFile, TInt& aNextTest) + { + CSmcmTest* self = new (ELeave) CSmcmTest(aSmsTest, aScriptFile, aNextTest); + CleanupStack::PushL(self); + + self->ConstructL(); + return self; + } + +void CSmcmTest::ShowMenuL() + { + iSmsTest.ResetMenu(); + + iSmsTest.AppendToMenuL(_L("Start")); + + TInt result = iSmsTest.DisplayMenu(_L("SMS Client MTM Test")); + + if (result <= 0) + return; + + switch (result) + { + case 1: + RunAutoL(); + break; + default: + User::Leave(KErrArgument); + break; + } + + if (!iSmsTest.RunAuto()) + { + iSmsTest.Printf(_L("Press any key to continue...\n")); + iSmsTest.Test().Getch(); + } + + ShowMenuL(); + } + +void CSmcmTest::TestSettingsL() + { + iSmsTest.Printf(_L("Testing Create Settings...\n")); + MsvEntry().SetEntryL(iSmsTest.iSmsServiceId); + +// Lets create sms settings (just in case it does not exist yet) + + CSmsSettings* settings = CSmsSettings::NewL(); + CleanupStack::PushL(settings); + settings->AddServiceCenterL(_L("Radiolinja0"),_L("+358508771010")); + settings->AddServiceCenterL(_L("Radiolinja1"),_L("+358508771010")); + settings->AddServiceCenterL(_L("Nokia"),_L("+358454400050")); + settings->SetDefaultServiceCenter(2); + iSmsTest(settings->DefaultServiceCenter()==2); + settings->SetValidityPeriod(ESmsVPWeek); + settings->SetReplyQuoted(ETrue); + settings->SetRejectDuplicate(ETrue); + settings->SetDelivery(ESmsDeliveryImmediately); + settings->SetDeliveryReport(ETrue); + settings->SetReplyPath(EFalse); + settings->SetMessageConversion(ESmsConvPIDNone); + settings->SetCanConcatenate(ETrue); + settings->SetCharacterSet(TSmsDataCodingScheme::ESmsAlphabet8Bit); + settings->SetValidityPeriodFormat(TSmsFirstOctet::ESmsVPFSemiOctet); + settings->SetStatusReportHandling(CSmsSettings::EMoveReportToInboxVisible); + settings->SetSpecialMessageHandling(CSmsSettings::EMoveReportToInboxVisible); + + + CSmsAccount* smsAccount = CSmsAccount::NewLC(); + smsAccount->SaveSettingsL(*settings); + CleanupStack::PopAndDestroy(smsAccount); + + + iSmsTest.iServiceSettings->CopyL(*settings); + CleanupStack::PopAndDestroy(); //settings + } + +// Now we shall test the recipient handling, find and validate features + +void CSmcmTest::TestFindL() + { + iSmsTest.Test().Next(_L("Testing CSmsClientMtm Global Find")); + +// Before testing the find and validate we need a dummy message to play with + + TMsvPartList partList; + TMsvId id = iSmsTest.CreateDummyMessageToSendL(); + Client().SwitchCurrentEntryL(id); + +// Lets load the message we just created + Client().LoadMessageL(); + +// And add some recipients + Client().AddAddresseeL(_L("+358503367709"), _L("Mico3")); + Client().AddAddresseeL(_L("+358503367709"), _L("Mico4")); + Client().AddAddresseeL(_L("//\\"), _L("\n")); + Client().AddAddresseeL(_L("\n0"), _L("^")); + Client().AddAddresseeL(_L("1234"), _L("~¨")); + Client().AddAddresseeL(_L("äöåÖÅÖÖ¤"), _L("fdsa4324521{[]}")); + Client().AddAddresseeL(_L("äöåÖÅÖÖ¤"), _L("")); + Client().AddAddresseeL(_L("äöåÖÅÖÖ¤")); + +// Remove Recipient + Client().RemoveAddressee(2); + +// Validating Message + partList=KMsvMessagePartRecipient; + iSmsTest(Client().ValidateMessage(partList)); // All the addresses are not valid + + Client().RemoveAddressee(Client().AddresseeList().Count()-1); + Client().RemoveAddressee(Client().AddresseeList().Count()-1); + Client().RemoveAddressee(Client().AddresseeList().Count()-1); + Client().RemoveAddressee(Client().AddresseeList().Count()-2); + Client().RemoveAddressee(Client().AddresseeList().Count()-2); + + partList=KMsvMessagePartRecipient; // supported + iSmsTest(!Client().ValidateMessage(partList)); + partList=KMsvMessagePartBody; // not supported, returns 0 + iSmsTest(!Client().ValidateMessage(partList)); + partList=KMsvMessagePartOriginator; // not supported, returns 0 + iSmsTest(!Client().ValidateMessage(partList)); + partList=KMsvMessagePartDescription; // not supported, returns 0 + iSmsTest(!Client().ValidateMessage(partList)); + partList=KMsvMessagePartDate; // not supported, returns 0 + iSmsTest(!Client().ValidateMessage(partList)); + partList=KMsvMessagePartAttachments; // not supported, returns 0 + iSmsTest(!Client().ValidateMessage(partList)); + partList=KMsvMessagePartBody|KMsvMessagePartRecipient; + iSmsTest(!Client().ValidateMessage(partList)); + iSmsTest.Printf(_L("Test Validate Passed\n")); + +// Find in body and recipients + Client().AddAddresseeL(_L("+358503367709"), _L("Mr. Tester")); + partList=KMsvMessagePartRecipient; + iSmsTest(Client().Find(_L("est"),partList)==KMsvMessagePartRecipient); + partList=KMsvMessagePartBody; + iSmsTest(Client().Find(_L("end"),partList)==KMsvMessagePartBody); + partList=KMsvMessagePartOriginator; + iSmsTest(!Client().Find(_L("end"),partList)); + partList=KMsvMessagePartDescription; // not supported, returns 0 + iSmsTest(!Client().Find(_L("end"),partList)); + partList=KMsvMessagePartDate; // not supported, returns 0 + iSmsTest(!Client().Find(_L("end"),partList)); + partList=KMsvMessagePartAttachments; // not supported, returns 0 + iSmsTest(!Client().Find(_L("end"),partList)); + partList=KMsvMessagePartBody|KMsvMessagePartRecipient; +// resultList=Client().Find(_L(""),partList); // crashes with empty string + iSmsTest(Client().Find(_L("\n"),partList)); + iSmsTest(Client().Find(_L("äöå"),partList)); + iSmsTest(!Client().Find(_L("{[}]"),partList)); + iSmsTest(!Client().Find(_L("\\"),partList)); + iSmsTest(!Client().Find(_L("4352316542631753dfgfdgs4t6543w563vsd4"),partList)); + iSmsTest(Client().Find(_L("~"),partList)); + iSmsTest(Client().Find(_L(" "),partList)); + iSmsTest(!Client().Find(_L("^"),partList)); + iSmsTest(!Client().Find(_L(" \"dsasaf¤;¨"),partList)); + iSmsTest(!Client().Find(_L("\\"),partList)); + iSmsTest(!Client().Find(_L(" "),partList)); // alt+255 + iSmsTest(Client().Find(_L("¨"),partList)); + iSmsTest(!Client().Find(_L("/\\"),partList)); + iSmsTest(!Client().Find(_L("\\ "),partList)); + iSmsTest.Printf(_L("Test Find Passed\n")); + } + +void CSmcmTest::TestCapabilitiesL() + { +// Query MTM's capabilities + TInt response; + iSmsTest(Client().QueryCapability(KUidMtmQueryMaxBodySize,response)==KErrNone); +// iSmsTest(response==KSmscMaxTotalMsgSize); + iSmsTest(Client().QueryCapability(KUidMtmQueryMaxTotalMsgSize,response)==KErrNone); +// iSmsTest(response==KSmcmMaxMessageNumber*KSmcmMaxCharsInMessageConcatenated7Bit); + iSmsTest(Client().QueryCapability(KUidMtmQuerySupportedBody,response)==KErrNone); + iSmsTest(response==KMtm7BitBody + KMtm8BitBody + KMtm16BitBody); + iSmsTest(Client().QueryCapability(KUidMtmQuerySupportAttachments,response)==KErrNotSupported); + iSmsTest(response); + iSmsTest(Client().QueryCapability(KUidMtmQuerySupportSubject,response)==KErrNotSupported); + iSmsTest(response); + iSmsTest(Client().QueryCapability(KUidMtmQuerySupportsFolder,response)==KErrNotSupported); + iSmsTest(response); + iSmsTest(Client().QueryCapability(KUidMtmQueryOffLineAllowed,response)==KErrNotSupported); + iSmsTest(response); + iSmsTest(Client().QueryCapability(KUidMtmQueryCanSendMsg,response)==KErrNone); + iSmsTest(response); + iSmsTest(Client().QueryCapability(KUidMtmQueryCanReceiveMsg,response)==KErrNone); + iSmsTest(response); + iSmsTest(Client().QueryCapability(KUidMtmQueryMaxRecipientCount,response)==KErrNone); + iSmsTest(response==-1); + iSmsTest(Client().QueryCapability(KUidMtmQuerySendAsRequiresRenderedImage,response)==KErrNotSupported); + iSmsTest(response); + iSmsTest(Client().QueryCapability(KUidMtmQuerySendAsRenderingUid,response)==KErrNotSupported); + iSmsTest(response); + iSmsTest(Client().QueryCapability(KUidMsvMtmQueryEditorUid,response)==KErrNone); + iSmsTest(response==268441151); // 0x1000163f in hex form + iSmsTest(Client().QueryCapability(KUidMsvQuerySupportsBioMsg,response)==KErrNone); + iSmsTest(response); + iSmsTest(Client().QueryCapability(KUidMsvQuerySupportsScheduling,response)==KErrNone); + iSmsTest(response); + iSmsTest(Client().QueryCapability(KUidSmcmTestNonSense,response)==KErrNotSupported); + iSmsTest(response); + iSmsTest.Printf(_L("Test Query Capabilities Passed\n")); + } + +// Now testing replying to received messages +void CSmcmTest::TestReplyL() + { + iSmsTest.Test().Next(_L("CSmsClientMtm Reply")); + iSmsTest.Printf(_L("This test is INCOMPLETE\n")); + +// First we need a received message that we will reply soon + TMsvId id = iSmsTest.CreateDummyMessageToReceiveL(); + iSmsTest.SetEntryL(id); + + Client().SwitchCurrentEntryL(id); // Lets point at the received message + Client().LoadMessageL(); + + TMsvPartList part=0; + CMsvOperationWait* wait = CMsvOperationWait::NewLC(); + CMsvOperation* op=Client().ReplyL(KMsvDraftEntryId, part, wait->iStatus); + CleanupStack::PushL(op); + wait->Start(); + CActiveScheduler::Start(); + + TPckgBuf pkg; + pkg.Copy(op->ProgressL()); + TMsvId progress = pkg(); + + CleanupStack::PopAndDestroy(2); //op, wait + + Client().SwitchCurrentEntryL(progress); + Client().LoadMessageL(); + Client().Body().InsertL(0,_L("This is reply")); + Client().SaveMessageL(); + } + +void CSmcmTest::TestForwardL() + { + iSmsTest.Test().Next(_L("CSmsClientMtm Forward")); + iSmsTest.Printf(_L("This test is INCOMPLETE\n")); + + TMsvId id = iSmsTest.CreateDummyMessageToReceiveL(); + Client().SwitchCurrentEntryL(id); + Client().LoadMessageL(); + TMsvPartList part=0; + TRequestStatus status(0); + CMsvOperation* op = Client().ForwardL(KMsvDraftEntryId, part, status); + CleanupStack::PushL(op); + + TMsvId temp; + TPckgC paramPack(temp); + const TDesC8& progBuf2 = op->ProgressL(); + paramPack.Set(progBuf2); + TMsvId progress=paramPack(); + + CleanupStack::PopAndDestroy(); //op + op = NULL; + + Client().SwitchCurrentEntryL(progress); + + Client().LoadMessageL(); + Client().Body().InsertL(0,_L("This is forward")); + Client().AddAddresseeL(_L("+358503367709"), _L("MicoForward")); + + CSmsSettings* smssett = CSmsSettings::NewL(); + CleanupStack::PushL(smssett); + smssett->CopyL(Client().ServiceSettings()); + CleanupStack::PopAndDestroy(); //smssett + + Client().SaveMessageL(); + } + +void CSmcmTest::TestSyncFunctionsL() + { + iSmsTest.Test().Next(_L("Test CSmsClientMtm Sync Functions")); + iSmsTest.Printf(_L("This test is INCOMPLETE\n")); + }