--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/commonappservices/alarmserver/Test/TServerSessionEngineMain.cpp Tue Feb 02 10:12:00 2010 +0200
@@ -0,0 +1,249 @@
+// 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:
+//
+
+// System includes
+#include <e32base.h>
+#include <e32test.h>
+#include <f32file.h>
+
+// User includes
+#include "TServerSessionEngine.h"
+
+// Literal constants
+_LIT(KTest, "server session engine test");
+
+// Constants
+const TAlarmCategory KASCliCategoryTest = { 0x101F5031 };
+
+// Globals
+static RTest TheTest(KTest);
+
+
+void Test1L(CTestServerSessionEngine* aSessionEngine)
+ {
+ TheTest.Next(_L("Test 1"));
+ //******************************************************************************
+ // Test1 tests
+ //
+ // AlarmAddL
+ // AlarmDeleteL
+ // AlarmCountByCategory
+ // AlarmCountByState
+ // AlarmIdListByStateLC
+ //******************************************************************************
+ aSessionEngine->ClearAlarmStoreL();
+
+ RArray<TAlarmId> alarmIds;
+ CleanupClosePushL(alarmIds);
+
+ //add 10 alarms (category KASCliCategoryClock)
+ for(TInt ii=1; ii<=10; ii++)
+ {
+ TInt secondsFromNow = (ii)*2;
+ TAlarmId id = aSessionEngine->AddAlarmWithSpecificTimeL(secondsFromNow);
+ alarmIds.AppendL(id);
+
+ TInt numberOfAlarms = aSessionEngine->Engine().AlarmCountByCategory(KASCliCategoryClock);
+ TheTest(numberOfAlarms == ii, __LINE__);
+ }
+
+ //check states of alarms
+ TInt alarmCount=0;
+ //states should be:
+ // 10 x EAlarmStateQueued
+ alarmCount = aSessionEngine->Engine().AlarmCountByState(EAlarmStateQueued);
+ TheTest(alarmCount == 10, __LINE__);
+
+ //wait for alarm to expire
+ aSessionEngine->AwaitNotificationL();
+ CActiveScheduler::Start();
+ //states should be:
+ // 1 x EAlarmStateNotifying
+ // 9 x EAlarmStateQueued
+ alarmCount = aSessionEngine->Engine().AlarmCountByState(EAlarmStateNotifying);
+ TheTest(alarmCount == 1, __LINE__);
+ alarmCount = aSessionEngine->Engine().AlarmCountByState(EAlarmStateQueued);
+ TheTest(alarmCount == 9, __LINE__);
+
+ //wait for another alarm to expire
+ CActiveScheduler::Start();
+ //states should be:
+ // 1 x EAlarmStateNotifying
+ // 1 x EAlarmStateWaitingToNotify
+ // 8 x EAlarmStateQueued
+ alarmCount = aSessionEngine->Engine().AlarmCountByState(EAlarmStateNotifying);
+ TheTest(alarmCount == 1, __LINE__);
+ alarmCount = aSessionEngine->Engine().AlarmCountByState(EAlarmStateWaitingToNotify);
+ TheTest(alarmCount == 1, __LINE__);
+ alarmCount = aSessionEngine->Engine().AlarmCountByState(EAlarmStateQueued);
+ TheTest(alarmCount == 8, __LINE__);
+
+ //last 8 alarms in our array should correspond to array of alarms with state queued
+ RArray<TAlarmId>* alarmsWithStateQueued = aSessionEngine->Engine().AlarmIdListByStateLC(EAlarmStateQueued);
+ for(TInt jj=0; jj<8; jj++)
+ {
+ TheTest(alarmIds[jj+2] == (*alarmsWithStateQueued)[jj], __LINE__);
+ }
+ alarmsWithStateQueued->Close();
+ CleanupStack::PopAndDestroy(alarmsWithStateQueued);
+
+ //delete all alarms individually
+ for(TInt count=alarmIds.Count(); count>0; count--)
+ {
+ aSessionEngine->Engine().AlarmDeleteL(alarmIds[count-1]);
+ }
+ CleanupStack::PopAndDestroy();//alarmIds
+ }
+
+
+void Test2L(CTestServerSessionEngine* aSessionEngine)
+ {
+ TheTest.Next(_L("Test 2"));
+ //******************************************************************************
+ // Test2 tests
+ //
+ // AlarmDetailsL
+ // AlarmCategoryL
+ // SetAlarmStatusByCategoryL
+ // AlarmCountByCategory
+ // DeleteAllAlarmsByCategoryL
+ // AlarmCategoryListLC
+ // AlarmIdListByCategoryLC
+ // SetAlarmStatusL
+ // AlarmStatus
+ //******************************************************************************
+ aSessionEngine->ClearAlarmStoreL();
+
+ //add 5 alarms with category KASCliCategoryClock
+ for(TInt ii=0; ii<5; ii++)
+ {
+ aSessionEngine->AddAlarmWithSpecificCategoryL(KASCliCategoryClock);
+ }
+
+ //get list of categories - should contain only KASCliCategoryClock
+ RArray<TAlarmCategory>* alarmCategories = aSessionEngine->Engine().AlarmCategoryListLC();
+
+ TheTest(alarmCategories->Count() == 1 && (*alarmCategories)[0] == KASCliCategoryClock, __LINE__);
+ alarmCategories->Close();
+ CleanupStack::PopAndDestroy(alarmCategories);
+
+ //add 5 alarms with category KASCliCategoryTest
+ for(TInt jj=0; jj<5; jj++)
+ {
+ aSessionEngine->AddAlarmWithSpecificCategoryL(KASCliCategoryTest);
+ }
+
+ RArray<TAlarmCategory>* alarmCategories2 = aSessionEngine->Engine().AlarmCategoryListLC();
+ TheTest(alarmCategories2->Count() == 2, __LINE__);
+ alarmCategories2->Close();
+ CleanupStack::PopAndDestroy(alarmCategories2);
+
+ //add another 10 alarms with category KASCliCategoryClock
+ for(TInt kk=0; kk<10; kk++)
+ {
+ aSessionEngine->AddAlarmWithSpecificCategoryL(KASCliCategoryClock);
+ }
+
+ //get alarms with category KASCliCategoryClock
+ RArray<TAlarmId>* alarms = aSessionEngine->Engine().AlarmIdListByCategoryLC(KASCliCategoryClock);
+ TInt count = alarms->Count();
+ TheTest(count == 15, __LINE__);
+ //check each alarm has category KASCliCategoryClock
+ for(TInt mm=0; mm<15; mm++)
+ {
+ //directly
+ TheTest(aSessionEngine->Engine().AlarmCategoryL((*alarms)[mm]) == KASCliCategoryClock, __LINE__);
+ //indirectly
+ TASSrvAlarm alarm(aSessionEngine->ServerWideData());
+ aSessionEngine->Engine().AlarmDetailsL((*alarms)[mm], alarm);
+ TheTest(alarm.Category() == KASCliCategoryClock, __LINE__);
+ }
+ alarms->Close();
+ CleanupStack::PopAndDestroy(alarms);
+
+ //should now have 15 alarms with category KASCliCategoryClock and 5 with category KASCliCategoryTest
+ TheTest(aSessionEngine->Engine().AlarmCountByCategory(KASCliCategoryClock)==15 &&
+ aSessionEngine->Engine().AlarmCountByCategory(KASCliCategoryTest)==5, __LINE__);
+ //disable all KASCliCategoryClock alarms
+ aSessionEngine->Engine().SetAlarmStatusByCategoryL(KASCliCategoryClock, EAlarmStatusDisabled);
+ TheTest(aSessionEngine->Engine().NumberOfActiveAlarmsInQueue()==5, __LINE__);
+ //try to delete all KASCliCategoryTest orphaned alarms (should be none)
+ aSessionEngine->Engine().DeleteAllAlarmsByCategoryL(KASCliCategoryTest, ETrue);
+ TheTest(aSessionEngine->Engine().NumberOfActiveAlarmsInQueue()==5, __LINE__);
+ //delete all KASCliCategoryTest alarms
+ aSessionEngine->Engine().DeleteAllAlarmsByCategoryL(KASCliCategoryTest, EFalse);
+ TheTest(aSessionEngine->Engine().NumberOfActiveAlarmsInQueue()==0, __LINE__);
+ //re-enable the KASCliCategoryClock alarms
+ aSessionEngine->Engine().SetAlarmStatusByCategoryL(KASCliCategoryClock, EAlarmStatusEnabled);
+ TheTest(aSessionEngine->Engine().NumberOfActiveAlarmsInQueue()==15, __LINE__);
+ //create a new enabled alarm
+ TAlarmId id = aSessionEngine->AddAlarmWithSpecificCategoryL(KASCliCategoryClock);
+ TheTest(aSessionEngine->Engine().NumberOfActiveAlarmsInQueue()==16, __LINE__);
+ //check status
+ TheTest(aSessionEngine->Engine().AlarmStatusL(id) == EAlarmStatusEnabled, __LINE__);
+ //disable it
+ aSessionEngine->Engine().SetAlarmStatusL(id, EAlarmStatusDisabled);
+ TheTest(aSessionEngine->Engine().NumberOfActiveAlarmsInQueue()==15, __LINE__);
+ TheTest(aSessionEngine->Engine().AlarmStatusL(id) == EAlarmStatusDisabled, __LINE__);
+
+ //delete all remaining alarms
+ aSessionEngine->Engine().DeleteAllAlarmsByCategoryL(KASCliCategoryClock, EFalse);
+ TheTest(aSessionEngine->Engine().NumberOfActiveAlarmsInQueue()==0, __LINE__);
+ }
+
+
+static void doTestsL()
+ {
+ // this is a WINS test only, because it tests the functionality of the alarm server
+ // engine directly. The tests are repeated in TClientSession which exercises the same
+ // functionality through a client session
+
+#ifdef __WINS__
+ CTestServerSessionEngine* sessionEngine = CTestServerSessionEngine::NewLC();
+ //
+ TheTest.Next(_L("Start tests"));
+ Test1L(sessionEngine);
+ Test2L(sessionEngine);
+
+ CleanupStack::PopAndDestroy(sessionEngine);
+#else
+ TheTest.Printf(_L("\nThis is a WINS test only\n"));
+#endif
+ }
+
+/**
+@SYMTestCaseID PIM-TSERVERSESSIONENGINEMAIN-0001
+*/
+TInt E32Main()
+ {
+ __UHEAP_MARK;
+ //
+ TheTest.Title();
+ CTrapCleanup* cleanup = CTrapCleanup::New();
+ if (!cleanup)
+ return KErrNoMemory;
+ //
+ TheTest.Start(_L("@SYMTestCaseID PIM-TSERVERSESSIONENGINEMAIN-0001"));
+ //
+ TRAPD(err, doTestsL());
+ TheTest(err == KErrNone, __LINE__);
+
+ delete cleanup;
+ TheTest.End();
+ TheTest.Close();
+
+ __UHEAP_MARKEND;
+ return KErrNone;
+ }