phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/ut_infowidgetnetworkhandler/src/ut_infowidgetnetworkhandler.cpp
branchGCC_SURGE
changeset 51 f39ed5e045e0
parent 40 bab96b7ed1a4
parent 46 bc5a64e5bc3c
equal deleted inserted replaced
40:bab96b7ed1a4 51:f39ed5e045e0
     1 /*
       
     2 * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:
       
    15 *
       
    16 */
       
    17 #include <networkhandlingproxy.h>
       
    18 #include <nwhandlingengine.h>
       
    19 #include "qtestmains60.h"
       
    20 #include <xqsettingskey.h>
       
    21 #include <xqsettingsmanager.h>
       
    22 #include "ut_infowidgetnetworkhandler.h"
       
    23 #define private public
       
    24 #include "infowidgetnetworkhandler.h"
       
    25 
       
    26 #define EXPECT_EXCEPTION(statements)    \
       
    27 {                                       \
       
    28     bool exceptionDetected = false;     \
       
    29     try {                               \
       
    30         statements                      \
       
    31     } catch (...) {                     \
       
    32         exceptionDetected = true;       \
       
    33     }                                   \
       
    34     QVERIFY(true == exceptionDetected); \
       
    35 }
       
    36 
       
    37 const QString KHomeZoneTextTag("HomeZoneText0");    // max length 13
       
    38 const TNWViagIndicatorType 
       
    39     KHomeZoneIndicatorType = ENWViagIndicatorTypeHomeZone;
       
    40 
       
    41 const QString KMcnName("McnNameMcnNameMcnNam");     // max length 20 
       
    42 const TNWMCNIndicatorType 
       
    43     KMcnIndicatorType = ENWMCNIndicatorTypeActive;
       
    44 
       
    45 
       
    46 /*!
       
    47   UT_InfoWidgetNetworkHandler::UT_InfoWidgetNetworkHandler
       
    48  */
       
    49 UT_InfoWidgetNetworkHandler::UT_InfoWidgetNetworkHandler() 
       
    50     : 
       
    51     m_networkHandler(0)
       
    52 {
       
    53     
       
    54 }
       
    55 
       
    56 
       
    57 /*!
       
    58   UT_InfoWidgetNetworkHandler::~UT_InfoWidgetNetworkHandler
       
    59  */
       
    60 UT_InfoWidgetNetworkHandler::~UT_InfoWidgetNetworkHandler()
       
    61 {
       
    62     delete m_networkHandler;
       
    63 }
       
    64 
       
    65 /*!
       
    66   UT_InfoWidgetNetworkHandler::doLeaveL
       
    67  */
       
    68 void UT_InfoWidgetNetworkHandler::doLeaveL()
       
    69 {
       
    70     User::Leave(KErrGeneral);
       
    71 }
       
    72 
       
    73 /*!
       
    74   UT_InfoWidgetNetworkHandler::generateException
       
    75  */
       
    76 void UT_InfoWidgetNetworkHandler::generateException()
       
    77 {
       
    78     throw std::bad_alloc();
       
    79 }
       
    80 
       
    81 /*!
       
    82   UT_InfoWidgetNetworkHandler::init
       
    83  */
       
    84 void UT_InfoWidgetNetworkHandler::init()
       
    85 {
       
    86     initialize();
       
    87     
       
    88     SmcDefaultValue<QString>::SetL("");
       
    89     SmcDefaultValue<const QString & >::SetL("");
       
    90     QVariant i(1);
       
    91     EXPECT(XQSettingsManager::readItemValue).returns(i);
       
    92     EXPECT(CreateL).willOnce(invoke(this, &initializeNetworkInfo));
       
    93     m_networkHandler =  new InfoWidgetNetworkHandler();
       
    94     
       
    95     QVERIFY(verify());
       
    96 }
       
    97 
       
    98 
       
    99 /*!
       
   100   UT_InfoWidgetNetworkHandler::cleanup
       
   101  */
       
   102 void UT_InfoWidgetNetworkHandler::cleanup()
       
   103 {
       
   104     reset();
       
   105     
       
   106     QVariant i(1);
       
   107     EXPECT(XQSettingsManager::readItemValue).returns(i);  
       
   108     delete m_networkHandler;
       
   109     m_networkHandler = 0;
       
   110     
       
   111     QVERIFY(verify());
       
   112 }
       
   113 
       
   114 /*!
       
   115   UT_InfoWidgetNetworkHandler::t_homeZoneTextTag
       
   116  */
       
   117 void UT_InfoWidgetNetworkHandler::t_homeZoneTextTag()
       
   118 {
       
   119     QVariant i(1);
       
   120     EXPECT(XQSettingsManager::readItemValue).returns(i);
       
   121     
       
   122     QVERIFY(m_networkHandler->homeZoneTextTag() == KHomeZoneTextTag);
       
   123 }
       
   124 
       
   125 
       
   126 /*!
       
   127   UT_InfoWidgetNetworkHandler::t_homeZoneIndicatorType
       
   128  */
       
   129 void UT_InfoWidgetNetworkHandler::t_homeZoneIndicatorType()
       
   130 {
       
   131     QVERIFY(
       
   132         m_networkHandler->homeZoneIndicatorType() == KHomeZoneIndicatorType);
       
   133 }
       
   134 
       
   135 
       
   136 /*!
       
   137   UT_InfoWidgetNetworkHandler::t_mcnName
       
   138  */
       
   139 void UT_InfoWidgetNetworkHandler::t_mcnName()
       
   140 {
       
   141     QVERIFY(m_networkHandler->mcnName() == KMcnName);
       
   142 }
       
   143 
       
   144 
       
   145 /*!
       
   146   UT_InfoWidgetNetworkHandler::t_mcnIndicatorType
       
   147  */
       
   148 void UT_InfoWidgetNetworkHandler::t_mcnIndicatorType()
       
   149 {
       
   150     QVERIFY(m_networkHandler->mcnIndicatorType() == KMcnIndicatorType);
       
   151 }
       
   152 
       
   153 
       
   154 /*!
       
   155   UT_InfoWidgetNetworkHandler::t_isOnline
       
   156  */
       
   157 void UT_InfoWidgetNetworkHandler::t_isOnline()
       
   158 {
       
   159     m_networkHandler->m_nwInfo.iRegistrationStatus = 
       
   160             static_cast<TNWRegistrationStatus>(ENWRegisteredBusy);
       
   161     QVERIFY(m_networkHandler->isOnline() == true);
       
   162     m_networkHandler->m_nwInfo.iRegistrationStatus = 
       
   163             static_cast<TNWRegistrationStatus>(ENWRegisteredOnHomeNetwork);
       
   164     QVERIFY(m_networkHandler->isOnline() == true);
       
   165     m_networkHandler->m_nwInfo.iRegistrationStatus = 
       
   166             static_cast<TNWRegistrationStatus>(ENWRegisteredRoaming);
       
   167     QVERIFY(m_networkHandler->isOnline() == true);
       
   168     
       
   169     m_networkHandler->m_nwInfo.iRegistrationStatus = 
       
   170             static_cast<TNWRegistrationStatus>(ENWRegistrationUnknown);
       
   171     QVERIFY(m_networkHandler->isOnline() == false);
       
   172 }
       
   173 
       
   174 
       
   175 /*!
       
   176   UT_InfoWidgetNetworkHandler::t_networkRegistrationStatus
       
   177  */
       
   178 void UT_InfoWidgetNetworkHandler::t_networkRegistrationStatus()
       
   179 {
       
   180     m_networkHandler->m_nwInfo.iRegistrationStatus = 
       
   181                 static_cast<TNWRegistrationStatus>(ENWRegistrationUnknown);
       
   182     QVERIFY(m_networkHandler->networkRegistrationStatus() == 0);
       
   183 }
       
   184 
       
   185 
       
   186 /*!
       
   187   UT_InfoWidgetNetworkHandler::t_HandleNetworkMessage
       
   188  */
       
   189 void UT_InfoWidgetNetworkHandler::t_HandleNetworkMessage()
       
   190 {
       
   191     QSignalSpy spy(m_networkHandler, SIGNAL(networkDataChanged()));
       
   192     
       
   193     // TODO: investigate, which messages indicate cell info change
       
   194 // ACCEPTED MESSAGES    
       
   195     m_networkHandler->HandleNetworkMessage(
       
   196         MNWMessageObserver::ENWMessageCurrentCellInfoMessage);
       
   197     
       
   198 // MESSAGES TO BE FILTERED OUT
       
   199 // COMMON NETWORK MESSAGES                      0 - 99
       
   200     m_networkHandler->HandleNetworkMessage(
       
   201         MNWMessageObserver::ENWMessageNetworkInfoChange);
       
   202     m_networkHandler->HandleNetworkMessage(
       
   203         MNWMessageObserver::ENWMessageNetworkModeChange);
       
   204     m_networkHandler->HandleNetworkMessage(
       
   205         MNWMessageObserver::ENWMessageNetworkRegistrationStatusChange);
       
   206     m_networkHandler->HandleNetworkMessage(
       
   207         MNWMessageObserver::ENWMessageProgrammableOperatorInfoChange);
       
   208     m_networkHandler->HandleNetworkMessage(
       
   209         MNWMessageObserver::ENWMessageNetworkProviderNameChange);
       
   210     m_networkHandler->HandleNetworkMessage(
       
   211         MNWMessageObserver::ENWMessageServiceProviderNameChange);
       
   212     m_networkHandler->HandleNetworkMessage(
       
   213         MNWMessageObserver::ENWMessageProgrammableOperatorInfoUpdating);
       
   214     m_networkHandler->HandleNetworkMessage(
       
   215         MNWMessageObserver::ENWMessageNetworkProviderNameUpdating);
       
   216     m_networkHandler->HandleNetworkMessage(
       
   217         MNWMessageObserver::ENWMessageServiceProviderNameUpdating);
       
   218     m_networkHandler->HandleNetworkMessage(
       
   219         MNWMessageObserver::ENWMessageAllowRefresh);
       
   220     m_networkHandler->HandleNetworkMessage(
       
   221         MNWMessageObserver::ENWMessageNetworkSelectionSettingChange);
       
   222 // GSM SPECIFIC MESSAGES                        100 - 199
       
   223     m_networkHandler->HandleNetworkMessage(
       
   224         MNWMessageObserver::ENWMessageNetworkCellReselection);
       
   225     m_networkHandler->HandleNetworkMessage(
       
   226         MNWMessageObserver::ENWMessageNetworkConnectionFailure);
       
   227 //    m_networkHandler->HandleNetworkMessage(
       
   228 //        MNWMessageObserver::ENWMessageCurrentCellInfoMessage);
       
   229     m_networkHandler->HandleNetworkMessage(
       
   230         MNWMessageObserver::ENWMessageCurrentHomeZoneMessage);
       
   231     m_networkHandler->HandleNetworkMessage(
       
   232         MNWMessageObserver::ENWMessageNetworkIndicatorChange);
       
   233 // CDMA SPECIFIC MESSAGES                       200 - 299
       
   234     m_networkHandler->HandleNetworkMessage(
       
   235         MNWMessageObserver::ENWMessageNetworkEmergencyMode); 
       
   236     m_networkHandler->HandleNetworkMessage(
       
   237         MNWMessageObserver::ENWMessageVoicePrivacyStatusChange);
       
   238     m_networkHandler->HandleNetworkMessage(
       
   239         MNWMessageObserver::ENWMessageStartSystemSearchRequestCompleteOk);
       
   240     m_networkHandler->HandleNetworkMessage(
       
   241         MNWMessageObserver::ENWMessageStartSystemSearchRequestCompleteFail);
       
   242     m_networkHandler->HandleNetworkMessage(
       
   243         MNWMessageObserver::ENWMessageStopProtocolStackRequestCompleteOk);
       
   244     m_networkHandler->HandleNetworkMessage(
       
   245         MNWMessageObserver::ENWMessageStopProtocolStackRequestCompleteFail);
       
   246     
       
   247     const int KExpectedNumOfSignalEmissions = 3;
       
   248     QCOMPARE(spy.count(), KExpectedNumOfSignalEmissions);
       
   249     
       
   250     const QList<QVariant> &arguments = spy.at(0);
       
   251     QCOMPARE(arguments.count(), 0);
       
   252 }
       
   253 
       
   254 
       
   255 /*!
       
   256   UT_InfoWidgetNetworkHandler::t_HandleNetworkMessageExceptionWhileEmittingSignal
       
   257  */
       
   258 void UT_InfoWidgetNetworkHandler::t_HandleNetworkMessageExceptionWhileEmittingSignal()
       
   259 {
       
   260     QObject::connect(
       
   261         m_networkHandler, SIGNAL(networkDataChanged()),
       
   262         this, SLOT(generateException())); 
       
   263     
       
   264     m_networkHandler->HandleNetworkMessage(
       
   265         MNWMessageObserver::ENWMessageCurrentCellInfoMessage);
       
   266     
       
   267     QVERIFY(verify());
       
   268 }
       
   269 
       
   270 
       
   271 /*!
       
   272   UT_InfoWidgetNetworkHandler::t_HandleNetworkError
       
   273  */
       
   274 Q_DECLARE_METATYPE(MNWMessageObserver::TNWOperation)
       
   275 void UT_InfoWidgetNetworkHandler::t_HandleNetworkError()
       
   276 {
       
   277     QSignalSpy spy(m_networkHandler, SIGNAL(networkError(int, int)));
       
   278     qRegisterMetaType<MNWMessageObserver::TNWOperation>
       
   279         ("MNWMessageObserver::TNWOperation");
       
   280     
       
   281     const int errorCode = -4;
       
   282     MNWMessageObserver::TNWOperation operation = 
       
   283             MNWMessageObserver::ENWGetServiceProviderName;
       
   284     m_networkHandler->HandleNetworkError(operation, errorCode);
       
   285         
       
   286     operation = MNWMessageObserver::ENWNone;
       
   287     m_networkHandler->HandleNetworkError(operation, errorCode);
       
   288     
       
   289     const int KExpectedNumOfSignalEmissions = 2;
       
   290     QCOMPARE(spy.count(), KExpectedNumOfSignalEmissions);
       
   291     const QList<QVariant> &arguments = spy.at(0);
       
   292     QCOMPARE(arguments.count(), 2);
       
   293     
       
   294     QCOMPARE(
       
   295         qvariant_cast<MNWMessageObserver::TNWOperation>(arguments.at(0)), 
       
   296         operation);
       
   297     QCOMPARE(arguments.at(1).toInt(), errorCode);
       
   298 }
       
   299 
       
   300 
       
   301 /*!
       
   302   UT_InfoWidgetNetworkHandler::t_HandleNetworkErrorExceptionWhileEmittingSignal
       
   303  */
       
   304 void UT_InfoWidgetNetworkHandler::t_HandleNetworkErrorExceptionWhileEmittingSignal()
       
   305 {
       
   306     QObject::connect(
       
   307         m_networkHandler, SIGNAL(networkError(int, int)),
       
   308         this, SLOT(generateException())); 
       
   309     
       
   310     MNWMessageObserver::TNWOperation operation = MNWMessageObserver::ENWNone;
       
   311     const int errorCode = -4;
       
   312     m_networkHandler->HandleNetworkError(operation, errorCode);
       
   313     
       
   314     QVERIFY(verify());
       
   315 }
       
   316 
       
   317 
       
   318 /*!
       
   319   UT_InfoWidgetNetworkHandler::initializeNetworkInfo
       
   320  */
       
   321 void UT_InfoWidgetNetworkHandler::initializeNetworkInfo(
       
   322     MNWMessageObserver& /*aObserver*/, TNWInfo& aTNWInfo)
       
   323 {
       
   324     aTNWInfo.iViagTextTag.Copy(KHomeZoneTextTag.utf16());
       
   325     aTNWInfo.iViagIndicatorType = KHomeZoneIndicatorType;
       
   326     
       
   327     aTNWInfo.iMCNName.Copy(KMcnName.utf16());
       
   328     aTNWInfo.iMCNIndicatorType = KMcnIndicatorType;
       
   329 }
       
   330 
       
   331 /*!
       
   332   UT_InfoWidgetNetworkHandler::t_suspend
       
   333  */
       
   334 void UT_InfoWidgetNetworkHandler::t_suspend()
       
   335 {
       
   336     QVariant i(0);
       
   337     EXPECT(XQSettingsManager::readItemValue).returns(i);
       
   338     m_networkHandler->suspend();
       
   339     
       
   340     QVERIFY(verify());
       
   341 }
       
   342 
       
   343 /*!
       
   344   UT_InfoWidgetNetworkHandler::t_resume
       
   345  */
       
   346 void UT_InfoWidgetNetworkHandler::t_resume()
       
   347 {
       
   348     QVariant i(0);
       
   349     bool b = true;
       
   350     EXPECT(XQSettingsManager::readItemValue).returns(i);  
       
   351     EXPECT(XQSettingsManager::writeItemValue).returns(b);
       
   352     m_networkHandler->resume();
       
   353     
       
   354     QVERIFY(verify());
       
   355 }
       
   356 
       
   357 /*!
       
   358   UT_InfoWidgetNetworkHandler::t_serviceProviderName
       
   359  */
       
   360 void UT_InfoWidgetNetworkHandler::t_serviceProviderName()
       
   361 {
       
   362     QString s = "";
       
   363     QCOMPARE(m_networkHandler->serviceProviderName(), s);
       
   364 }
       
   365 
       
   366 /*!
       
   367   UT_InfoWidgetNetworkHandler::t_serviceProviderNameDisplayRequired
       
   368  */
       
   369 void UT_InfoWidgetNetworkHandler::t_serviceProviderNameDisplayRequired()
       
   370 {
       
   371     m_networkHandler->m_nwInfo.iServiceProviderNameDisplayReq = 
       
   372                 RMobilePhone::KDisplaySPNRequired; 
       
   373     QVERIFY(m_networkHandler->serviceProviderNameDisplayRequired() == true);
       
   374 
       
   375     m_networkHandler->m_nwInfo.iServiceProviderNameDisplayReq = 
       
   376             RMobilePhone::KDisplaySPNNotRequired; 
       
   377     QVERIFY(m_networkHandler->serviceProviderNameDisplayRequired() == false);
       
   378 }
       
   379 
       
   380 /*!
       
   381   UT_InfoWidgetNetworkHandler::t_logCurrentInfo
       
   382  */
       
   383 void UT_InfoWidgetNetworkHandler::t_logCurrentInfo()
       
   384 {
       
   385     m_networkHandler->logCurrentInfo();
       
   386     
       
   387     QVERIFY(verify());
       
   388 }
       
   389 
       
   390 /*!
       
   391   UT_InfoWidgetNetworkHandler::t_createLeave
       
   392  */
       
   393 void UT_InfoWidgetNetworkHandler::t_createLeave()
       
   394 {
       
   395     QVariant i(1);
       
   396     EXPECT(XQSettingsManager::readItemValue).returns(i);
       
   397     EXPECT(CreateL)
       
   398             .willOnce(invokeWithoutArguments(this, &doLeaveL));
       
   399     
       
   400     EXPECT_EXCEPTION(InfoWidgetNetworkHandler * p = new InfoWidgetNetworkHandler(););
       
   401 }
       
   402 
       
   403 QTEST_MAIN_S60(UT_InfoWidgetNetworkHandler)