cellular/telephonysettings/xqbindings/psetwrapper/tsrc/ut_psetcalldivertingwrapper/ut_psetcalldivertingwrapper.cpp
changeset 13 e32024264ebb
parent 12 ae8abd0db65c
child 31 a2467631ae02
--- a/cellular/telephonysettings/xqbindings/psetwrapper/tsrc/ut_psetcalldivertingwrapper/ut_psetcalldivertingwrapper.cpp	Fri Mar 19 09:40:14 2010 +0200
+++ b/cellular/telephonysettings/xqbindings/psetwrapper/tsrc/ut_psetcalldivertingwrapper/ut_psetcalldivertingwrapper.cpp	Fri Apr 16 15:31:58 2010 +0300
@@ -17,7 +17,7 @@
 
 #include <PsetContainer.h>
 #include <PsetCallDiverting.h>
-#include <MPsetDivertObs.h>
+#include <mpsetdivertobs.h>
 #include "ut_psetcalldivertingwrapper.h"
 #include "mock_cphcltemergencycall.h"
 #include "testutilities.h"
@@ -58,6 +58,11 @@
     }
 };
 
+void SimulateLeaveL()
+{
+    User::Leave(KErrGeneral);
+}
+
 /*!
   UT_PSetCallDivertingWrapper::UT_PSetWrapperCallDiverting
  */
@@ -114,6 +119,34 @@
 }
 
 /*!
+  UT_PSetCallDivertingWrapper::t_construction
+ */
+void UT_PSetCallDivertingWrapper::t_construction()
+{
+    if (qstrcmp(QTest::currentTestFunction(), "t_exceptionSafety") != 0) {
+        
+        expect("CPsetContainer::CreateCFObjectL").
+            willOnce(invokeWithoutArguments(SimulateLeaveL));
+        PSetCallDivertingWrapper *wrapper = NULL;
+        EXPECT_EXCEPTION(
+            wrapper = new PSetCallDivertingWrapper(*mSetContainerMock, NULL);
+            delete wrapper;
+            wrapper = NULL;
+        )
+        QVERIFY(verify());
+        
+        expect("CPhCltEmergencyCallMock::NewL").
+            willOnce(invokeWithoutArguments(SimulateLeaveL));
+        EXPECT_EXCEPTION(
+            wrapper = new PSetCallDivertingWrapper(*mSetContainerMock, NULL);
+            delete wrapper;
+            wrapper = NULL;
+        )        
+        QVERIFY(verify());
+    }
+}
+
+/*!
   UT_PSetCallDivertingWrapper::t_setCallDivertingWithValidParameters
  */
 void UT_PSetCallDivertingWrapper::t_setCallDivertingWithValidParameters()
@@ -312,6 +345,12 @@
     QString defNumber = "444444";
     mWrapper->setNewDefaultNumber(defNumber);
 
+    expect("CPsetCallDiverting::GetDefaultNumbersL")
+        .willOnce(invoke(SimulateLeaveL));
+    EXPECT_EXCEPTION(
+        mWrapper->setNewDefaultNumber(defNumber);
+    )
+    
     QVERIFY(true == verify());
 }
 
@@ -320,26 +359,51 @@
  */
 void UT_PSetCallDivertingWrapper::t_getVoiceMailBoxNumber()
 {
-    // Fail case
+    // Fail case #1, illegal argument
+    QString defNumber;
     expect("CVoiceMailbox::GetStoredEntry").returns(-2).times(1);
+    mWrapper->getVoiceMailBoxNumber(defNumber);
 
-    QString defNumber;
+    // Fail case #2, New number not given.
+    expect("CVoiceMailbox::GetStoredEntry").returns(-1).times(1);
+    expect("CVoiceMailbox::QueryNewEntry").returns(-5).times(1);
+    mWrapper->getVoiceMailBoxNumber(defNumber);
+
+    // Fail case #3, save nok
+    expect("CVoiceMailbox::GetStoredEntry").returns(-1).times(1);
+    expect("CVoiceMailbox::QueryNewEntry").times(1);
+    expect("CVoiceMailbox::SaveEntry").returns(-4).times(1);
+    mWrapper->getVoiceMailBoxNumber(defNumber);
+
+    // Fail case #4, number nok
+    expect("CVoiceMailbox::GetStoredEntry").times(1);
+    expect("CVoiceMailboxEntry::GetVmbxNumber").returns(-1).times(1);
     mWrapper->getVoiceMailBoxNumber(defNumber);
 
-    QVERIFY(true == verify());
-}
+    // ok case#2, number and save ok but no new number. 
+    expect("CVoiceMailbox::GetStoredEntry").returns(-1).times(1);
+    expect("CVoiceMailbox::QueryNewEntry").times(1);
+    expect("CVoiceMailbox::SaveEntry").times(1);
+    expect("CVoiceMailboxEntry::GetVmbxNumber").returns(-5).times(1);
+    mWrapper->getVoiceMailBoxNumber(defNumber);
 
