radiohswidget/tsrc/src/t_radiohswidget.cpp
branchRCL_3
changeset 20 93c594350b9a
parent 19 cce62ebc198e
--- a/radiohswidget/tsrc/src/t_radiohswidget.cpp	Tue Aug 31 15:15:02 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,405 +0,0 @@
-/*
-* Copyright (c) 2010 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:
-*
-*/
-
-// System includes
-#include <QVariant>
-
-// User Includes
-#include "t_radiohswidget.h"
-#include "xqsettingsmanager.h"
-#include "xqapplicationmanager.h"
-#include "xqaiwrequest.h"
-#include "xqaiwinterfacedescriptor.h"
-#include "radioservicedef.h"
-#include "radiologger.h"
-
-// Constants
-/**
-* From ProfileEngineSDKCRKeys.h
-* The id of the currently active profile, integer value.
-* Possible values:
-*
-* 0 = General profile (default value)<br>
-* 1 = Silent profile<br>
-* 2 = Meeting profile<br>
-* 3 = Outdoor profile<br>
-* 4 = Pager profile<br>
-* 5 = Off-line profile<br>
-* 6 = Drive profile<br>
-* 30-49 = User-created profiles<br>
-**/
-const int PROFILE_GENERAL(0); 
-const int PROFILE_SILENT(1); 
-const int PROFILE_MEETING(2); 
-const int PROFILE_OUTDOOR(3); 
-const int PROFILE_PAGER(4); 
-const int PROFILE_OFFLINE(5); 
-const int PROFILE_DRIVE(6); 
-const int PROFILE_USER_CREATED(35);
-
-/** Requests are not embedded. */
-const bool EMBEDDED_REQUEST(false);
-
-/** Last request should be answered with empty reply. */
-int EMPTY_REPLY(-5);
-
-/** Test values for favorite station count. */
-const int FAVORITE_STATION_COUNT_INVALID_TOO_LOW1(-56);
-const int FAVORITE_STATION_COUNT_INVALID_TOO_LOW2(-1);
-const int FAVORITE_STATION_COUNT_VALID_LOWER_BOUNDARY(0);
-const int FAVORITE_STATION_COUNT_VALID1(1);
-const int FAVORITE_STATION_COUNT_VALID2(2);
-const int FAVORITE_STATION_COUNT_VALID3(3);
-const int FAVORITE_STATION_COUNT_VALID4(9);
-const int FAVORITE_STATION_COUNT_VALID5(78);
-const int FAVORITE_STATION_COUNT_VALID_UPPER_BOUNDARY(100);
-const int FAVORITE_STATION_COUNT_INVALID_TOO_HIGH1(101);
-const int FAVORITE_STATION_COUNT_INVALID_TOO_HIGH2(1256);
-
-/** Test values for textual information. */
-const QString TEST_FREQUENCY("99.9");
-const QString TEST_NAME("Radio Test");
-const QString TEST_GENRE("Test GenRe");
-const QString TEST_RADIO_TEXT("Test RDS");
-const QString TEST_DYNAMIC_PSNAME("Dynamic PS Name test");
-const QString TEST_EMPTY_STRING("");
-const QString TEST_INVALID_STRING;
-/** This test string contains 1000 characters. */
-const QString TEST_TOO_LONG_STRING("1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890");
-
-/** Test values for service notification types. */
-const int RADIO_SERVICE_NOTIFICATION_ID_INVALID_TOO_LOW1(-357);
-const int RADIO_SERVICE_NOTIFICATION_ID_INVALID_TOO_LOW2(-1);
-const int RADIO_SERVICE_NOTIFICATION_ID_INVALID_TOO_LOW3(0);
-const int RADIO_SERVICE_NOTIFICATION_ID_VALID_LOWER_BOUNDARY(1);
-const int RADIO_SERVICE_NOTIFICATION_ID_VALID_UPPER_BOUNDARY(8);
-const int RADIO_SERVICE_NOTIFICATION_ID_INVALID_TOO_HIGH1(9);
-const int RADIO_SERVICE_NOTIFICATION_ID_INVALID_TOO_HIGH2(57982);
-const int RADIO_STATUS_INVALID_TOO_LOW1(-581);
-const int RADIO_STATUS_INVALID_TOO_LOW2(-1);
-const int RADIO_STATUS_VALID_LOWER_BOUNDARY(0);
-const int RADIO_STATUS_VALID_UPPER_BOUNDARY(5);
-const int RADIO_STATUS_INVALID_TOO_HIGH1(6);
-const int RADIO_STATUS_INVALID_TOO_HIGH2(456);
-
-/** Mock returns for settings manager stub. */
-QVariant settings_manager_mock_return_profile;
-QVariant settings_manager_mock_return_2nd_profile;
-bool settings_manager_mock_bool_return;
-
-/** These request are defined in stub xqapplicationmanager.cpp. */
-extern XQAiwRequest *application_manager_mock_refresh_request;
-extern XQAiwRequest *application_manager_mock_monitor_request;
-
-/** List for request mocks. */
-QVariantList request_mocks;
-/** Amount of requests send. */
-int send_count;
-
-
-/*!
-    \class TestRadioHsWidget
-    \brief Unit testing for FM Radio hs widget.
-
-    TestRadioHsWidget implements needed functions for the FM Radio home screen
-    widget unit tests.
-*/
-
-// ======== MEMBER FUNCTIONS ========
-
-/*!
-    Main function.
-    
-    There's been problems with QTEST_MAIN macro, so main function is defined
-    here.
-*/
-int main(int /* argc*/, char *argv[])
-{
-    LOG_METHOD_ENTER;
-    TestRadioHsWidget tv;
-
-    char *pass[3];
-    pass[0] = argv[0];
-    pass[1] = "-o";
-    pass[2] = "c:\\data\\testradiohswidget.txt";
-    
-    int res = QTest::qExec(&tv, 3, pass);
-
-    return res;
-}
-
-/*!
-    Constructor.
- */
-TestRadioHsWidget::TestRadioHsWidget()
-{
-    LOG_METHOD_ENTER;
-}
-
-
-/*!
-    Destructor.
- */
-TestRadioHsWidget::~TestRadioHsWidget()
-{
-    LOG_METHOD_ENTER;
-}
-
-/*!
-    Called before each testfunction is executed.
- */
-void TestRadioHsWidget::init()
-{
-    LOG_METHOD_ENTER;
-    settings_manager_mock_return_profile = PROFILE_GENERAL;
-    request_mocks.clear();
-    mSendInfos.clear();
-    send_count = -1;
-    mRadioHsWidgetStub.data()->reset();
-}
-
-/*!
-    Called after every testfunction.
- */
-void TestRadioHsWidget::cleanup()
-{
-    LOG_METHOD_ENTER;
-}
-
-/*!
-    Called before the first testfunction is executed
- */
-void TestRadioHsWidget::initTestCase()
-{
-    LOG_METHOD_ENTER;
-    mRadioHsWidgetStub.reset(new RadioHsWidget());
-    QVERIFY(mRadioHsWidgetStub);
-    mProfileReader.reset(new RadioHsWidgetProfileReader(mRadioHsWidgetStub.data()));
-    QVERIFY(mProfileReader);
-    mServiceClient.reset(new RadioHsWidgetRadioServiceClient(mRadioHsWidgetStub.data()));
-    QVERIFY(mServiceClient);
-}
-
-/*!
-    Called after the last testfunction was executed.
- */
-void TestRadioHsWidget::cleanupTestCase()
-{
-    LOG_METHOD_ENTER;
-}
-
-/*!
-    Tests RadioHsWidgetProfileReader and it's isCurrentProfileOffline()
-    function.
- */
-void TestRadioHsWidget::offlineModeTest()
-{
-    LOG_METHOD;
-    settings_manager_mock_return_profile = PROFILE_GENERAL;
-    bool isOffline = mProfileReader.data()->isCurrentProfileOffline();
-    QVERIFY2(( isOffline == false ), "FmRadioHsWidget:RadioHsWidget profile is offline");
-    settings_manager_mock_return_profile = PROFILE_OFFLINE;
-    isOffline = mProfileReader.data()->isCurrentProfileOffline();
-    QVERIFY2(( isOffline == true ), "FmRadioHsWidget:RadioHsWidget profile is not offline");
-    settings_manager_mock_return_profile = PROFILE_USER_CREATED;
-    isOffline = mProfileReader.data()->isCurrentProfileOffline();
-    QVERIFY2(( isOffline == false ), "FmRadioHsWidget:RadioHsWidget profile is offline");
-}
-
-/*!
-    Tests RadioHsWidgetRadioServiceClient class and it's ability to receive
-    and forward valid information.
- */
-void TestRadioHsWidget::validReplies()
-{
-    LOG_METHOD;
-    // Replies that should be ok.
-    createSendInfo(RadioServiceNotification::FavoriteCount, QVariant(FAVORITE_STATION_COUNT_VALID_LOWER_BOUNDARY));
-    createSendInfo(RadioServiceNotification::FavoriteCount, QVariant(FAVORITE_STATION_COUNT_VALID1));
-    createSendInfo(RadioServiceNotification::FavoriteCount, QVariant(FAVORITE_STATION_COUNT_VALID2));
-    createSendInfo(RadioServiceNotification::FavoriteCount, QVariant(FAVORITE_STATION_COUNT_VALID3));
-    createSendInfo(RadioServiceNotification::FavoriteCount, QVariant(FAVORITE_STATION_COUNT_VALID4));
-    createSendInfo(RadioServiceNotification::FavoriteCount, QVariant(FAVORITE_STATION_COUNT_VALID5));
-    createSendInfo(RadioServiceNotification::FavoriteCount, QVariant(FAVORITE_STATION_COUNT_VALID_UPPER_BOUNDARY));
-    createSendInfo(RadioServiceNotification::CurrentIsFavorite, QVariant(true));
-    createSendInfo(RadioServiceNotification::CurrentIsFavorite, QVariant(false));
-    createSendInfo(RadioServiceNotification::RadioStatus, QVariant(RadioStatus::UnSpecified));
-    createSendInfo(RadioServiceNotification::RadioStatus, QVariant(RadioStatus::Playing));
-    createSendInfo(RadioServiceNotification::RadioStatus, QVariant(RadioStatus::Muted));
-    createSendInfo(RadioServiceNotification::RadioStatus, QVariant(RadioStatus::Seeking));
-    createSendInfo(RadioServiceNotification::RadioStatus, QVariant(RadioStatus::NoAntenna));
-    createSendInfo(RadioServiceNotification::RadioStatus, QVariant(RadioStatus::PoweringOff));
-    createSendInfo(RadioServiceNotification::RadioStatus, QVariant(RADIO_STATUS_VALID_LOWER_BOUNDARY));
-    createSendInfo(RadioServiceNotification::RadioStatus, QVariant(RADIO_STATUS_VALID_UPPER_BOUNDARY));
-    createSendInfo(RadioServiceNotification::Frequency, QVariant(TEST_FREQUENCY));
-    createSendInfo(RadioServiceNotification::Name, QVariant(TEST_NAME));
-    createSendInfo(RadioServiceNotification::Name, QVariant(TEST_EMPTY_STRING));
-    createSendInfo(RadioServiceNotification::Genre, QVariant(TEST_GENRE));
-    createSendInfo(RadioServiceNotification::RadioText, QVariant(TEST_RADIO_TEXT));
-    createSendInfo(RadioServiceNotification::DynamicPS, QVariant(TEST_DYNAMIC_PSNAME));
-    // Empty reply should be last to put RServiceClient to make an request, which is not replied. 
-    createSendInfo(EMPTY_REPLY, QVariant(EMPTY_REPLY));
-
-    send_count = mSendInfos.count();
-    
-    mServiceClient.data()->startMonitoring(FmRadio::VisibiltyToBackground);
-    mServiceClient.data()->stopMonitoring();
-    
-    int receivedCount = mRadioHsWidgetStub.data()->receivedInformationCount();
-    QVERIFY2((receivedCount == send_count - 1), "Send and received counts doesn't match");
-    
-    ReceivedInfo temp;
-    for (int i = 0; i < send_count - 1; i++) {
-        temp = mRadioHsWidgetStub.data()->receivedInformation();
-        QVERIFY(temp.informationType == mSendInfos.at(i).informationType);
-        verifyReceivedInformation(temp.informationType, temp.information, mSendInfos.at(i).information);
-    }
-}
-
-/*!
-    Tests RadioHsWidgetRadioServiceClient class and it's ability to receive
-    and forward invalid information.
- */
-void TestRadioHsWidget::invalidReplies()
-{
-    LOG_METHOD;
-    QList<int> skipSendInfo;
-    // Replies that should not be ok.
-    createSendInfo(RadioServiceNotification::FavoriteCount, QVariant(FAVORITE_STATION_COUNT_INVALID_TOO_LOW1));
-    createSendInfo(RadioServiceNotification::FavoriteCount, QVariant(FAVORITE_STATION_COUNT_INVALID_TOO_LOW2));
-    createSendInfo(RadioServiceNotification::FavoriteCount, QVariant(FAVORITE_STATION_COUNT_INVALID_TOO_HIGH1));
-    createSendInfo(RadioServiceNotification::FavoriteCount, QVariant(FAVORITE_STATION_COUNT_INVALID_TOO_HIGH2));
-    createSendInfo(RadioServiceNotification::FavoriteCount, QVariant());
-    skipSendInfo.append(request_mocks.count() - 1);
-    createSendInfo(RadioServiceNotification::CurrentIsFavorite, QVariant());
-    skipSendInfo.append(request_mocks.count() - 1);
-    createSendInfo(RadioServiceNotification::RadioStatus, QVariant(RADIO_STATUS_INVALID_TOO_LOW1));
-    createSendInfo(RadioServiceNotification::RadioStatus, QVariant(RADIO_STATUS_INVALID_TOO_LOW1));
-    createSendInfo(RadioServiceNotification::RadioStatus, QVariant(RADIO_STATUS_INVALID_TOO_HIGH1));
-    createSendInfo(RadioServiceNotification::RadioStatus, QVariant(RADIO_STATUS_INVALID_TOO_HIGH2));
-    createSendInfo(RadioServiceNotification::RadioStatus, QVariant());
-    skipSendInfo.append(request_mocks.count() - 1);
-    createSendInfo(RadioServiceNotification::Frequency, QVariant());
-    skipSendInfo.append(request_mocks.count() - 1);
-    createSendInfo(RadioServiceNotification::Name, QVariant(TEST_INVALID_STRING));
-    createSendInfo(RadioServiceNotification::Name, QVariant(TEST_TOO_LONG_STRING));
-    createSendInfo(RadioServiceNotification::Name, QVariant());
-    skipSendInfo.append(request_mocks.count() - 1);
-    createSendInfo(RadioServiceNotification::Genre, QVariant());
-    skipSendInfo.append(request_mocks.count() - 1);
-    createSendInfo(RadioServiceNotification::RadioText, QVariant());
-    skipSendInfo.append(request_mocks.count() - 1);
-    createSendInfo(RadioServiceNotification::DynamicPS, QVariant());
-    skipSendInfo.append(request_mocks.count() - 1);
-    // Replies that should generate a warning.
-    createSendInfo(RADIO_SERVICE_NOTIFICATION_ID_VALID_LOWER_BOUNDARY, QVariant(TEST_EMPTY_STRING));
-    createSendInfo(RADIO_SERVICE_NOTIFICATION_ID_VALID_UPPER_BOUNDARY, QVariant(TEST_EMPTY_STRING));
-    createSendInfo(RADIO_SERVICE_NOTIFICATION_ID_INVALID_TOO_LOW1, QVariant(TEST_EMPTY_STRING));
-    createSendInfo(RADIO_SERVICE_NOTIFICATION_ID_INVALID_TOO_LOW2, QVariant(TEST_EMPTY_STRING));
-    createSendInfo(RADIO_SERVICE_NOTIFICATION_ID_INVALID_TOO_LOW3, QVariant(TEST_EMPTY_STRING));
-    createSendInfo(RADIO_SERVICE_NOTIFICATION_ID_INVALID_TOO_HIGH1, QVariant(TEST_EMPTY_STRING));
-    createSendInfo(RADIO_SERVICE_NOTIFICATION_ID_INVALID_TOO_HIGH2, QVariant(TEST_EMPTY_STRING));
-    // Empty reply should be last to put RServiceClient to make an request, which is not replied. 
-    createSendInfo(EMPTY_REPLY, QVariant(EMPTY_REPLY));
-    
-    send_count = mSendInfos.count();
-    
-    mServiceClient.data()->startMonitoring(FmRadio::VisibiltyToBackground);
-    mServiceClient.data()->stopMonitoring();
-    
-    int receivedCount = mRadioHsWidgetStub.data()->receivedInformationCount();
-    int skippedCount = skipSendInfo.count();
-    QVERIFY2((receivedCount == send_count - skippedCount - 1), "Send and received counts doesn't match");
-    
-    ReceivedInfo temp;
-    for (int i = 0; i < send_count - 1; i++) {
-        if (skipSendInfo.contains(i)) {
-            // Skip verification for information that was filtered in
-            // RadioHsWidgetRadioServiceClient.
-            continue;
-        }
-        temp = mRadioHsWidgetStub.data()->receivedInformation();
-        QVERIFY(temp.informationType == mSendInfos.at(i).informationType);
-        verifyReceivedInformation(temp.informationType, temp.information, mSendInfos.at(i).information);
-    }
-}
-
-/*!
-    Helper function to store send information and append it to a request
-    mocks. 
- */
-void TestRadioHsWidget::createSendInfo(int informationType, const QVariant information)
-{
-    SendInfo info;
-    QVariantList notificationList;
-    
-    info.informationType = informationType;
-    info.information = information;
-    info.data = QVariant(mServiceClient.data()->
-        createRadioNotificationData(
-            info.informationType,
-            info.information
-            ));
-    
-    mSendInfos.append(info);
-
-    notificationList.append(info.data);
-    request_mocks.append(QVariant(notificationList));
-}
-
-/*!
-    Helper function to verify receved information.
- */
-void TestRadioHsWidget::verifyReceivedInformation(int informationType,
-    const QVariant &receivedInformation, const QVariant &sendInformation)
-{
-    switch (informationType) {
-    case RadioServiceNotification::CurrentIsFavorite:
-        QVERIFY(receivedInformation.canConvert(QVariant::Bool));
-        QCOMPARE(receivedInformation.toBool(), sendInformation.toBool());
-        break;
-    case RadioServiceNotification::FavoriteCount:
-        // Fall through because of similar handling
-    case RadioServiceNotification::RadioStatus:
-        QVERIFY(receivedInformation.canConvert(QVariant::Int));
-        QCOMPARE(receivedInformation.toInt(), sendInformation.toInt());
-        break;
-    case RadioServiceNotification::Frequency:
-        // Fall through because of similar type of information and thus
-        // similar handling
-    case RadioServiceNotification::Name:
-        // Fall through because of similar type of information and thus
-        // similar handling
-    case RadioServiceNotification::Genre:
-        // Fall through because of similar type of information and thus
-        // similar handling
-    case RadioServiceNotification::RadioText:
-        // Fall through because of similar type of information and thus
-        // similar handling
-    case RadioServiceNotification::DynamicPS:
-        QVERIFY(receivedInformation.canConvert(QVariant::String));
-        QCOMPARE(receivedInformation.toString(), sendInformation.toString());
-        break;
-    default:
-        QWARN("Default case, shouldn't be here except if specifically testing RadioServiceNotification id out of bounds.");
-        QVERIFY(receivedInformation.canConvert(QVariant::String));
-        QCOMPARE(receivedInformation.toString(), sendInformation.toString());
-        break;
-    }
-}
-
-//QTEST_MAIN(t_radiohswidget)