utilities/mpmediacontroller/tsrc/unittest_mpvolumeslider/src/unittest_mpvolumeslider.cpp
author hgs
Fri, 06 Aug 2010 16:51:36 -0500
changeset 47 4cc1412daed0
permissions -rw-r--r--
201031
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
47
hgs
parents:
diff changeset
     1
/**
hgs
parents:
diff changeset
     2
* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
hgs
parents:
diff changeset
     3
* All rights reserved.
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
hgs
parents:
diff changeset
     8
*
hgs
parents:
diff changeset
     9
* Initial Contributors:
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
hgs
parents:
diff changeset
    11
*
hgs
parents:
diff changeset
    12
* Contributors:
hgs
parents:
diff changeset
    13
*
hgs
parents:
diff changeset
    14
* Description: Unit test for mpvolumeslider
hgs
parents:
diff changeset
    15
*
hgs
parents:
diff changeset
    16
*/
hgs
parents:
diff changeset
    17
hgs
parents:
diff changeset
    18
#include <QMetaType>
hgs
parents:
diff changeset
    19
hgs
parents:
diff changeset
    20
#include "stub/inc/mpenginefactory.h"
hgs
parents:
diff changeset
    21
#include "stub/inc/hbvolumesliderpopup.h"
hgs
parents:
diff changeset
    22
#include "unittest_mpvolumeslider.h"
hgs
parents:
diff changeset
    23
hgs
parents:
diff changeset
    24
hgs
parents:
diff changeset
    25
// Do this so we can access all member variables.
hgs
parents:
diff changeset
    26
#define private public
hgs
parents:
diff changeset
    27
#include "mpvolumeslider.h"
hgs
parents:
diff changeset
    28
#undef private
hgs
parents:
diff changeset
    29
hgs
parents:
diff changeset
    30
// Do this so private function can be accessed
hgs
parents:
diff changeset
    31
#include <../../src/mpvolumeslider.cpp>
hgs
parents:
diff changeset
    32
hgs
parents:
diff changeset
    33
/*!
hgs
parents:
diff changeset
    34
 Make our test case a stand-alone executable that runs all the test functions.
hgs
parents:
diff changeset
    35
 */
hgs
parents:
diff changeset
    36
int main(int argc, char *argv[])
hgs
parents:
diff changeset
    37
{
hgs
parents:
diff changeset
    38
    QApplication app(argc, argv);
hgs
parents:
diff changeset
    39
hgs
parents:
diff changeset
    40
    TestMpVolumeSlider tv;
hgs
parents:
diff changeset
    41
hgs
parents:
diff changeset
    42
    if ( argc > 1 ) {
hgs
parents:
diff changeset
    43
        return QTest::qExec( &tv, argc, argv);
hgs
parents:
diff changeset
    44
    }
hgs
parents:
diff changeset
    45
    else {
hgs
parents:
diff changeset
    46
        char *pass[3];
hgs
parents:
diff changeset
    47
        pass[0] = argv[0];
hgs
parents:
diff changeset
    48
        pass[1] = "-o";
hgs
parents:
diff changeset
    49
        pass[2] = "c:\\data\\unittest_mpvolumeslider.txt";
hgs
parents:
diff changeset
    50
hgs
parents:
diff changeset
    51
        return QTest::qExec(&tv, 3, pass);
hgs
parents:
diff changeset
    52
    }
hgs
parents:
diff changeset
    53
}
hgs
parents:
diff changeset
    54
hgs
parents:
diff changeset
    55
TestMpVolumeSlider::TestMpVolumeSlider()
hgs
parents:
diff changeset
    56
    : mTest(0)
hgs
parents:
diff changeset
    57
{
hgs
parents:
diff changeset
    58
}
hgs
parents:
diff changeset
    59
hgs
parents:
diff changeset
    60
TestMpVolumeSlider::~TestMpVolumeSlider()
hgs
parents:
diff changeset
    61
{
hgs
parents:
diff changeset
    62
    delete mTest;
hgs
parents:
diff changeset
    63
}
hgs
parents:
diff changeset
    64
