mmshplugins/mmshaoplugin/tsrc/ut_aoplugin/src/ut_mustsypropertymonitor.cpp
branchRCL_3
changeset 22 73a1feb507fb
parent 0 f0cf47e981f9
child 23 bc78a40cd63c
--- a/mmshplugins/mmshaoplugin/tsrc/ut_aoplugin/src/ut_mustsypropertymonitor.cpp	Thu Aug 19 09:51:39 2010 +0300
+++ b/mmshplugins/mmshaoplugin/tsrc/ut_aoplugin/src/ut_mustsypropertymonitor.cpp	Tue Aug 31 15:12:07 2010 +0300
@@ -19,17 +19,27 @@
 //  INTERNAL INCLUDES
 #include "etelmm.h"
 #include "e32property.h"
+#include "centralrepository.h"
 #include "ut_mustsypropertymonitor.h"
 #include "mustsypropertymonitor.h"
-#include "mussettings.h"
-
+#include "muscallmonitor.h"
+#include "musvoipcallmonitor.h"
+#include "muscallconferencemonitor.h"
 
 //  SYSTEM INCLUDES
 #include <digia/eunit/eunitmacros.h>
 #include <CTSYDomainPSKeys.h>
+#include <telremotepartyinformationpskeys.h>
+
 
 _LIT(KTelNo,"1234");
+_LIT( KTestProvideName, "VoIP" );
+_LIT( KDefaultSipUri, "sip:default@uri" );
 
+TName cs_call_1(_L("cs_call_1"));
+TName cs_call_2(_L("cs_call_2"));
+TName voip_call_1(_L("voip_call_1"));
+TName voip_call_2(_L("voip_call_2"));
 
 // -----------------------------------------------------------------------------
 //
@@ -93,34 +103,13 @@
 //
 void UT_CMusTsyPropertyMonitor::SetupL()
     {
+    iMusCentralRepository = CRepository::NewL( MusSettingsKeys::KRepositoryUid );
     RProperty::Set( NMusSessionInformationApi::KCategoryUid,
                      NMusSessionInformationApi::KMusCallEvent,
                      0 );
-    MultimediaSharingSettings::SetPropertyValueL(
-                                                MusSettingsKeys::KPrivacyExchange,
-                                                MusSettingsKeys::EPrivacy );                                                   
     
-    iMusTsyPropertyMonitor = CMusTsyPropertyMonitor::NewL( iPhone );
+    iMusTsyPropertyMonitor = CMusTsyPropertyMonitor::NewL( iPhone, *this );
     iMusTsyPropertyMonitor->iPropertyEvent.iPValue = EPSCTsyCallStateUninitialized;
-    
-    }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusTsyPropertyMonitor::Setup2L()
-    {
-    RProperty::Set( NMusSessionInformationApi::KCategoryUid,
-                     NMusSessionInformationApi::KMusCallEvent,
-                     0 );
-    MultimediaSharingSettings::SetPropertyValueL(
-                                                MusSettingsKeys::KPrivacyExchange,
-                                                MusSettingsKeys::ENoPrivacy );                                                   
-    
-    iMusTsyPropertyMonitor = CMusTsyPropertyMonitor::NewL( iPhone );
-    iMusTsyPropertyMonitor->iPropertyEvent.iPValue = EPSCTsyCallStateUninitialized;
-    
     }
 
 