-/*!
-  UT_PSetCallDivertingWrapper::t_getVoiceMailBoxNumber2
- */
-void UT_PSetCallDivertingWrapper::t_getVoiceMailBoxNumber2()
-{
+    // ok case#1, number ok
     expect("CVoiceMailbox::GetStoredEntry").times(1);
-    expect("CVoiceMailboxEntry::GetVmbxNumber").returns(-1).times(1);
-    
-    QString defNumber;
+    expect("CVoiceMailboxEntry::GetVmbxNumber").times(1);
     mWrapper->getVoiceMailBoxNumber(defNumber);
 
+    // ok case#2, number and save ok
+    expect("CVoiceMailbox::GetStoredEntry").returns(-1).times(1);
+    expect("CVoiceMailbox::QueryNewEntry").times(1);
+    expect("CVoiceMailbox::SaveEntry").times(1);
+    mWrapper->getVoiceMailBoxNumber(defNumber);
+
+    expect("CVoiceMailbox::NewL")
+        .willOnce(invoke(SimulateLeaveL));
+    EXPECT_EXCEPTION(
+        mWrapper->getVoiceMailBoxNumber(defNumber);
+    )
+    
     QVERIFY(true == verify());
 }
 
@@ -606,33 +670,12 @@
 
 /*!
   UT_PSetCallDivertingWrapper::t_exceptionSafety
-  TODO: tests using signalspy fail in alloc failure mode because 
-  QList<QVariant> is not exception safe in QT 4.6.0.
  */
 void UT_PSetCallDivertingWrapper::t_exceptionSafety()
 {
     cleanup();
     
-    OomTestExecuter::runTest(*this, &t_setCallDivertingWithValidParameters);
-    //OomTestExecuter::runTest(*this, &t_setCallDivertingWithInvalidNumber);
-    //OomTestExecuter::runTest(*this, &t_setCallDivertingWithEmergencyNumber);
-    OomTestExecuter::runTest(*this, &t_setCallDivertingException);
-    OomTestExecuter::runTest(*this, &t_getCallDivertingStatus);
-    OomTestExecuter::runTest(*this, &t_getCallDivertingStatusException);
-    OomTestExecuter::runTest(*this, &t_cancelProcess);
-    OomTestExecuter::runTest(*this, &t_getDefaultNumbers);
-    OomTestExecuter::runTest(*this, &t_getDefaultNumbersException);
-    OomTestExecuter::runTest(*this, &t_setNewDefaultNumber);
-    OomTestExecuter::runTest(*this, &t_swapDefaultNumber);
-    //OomTestExecuter::runTest(*this, &t_handleDivertingChanged);
-    //OomTestExecuter::runTest(*this, &t_handleDivertingStatus);
-    //OomTestExecuter::runTest(*this, &t_handleDivertingError);
-    //OomTestExecuter::runTest(*this, &t_handleCFRequesting);
-    OomTestExecuter::runTest(*this, &t_setEngineContact);
-    OomTestExecuter::runTest(*this, &t_handleEmergencyDial);
-    OomTestExecuter::runTest(*this, &t_convertPsCallDivertingCondition);
-    OomTestExecuter::runTest(*this, &t_convertPsCallDivertingStatus);
-    OomTestExecuter::runTest(*this, &t_convertPsCallDivertingSetting);
+    OomTestExecuter::runAllTests(*this, "t_exceptionSafety");
 }
 
 /*!