hgs
parents:
diff changeset
    65
/*!
hgs
parents:
diff changeset
    66
 Called before the first testfunction is executed.
hgs
parents:
diff changeset
    67
 */
hgs
parents:
diff changeset
    68
void TestMpVolumeSlider::initTestCase()
hgs
parents:
diff changeset
    69
{
hgs
parents:
diff changeset
    70
}
hgs
parents:
diff changeset
    71
hgs
parents:
diff changeset
    72
/*!
hgs
parents:
diff changeset
    73
 Called after the last testfunction was executed.
hgs
parents:
diff changeset
    74
 */
hgs
parents:
diff changeset
    75
void TestMpVolumeSlider::cleanupTestCase()
hgs
parents:
diff changeset
    76
{
hgs
parents:
diff changeset
    77
}
hgs
parents:
diff changeset
    78
hgs
parents:
diff changeset
    79
/*!
hgs
parents:
diff changeset
    80
 Called before each testfunction is executed.
hgs
parents:
diff changeset
    81
 */
hgs
parents:
diff changeset
    82
void TestMpVolumeSlider::init()
hgs
parents:
diff changeset
    83
{
hgs
parents:
diff changeset
    84
    mTest = new MpVolumeSlider();
hgs
parents:
diff changeset
    85
}
hgs
parents:
diff changeset
    86
hgs
parents:
diff changeset
    87
/*!
hgs
parents:
diff changeset
    88
 Called after every testfunction.
hgs
parents:
diff changeset
    89
 */
hgs
parents:
diff changeset
    90
void TestMpVolumeSlider::cleanup()
hgs
parents:
diff changeset
    91
{
hgs
parents:
diff changeset
    92
    if (mTest)
hgs
parents:
diff changeset
    93
    {
hgs
parents:
diff changeset
    94
        delete mTest;
hgs
parents:
diff changeset
    95
        mTest = 0;
hgs
parents:
diff changeset
    96
hgs
parents:
diff changeset
    97
        MpEngineFactory::close();
hgs
parents:
diff changeset
    98
    }
hgs
parents:
diff changeset
    99
}
hgs
parents:
diff changeset
   100
hgs
parents:
diff changeset
   101
void TestMpVolumeSlider::testConstructor()
hgs
parents:
diff changeset
   102
{
hgs
parents:
diff changeset
   103
    QVERIFY( mTest );
hgs
parents:
diff changeset
   104
    QCOMPARE(mTest->mMpEngine->iMediaPropertyRequested.value(0), PropVolumeLevelMax);
hgs
parents:
diff changeset
   105
    QCOMPARE(mTest->mMpEngine->iMediaPropertyRequested.value(1), PropVolumeLevel);
hgs
parents:
diff changeset
   106
    QCOMPARE(mTest->mMpEngine->iMediaPropertyRequested.value(2), PropVolumeMuteState);
hgs
parents:
diff changeset
   107
}
hgs
parents:
diff changeset
   108
hgs
parents:
diff changeset
   109
