diff -r 000000000000 -r 2e3d3ce01487 commonappservices/alarmserver/Test/TServerSessionEngineMain.cpp --- /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 +#include +#include + +// 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 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* 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* 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* 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* 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; + }