@@ -130,6 +119,8 @@
 //
 void UT_CMusTsyPropertyMonitor::Teardown()
     {
+    delete iMusCentralRepository;
+    iMusCentralRepository = NULL;
     delete iMusTsyPropertyMonitor;
     PropertyHelper::Close();
     iPhone.Close();
@@ -144,30 +135,23 @@
 //
 // -----------------------------------------------------------------------------
 //
-void UT_CMusTsyPropertyMonitor::UT_CMusTsyPropertyMonitor_NewLL()
-    {
-    EUNIT_ASSERT( iMusTsyPropertyMonitor);
-    EUNIT_ASSERT( MultimediaSharingSettings::PrivacySetting() );//feature is on by default
-    EUNIT_ASSERT( iMusTsyPropertyMonitor->iClirMonitor );
-    
-    MultimediaSharingSettings::SetPropertyValueL( MusSettingsKeys::KPrivacyExchange,
-                                                  MusSettingsKeys::ENoPrivacy );
-    delete iMusTsyPropertyMonitor;
-    iMusTsyPropertyMonitor = NULL;
-    
-    iMusTsyPropertyMonitor = CMusTsyPropertyMonitor::NewL( iPhone );
-    EUNIT_ASSERT( !MultimediaSharingSettings::PrivacySetting() );//feature is on by default
-    EUNIT_ASSERT( !iMusTsyPropertyMonitor->iClirMonitor );
-    
-    }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
 void UT_CMusTsyPropertyMonitor::UT_CMusTsyPropertyMonitor_RunLL()
     {
+
+    // Set intial call type too unintialiazed.
+    if ( RProperty::Set( KPSUidCtsyCallInformation,KCTsyCallType,
+                             EPSCTsyCallTypeUninitialized ))
+        {
+        User::Leave( KErrNoMemory );
+        }
+    // Set intial call count
+    if ( RProperty::Set( NMusSessionInformationApi::KCategoryUid,
+                         NMusSessionInformationApi::KMusCallCount,
+                         0 ) != KErrNone )
+        {
+        User::Leave( KErrNoMemory );
+        }
+    
     EUNIT_ASSERT( iMusTsyPropertyMonitor);
     TInt val = KErrNone;
     
@@ -225,13 +209,12 @@
 
     iMusTsyPropertyMonitor->iPropertyEvent.iPValue = EPSCTsyCallStateHold;
     iMusTsyPropertyMonitor->SetStateL( NMusSessionInformationApi::ENoCall );
-    if ( RProperty::Set( NMusSessionInformationApi::KCategoryUid,
-                 NMusSessionInformationApi::KMusCallCount,
-                 1 ) != KErrNone )
-    {
-    User::Leave( KErrNoMemory );
-    }
-    
+	if ( RProperty::Set( NMusSessionInformationApi::KCategoryUid,
+                     NMusSessionInformationApi::KMusCallCount,
+                     1 ) != KErrNone )
+        {
+        User::Leave( KErrNoMemory );
+        }
     //simulate multicall scenario
     TName callName(_L("Voice1"));
     iMusTsyPropertyMonitor->AddCallMonitorL( callName );
@@ -306,65 +289,155 @@
 //
 // -----------------------------------------------------------------------------
 //
-void UT_CMusTsyPropertyMonitor::UT_CMusTsyPropertyMonitor_MonitorCallLL()
+void UT_CMusTsyPropertyMonitor::UT_CMusTsyPropertyMonitor_MonitorCSCallLL()
     {
+    if ( RProperty::Set( NMusSessionInformationApi::KCategoryUid,
+                            NMusSessionInformationApi::KMusCallCount,
+                            0 ) != KErrNone )
+        {
+        User::Leave( KErrNoMemory );
+        }
     RTelHelper::SetCallStatus( (RMobileCall::TMobileCallStatus)RCall::EStatusIdle );
+    EUNIT_ASSERT( iMusTsyPropertyMonitor->iCallMonitorArray.Count() == 0 );    
+    iMusTsyPropertyMonitor->MonitorCSCallL();
+    EUNIT_ASSERT( iMusTsyPropertyMonitor->iCallMonitorArray.Count() == 0 );
+    
+    RTelHelper::SetCallStatus( (RMobileCall::TMobileCallStatus)RCall::EStatusHangingUp );    
+    iMusTsyPropertyMonitor->MonitorCSCallL();
     EUNIT_ASSERT( iMusTsyPropertyMonitor->iCallMonitorArray.Count() == 0 );
     
-    iMusTsyPropertyMonitor->MonitorCallL();
+    RTelHelper::SetCallStatus( (RMobileCall::TMobileCallStatus)RCall::EStatusConnected );    
+    iMusTsyPropertyMonitor->MonitorCSCallL();
+    EUNIT_ASSERT( iMusTsyPropertyMonitor->iCallMonitorArray.Count() == 1 );
+    
+    iMusTsyPropertyMonitor->iCallMonitorArray.ResetAndDestroy();
+    RTelHelper::SetCallStatus( (RMobileCall::TMobileCallStatus)RCall::EStatusAnswering );    
+    iMusTsyPropertyMonitor->MonitorCSCallL();
+    EUNIT_ASSERT( iMusTsyPropertyMonitor->iCallMonitorArray.Count() == 1 );
+
+    iMusTsyPropertyMonitor->iCallMonitorArray.ResetAndDestroy();
+    RTelHelper::SetCallStatus( (RMobileCall::TMobileCallStatus)RCall::EStatusIdle );
+    iMusTsyPropertyMonitor->MonitorCSCallL();    
     EUNIT_ASSERT( iMusTsyPropertyMonitor->iCallMonitorArray.Count() == 0 );
     
-    RTelHelper::SetCallStatus( (RMobileCall::TMobileCallStatus)RCall::EStatusHangingUp );
-    
-    iMusTsyPropertyMonitor->MonitorCallL();
-    EUNIT_ASSERT( iMusTsyPropertyMonitor->iCallMonitorArray.Count() == 0 );
-    
-    RTelHelper::SetCallStatus( (RMobileCall::TMobileCallStatus)RCall::EStatusConnected );
+    }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusTsyPropertyMonitor::UT_CMusTsyPropertyMonitor_MonitorVoipCallLL()
+    {    
+    EUNIT_ASSERT( iMusTsyPropertyMonitor->iVoipCallMonitorArray.Count() == 0 );
     if ( RProperty::Set( NMusSessionInformationApi::KCategoryUid,
                      NMusSessionInformationApi::KMusCallCount,
                      0 ) != KErrNone )
         {
         User::Leave( KErrNoMemory );
         }
-    iMusTsyPropertyMonitor->MonitorCallL();
-    EUNIT_ASSERT( iMusTsyPropertyMonitor->iCallMonitorArray.Count() == 1 );
+    
+    // State connected    
+    TPSCTsyCallState callState = EPSCTsyCallStateConnected;    
+    iMusTsyPropertyMonitor->MonitorVoipCallL( callState );
+    EUNIT_ASSERT( iMusTsyPropertyMonitor->iVoipCallMonitorArray.Count() == 1 );
     
-    RTelHelper::SetCallStatus( (RMobileCall::TMobileCallStatus)RCall::EStatusAnswering );
-    //already exist
-    iMusTsyPropertyMonitor->MonitorCallL();
-    EUNIT_ASSERT( iMusTsyPropertyMonitor->iCallMonitorArray.Count() == 1 );
+    // State answering
+    iMusTsyPropertyMonitor->iVoipCallMonitorArray.ResetAndDestroy();
+    EUNIT_ASSERT( iMusTsyPropertyMonitor->iVoipCallMonitorArray.Count() == 0 );
+    callState = EPSCTsyCallStateAnswering ;    
+    iMusTsyPropertyMonitor->MonitorVoipCallL( callState );
+    EUNIT_ASSERT( iMusTsyPropertyMonitor->iVoipCallMonitorArray.Count() == 1 );
     
+    // State disconnecting ( Atleast one previous voip call is present )    
+    callState = EPSCTsyCallStateDisconnecting;    
+    iMusTsyPropertyMonitor->MonitorVoipCallL( callState );
+    EUNIT_ASSERT( iMusTsyPropertyMonitor->iVoipCallMonitorArray.Count() == 0 );
+    }
 
-    RTelHelper::SetCallStatus( (RMobileCall::TMobileCallStatus)RCall::EStatusUnknown );
-    
-    iMusTsyPropertyMonitor->MonitorCallL();
-    EUNIT_ASSERT( iMusTsyPropertyMonitor->iCallMonitorArray.Count() == 0 );
-
-    RTelHelper::SetCallStatus( (RMobileCall::TMobileCallStatus)RCall::EStatusIdle );
-    iMusTsyPropertyMonitor->MonitorCallL();
-    
-    EUNIT_ASSERT( iMusTsyPropertyMonitor->iCallMonitorArray.Count() == 0 );
-    }
 
 // -----------------------------------------------------------------------------
 //
 // -----------------------------------------------------------------------------
 //
-void UT_CMusTsyPropertyMonitor::UT_CMusTsyPropertyMonitor_MonitorCallL_2L()
+void UT_CMusTsyPropertyMonitor::UT_CMusTsyPropertyMonitor_MonitorCallLL()
     {
-    EUNIT_ASSERT( iMusTsyPropertyMonitor->iCallMonitorArray.Count() == 0 );
-    EUNIT_ASSERT( !iMusTsyPropertyMonitor->iClirMonitor );
-    
-    RTelHelper::SetCallStatus( (RMobileCall::TMobileCallStatus)RCall::EStatusConnected );
+    TInt tmp = 0;
     if ( RProperty::Set( NMusSessionInformationApi::KCategoryUid,
-                     NMusSessionInformationApi::KMusCallCount,
-                     0 ) != KErrNone )
+                         NMusSessionInformationApi::KMusCallCount,
+                         0 ) != KErrNone )
+       {
+       User::Leave( KErrNoMemory );
+       }
+    iMusTsyPropertyMonitor->iCallMonitorArray.ResetAndDestroy();
+    iMusTsyPropertyMonitor->iVoipCallMonitorArray.ResetAndDestroy();
+    // Test : Cs call and call state is connected
+    TPSCTsyCallState callState = EPSCTsyCallStateConnected;
+    RTelHelper::SetCallStatus( (RMobileCall::TMobileCallStatus)RCall::EStatusConnected );    
+    TPSCTsyCallType callType = EPSCTsyCallTypeCSVoice;
+    iMusTsyPropertyMonitor->MonitorCallL(callState,callType);    
+    EUNIT_ASSERT( iMusTsyPropertyMonitor->iCallMonitorArray.Count() == 1 );
+    EUNIT_ASSERT( iMusTsyPropertyMonitor->iVoipCallMonitorArray.Count() == 0 );
+    RProperty::Get( NMusSessionInformationApi::KCategoryUid,
+                          NMusSessionInformationApi::KMusCallEvent,
+                          tmp );
+    EUNIT_ASSERT( tmp==NMusSessionInformationApi::ECallConnected);  
+    
+    // Test : unknown call type   
+    iMusTsyPropertyMonitor->iCallMonitorArray.ResetAndDestroy();              
+    callType = EPSCTsyCallTypeNone;
+    iMusTsyPropertyMonitor->MonitorCallL(callState,callType);    
+    EUNIT_ASSERT( iMusTsyPropertyMonitor->iCallMonitorArray.Count() == 0 );
+    EUNIT_ASSERT( iMusTsyPropertyMonitor->iVoipCallMonitorArray.Count() == 0 );
+    RProperty::Get( NMusSessionInformationApi::KCategoryUid,
+                          NMusSessionInformationApi::KMusCallEvent,
+                          tmp );
+    EUNIT_ASSERT( tmp==NMusSessionInformationApi::ENoCall);    
+    
+    // Test : Voip call and call state is connected and factory settings not found  
+    // if key not found then it should behave default = AllowedAllCalls.    
+    callState = EPSCTsyCallStateConnected;      
+    callType = EPSCTsyCallTypeVoIP;
+    iMusTsyPropertyMonitor->MonitorCallL(callState,callType);    
+    EUNIT_ASSERT( iMusTsyPropertyMonitor->iCallMonitorArray.Count() == 0 );
+    EUNIT_ASSERT( iMusTsyPropertyMonitor->iVoipCallMonitorArray.Count() == 1 );
+    RProperty::Get( NMusSessionInformationApi::KCategoryUid,
+                          NMusSessionInformationApi::KMusCallEvent,
+                          tmp );
+    EUNIT_ASSERT( tmp==NMusSessionInformationApi::ECallConnected);    
+    
+    
+    // Test : Voip call and call state is connected and factory settings set to 
+    // all call supported.
+    iMusTsyPropertyMonitor->iVoipCallMonitorArray.ResetAndDestroy();
+    iMusCentralRepository->Set(MusSettingsKeys::KAllowOnlyWithActiveCSCall,
+                                                      MusSettingsKeys::EAllowedAllCalls);
+    callState = EPSCTsyCallStateConnected;      
+    callType = EPSCTsyCallTypeVoIP;
+    iMusTsyPropertyMonitor->MonitorCallL(callState,callType);    
+    EUNIT_ASSERT( iMusTsyPropertyMonitor->iCallMonitorArray.Count() == 0 );
+    EUNIT_ASSERT( iMusTsyPropertyMonitor->iVoipCallMonitorArray.Count() == 1 );
+    RProperty::Get( NMusSessionInformationApi::KCategoryUid,
+                          NMusSessionInformationApi::KMusCallEvent,
+                          tmp );
+    EUNIT_ASSERT( tmp==NMusSessionInformationApi::ECallConnected);    
+        
+    // Test : Voip call and call state is connected but factory settings are cs only
+    iMusTsyPropertyMonitor->iVoipCallMonitorArray.ResetAndDestroy();
+    iMusCentralRepository->Set(MusSettingsKeys::KAllowOnlyWithActiveCSCall,MusSettingsKeys::EAllowedCSOnly);    
+    callState = EPSCTsyCallStateConnected;      
+    callType = EPSCTsyCallTypeVoIP;
+    iMusTsyPropertyMonitor->MonitorCallL(callState,callType);    
+    EUNIT_ASSERT( iMusTsyPropertyMonitor->iCallMonitorArray.Count() == 0 );
+    if ( iMusTsyPropertyMonitor->iVoipCallMonitorArray.Count() != 0 )
         {
-        User::Leave( KErrNoMemory );
+        User::Leave( KErrNoMemory ); // Call was not removed because of memory running out was "silenty" handled.
         }