void TestMpVolumeSlider::testShowVolumeSlider()
hgs
parents:
diff changeset
   110
{
hgs
parents:
diff changeset
   111
    mTest->mEngineVolumeMax = 100;
hgs
parents:
diff changeset
   112
    mTest->mEngineMuted = true;
hgs
parents:
diff changeset
   113
    mTest->mEngineVolumeLevel = 30;
hgs
parents:
diff changeset
   114
hgs
parents:
diff changeset
   115
    // While VolumeSlider is pressed showVolumeSlider() function does nothing.
hgs
parents:
diff changeset
   116
    mTest->mSliderPressed = true;
hgs
parents:
diff changeset
   117
    mTest->showVolumeSlider();
hgs
parents:
diff changeset
   118
    QVERIFY( !mTest->mVolumeSliderPopup );
hgs
parents:
diff changeset
   119
hgs
parents:
diff changeset
   120
    // When VolumeSlider is not being pressed, showVolumeSlider() attempts to show the slider.
hgs
parents:
diff changeset
   121
    mTest->mSliderPressed = false;
hgs
parents:
diff changeset
   122
    mTest->showVolumeSlider();
hgs
parents:
diff changeset
   123
    QVERIFY( mTest->mVolumeSliderPopup );
hgs
parents:
diff changeset
   124
    QCOMPARE( mTest->mVolumeSliderPopup->mValue, 0 );    //Currently in mute state
hgs
parents:
diff changeset
   125
    QVERIFY( mTest->mVolumeSliderPopup->isVisible() );
hgs
parents:
diff changeset
   126
hgs
parents:
diff changeset
   127
    // Clearing mute state
hgs
parents:
diff changeset
   128
    mTest->mEngineMuted = false;
hgs
parents:
diff changeset
   129
    mTest->showVolumeSlider();
hgs
parents:
diff changeset
   130
    QVERIFY( mTest->mVolumeSliderPopup );
hgs
parents:
diff changeset
   131
    QCOMPARE( mTest->mVolumeSliderPopup->mValue, 3 );
hgs
parents:
diff changeset
   132
    QVERIFY( mTest->mVolumeSliderPopup->isVisible() );
hgs
parents:
diff changeset
   133
}
hgs
parents:
diff changeset
   134
hgs
parents:
diff changeset
   135
void TestMpVolumeSlider::testHandleVolumeProperty()
hgs
parents:
diff changeset
   136
{
hgs
parents:
diff changeset
   137
    MpEngine *mpEngineInstance = MpEngineFactory::sharedEngine();
hgs
parents:
diff changeset
   138
    connect( this, SIGNAL(triggerVolumePropertyChanged( MpCommon::MpVolumeProperty, int ) ),
hgs
parents:
diff changeset
   139
             mpEngineInstance, SIGNAL( volumePropertyChanged( MpCommon::MpVolumeProperty, int ) ) );
hgs
parents:
diff changeset
   140
    
hgs
parents:
diff changeset
   141
    emit triggerVolumePropertyChanged( MpCommon::MaxVolume, 100 );
hgs
parents:
diff changeset
   142
    QCOMPARE( mTest->mEngineDataCompleted, 0x01 );
hgs
parents:
diff changeset
   143
    QCOMPARE( mTest->mEngineVolumeMax, 100 );
hgs
parents:
diff changeset
   144
    QVERIFY( !mTest->mVolumeSliderPopup );
hgs
parents:
diff changeset
   145
hgs
parents:
diff changeset
   146
    emit triggerVolumePropertyChanged( MpCommon::Volume, 0 );
hgs
parents:
diff changeset
   147
    QCOMPARE( mTest->mEngineDataCompleted, 0x03 );
hgs
parents:
diff changeset
   148
    QCOMPARE( mTest->mEngineVolumeLevel, 0 );
hgs
parents:
diff changeset
   149
    QVERIFY( mTest->mEngineMuted );
hgs
parents:
diff changeset
   150
    QVERIFY( !mTest->mVolumeSliderPopup );
hgs
parents:
diff changeset
   151
    emit triggerVolumePropertyChanged( MpCommon::Volume, 30 );
hgs
parents:
diff changeset
   152
    QCOMPARE( mTest->mEngineDataCompleted, 0x03 );
hgs
parents:
diff changeset
   153
    QCOMPARE( mTest->mEngineVolumeLevel, 30 );
hgs
parents:
diff changeset
   154
    QVERIFY( !mTest->mEngineMuted );
hgs
parents:
diff changeset
   155
    QVERIFY( !mTest->mVolumeSliderPopup );
hgs
parents:
diff changeset
   156
    mTest->mEngineDataCompleted = 0x07;
hgs
parents:
diff changeset
   157
    emit triggerVolumePropertyChanged( MpCommon::Volume, 40 );
hgs
parents:
diff changeset
   158
    QCOMPARE( mTest->mEngineDataCompleted, 0x07 );
hgs
parents:
diff changeset
   159
    QCOMPARE( mTest->mEngineVolumeLevel, 40 );
hgs
parents:
diff changeset
   160
    QVERIFY( !mTest->mEngineMuted );
hgs
parents:
diff changeset
   161
    QVERIFY( mTest->mVolumeSliderPopup->isVisible() );
hgs
parents:
diff changeset
   162
hgs
parents:
diff changeset
   163
    mTest->mEngineDataCompleted = 0x03;
hgs
parents:
diff changeset
   164
    mTest->mVolumeSliderPopup->setVisible( false );
hgs
parents:
diff changeset
   165
    emit triggerVolumePropertyChanged( MpCommon::MuteState, 1 );
hgs
parents:
diff changeset
   166
    QCOMPARE( mTest->mEngineDataCompleted, 0x07 );
hgs
parents:
diff changeset
   167
    QVERIFY( mTest->mEngineMuted );
hgs
parents:
diff changeset
   168
    QVERIFY( !mTest->mVolumeSliderPopup->isVisible() );
hgs
parents:
diff changeset
   169
    emit triggerVolumePropertyChanged( MpCommon::MuteState, 0 );
hgs
parents:
diff changeset
   170
    QCOMPARE( mTest->mEngineDataCompleted, 0x07 );
hgs
parents:
diff changeset
   171
    QVERIFY( !mTest->mEngineMuted );
hgs
parents:
diff changeset
   172
    QVERIFY( mTest->mVolumeSliderPopup->isVisible() );
hgs
parents:
diff changeset
   173
}
hgs
parents:
diff changeset
   174
