mmshplugins/mmshaoplugin/tsrc/ut_aoplugin/src/ut_musclirmonitor.cpp
branchRCL_3
changeset 33 bc78a40cd63c
parent 0 f0cf47e981f9
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmshplugins/mmshaoplugin/tsrc/ut_aoplugin/src/ut_musclirmonitor.cpp	Wed Sep 01 12:31:01 2010 +0100
@@ -0,0 +1,291 @@
+/*
+* Copyright (c) 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:  Monitor that observes the calling line identity restriction
+*                setting
+*
+*/
+
+#include "musclirmonitor.h"
+#include "ut_musclirmonitor.h"
+#include "e32property.h"
+
+#include <etelmm.h>
+#include <etel.h>
+#include <mmtsy_names.h>
+#include <digia/eunit/eunitmacros.h>
+
+
+#pragma warn_illtokenpasting off
+
+// Constants
+
+
+// -----------------------------------------------------------------------------
+// UT_CMusClirMonitor::NewLC
+// -----------------------------------------------------------------------------
+//
+UT_CMusClirMonitor* UT_CMusClirMonitor::NewLC()
+    {    
+    UT_CMusClirMonitor* self = new (ELeave) UT_CMusClirMonitor();
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    return self;
+    }
+
+
+// -----------------------------------------------------------------------------
+// UT_CMusClirMonitor::ConstructL
+// -----------------------------------------------------------------------------
+//
+void UT_CMusClirMonitor::ConstructL()
+    {
+    CEUnitTestSuiteClass::ConstructL();
+    }
+
+
+// -----------------------------------------------------------------------------
+// UT_CMusClirMonitor::UT_CMusClirMonitor
+// -----------------------------------------------------------------------------
+//
+UT_CMusClirMonitor::UT_CMusClirMonitor() :
+    CEUnitTestSuiteClass()
+    {
+    }
+
+
+// -----------------------------------------------------------------------------
+// UT_CMusClirMonitor::~UT_CMusClirMonitor
+// -----------------------------------------------------------------------------
+//
+UT_CMusClirMonitor::~UT_CMusClirMonitor()
+    {
+    }
+
+   
+// -----------------------------------------------------------------------------
+// UT_CMusClirMonitor::UT_ReadClir
+// -----------------------------------------------------------------------------
+//
+void UT_CMusClirMonitor::UT_ReadClir()
+    {
+    // Cancel initial request
+    iMonitor->Cancel();
+    
+    iMonitor->ReadClir();
+    EUNIT_ASSERT( iMonitor->IsActive() );
+    
+    // Monitor is already reading, new attempts do nothing 
+    iMonitor->ReadClir();
+    iMonitor->ReadClir();
+    
+    EUNIT_ASSERT_EQUALS( iMonitor->iErrorCount, 0 );
+    }
+
+
+// -----------------------------------------------------------------------------
+// UT_CMusClirMonitor::UT_RunL
+// -----------------------------------------------------------------------------
+//
+void UT_CMusClirMonitor::UT_RunL()
+    {
+    CTelephony::TIdentityServiceStatus value1 =
+        CTelephony::EIdServiceActivePermanent;
+    CTelephony::TIdentityServiceStatus value2 =
+            CTelephony::EIdServiceNotProvisioned;
+
+    EUNIT_ASSERT( iMonitor->iAllowed );
+    iMonitor->Cancel();
+    iMonitor->iTIdentityServiceV1.iIdentityStatus = value1;
+    iMonitor->iStatus = KErrNone;    
+    iMonitor->RunL();
+    EUNIT_ASSERT( !iMonitor->iAllowed );
+    EUNIT_ASSERT_EQUALS( iMonitor->iErrorCount, 0 );
+    
+    
+    iMonitor->Cancel();
+    iMonitor->iTIdentityServiceV1.iIdentityStatus = value2;
+    iMonitor->iStatus = KErrGeneral;
+    iMonitor->RunL();
+    // iAllowed value does not change because request completed with error
+    EUNIT_ASSERT( !iMonitor->iAllowed );
+    EUNIT_ASSERT_EQUALS( iMonitor->iErrorCount, 1 );
+    
+   
+    iMonitor->Cancel();
+    iMonitor->iTIdentityServiceV1.iIdentityStatus = value2;
+    iMonitor->iStatus = KErrNone;
+    iMonitor->RunL();
+    EUNIT_ASSERT( iMonitor->iAllowed );
+    // After successful read, error count is reset
+    EUNIT_ASSERT_EQUALS( iMonitor->iErrorCount, 0 );
+    }
+
+
+// -----------------------------------------------------------------------------
+// UT_CMusClirMonitor::UT_RunLErrorsL
+// Test that if reading fails, it is retried few times. 
+// -----------------------------------------------------------------------------
+//
+void UT_CMusClirMonitor::UT_RunLErrorsL()
+    {
+    // Must have same value as in musclirmonitor.cpp
+    const TInt KMaxErrorsBeforeStop = 5;
+
+    EUNIT_ASSERT_EQUALS( iMonitor->iErrorCount, 0 );
+    
+    for ( TInt i = 1; i <= KMaxErrorsBeforeStop; ++i )
+        {
+        // Reading fails
+        iMonitor->Cancel();
+        iMonitor->iStatus = KErrNotSupported;
+        iMonitor->RunL();
+        EUNIT_ASSERT_EQUALS( iMonitor->iErrorCount, i );
+        // Retry started
+        EUNIT_ASSERT( iMonitor->IsActive() );
+        }
+    
+    // Reading fails
+    iMonitor->Cancel();
+    iMonitor->iStatus = KErrNotSupported;
+    iMonitor->RunL();
+    EUNIT_ASSERT_EQUALS( iMonitor->iErrorCount, KMaxErrorsBeforeStop + 1 );
+
+    // No more retries
+    EUNIT_ASSERT( !iMonitor->IsActive() );
+    }
+
+// -----------------------------------------------------------------------------
+// UT_CMusClirMonitor::UT_DoCancel
+// -----------------------------------------------------------------------------
+//
+void UT_CMusClirMonitor::UT_DoCancel()
+    {
+    EUNIT_ASSERT( iMonitor->IsActive() );
+
+    // Can't call DoCancel directly, must call it via the CActive::Cancel
+    iMonitor->Cancel();
+    
+    EUNIT_ASSERT( !iMonitor->IsActive() );
+    }
+
+
+// -----------------------------------------------------------------------------
+// UT_CMusClirMonitor::UT_RunError
+// -----------------------------------------------------------------------------
+//
+void UT_CMusClirMonitor::UT_RunError()
+    {
+    EUNIT_ASSERT( iMonitor->RunError( KErrNone ) == KErrNone );
+    EUNIT_ASSERT( iMonitor->RunError( KErrGeneral ) == KErrNone );
+    EUNIT_ASSERT( iMonitor->RunError( 48 ) == KErrNone );
+    EUNIT_ASSERT( iMonitor->RunError( -2092 ) == KErrNone );
+    }
+
+
+// -----------------------------------------------------------------------------
+// UT_CMusClirMonitor::UT_TranslateResult
+// -----------------------------------------------------------------------------
+//
+void UT_CMusClirMonitor::UT_TranslateResult()
+    {
+    iMonitor->iAllowed = EFalse;
+    
+    iMonitor->TranslateResult( CTelephony::EIdServiceActiveDefaultAllowed );
+    EUNIT_ASSERT( iMonitor->iAllowed );
+    
+    iMonitor->TranslateResult( CTelephony::EIdServiceActivePermanent );
+    EUNIT_ASSERT( !iMonitor->iAllowed );
+    
+    iMonitor->TranslateResult( CTelephony::EIdServiceNotProvisioned );
+    EUNIT_ASSERT( iMonitor->iAllowed );
+    
+    iMonitor->TranslateResult( CTelephony::EIdServiceActiveDefaultRestricted );
+    EUNIT_ASSERT( !iMonitor->iAllowed );
+    
+    iMonitor->TranslateResult( CTelephony::EIdServiceUnknown );
+    EUNIT_ASSERT( !iMonitor->iAllowed );
+    }
+
+// -----------------------------------------------------------------------------
+// UT_CMusClirMonitor::SetupL
+// -----------------------------------------------------------------------------
+//
+void UT_CMusClirMonitor::SetupL()
+    {        
+    iMonitor = CMusClirMonitor::NewL();
+    }
+
+
+// -----------------------------------------------------------------------------
+// UT_CMusClirMonitor::Teardown
+// -----------------------------------------------------------------------------
+//
+void UT_CMusClirMonitor::Teardown()
+    {
+    delete iMonitor;
+    iMonitor = NULL;
+    PropertyHelper::Close();
+    
+    }
+
+// test table
+
+EUNIT_BEGIN_TEST_TABLE(
+    UT_CMusClirMonitor,
+    "UT_CMusClirMonitor",
+    "UNIT" )
+
+EUNIT_TEST(
+    "UT_ReadClir",
+    "CMusClirMonitor",
+    "ReadClir",
+    "FUNCTIONALITY",
+    SetupL, UT_ReadClir, Teardown)
+
+EUNIT_TEST(
+    "UT_RunL",
+    "CMusClirMonitor",
+    "RunL",
+    "FUNCTIONALITY",
+    SetupL, UT_RunL, Teardown)
+
+EUNIT_TEST(
+    "UT_RunLErrorsL",
+    "CMusClirMonitor",
+    "RunL",
+    "FUNCTIONALITY",
+    SetupL, UT_RunLErrorsL, Teardown)
+
+EUNIT_TEST(
+    "UT_DoCancel",
+    "CMusClirMonitor",
+    "DoCancel",
+    "FUNCTIONALITY",
+    SetupL, UT_DoCancel, Teardown)
+
+EUNIT_TEST(
+    "UT_RunError",
+    "CMusClirMonitor",
+    "RunError",
+    "FUNCTIONALITY",
+    SetupL, UT_RunError, Teardown)
+
+EUNIT_TEST(
+    "UT_TranslateResult",
+    "CMusClirMonitor",
+    "TranslateResult",
+    "FUNCTIONALITY",
+    SetupL, UT_TranslateResult, Teardown)
+
+EUNIT_END_TEST_TABLE