--- /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