hgs
parents:
diff changeset
   175
void TestMpVolumeSlider::testSliderPressed()
hgs
parents:
diff changeset
   176
{
hgs
parents:
diff changeset
   177
    mTest->mEngineMuted = false;
hgs
parents:
diff changeset
   178
    mTest->mEngineVolumeLevel = 20;
hgs
parents:
diff changeset
   179
    mTest->mEngineVolumeMax = 100;
hgs
parents:
diff changeset
   180
    mTest->initializeVolumeSliderPopup();
hgs
parents:
diff changeset
   181
    connect( this, SIGNAL( triggerSliderPressed() ), 
hgs
parents:
diff changeset
   182
             mTest->mVolumeSliderPopup, SIGNAL( sliderPressed() ) );
hgs
parents:
diff changeset
   183
hgs
parents:
diff changeset
   184
    emit triggerSliderPressed();
hgs
parents:
diff changeset
   185
    QVERIFY( mTest->mSliderPressed );
hgs
parents:
diff changeset
   186
}
hgs
parents:
diff changeset
   187
hgs
parents:
diff changeset
   188
void TestMpVolumeSlider::testSliderReleased()
hgs
parents:
diff changeset
   189
{
hgs
parents:
diff changeset
   190
    mTest->mEngineMuted = false;
hgs
parents:
diff changeset
   191
    mTest->mEngineVolumeLevel = 20;
hgs
parents:
diff changeset
   192
    mTest->mEngineVolumeMax = 100;
hgs
parents:
diff changeset
   193
    mTest->initializeVolumeSliderPopup();
hgs
parents:
diff changeset
   194
    connect( this, SIGNAL( triggerSliderReleased() ), 
hgs
parents:
diff changeset
   195
             mTest->mVolumeSliderPopup, SIGNAL( sliderReleased() ) );
hgs
parents:
diff changeset
   196
    mTest->mSliderPressed = true;
hgs
parents:
diff changeset
   197
hgs
parents:
diff changeset
   198
    emit triggerSliderReleased();
hgs
parents:
diff changeset
   199
    QVERIFY( !mTest->mSliderPressed );
hgs
parents:
diff changeset
   200
}
hgs
parents:
diff changeset
   201
hgs
parents:
diff changeset
   202
