--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mobilemessaging/smsmtm/test/src/t_smsdeliverlastsegmentreport.cpp Thu Dec 17 08:44:11 2009 +0200
@@ -0,0 +1,224 @@
+// Copyright (c) 2006-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_smsdeliverlastsegmentreport.h"
+#include <smss.rsg>
+#include <etelmm.h>
+#include "smstestutils.h"
+
+
+
+
+GLDEF_C TInt E32Main()
+ {
+ __UHEAP_MARK;
+ test.Start(_L("Setup"));
+ theCleanup = CTrapCleanup::New();
+ if(theCleanup == NULL)
+ {
+ return KErrNoMemory;
+ }
+ TRAPD(ret,doMainL());
+ delete theCleanup;
+ test.Printf(_L("Completed with return code %d"),ret);
+ test.End();
+ test.Close();
+ __UHEAP_MARKEND;
+ return ret;
+ }
+
+LOCAL_C void doMainL()
+ {
+ CActiveScheduler* scheduler = new (ELeave) CActiveScheduler;
+ CleanupStack::PushL(scheduler);
+ CActiveScheduler::Install(scheduler);
+
+ CSmsTestUtils* smsTest = CSmsTestUtils::NewLC(test);
+ TInt nextTest = 0;
+
+ CSmsDeliverLastSegmentReport* lastSegReport = CSmsDeliverLastSegmentReport::NewLC(*smsTest, KNullDesC, nextTest);
+
+ lastSegReport->StartL();
+
+ CleanupStack::PopAndDestroy(3, scheduler);
+ }
+
+CSmsDeliverLastSegmentReport::CSmsDeliverLastSegmentReport(CSmsTestUtils& aSmsTest, const TDesC& aScriptFile, TInt& aNextTest)
+: CSmsTestBase(aSmsTest, aScriptFile, aNextTest)
+ {
+ }
+
+void CSmsDeliverLastSegmentReport::RunAutoL()
+ {
+ // Testing settings (CSmsSettings)
+ iSmsTest.TestStart(++iNextTest, _L("CSmsSettings"));
+ TestSmsSettingsL();
+ iSmsTest.TestFinish(iNextTest);
+
+ // Testing number class (CSmsHeader)
+ iSmsTest.TestStart(++iNextTest, _L("CSmsHeader"));
+ TestSmsHeaderL();
+
+ iSmsTest.TestFinish(iNextTest);
+
+ }
+
+CSmsDeliverLastSegmentReport::~CSmsDeliverLastSegmentReport()
+ {
+ delete iSmsHeader;
+ delete iRichText;
+ delete iParaLayer;
+ delete iCharLayer;
+ }
+
+
+void CSmsDeliverLastSegmentReport::ConstructL()
+ {
+ iSmsTest.SetLogToFile();
+
+ iSelection = new (ELeave) CMsvEntrySelection();
+ iTimer = CTestTimer::NewL();
+
+ iParaLayer =CParaFormatLayer::NewL();
+ iCharLayer = CCharFormatLayer::NewL();
+ iRichText = CRichText::NewL(iParaLayer, iCharLayer, CEditableText::EFlatStorage,256);
+
+ CActiveScheduler::Add(this);
+ }
+
+CSmsDeliverLastSegmentReport* CSmsDeliverLastSegmentReport::NewLC(CSmsTestUtils& aSmsTest, const TDesC& aScriptFile, TInt& aNextTest)
+ {
+ CSmsDeliverLastSegmentReport* self = new (ELeave) CSmsDeliverLastSegmentReport(aSmsTest, aScriptFile, aNextTest);
+ CleanupStack::PushL(self);
+
+ self->ConstructL();
+
+ return self;
+ }
+
+void CSmsDeliverLastSegmentReport::ShowMenuL()
+ {
+ iSmsTest.ResetMenu();
+
+ iSmsTest.AppendToMenuL(_L("Start"));
+ RunAutoL();
+
+ if (!iSmsTest.RunAuto())
+ {
+ iSmsTest.Printf(_L("Press any key to continue...\n"));
+ iSmsTest.Test().Getch();
+ }
+
+ }
+
+void CSmsDeliverLastSegmentReport::TestSmsSettingsL()
+ {
+ iSmsTest.Printf(_L("Testing Create Settings...\n"));
+
+ iSmsTest.SetEntryL(iSmsTest.iSmsServiceId);
+// First we test all the last segment delivery report feature of the class CSmsSettings
+// We give it different values and compare if it works
+
+ CSmsSettings* settings = CSmsSettings::NewLC();
+
+ TestSettingLastSegmentDeliveryReport(*settings);
+
+ iSmsTest.Printf(_L("Test Create Settings Passed\n"));
+
+ CleanupStack::PopAndDestroy(settings);
+
+}
+
+
+
+void CSmsDeliverLastSegmentReport::TestSettingLastSegmentDeliveryReport(CSmsMessageSettings& aSettings)
+ {
+
+// Reject Duplicate
+
+// Delivery Report
+ aSettings.SetLastSegmentDeliveryReport(ETrue);
+ iSmsTest(aSettings.LastSegmentDeliveryReport());
+ aSettings.SetLastSegmentDeliveryReport(EFalse);
+ iSmsTest(!aSettings.LastSegmentDeliveryReport());
+ aSettings.SetLastSegmentDeliveryReport(ETrue);
+
+ iSmsTest.Printf(_L("Test Last Segment Delivery Report Passed\n"));
+
+// Can Concatenate (write messages with more than 160 characters)
+ aSettings.SetCanConcatenate(ETrue);
+ iSmsTest(aSettings.CanConcatenate());
+ aSettings.SetCanConcatenate(EFalse);
+ iSmsTest(aSettings.CanConcatenate()==EFalse);
+ iSmsTest.Printf(_L("Test Can Concatenate Passed\n"));
+
+ }
+
+
+
+
+void CSmsDeliverLastSegmentReport::TestSmsHeaderL()
+ {
+
+// Testing class CSmsHeader
+ iSmsTest.Test().Next(_L("Testing CSmsHeader"));
+
+// First we test constructing ESmsDeliver
+ delete iSmsHeader; // deleting the previous one
+ iSmsHeader = NULL;
+ iSmsHeader=CSmsHeader::NewL(CSmsPDU::ESmsDeliver,*iRichText); // constructing
+ iSmsTest(iSmsHeader->Type()==CSmsPDU::ESmsDeliver); // type ok?
+
+ CSmsDeliver& deliver = iSmsHeader->Deliver(); // lets get the CSmsPDU of the CSmsHeader
+ iSmsTest(deliver.Type() == CSmsPDU::ESmsDeliver); // Are the types ok?
+
+
+// Type ESmsStatusReport
+ delete iSmsHeader; // deleting the previous one
+ iSmsHeader=CSmsHeader::NewL(CSmsPDU::ESmsStatusReport,*iRichText);
+ iSmsTest(iSmsHeader->Type()==CSmsPDU::ESmsStatusReport);
+
+ CSmsStatusReport& statusreport=iSmsHeader->StatusReport();
+ iSmsTest(statusreport.Type() == CSmsPDU::ESmsStatusReport);
+
+// Type ESmsSubmit
+ delete iSmsHeader; // deleting the previous one
+ iSmsHeader=CSmsHeader::NewL(CSmsPDU::ESmsSubmit,*iRichText);
+ iSmsTest(iSmsHeader->Type()==CSmsPDU::ESmsSubmit);
+
+ CSmsSubmit& submit=iSmsHeader->Submit();
+ iSmsTest(submit.Type() == CSmsPDU::ESmsSubmit);
+
+// Lets access the CSmsMessage of our header
+ CSmsMessage& message=iSmsHeader->Message();
+ iSmsTest(message.Type() == CSmsPDU::ESmsSubmit);
+
+// Setting settings of the message
+ CSmsSettings* smsSet = CSmsSettings::NewLC();
+ smsSet->SetLastSegmentDeliveryReport(ETrue);
+
+ // And copying them to the CSmsHeader
+ iSmsHeader->SetSmsSettingsL(*smsSet);
+
+ // Lets get the same setting from the CSmsHeader
+ iSmsHeader->GetSmsSettingsL(*smsSet);
+
+ // And compare that they are ok!
+ iSmsTest(smsSet->LastSegmentDeliveryReport());
+
+ CleanupStack::PopAndDestroy();
+ }
+