commonappservices/alarmserver/Test/TAlarmData.cpp
changeset 0 2e3d3ce01487
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commonappservices/alarmserver/Test/TAlarmData.cpp	Tue Feb 02 10:12:00 2010 +0200
@@ -0,0 +1,551 @@
+// Copyright (c) 1997-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 "ASTstAlarmTest.h"
+
+// System includes
+#include <asclisoundplay.h>
+
+// Constants
+const TInt KWaitInterval = 10; // time delay after which alarms complete in seconds.
+// Literal constants
+_LIT8(KSomeAlarmData, "This is some 8-bit data");
+
+
+static void testDataInvalidAlarmL()
+//
+//
+//
+	{
+	TheAlarmTest.Test().Next(_L("Testing data methods with invalid alarm ids"));
+	//
+	TInt r;
+	//
+	r = TheAlarmTest.Session().AlarmDataSize(KNullAlarmId);
+	TheAlarmTest(r == KErrNotFound, __LINE__);
+	//
+
+	// AlarmDataDetatch has been deprecated (since it's spelt wrong).
+	// We still call it here though, since removing it would break SC.
+	r = TheAlarmTest.Session().AlarmDataDetatch(KNullAlarmId);
+	TheAlarmTest(r == KErrNotFound, __LINE__);
+	//
+	r = TheAlarmTest.Session().AlarmDataAttachL(KNullAlarmId, KSomeAlarmData);
+	TheAlarmTest(r == KErrNotFound, __LINE__);
+	//
+	HBufC8* buf = HBufC8::NewLC(KSomeAlarmData().Size());
+	TPtr8 pBuf(buf->Des());
+	r = TheAlarmTest.Session().GetAlarmData(KNullAlarmId, pBuf);
+	TheAlarmTest(r == KErrNotFound, __LINE__);
+	TheAlarmTest(*buf == KNullDesC8, __LINE__);
+	CleanupStack::PopAndDestroy(buf);
+
+	HBufC8* buf2 = NULL;
+	r = TheAlarmTest.Session().GetAlarmData(KNullAlarmId, buf2);
+	TheAlarmTest(r == KErrNotFound, __LINE__);
+	TheAlarmTest(buf2 == NULL, __LINE__);
+	}
+
+
+static void testDataValidAlarmL()
+//
+//
+//
+	{
+	
+	TheAlarmTest.Test().Next(_L("Data API test"));
+
+	TInt r;
+	TAlarmId alarmId;
+	TASShdAlarm alarm;
+	static TRequestStatus status;
+	//
+	alarm.Message() = _L("Alarm with data");
+	alarm.NextDueTime().HomeTime();
+	alarm.NextDueTime() += TTimeIntervalSeconds(KWaitInterval);
+	//
+	r = TheAlarmTest.Session().AlarmAdd(alarm);
+	TheAlarmTest(r==KErrNone, __LINE__);
+	//
+	r = TheAlarmTest.Session().AlarmDataSize(alarm.Id());
+	TheAlarmTest(r == KErrNotFound, __LINE__);
+	//
+	r = TheAlarmTest.Session().AlarmDataDetach(alarm.Id());
+	TheAlarmTest(r == KErrNotFound, __LINE__);
+	//
+	TheAlarmTest.WaitForNotificationBufferToBeEmptied(status, alarmId);
+	r = TheAlarmTest.Session().AlarmDataAttachL(alarm.Id(), KSomeAlarmData);
+	TheAlarmTest(r == KErrNone, __LINE__);
+	TheAlarmTest(status == EAlarmChangeEventAlarmData, __LINE__);
+	TheAlarmTest(alarmId = alarm.Id(), __LINE__);
+	User::WaitForRequest(status);
+	//
+	TheAlarmTest.WaitForNotificationBufferToBeEmptied(status, alarmId);
+	r = TheAlarmTest.Session().AlarmDataAttachL(alarm.Id(), KSomeAlarmData);
+	TheAlarmTest(r == KErrInUse, __LINE__);
+	TheAlarmTest(status == KRequestPending, __LINE__);
+	//
+	r = TheAlarmTest.Session().AlarmDataSize(alarm.Id());
+	TheAlarmTest(r == KSomeAlarmData().Size());
+	//
+	TheAlarmTest.WaitForNotificationBufferToBeEmptied(status, alarmId);
+	r = TheAlarmTest.Session().AlarmDelete(alarm.Id());
+	TheAlarmTest(r == KErrNone, __LINE__);
+	TheAlarmTest.TestEventBuffer(EAlarmChangeEventAlarmData, status, alarmId);
+	//
+	r = TheAlarmTest.Session().AlarmDataSize(alarm.Id());
+	TheAlarmTest(r == KErrNotFound, __LINE__);
+	//
+	r = TheAlarmTest.Session().AlarmDataDetach(alarm.Id());
+	TheAlarmTest(r == KErrNotFound, __LINE__);
+	//
+	alarm.NextDueTime().HomeTime();
+	alarm.NextDueTime() += TTimeIntervalSeconds(KWaitInterval);
+	r = TheAlarmTest.Session().AlarmAdd(alarm);
+	TheAlarmTest(r==KErrNone, __LINE__);
+	//
+	TheAlarmTest.WaitForNotificationBufferToBeEmptied(status, alarmId);
+	r = TheAlarmTest.Session().AlarmDataAttachL(alarm.Id(), KSomeAlarmData);
+	TheAlarmTest(r == KErrNone, __LINE__);
+	TheAlarmTest(status == EAlarmChangeEventAlarmData, __LINE__);
+	TheAlarmTest(alarmId = alarm.Id(), __LINE__);
+	User::WaitForRequest(status);
+	//
+	TheAlarmTest.WaitForNotificationBufferToBeEmptied(status, alarmId);
+	r = TheAlarmTest.Session().AlarmDataDetach(alarm.Id());
+	TheAlarmTest(r == KErrNone, __LINE__);
+	TheAlarmTest.TestEventBuffer(EAlarmChangeEventAlarmData, status, alarmId);
+	//
+	r = TheAlarmTest.Session().AlarmDataDetach(alarm.Id());
+	TheAlarmTest(r == KErrNotFound, __LINE__);
+	//
+	r = TheAlarmTest.Session().AlarmDataSize(alarm.Id());
+	TheAlarmTest(r == KErrNotFound, __LINE__);
+	//
+	TheAlarmTest.WaitForNotificationBufferToBeEmptied(status, alarmId);
+	r = TheAlarmTest.Session().AlarmDataAttachL(alarm.Id(), KSomeAlarmData);
+	TheAlarmTest(r == KErrNone, __LINE__);
+	TheAlarmTest(status == EAlarmChangeEventAlarmData, __LINE__);
+	TheAlarmTest(alarmId = alarm.Id(), __LINE__);
+	User::WaitForRequest(status);
+	//
+	HBufC8* buf = HBufC8::NewLC(KSomeAlarmData().Size());
+	TPtr8 pBuf(buf->Des());
+	r = TheAlarmTest.Session().GetAlarmData(alarm.Id(), pBuf);
+	TheAlarmTest(r == KErrNone, __LINE__);
+	TheAlarmTest(*buf == KSomeAlarmData, __LINE__);
+	//
+	HBufC8* buf2 = NULL;
+	r = TheAlarmTest.Session().GetAlarmData(alarm.Id(), buf2);
+	TheAlarmTest(r == KErrNone, __LINE__);
+	TheAlarmTest(*buf2 == KSomeAlarmData, __LINE__);
+	delete buf2;
+	//
+	
+	
+	
+	TheAlarmTest.Test().Next(_L("Waiting for alarm to expire"));
+	TheAlarmTest.WaitForEvent(EAlarmChangeEventTimerExpired, status, alarmId);
+	TheAlarmTest(alarmId == alarm.Id(), __LINE__);
+	//
+	r = TheAlarmTest.Session().AlarmDataAttachL(alarm.Id(), KSomeAlarmData);
+	TheAlarmTest(r == KErrInUse, __LINE__);
+	//
+	r = TheAlarmTest.Session().AlarmDataSize(alarm.Id());
+	TheAlarmTest(r == KSomeAlarmData().Size(), __LINE__);
+	//
+	r = TheAlarmTest.Session().AlarmDelete(alarm.Id());
+	TheAlarmTest(r == KErrNone, __LINE__);
+	//
+
+	TheAlarmTest.Session().AlarmAddWithNotification(status, alarm, KSomeAlarmData);
+	TheAlarmTest(alarmId = alarm.Id(), __LINE__);
+	HBufC8* alarmdata = HBufC8::NewLC(KSomeAlarmData().Size());
+	TPtr8 pAlarmdata(alarmdata->Des());
+	r = TheAlarmTest.Session().GetAlarmData(alarm.Id(), pAlarmdata);
+	TheAlarmTest(r == KErrNone, __LINE__);
+	TheAlarmTest(*alarmdata == KSomeAlarmData, __LINE__);
+	CleanupStack::PopAndDestroy(alarmdata);
+	//
+	r = TheAlarmTest.Session().GetAlarmData(alarm.Id(), buf2);
+	TheAlarmTest(r == KErrNone, __LINE__);
+	TheAlarmTest(*buf2 == KSomeAlarmData, __LINE__);
+	delete buf2;
+	//
+	alarm.Reset();
+	alarm.Message() = _L("Alarm with data");
+	alarm.NextDueTime().HomeTime();
+	alarm.NextDueTime() += TTimeIntervalSeconds(KWaitInterval);
+	//
+	r =	TheAlarmTest.Session().AlarmAdd(alarm, KSomeAlarmData);
+	TheAlarmTest(alarmId = alarm.Id(), __LINE__);
+	HBufC8* alarmdata1 = HBufC8::NewLC(KSomeAlarmData().Size());
+	TPtr8 pAlarmdata1(alarmdata1->Des());
+	r = TheAlarmTest.Session().GetAlarmData(alarm.Id(), pAlarmdata1);
+	TheAlarmTest(r == KErrNone, __LINE__);
+	TheAlarmTest(*alarmdata1 == KSomeAlarmData, __LINE__);
+	CleanupStack::PopAndDestroy(alarmdata1);
+	//
+	r = TheAlarmTest.Session().GetAlarmData(alarm.Id(), buf2);
+	TheAlarmTest(r == KErrNone, __LINE__);
+	TheAlarmTest(*buf2 == KSomeAlarmData, __LINE__);
+	delete buf2;
+	//
+
+#ifdef _DEBUG
+#ifdef __WINS__
+	
+	
+	TheAlarmTest.Test().Next(_L("Debug only - shutting down server"));
+	TheAlarmTest.Session().__DbgShutDownServer();
+	User::After(3 * 1000000);
+	//
+	
+	
+	TheAlarmTest.Test().Next(_L("Debug only - starting up server"));
+	TheAlarmTest(TheAlarmTest.Session().Connect() == KErrNone, __LINE__);
+	//
+	
+	
+	TheAlarmTest.Test().Next(_L("Debug only - testing data restoration"));
+	//
+	r = TheAlarmTest.Session().AlarmDataAttachL(alarm.Id(), KSomeAlarmData);
+	TheAlarmTest(r == KErrInUse, __LINE__);
+	//
+	r = TheAlarmTest.Session().AlarmDataSize(alarm.Id());
+	TheAlarmTest(r == KSomeAlarmData().Size(), __LINE__);
+	//
+	r = TheAlarmTest.Session().AlarmDelete(alarm.Id());
+	TheAlarmTest(r == KErrNone, __LINE__);
+	//
+	r = TheAlarmTest.Session().AlarmDataSize(alarm.Id());
+	TheAlarmTest(r == KErrNotFound, __LINE__);
+	//
+	r = TheAlarmTest.Session().AlarmDataDetach(alarm.Id());
+	TheAlarmTest(r == KErrNotFound, __LINE__);
+	//
+	r = TheAlarmTest.Session().AlarmAdd(alarm);
+	TheAlarmTest(r==KErrNone, __LINE__);
+	//
+	r = TheAlarmTest.Session().AlarmDataAttachL(alarm.Id(), KSomeAlarmData);
+	TheAlarmTest(r == KErrNone, __LINE__);
+	//
+	r = TheAlarmTest.Session().AlarmDataDetach(alarm.Id());
+	TheAlarmTest(r == KErrNone, __LINE__);
+	//
+	r = TheAlarmTest.Session().AlarmDataSize(alarm.Id());
+	TheAlarmTest(r == KErrNotFound, __LINE__);
+
+#endif
+#endif
+	CleanupStack::PopAndDestroy(buf);
+	}
+
+
+static void testDataInvalidUtcAlarmL()
+	{
+	TheAlarmTest.Test().Next(_L("Testing data methods with invalid alarm ids"));
+	//
+	TInt r;
+	//
+	r = TheAlarmTest.Session().AlarmDataSize(KNullAlarmId);
+	TheAlarmTest(r == KErrNotFound, __LINE__);
+	//
+
+	// AlarmDataDetatch has been deprecated (since it's spelt wrong).
+	// We still call it here though, since removing it would break SC.
+	r = TheAlarmTest.Session().AlarmDataDetatch(KNullAlarmId);
+	TheAlarmTest(r == KErrNotFound, __LINE__);
+	//
+	r = TheAlarmTest.Session().AlarmDataAttachL(KNullAlarmId, KSomeAlarmData);
+	TheAlarmTest(r == KErrNotFound, __LINE__);
+	//
+	HBufC8* buf = HBufC8::NewLC(KSomeAlarmData().Size());
+	TPtr8 pBuf(buf->Des());
+	r = TheAlarmTest.Session().GetAlarmData(KNullAlarmId, pBuf);
+	TheAlarmTest(r == KErrNotFound, __LINE__);
+	TheAlarmTest(*buf == KNullDesC8, __LINE__);
+	CleanupStack::PopAndDestroy(buf);
+	//
+	//
+	HBufC8* buf2 = NULL;
+	r = TheAlarmTest.Session().GetAlarmData(KNullAlarmId, buf2);
+	TheAlarmTest(r == KErrNotFound, __LINE__);
+	TheAlarmTest(buf2 == NULL, __LINE__);
+	//
+	}
+
+static void testDataValidUtcAlarmL()
+	{
+		
+	TheAlarmTest.Test().Next(_L("Data API test"));
+
+	TInt r;
+	TAlarmId alarmId;
+	TASShdAlarm alarm;
+	static TRequestStatus status;
+	TTime time;
+	//
+	alarm.Message()=(_L("Alarm with data"));
+	time.UniversalTime();
+	time += TTimeIntervalSeconds(KWaitInterval);
+	alarm.SetUtcNextDueTime(time);
+	//
+	r = TheAlarmTest.Session().AlarmAdd(alarm);
+	TheAlarmTest(r==KErrNone, __LINE__);
+	//
+	r = TheAlarmTest.Session().AlarmDataSize(alarm.Id());
+	TheAlarmTest(r == KErrNotFound, __LINE__);
+	//
+	r = TheAlarmTest.Session().AlarmDataDetach(alarm.Id());
+	TheAlarmTest(r == KErrNotFound, __LINE__);
+	//
+	TheAlarmTest.WaitForNotificationBufferToBeEmptied(status, alarmId);
+	r = TheAlarmTest.Session().AlarmDataAttachL(alarm.Id(), KSomeAlarmData);
+	TheAlarmTest(r == KErrNone, __LINE__);
+	TheAlarmTest(status == EAlarmChangeEventAlarmData, __LINE__);
+	TheAlarmTest(alarmId = alarm.Id(), __LINE__);
+	User::WaitForRequest(status);
+	//
+	TheAlarmTest.WaitForNotificationBufferToBeEmptied(status, alarmId);
+	r = TheAlarmTest.Session().AlarmDataAttachL(alarm.Id(), KSomeAlarmData);
+	TheAlarmTest(r == KErrInUse, __LINE__);
+	TheAlarmTest(status == KRequestPending, __LINE__);
+	//
+	r = TheAlarmTest.Session().AlarmDataSize(alarm.Id());
+	TheAlarmTest(r == KSomeAlarmData().Size());
+	//
+	TheAlarmTest.WaitForNotificationBufferToBeEmptied(status, alarmId);
+	r = TheAlarmTest.Session().AlarmDelete(alarm.Id());
+	TheAlarmTest(r == KErrNone, __LINE__);
+	TheAlarmTest.TestEventBuffer(EAlarmChangeEventAlarmData, status, alarmId);
+	//
+	r = TheAlarmTest.Session().AlarmDataSize(alarm.Id());
+	TheAlarmTest(r == KErrNotFound, __LINE__);
+	//
+	r = TheAlarmTest.Session().AlarmDataDetach(alarm.Id());
+	TheAlarmTest(r == KErrNotFound, __LINE__);
+	//
+	time.UniversalTime();
+	time += TTimeIntervalSeconds(KWaitInterval);
+	alarm.SetUtcNextDueTime(time);
+	r = TheAlarmTest.Session().AlarmAdd(alarm);
+	TheAlarmTest(r==KErrNone, __LINE__);
+	//
+	TheAlarmTest.WaitForNotificationBufferToBeEmptied(status, alarmId);
+	r = TheAlarmTest.Session().AlarmDataAttachL(alarm.Id(), KSomeAlarmData);
+	TheAlarmTest(r == KErrNone, __LINE__);
+	TheAlarmTest(status == EAlarmChangeEventAlarmData, __LINE__);
+	TheAlarmTest(alarmId = alarm.Id(), __LINE__);
+	User::WaitForRequest(status);
+	//
+	TheAlarmTest.WaitForNotificationBufferToBeEmptied(status, alarmId);
+	r = TheAlarmTest.Session().AlarmDataDetach(alarm.Id());
+	TheAlarmTest(r == KErrNone, __LINE__);
+	TheAlarmTest.TestEventBuffer(EAlarmChangeEventAlarmData, status, alarmId);
+	//
+	r = TheAlarmTest.Session().AlarmDataDetach(alarm.Id());
+	TheAlarmTest(r == KErrNotFound, __LINE__);
+	//
+	r = TheAlarmTest.Session().AlarmDataSize(alarm.Id());
+	TheAlarmTest(r == KErrNotFound, __LINE__);
+	//
+	TheAlarmTest.WaitForNotificationBufferToBeEmptied(status, alarmId);
+	r = TheAlarmTest.Session().AlarmDataAttachL(alarm.Id(), KSomeAlarmData);
+	TheAlarmTest(r == KErrNone, __LINE__);
+	TheAlarmTest(status == EAlarmChangeEventAlarmData, __LINE__);
+	TheAlarmTest(alarmId = alarm.Id(), __LINE__);
+	User::WaitForRequest(status);
+	//
+	HBufC8* buf = HBufC8::NewLC(KSomeAlarmData().Size());
+	TPtr8 pBuf(buf->Des());
+	r = TheAlarmTest.Session().GetAlarmData(alarm.Id(), pBuf);
+	TheAlarmTest(r == KErrNone, __LINE__);
+	TheAlarmTest(*buf == KSomeAlarmData, __LINE__);
+	//
+	HBufC8* buf2 = NULL;
+	r = TheAlarmTest.Session().GetAlarmData(alarm.Id(), buf2);
+	TheAlarmTest(r == KErrNone, __LINE__);
+	TheAlarmTest(*buf2 == KSomeAlarmData, __LINE__);
+	delete buf2;
+	//
+	
+	
+	TheAlarmTest.Test().Next(_L("Waiting for alarm to expire"));
+	TheAlarmTest.WaitForEvent(EAlarmChangeEventTimerExpired, status, alarmId);
+	TheAlarmTest(alarmId == alarm.Id(), __LINE__);
+	//
+	r = TheAlarmTest.Session().AlarmDataAttachL(alarm.Id(), KSomeAlarmData);
+	TheAlarmTest(r == KErrInUse, __LINE__);
+	//
+	r = TheAlarmTest.Session().AlarmDataSize(alarm.Id());
+	TheAlarmTest(r == KSomeAlarmData().Size(), __LINE__);
+	//
+	r = TheAlarmTest.Session().AlarmDelete(alarm.Id());
+	TheAlarmTest(r == KErrNone, __LINE__);
+	//
+
+	TheAlarmTest.Session().AlarmAddWithNotification(status, alarm, KSomeAlarmData);
+	TheAlarmTest(alarmId = alarm.Id(), __LINE__);
+	HBufC8* alarmdata = HBufC8::NewLC(KSomeAlarmData().Size());
+	TPtr8 pAlarmdata(alarmdata->Des());
+	r = TheAlarmTest.Session().GetAlarmData(alarm.Id(), pAlarmdata);
+	TheAlarmTest(r == KErrNone, __LINE__);
+	TheAlarmTest(*alarmdata == KSomeAlarmData, __LINE__);
+	CleanupStack::PopAndDestroy(alarmdata);
+	//
+	r = TheAlarmTest.Session().GetAlarmData(alarm.Id(), buf2);
+	TheAlarmTest(r == KErrNone, __LINE__);
+	TheAlarmTest(*buf2 == KSomeAlarmData, __LINE__);
+	delete buf2;
+	//
+	alarm.Reset();
+	alarm.Message()=(_L("Alarm with data"));
+	time.UniversalTime();
+	time += TTimeIntervalSeconds(KWaitInterval);
+	alarm.SetUtcNextDueTime(time);
+	//
+	r =	TheAlarmTest.Session().AlarmAdd(alarm, KSomeAlarmData);
+	TheAlarmTest(alarmId = alarm.Id(), __LINE__);
+	HBufC8* alarmdata1 = HBufC8::NewLC(KSomeAlarmData().Size());
+	TPtr8 pAlarmdata1(alarmdata1->Des());
+	r = TheAlarmTest.Session().GetAlarmData(alarm.Id(), pAlarmdata1);
+	TheAlarmTest(r == KErrNone, __LINE__);
+	TheAlarmTest(*alarmdata1 == KSomeAlarmData, __LINE__);
+	CleanupStack::PopAndDestroy(alarmdata1);
+	//
+	r = TheAlarmTest.Session().GetAlarmData(alarm.Id(), buf2);
+	TheAlarmTest(r == KErrNone, __LINE__);
+	TheAlarmTest(*buf2 == KSomeAlarmData, __LINE__);
+	delete buf2;
+	//
+
+#ifdef _DEBUG
+#ifdef __WINS__
+	
+	
+	TheAlarmTest.Test().Next(_L("Debug only - shutting down server"));
+	TheAlarmTest.Session().__DbgShutDownServer();
+	User::After(3 * 1000000);
+	//
+	
+	
+	TheAlarmTest.Test().Next(_L("Debug only - starting up server"));
+	TheAlarmTest(TheAlarmTest.Session().Connect() == KErrNone, __LINE__);
+	//
+	
+	
+	TheAlarmTest.Test().Next(_L("Debug only - testing data restoration"));
+	//
+	r = TheAlarmTest.Session().AlarmDataAttachL(alarm.Id(), KSomeAlarmData);
+	TheAlarmTest(r == KErrInUse, __LINE__);
+	//
+	r = TheAlarmTest.Session().AlarmDataSize(alarm.Id());
+	TheAlarmTest(r == KSomeAlarmData().Size(), __LINE__);
+	//
+	r = TheAlarmTest.Session().AlarmDelete(alarm.Id());
+	TheAlarmTest(r == KErrNone, __LINE__);
+	//
+	r = TheAlarmTest.Session().AlarmDataSize(alarm.Id());
+	TheAlarmTest(r == KErrNotFound, __LINE__);
+	//
+	r = TheAlarmTest.Session().AlarmDataDetach(alarm.Id());
+	TheAlarmTest(r == KErrNotFound, __LINE__);
+	//
+	r = TheAlarmTest.Session().AlarmAdd(alarm);
+	TheAlarmTest(r==KErrNone, __LINE__);
+	//
+	r = TheAlarmTest.Session().AlarmDataAttachL(alarm.Id(), KSomeAlarmData);
+	TheAlarmTest(r == KErrNone, __LINE__);
+	//
+	r = TheAlarmTest.Session().AlarmDataDetach(alarm.Id());
+	TheAlarmTest(r == KErrNone, __LINE__);
+	//
+	r = TheAlarmTest.Session().AlarmDataSize(alarm.Id());
+	TheAlarmTest(r == KErrNotFound, __LINE__);
+
+#endif
+#endif
+	CleanupStack::PopAndDestroy(buf);
+	}
+
+/**
+@SYMTestCaseID PIM-TALARMDATA-0001
+*/
+static void doTestsL()
+	{
+	CActiveScheduler* scheduler = new (ELeave) CActiveScheduler;
+	CleanupStack::PushL(scheduler);
+	CActiveScheduler::Install(scheduler);
+
+	const TInt KGmtOffset = 3600;
+	_LIT(KTime, "20040730:050000.000000"); //In summer time
+	TInt err = User::SetUTCTimeAndOffset(TTime(KTime), KGmtOffset);
+
+	TheAlarmTest.Start(_L("@SYMTestCaseID PIM-TALARMDATA-0001 Connecting to server"));
+	TInt r = TheAlarmTest.Session().Connect();
+	TheAlarmTest(r == KErrNone, __LINE__);
+	TheAlarmTest.TestClearStoreL();
+
+	TheAlarmTest.Session().__DbgPreventUserNotify(ETrue);
+
+	// Test valid alarm set with local wall-clock time.
+	TheAlarmTest.Test().Printf(_L("Alarms set with local wall-clock time.\n"));
+	testDataValidAlarmL();
+	TheAlarmTest.TestClearStoreL();
+	TheAlarmTest.Test().Printf(_L("Alarms set with UTC time.\n"));
+
+	// Test valid alarm set with UTC time.
+	testDataValidUtcAlarmL();
+
+	// Test invalid alarm set with local wall-clock time.
+	TheAlarmTest.Test().Printf(_L("Alarms set with ocal wall-clock time.\n"));
+	testDataInvalidAlarmL();
+
+	// Tests invalid alarm set with UTC time.
+	TheAlarmTest.Test().Printf(_L("Alarms set with UTC time.\n"));
+	testDataInvalidUtcAlarmL();
+
+	TheAlarmTest.TestClearStoreL();
+	TheAlarmTest.Session().Close();
+
+	CleanupStack::PopAndDestroy(scheduler);
+	}
+
+GLDEF_C TInt E32Main()
+//
+// Test the alarm server.
+//
+    {
+	__UHEAP_MARK;
+	TInt ret = KErrNone;
+	CTrapCleanup* cleanup = CTrapCleanup::New();
+	if	(!cleanup)
+		return KErrNoMemory;
+
+	TheAlarmTest.Title();
+	TheAlarmTest.TestStartServers();
+	//
+	TRAPD(error, doTestsL());
+	TheAlarmTest(error == KErrNone, __LINE__);
+	//
+	TRAP(ret,TheAlarmTest.EndL());
+	TheAlarmTest.Test().Close();
+	ASTstAlarmTest::Close();
+
+	delete cleanup;
+	__UHEAP_MARKEND;
+	return ret;
+    }