void TestMpVolumeSlider::testMuteIconClicked()
hgs
parents:
diff changeset
   203
{
hgs
parents:
diff changeset
   204
    mTest->mEngineMuted = false;
hgs
parents:
diff changeset
   205
    mTest->mEngineVolumeLevel = 20;
hgs
parents:
diff changeset
   206
    mTest->mEngineVolumeMax = 100;
hgs
parents:
diff changeset
   207
    mTest->initializeVolumeSliderPopup();
hgs
parents:
diff changeset
   208
    connect( this, SIGNAL( triggerIconClicked() ), 
hgs
parents:
diff changeset
   209
             mTest->mVolumeSliderPopup, SIGNAL( iconClicked() ) );
hgs
parents:
diff changeset
   210
hgs
parents:
diff changeset
   211
    mTest->mVolumeSliderPopup->setValue( 0 );
hgs
parents:
diff changeset
   212
    emit triggerIconClicked();
hgs
parents:
diff changeset
   213
    QCOMPARE( mTest->mMpEngine->iMediaCommandReceived, CmdMuteVolume );
hgs
parents:
diff changeset
   214
    QVERIFY( mTest->mEngineMuted );
hgs
parents:
diff changeset
   215
hgs
parents:
diff changeset
   216
    mTest->mVolumeSliderPopup->setValue( 1 );
hgs
parents:
diff changeset
   217
    emit triggerIconClicked();
hgs
parents:
diff changeset
   218
    QCOMPARE( mTest->mMpEngine->iMediaCommandReceived, CmdUnmuteVolume );
hgs
parents:
diff changeset
   219
    QVERIFY( !mTest->mEngineMuted );
hgs
parents:
diff changeset
   220
}
hgs
parents:
diff changeset
   221
hgs
parents:
diff changeset
   222
