meetingrequest/mrentry/tsrc/ut_mrentry/src/ut_cesmrconflictchecker.cpp
branchRCL_3
changeset 12 4ce476e64c59
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/meetingrequest/mrentry/tsrc/ut_mrentry/src/ut_cesmrconflictchecker.cpp	Wed Mar 31 21:08:33 2010 +0300
@@ -0,0 +1,329 @@
+/*
+* Copyright (c) 2008-2008 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:  Conflict checker unit and module tests
+*  Version     : %version: e002sa33#4 % 
+*
+*  Copyright ? 2008-2008 Nokia.  All rights reserved.
+*/
+
+
+#include "UT_CESMRConflictChecker.h"
+
+// SYSTEM INCLUDES
+#include <EUnitMacros.h>
+#include <EUnitDecorators.h>
+
+#include <aknutils.h>
+#include <calsession.h>
+#include <calinstance.h>
+#include <calinstanceview.h>
+
+// USER INCLUDES
+#include "cesmrconflictchecker.h"
+#include "cesmrcaldbmgr.h"
+
+// CONSTANTS
+
+// LOCAL DEFINITIONS
+
+namespace {
+
+_LIT(KTimeFormat,"%F%Y/%M/%D,%H:%T:%S");
+
+// Conflicting entry's start time (yyyymmdd::hhmmss).
+_LIT( KConflictingCalendarEntryStartTime, "20091100:140000" );
+//-TODO:luo _LIT( KConflictingCalendarEntryStartTime, "20090000:150000" );
+// Conflicting entry's end time (yyyymmdd::hhmmss).
+_LIT( KConflictingCalendarEntryEndTime, "20091100:150000");
+//-TODO:luo _LIT( KConflictingCalendarEntryEndTime, "20090000:170000");
+// Calendar entry's location for conflicting entries.
+_LIT( KCalendarEntryTrueValue, "1" );
+
+// Recurrent event start and end time.
+_LIT( KRecurrentCalendarEntryStartTime, "20091100:140000" );
+_LIT( KRecurrentCalendarEntryEndTime, "20091100:150000" );
+
+// Time range for fetching recurrent event instances.
+_LIT( KRecurrentEntryTimeRangeStartTime, "20091100:000000" );
+_LIT( KRecurrentEntryTimeRangeEndTime, "20091106:000000" );
+
+// Calendar database filename.
+_LIT( KCalendarDatabaseFilePath, "c:calendar3");//"c:Calendar_test_conflictchecker" );
+// Calendar entry UID.
+_LIT8( KCalendarEntryUid, "UT_ConflictChecker" );
+}
+
+// - Construction ------------------------------------------------------------
+
+// ---------------------------------------------------------------------------
+// UT_CESMRConflictChecker::NewL
+// ---------------------------------------------------------------------------
+//
+UT_CESMRConflictChecker* UT_CESMRConflictChecker::NewL()
+    {
+    UT_CESMRConflictChecker* self = UT_CESMRConflictChecker::NewLC();
+    CleanupStack::Pop();
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// UT_CESMRConflictChecker::NewLC
+// ---------------------------------------------------------------------------
+//
+UT_CESMRConflictChecker* UT_CESMRConflictChecker::NewLC()
+    {
+    UT_CESMRConflictChecker* self = new( ELeave ) UT_CESMRConflictChecker();
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// UT_CESMRConflictChecker::~UT_CESMRConflictChecker
+// ---------------------------------------------------------------------------
+//
+UT_CESMRConflictChecker::~UT_CESMRConflictChecker()
+    {
+    delete iWait;
+    }
+
+// ---------------------------------------------------------------------------
+// UT_CESMRConflictChecker::UT_CESMRConflictChecker
+// ---------------------------------------------------------------------------
+//
+UT_CESMRConflictChecker::UT_CESMRConflictChecker()
+    {
+    }
+
+// ---------------------------------------------------------------------------
+// UT_CESMRConflictChecker::ConstructL
+// ---------------------------------------------------------------------------
+//
+void UT_CESMRConflictChecker::ConstructL()
+    {
+    CEUnitTestSuiteClass::ConstructL();
+    iWait = new ( ELeave) CActiveSchedulerWait();
+    }
+
+// ---------------------------------------------------------------------------
+// UT_CESMRConflictChecker::HandleCalEngStatus
+// ---------------------------------------------------------------------------
+//
+void UT_CESMRConflictChecker::HandleCalEngStatus( TMRUtilsCalEngStatus aStatus )
+    {
+    iWait->AsyncStop();
+    }
+
+// - Test methods -----------------------------------------------------------
+
+
+// ---------------------------------------------------------------------------
+// UT_CESMRConflictChecker::SetupL
+// ---------------------------------------------------------------------------
+//
+void UT_CESMRConflictChecker::SetupL()
+    {
+    __UHEAP_MARK;
+    iCalSession = CCalSession::NewL();
+    iCalSession->OpenL( KCalendarDatabaseFilePath );
+    iCalDbManager = CESMRCalDbMgr::NewL( *iCalSession, *this );
+    iWait->Start();
+    iConflictChecker = CESMRConflictChecker::NewL( *iCalDbManager );
+    }
+    
+// ---------------------------------------------------------------------------
+// UT_CESMRConflictChecker::Teardown
+// ---------------------------------------------------------------------------
+//
+void UT_CESMRConflictChecker::Teardown()
+    {
+    delete iConflictChecker;
+    delete iCalDbManager;
+    delete iCalSession;
+    __UHEAP_MARKEND;
+    }
+
+// ---------------------------------------------------------------------------
+// UT_CESMRConflictChecker::T_Global_NewL
+// ---------------------------------------------------------------------------
+//
+void UT_CESMRConflictChecker::T_Global_NewL()
+    {
+    delete iConflictChecker;
+    iConflictChecker = NULL;
+    
+    __UHEAP_MARK;
+    iConflictChecker = CESMRConflictChecker::NewL( *iCalDbManager );
+    delete iConflictChecker;
+    __UHEAP_MARKEND;
+    
+    iConflictChecker = NULL;
+    }
+
+// ---------------------------------------------------------------------------
+// UT_CESMRConflictChecker::T_Global_FindConflictsL
+// ---------------------------------------------------------------------------
+//
+void UT_CESMRConflictChecker::T_Global_FindConflictsL()
+    {
+    // Create reference calendar entry.
+    HBufC8* entryUidBufC = KCalendarEntryUid().AllocLC();
+    CCalEntry* calEntry = CCalEntry::NewL( CCalEntry::EAppt, entryUidBufC, CCalEntry::EMethodRequest, 0 );
+    CleanupStack::Pop( entryUidBufC );
+    entryUidBufC = NULL;
+    
+    TTime startTime, endTime;
+    TCalTime startCalTime, endCalTime;
+    
+    startTime.Set( KConflictingCalendarEntryStartTime );
+    endTime.Set( KConflictingCalendarEntryEndTime );
+
+    TBuf<32> sTime;
+    TBuf<32> eTime;
+    startTime.FormatL( sTime, KTimeFormat );    
+    endTime.FormatL(  eTime, KTimeFormat );
+    
+    startCalTime.SetTimeLocalL( startTime );
+    endCalTime.SetTimeLocalL( endTime );
+    
+    calEntry->SetStartAndEndTimeL( startCalTime, endCalTime );
+    
+    // Fetch conflicting entries.
+    RPointerArray<CCalEntry> conflictList;
+    CleanupClosePushL( conflictList );
+    
+    iConflictChecker->FindConflictsL( *calEntry, conflictList );
+    delete calEntry;
+    calEntry = NULL;
+    
+    // Check that correct number of entries is returned.
+    EUNIT_ASSERT_DESC( conflictList.Count() == 4,
+            "Incorrect number of calendar entries." );
+    
+    // Verify list of conflicting entries.
+    TBool testFailed = EFalse;
+    while ( conflictList.Count() )
+        {
+        // If entry's location is something else than '1'.
+        if ( conflictList[ 0 ]->LocationL().Compare( KCalendarEntryTrueValue ) )
+            {
+            testFailed = ETrue;
+            }
+        
+        // Remove entry from array.
+        delete conflictList[ 0 ];
+        conflictList.Remove( 0 );
+        }
+    
+    // Check that correct entries were returned.
+    EUNIT_ASSERT_DESC( !testFailed,
+            "Incorrect calendar entry/ies returned.");
+    
+    CleanupStack::PopAndDestroy(); // conflictList
+    }
+
+// ---------------------------------------------------------------------------
+// UT_CESMRConflictChecker::T_Global_FindInstancesForEntryL
+// ---------------------------------------------------------------------------
+//
+void UT_CESMRConflictChecker::T_Global_FindInstancesForEntryL()
+    {
+    // First retrieve one instace of recurrent event.
+    RPointerArray<CCalInstance> instanceList;
+    MESMRCalDbMgr& dbMgr = *iCalDbManager;
+    CCalInstanceView* instanceView = dbMgr.NormalDbInstanceView();
+    CalCommon::TCalViewFilter calViewFilter( CalCommon::EIncludeAppts );
+    
+    TTime startTime, endTime;
+    TCalTime startCalTime, endCalTime;
+    
+    startTime.Set( KRecurrentCalendarEntryStartTime );
+    endTime.Set( KRecurrentCalendarEntryEndTime );
+
+    TBuf<32> sTime;
+    TBuf<32> eTime;
+    startTime.FormatL( sTime, KTimeFormat );    
+    endTime.FormatL(  eTime, KTimeFormat );
+    
+    startCalTime.SetTimeLocalL( startTime );
+    endCalTime.SetTimeLocalL( endTime );
+    
+    instanceView->FindInstanceL(
+            instanceList,
+            calViewFilter,
+            CalCommon::TCalTimeRange( startCalTime, endCalTime ) );
+    
+    EUNIT_ASSERT_DESC( instanceList.Count() == 2,
+            "Incorrect number of instances returned.");
+    
+    CCalEntry& calEntry = instanceList[0]->Entry();
+    
+    // Set time range.
+    startTime.Set( KRecurrentEntryTimeRangeStartTime );
+    endTime.Set( KRecurrentEntryTimeRangeEndTime );
+    
+    startCalTime.SetTimeLocalL( startTime );
+    endCalTime.SetTimeLocalL( endTime );
+    
+    // Fetch recurrent event instances.
+    RPointerArray<CCalEntry> entryList;
+    iConflictChecker->FindInstancesForEntryL( startTime, endTime, calEntry, entryList );
+    
+    EUNIT_ASSERT_DESC( entryList.Count() == 6,
+            "Incorrect number of calendar entry instances returned.");
+    
+    // Clear entry/instance lists.
+    while ( instanceList.Count() )
+        {
+        delete instanceList[ 0 ];
+        instanceList.Remove( 0 );
+        }
+    while ( entryList.Count() )
+        {
+        delete entryList[ 0 ];
+        entryList.Remove( 0 );
+        }
+    instanceList.Close();
+    entryList.Close();
+    }
+
+// - EUnit test table --------------------------------------------------------
+
+EUNIT_BEGIN_TEST_TABLE(
+    UT_CESMRConflictChecker,
+    "CESMRConflictChecker unit and module tests.",
+    "UNIT" )
+
+EUNIT_TEST(
+    "NewL",
+    "CESMRConflictChecker",
+    "NewL",
+    "FUNCTIONALITY",
+    SetupL, T_Global_NewL, Teardown )
+    
+EUNIT_TEST(
+    "FindConflictsL",
+    "CESMRConflictChecker",
+    "FindConflictsL",
+    "FUNCTIONALITY",
+    SetupL, T_Global_FindConflictsL, Teardown )
+    
+EUNIT_TEST(
+    "FindInstancesForEntryL",
+    "CESMRConflictChecker",
+    "FindInstancesForEntryL",
+    "FUNCTIONALITY",
+    SetupL, T_Global_FindInstancesForEntryL, Teardown )
+    
+EUNIT_END_TEST_TABLE