-    iMusTsyPropertyMonitor->MonitorCallL();
-    EUNIT_ASSERT( iMusTsyPropertyMonitor->iCallMonitorArray.Count() == 1 );
-    
+    EUNIT_ASSERT( iMusTsyPropertyMonitor->iVoipCallMonitorArray.Count() == 0 ); 
+    RProperty::Get( NMusSessionInformationApi::KCategoryUid,
+                          NMusSessionInformationApi::KMusCallEvent,
+                          tmp );
+    EUNIT_ASSERT( tmp==NMusSessionInformationApi::ENoCall);    
     }
 
 // -----------------------------------------------------------------------------
@@ -387,9 +460,191 @@
     iMusTsyPropertyMonitor->RemoveUnUsedCallMonitors();
     EUNIT_ASSERT( iMusTsyPropertyMonitor->iCallMonitorArray.Count()==0 );    
     }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusTsyPropertyMonitor::UT_CMusTsyPropertyMonitor_CheckCallCriteriaLL()
+    {
+    if ( RProperty::Set( NMusSessionInformationApi::KCategoryUid,
+                            NMusSessionInformationApi::KMusCallCount,
+                            0 ) != KErrNone )
+          {
+          User::Leave( KErrNoMemory );
+          }
+    TInt tmp = 0;
+    iMusTsyPropertyMonitor->iCallMonitorArray.ResetAndDestroy();
+    iMusTsyPropertyMonitor->iVoipCallMonitorArray.ResetAndDestroy();
+
+    User::LeaveIfError( RProperty::Set( KPSUidTelRemotePartyInformation,
+                                        KTelCLINumber,
+                                        _L( "sip:somebody@somewhere" ) ) );
    
+    // Test : no cs call , one voip call    
+    iMusTsyPropertyMonitor->AddVoipCallMonitorL( voip_call_1 );
+    iMusTsyPropertyMonitor->CheckCallCriteriaL();
+    RProperty::Get( NMusSessionInformationApi::KCategoryUid,
+                             NMusSessionInformationApi::KMusCallEvent,
+                             tmp );
+    EUNIT_ASSERT( tmp==NMusSessionInformationApi::ECallConnected);
+    // Test : one cs call , multiple voip calls
+    iMusTsyPropertyMonitor->iCallMonitorArray.ResetAndDestroy();
+    iMusTsyPropertyMonitor->iVoipCallMonitorArray.ResetAndDestroy();
+    iMusTsyPropertyMonitor->AddCallMonitorL( cs_call_1 );
+    iMusTsyPropertyMonitor->AddVoipCallMonitorL( voip_call_1 );
+    iMusTsyPropertyMonitor->AddVoipCallMonitorL( voip_call_2 );
+    iMusTsyPropertyMonitor->CheckCallCriteriaL();
+    RProperty::Get( NMusSessionInformationApi::KCategoryUid,
+                                 NMusSessionInformationApi::KMusCallEvent,
+                                 tmp );
+    EUNIT_ASSERT( tmp==NMusSessionInformationApi::ECallHold);
+    // Test: multiple cs call, one voip call
+    iMusTsyPropertyMonitor->iCallMonitorArray.ResetAndDestroy();
+    iMusTsyPropertyMonitor->iVoipCallMonitorArray.ResetAndDestroy();
+    iMusTsyPropertyMonitor->AddCallMonitorL( cs_call_1 );
+    iMusTsyPropertyMonitor->AddCallMonitorL( cs_call_2 );
+    iMusTsyPropertyMonitor->AddVoipCallMonitorL( voip_call_1 );
+    iMusTsyPropertyMonitor->CheckCallCriteriaL();
+    RProperty::Get( NMusSessionInformationApi::KCategoryUid,
+                                 NMusSessionInformationApi::KMusCallEvent,
+                                 tmp );
+    EUNIT_ASSERT( tmp==NMusSessionInformationApi::ECallHold);    
+    
+    // Test : multiple cs call , multiple voip calls
+    iMusTsyPropertyMonitor->iCallMonitorArray.ResetAndDestroy();
+    iMusTsyPropertyMonitor->iVoipCallMonitorArray.ResetAndDestroy();  
+    iMusTsyPropertyMonitor->AddCallMonitorL( cs_call_1 );
+    iMusTsyPropertyMonitor->AddCallMonitorL( cs_call_2 );
+    iMusTsyPropertyMonitor->AddVoipCallMonitorL( voip_call_1 );
+    iMusTsyPropertyMonitor->AddVoipCallMonitorL( voip_call_2 );
+    iMusTsyPropertyMonitor->CheckCallCriteriaL();
+    RProperty::Get( NMusSessionInformationApi::KCategoryUid,
+                                  NMusSessionInformationApi::KMusCallEvent,
+                                  tmp );
+     EUNIT_ASSERT( tmp==NMusSessionInformationApi::ECallHold);       
+    // Test : one cs call , one voip call
+     iMusTsyPropertyMonitor->iCallMonitorArray.ResetAndDestroy();
+     iMusTsyPropertyMonitor->iVoipCallMonitorArray.ResetAndDestroy();  
+     iMusTsyPropertyMonitor->AddCallMonitorL( cs_call_1 );     
+     iMusTsyPropertyMonitor->AddVoipCallMonitorL( voip_call_1 );  
+     iMusTsyPropertyMonitor->CheckCallCriteriaL();
+     RProperty::Get( NMusSessionInformationApi::KCategoryUid,
+                                    NMusSessionInformationApi::KMusCallEvent,
+                                    tmp );
+     EUNIT_ASSERT( tmp==NMusSessionInformationApi::ECallHold);
+     // Test: one cs call , no voip call
+     iMusTsyPropertyMonitor->iCallMonitorArray.ResetAndDestroy();
+     iMusTsyPropertyMonitor->iVoipCallMonitorArray.ResetAndDestroy(); 
+     RTelHelper::SetCallStatus( RMobileCall::EStatusConnected );
+     iMusTsyPropertyMonitor->AddCallMonitorL( cs_call_1 );    
+     iMusTsyPropertyMonitor->CheckCallCriteriaL();
+     RProperty::Get( NMusSessionInformationApi::KCategoryUid,
+                         NMusSessionInformationApi::KMusCallEvent,
+                         tmp );
+     EUNIT_ASSERT( tmp==NMusSessionInformationApi::ECallConnected);
+    }
 
 
+
+// -----------------------------------------------------------------------------
+// UT_CMusTsyPropertyMonitor::UT_CMusTsyPropertyMonitor_IsDataReadyLL()
+// Test to query from corresponding monitors if they are ready.
+// -----------------------------------------------------------------------------
+//
+
+
+void UT_CMusTsyPropertyMonitor::UT_CMusTsyPropertyMonitor_IsDataReadyLL()
+    {
+    TBool dataReady = EFalse;
+
+    // Test-1: CS Call Ready:
+    iMusTsyPropertyMonitor->iCallMonitorArray.ResetAndDestroy();
+    iMusTsyPropertyMonitor->iVoipCallMonitorArray.ResetAndDestroy();
+
+    if ( RProperty::Set( NMusSessionInformationApi::KCategoryUid,
+                            NMusSessionInformationApi::KMusCallCount,
+                            0 ) != KErrNone )
+        {
+        User::Leave( KErrNoMemory );
+        }
+
+    User::LeaveIfError( RProperty::Set( NMusSessionInformationApi::KCategoryUid,
+                                            NMusSessionInformationApi::KMusTelNumber,
+                                            KTelNo ));
+
+    User::LeaveIfError( RProperty::Set( NMusSessionInformationApi::KCategoryUid,
+                                            NMusSessionInformationApi::KMusCallDirection,
+                                            NMusSessionInformationApi::ECallOrginated ));
+    
+    iMusTsyPropertyMonitor->AddCallMonitorL( cs_call_1 );
+    dataReady = iMusTsyPropertyMonitor->IsDataReadyL();
+    EUNIT_ASSERT_EQUALS( dataReady, ETrue )
+    
+    // Test-2: CS Call NotReady: 
+    User::LeaveIfError( RProperty::Set( NMusSessionInformationApi::KCategoryUid,
+                                            NMusSessionInformationApi::KMusTelNumber,
+                                            KNullDesC ));
+    
+    dataReady = iMusTsyPropertyMonitor->IsDataReadyL();
+    EUNIT_ASSERT_EQUALS( dataReady, EFalse )
+
+    // Test-3 VoIP Call Ready
+    iMusTsyPropertyMonitor->iCallMonitorArray.ResetAndDestroy();
+    iMusTsyPropertyMonitor->AddVoipCallMonitorL( voip_call_1 );
+    
+    User::LeaveIfError( RProperty::Set(
+                              NMusSessionInformationApi::KCategoryUid,
+                              NMusSessionInformationApi::KMusTelNumber, 
+                              KDefaultSipUri ));
+
+    User::LeaveIfError(RProperty::Set( 
+                              NMusSessionInformationApi::KCategoryUid,
+                              NMusSessionInformationApi::KMUSCallProvider,
+                              KTestProvideName ));
+    
+    dataReady = iMusTsyPropertyMonitor->IsDataReadyL();
+    EUNIT_ASSERT_EQUALS( dataReady, ETrue )
+    
+    
+    // Test-4 VoIP Call Not Ready
+    User::LeaveIfError( RProperty::Set(
+                          NMusSessionInformationApi::KCategoryUid,
+                          NMusSessionInformationApi::KMUSCallProvider, 
+                          KNullDesC ));
+    
+    dataReady = iMusTsyPropertyMonitor->IsDataReadyL();
+
+    EUNIT_ASSERT_EQUALS( dataReady, EFalse )
+
+    // Test-5: Conference Case
+    iMusTsyPropertyMonitor->iCallMonitorArray.ResetAndDestroy();
+    iMusTsyPropertyMonitor->iVoipCallMonitorArray.ResetAndDestroy(); 
+
+    iMusTsyPropertyMonitor->AddVoipCallMonitorL( voip_call_1 );
+    iMusTsyPropertyMonitor->AddVoipCallMonitorL( voip_call_2 );
+    
+    dataReady = iMusTsyPropertyMonitor->IsDataReadyL();
+    EUNIT_ASSERT_EQUALS( dataReady, EFalse )
+    iMusTsyPropertyMonitor->iVoipCallMonitorArray.ResetAndDestroy();
+    
+    // Test-3 Handling conference case.
+    iMusTsyPropertyMonitor->iConferenceMonitor->iConfStatus = RMobileConferenceCall::EConferenceActive;
+    dataReady = iMusTsyPropertyMonitor->IsDataReadyL();
+    EUNIT_ASSERT_EQUALS( dataReady, ETrue )
+    iMusTsyPropertyMonitor->iConferenceMonitor->iConfStatus = RMobileConferenceCall::EConferenceIdle;
+    }
+
+
+// -----------------------------------------------------------------------------
+//  MusCallStateChanged from the MusCallStateObserver 
+// -----------------------------------------------------------------------------
+//
+void UT_CMusTsyPropertyMonitor::MusCallStateChanged()
+    {
+    // NOP
+    }
+
 //  TEST TABLE
 
 EUNIT_BEGIN_TEST_TABLE(
@@ -397,14 +652,6 @@
     "UT_CMusTsyPropertyMonitor",
     "UNIT" )
 