void TestMpVolumeSlider::testVolumeSliderChanged()
hgs
parents:
diff changeset
   223
{
hgs
parents:
diff changeset
   224
    mTest->mEngineMuted = false;
hgs
parents:
diff changeset
   225
    mTest->mEngineVolumeLevel = 20;
hgs
parents:
diff changeset
   226
    mTest->mEngineVolumeMax = 100;
hgs
parents:
diff changeset
   227
    mTest->initializeVolumeSliderPopup();
hgs
parents:
diff changeset
   228
    connect( this, SIGNAL( triggerValueChanged( int ) ), 
hgs
parents:
diff changeset
   229
             mTest->mVolumeSliderPopup, SIGNAL( valueChanged( int ) ) );
hgs
parents:
diff changeset
   230
hgs
parents:
diff changeset
   231
    mTest->mEngineVolumeLevel = 60;
hgs
parents:
diff changeset
   232
    mTest->mEngineMuted = false;
hgs
parents:
diff changeset
   233
    // Same values slider and engine
hgs
parents:
diff changeset
   234
    emit triggerValueChanged( 6 );
hgs
parents:
diff changeset
   235
    QTest::qWait(25);
hgs
parents:
diff changeset
   236
    QCOMPARE( mTest->mMpEngine->iMediaCommandReceived, CmdNone );
hgs
parents:
diff changeset
   237
    QCOMPARE( mTest->mMpEngine->iCommandValue, -1 );
hgs
parents:
diff changeset
   238
    // Slider value smaller than engine
hgs
parents:
diff changeset
   239
    mTest->mMpEngine->iMediaCommandReceived = CmdNone;
hgs
parents:
diff changeset
   240
    mTest->mMpEngine->iCommandValue = -1;
hgs
parents:
diff changeset
   241
    emit triggerValueChanged( 0 );
hgs
parents:
diff changeset
   242
    QTest::qWait(25);
hgs
parents:
diff changeset
   243
    QCOMPARE( mTest->mMpEngine->iMediaCommandReceived, CmdSetVolumeLevel );
hgs
parents:
diff changeset
   244
    QCOMPARE( mTest->mMpEngine->iCommandValue, 0 );
hgs
parents:
diff changeset
   245
    // Slider value bigger than engine
hgs
parents:
diff changeset
   246
    mTest->mMpEngine->iMediaCommandReceived = CmdNone;
hgs
parents:
diff changeset
   247
    mTest->mMpEngine->iCommandValue = -1;
hgs
parents:
diff changeset
   248
    emit triggerValueChanged( 7 );
hgs
parents:
diff changeset
   249
    QTest::qWait(25);
hgs
parents:
diff changeset
   250
    QCOMPARE( mTest->mMpEngine->iMediaCommandReceived, CmdSetVolumeLevel );
hgs
parents:
diff changeset
   251
    QCOMPARE( mTest->mMpEngine->iCommandValue, 70 );
hgs
parents:
diff changeset
   252
hgs
parents:
diff changeset
   253
    mTest->mEngineMuted = true;
hgs
parents:
diff changeset
   254
    // Slider changes to 0 while engine in mute state.
hgs
parents:
diff changeset
   255
    mTest->mMpEngine->iMediaCommandReceived = CmdNone;
hgs
parents:
diff changeset
   256
    mTest->mMpEngine->iCommandValue = -1;
hgs
parents:
diff changeset
   257
    emit triggerValueChanged( 0 );
hgs
parents:
diff changeset
   258
    QTest::qWait(25);
hgs
parents:
diff changeset
   259
    QCOMPARE( mTest->mMpEngine->iMediaCommandReceived, CmdNone );
hgs
parents:
diff changeset
   260
    QCOMPARE( mTest->mMpEngine->iCommandValue, -1 );
hgs
parents:
diff changeset
   261
    // Slider changes other than 0 while engine in mute state.
hgs
parents:
diff changeset
   262
    mTest->mMpEngine->iMediaCommandReceived = CmdNone;
hgs
parents:
diff changeset
   263
    mTest->mMpEngine->iCommandValue = -1;
hgs
parents:
diff changeset
   264
    emit triggerValueChanged( 8 );
hgs
parents:
diff changeset
   265
    QTest::qWait(25);
hgs
parents:
diff changeset
   266
    QCOMPARE( mTest->mMpEngine->iMediaCommandReceived, CmdSetVolumeLevel );
hgs
parents:
diff changeset
   267
    QCOMPARE( mTest->mMpEngine->iCommandValue, 80 );
hgs
parents:
diff changeset
   268
}
hgs
parents:
diff changeset
   269
hgs
parents:
diff changeset
   270
void TestMpVolumeSlider::testInitializeVolumeSliderPopup()
hgs
parents:
diff changeset
   271
{
hgs
parents:
diff changeset
   272
    mTest->mEngineMuted = false;
hgs
parents:
diff changeset
   273
    mTest->mEngineVolumeLevel = 20;
hgs
parents:
diff changeset
   274
    mTest->mEngineVolumeMax = 100;
hgs
parents:
diff changeset
   275
hgs
parents:
diff changeset
   276
    mTest->initializeVolumeSliderPopup();
hgs
parents:
diff changeset
   277
    QVERIFY( mTest->mVolumeSliderPopup );
hgs
parents:
diff changeset
   278
    QCOMPARE( mTest->mVolumeSliderPopup->mMinRange, 0 );
hgs
parents:
diff changeset
   279
    QCOMPARE( mTest->mVolumeSliderPopup->mMaxRange, 10 );
hgs
parents:
diff changeset
   280
    QCOMPARE( mTest->mVolumeSliderPopup->mSingleStep, 1 );
hgs
parents:
diff changeset
   281
    QCOMPARE( mTest->mVolumeSliderPopup->mSliderTickPosition, Hb::NoSliderTicks );
hgs
parents:
diff changeset
   282
    QCOMPARE( mTest->mSliderStep, 10 );
hgs
parents:
diff changeset
   283
}
hgs
parents:
diff changeset
   284
hgs
parents:
diff changeset
   285
hgs
parents:
diff changeset
   286
// End of file