-    
-EUNIT_TEST(
-    "NewL - test",
-    "CMusTsyPropertyMonitor",
-    "NewL",
-    "FUNCTIONALITY",
-    SetupL, UT_CMusTsyPropertyMonitor_NewLL, Teardown)
-
 EUNIT_TEST(
     "RunL - test",
     "CMusTsyPropertyMonitor",
@@ -427,7 +674,7 @@
     SetupL, UT_CMusTsyPropertyMonitor_RunErrorL, Teardown)
 
 EUNIT_TEST(
-    "RemoveUnUsedCallMonitorsL",
+    "UT_CMusTsyPropertyMonitor_RemoveUnUsedCallMonitorsL",
     "CMusCallStatusMonitor",
     "RemoveUnUsedCallMonitors",
     "FUNCTIONALITY",
@@ -453,14 +700,35 @@
     "MonitorCallL",
     "FUNCTIONALITY",
     SetupL, UT_CMusTsyPropertyMonitor_MonitorCallLL, Teardown)
+    
+EUNIT_TEST(
+    "MonitorCsCallL - test",
+    "CMusTsyPropertyMonitor",
+    "MonitorCsCallL",
+    "FUNCTIONALITY",
+    SetupL, UT_CMusTsyPropertyMonitor_MonitorCSCallLL, Teardown)
+    
+EUNIT_TEST(
+    "MonitorVoipCallL - test",
+    "CMusTsyPropertyMonitor",
+    "MonitorVoipCallL",
+    "FUNCTIONALITY",
+    SetupL, UT_CMusTsyPropertyMonitor_MonitorVoipCallLL, Teardown)
 
 EUNIT_TEST(
-    "MonitorCallL no clir - test",
+    "CheckCallCriteriaL - test",
     "CMusTsyPropertyMonitor",
-    "MonitorCallL",
+    "CheckCallCriteriaL",
     "FUNCTIONALITY",
-    Setup2L, UT_CMusTsyPropertyMonitor_MonitorCallL_2L, Teardown)
-
+    SetupL, UT_CMusTsyPropertyMonitor_CheckCallCriteriaLL, Teardown)
+    
+EUNIT_TEST(
+    "IsDataReadyL - test",
+    "CMusTsyPropertyMonitor",
+    "IsDataReadyL",
+    "FUNCTIONALITY",
+    SetupL, UT_CMusTsyPropertyMonitor_IsDataReadyLL, Teardown)
+    
 EUNIT_END_TEST_TABLE
 
 //  END OF FILE