videoplayback/hbvideoplaybackview/tsrc/testprogressbar/src/testprogressbar.cpp
changeset 52 e3cecb93e76a
parent 47 45e72b57a2fd
child 59 a76e86df7ccd
equal deleted inserted replaced
47:45e72b57a2fd 52:e3cecb93e76a
     1 /**
       
     2 * Copyright (c) 2010 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:   tester for methods in TestMPXVideoPlaybackButtonBar
       
    15 *
       
    16 */
       
    17 
       
    18 // Version : %version:  6 %
       
    19 
       
    20 
       
    21 #include <qdebug>
       
    22 #include <hbmainwindow.h>
       
    23 #include <hbapplication.h>
       
    24 #include <qgraphicssceneevent>
       
    25 #include <hbprogressslider.h>
       
    26 
       
    27 
       
    28 #include "testprogressbar.h"
       
    29 #include "mpxvideoplaybackviewfiledetails.h"
       
    30 #include "mpxvideoplaybackcontrolscontroller.h"
       
    31 
       
    32 #define private public
       
    33 #include "mpxvideoplaybackprogressbar.h"
       
    34 #undef private
       
    35 
       
    36 // -------------------------------------------------------------------------------------------------
       
    37 // main
       
    38 // -------------------------------------------------------------------------------------------------
       
    39 //
       
    40 int main(int argc, char *argv[])
       
    41 {
       
    42     MPX_ENTER_EXIT(_L("TestProgressBar::Main()"));
       
    43 
       
    44     HbApplication app(argc, argv);
       
    45     HbMainWindow window;
       
    46 
       
    47     TestProgressBar tv;
       
    48 
       
    49     char *pass[3];
       
    50     pass[0] = argv[0];
       
    51     pass[1] = "-o";
       
    52     pass[2] = "c:\\data\\testprogressbar.txt";
       
    53 
       
    54     int res = QTest::qExec(&tv, 3, pass);
       
    55 
       
    56     return res;
       
    57 }
       
    58 
       
    59 
       
    60 // -------------------------------------------------------------------------------------------------
       
    61 // init
       
    62 // -------------------------------------------------------------------------------------------------
       
    63 //
       
    64 void TestProgressBar::init()
       
    65 {
       
    66     MPX_ENTER_EXIT(_L("TestProgressBar::init()"));
       
    67 }
       
    68 
       
    69 // -------------------------------------------------------------------------------------------------
       
    70 // setup
       
    71 // -------------------------------------------------------------------------------------------------
       
    72 //
       
    73 void TestProgressBar::setup()
       
    74 {
       
    75     MPX_ENTER_EXIT(_L("TestProgressBar::setup()"));
       
    76 
       
    77     mController = new QMPXVideoPlaybackControlsController();
       
    78     mProgBar = new QMPXVideoPlaybackProgressBar( mController );
       
    79 
       
    80     mProgBar->initialize();
       
    81 }
       
    82 
       
    83 // -------------------------------------------------------------------------------------------------
       
    84 // cleanup
       
    85 // -------------------------------------------------------------------------------------------------
       
    86 //
       
    87 void TestProgressBar::cleanup()
       
    88 {
       
    89     MPX_ENTER_EXIT(_L("TestProgressBar::cleanup()"));
       
    90 
       
    91     if ( mController )
       
    92     {
       
    93         delete mController;
       
    94         mController = NULL;
       
    95     }
       
    96 
       
    97     if ( mProgBar )
       
    98     {
       
    99         delete mProgBar;
       
   100         mProgBar = NULL;
       
   101     }
       
   102 }
       
   103 
       
   104 // -------------------------------------------------------------------------------------------------
       
   105 // testHandleSliderPressed
       
   106 // -------------------------------------------------------------------------------------------------
       
   107 //
       
   108 void TestProgressBar::testHandleSliderPressed()
       
   109 {
       
   110     MPX_ENTER_EXIT(_L("TestProgressBar::testHandleSliderPressed()"));
       
   111 
       
   112     setup();
       
   113 
       
   114     //
       
   115     // If it is playing state
       
   116     //
       
   117     mController->mState = EPbStatePlaying;
       
   118 
       
   119     emit mProgBar->mProgressSlider->press();
       
   120 
       
   121     QVERIFY( mController->mTimerAction == EMPXTimerCancel );
       
   122     QVERIFY( mController->mCommand == EMPXPbvCmdCustomPause );
       
   123     QVERIFY( mProgBar->mSliderDragging );
       
   124     QVERIFY( mProgBar->mNeedToResumeAfterSetPosition );
       
   125 
       
   126     //
       
   127     // If it is pause state
       
   128     //
       
   129     mController->mState = EPbStatePaused;
       
   130     mController->mCommand = EMPXPbvCmdStop;
       
   131 
       
   132     emit mProgBar->mProgressSlider->press();
       
   133 
       
   134     QVERIFY( mController->mTimerAction == EMPXTimerCancel );
       
   135     QVERIFY( mController->mCommand == EMPXPbvCmdStop );
       
   136     QVERIFY( mProgBar->mSliderDragging );
       
   137     QVERIFY( mProgBar->mNeedToResumeAfterSetPosition );
       
   138 
       
   139     cleanup();
       
   140 }
       
   141 
       
   142 // -------------------------------------------------------------------------------------------------
       
   143 // testHandleSliderReleased
       
   144 // -------------------------------------------------------------------------------------------------
       
   145 //
       
   146 void TestProgressBar::testHandleSliderReleased()
       
   147 {
       
   148     MPX_ENTER_EXIT(_L("TestProgressBar::testHandleSliderReleased()"));
       
   149 
       
   150     setup();
       
   151 
       
   152     //
       
   153     // Moved position >= duration
       
   154     //
       
   155     mProgBar->mDuration = 120;
       
   156     mProgBar->mProgressSlider->mSliderValue = 130;
       
   157     mController->mTimerAction = EMPXTimerCancel;
       
   158     mController->mCommand = EMPXPbvCmdStop;
       
   159 
       
   160     emit mProgBar->mProgressSlider->release();
       
   161     QVERIFY( mController->mTimerAction == EMPXTimerReset );
       
   162     QVERIFY( ! mProgBar->mSliderDragging );
       
   163     QVERIFY( mController->mCommand == EMPXPbvCmdEndOfClip );
       
   164 
       
   165     //
       
   166     // Moved position < 0
       
   167     //
       
   168     mProgBar->mProgressSlider->mSliderValue = -1;
       
   169     mController->mTimerAction = EMPXTimerCancel;
       
   170     mController->mCommand = EMPXPbvCmdStop;
       
   171     mController->mValue = 100;
       
   172 
       
   173     emit mProgBar->mProgressSlider->release();
       
   174     QVERIFY( mController->mTimerAction == EMPXTimerReset );
       
   175     QVERIFY( ! mProgBar->mSliderDragging );
       
   176     QVERIFY( mController->mCommand == EMPXPbvCmdSetPosition );
       
   177     QVERIFY( mController->mValue == 0 );
       
   178 
       
   179     //
       
   180     // 0 <= moved position < duration
       
   181     //
       
   182     mProgBar->mProgressSlider->mSliderValue = 60;
       
   183     mController->mTimerAction = EMPXTimerCancel;
       
   184     mController->mCommand = EMPXPbvCmdStop;
       
   185 
       
   186     emit mProgBar->mProgressSlider->release();
       
   187     QVERIFY( mController->mTimerAction == EMPXTimerReset );
       
   188     QVERIFY( ! mProgBar->mSliderDragging );
       
   189     QVERIFY( mController->mCommand == EMPXPbvCmdSetPosition );
       
   190     QVERIFY( mController->mValue == mProgBar->mProgressSlider->mSliderValue );
       
   191 
       
   192     cleanup();
       
   193 }
       
   194 
       
   195 // -------------------------------------------------------------------------------------------------
       
   196 // testHandleSliderMoved
       
   197 // -------------------------------------------------------------------------------------------------
       
   198 //
       
   199 void TestProgressBar::testHandleSliderMoved()
       
   200 {
       
   201     MPX_ENTER_EXIT(_L("TestProgressBar::testHandleSliderMoved()"));
       
   202 
       
   203     setup();
       
   204 
       
   205     //
       
   206     // If user is dragging the slider
       
   207     //
       
   208     int movedPositoin = 5;
       
   209     mProgBar->mDuration = 20;
       
   210     mProgBar->mSliderDragging = true;
       
   211     emit mProgBar->mProgressSlider->move( movedPositoin );
       
   212 
       
   213     QVERIFY( mProgBar->mDraggingPosition == movedPositoin );
       
   214     QVERIFY( mProgBar->mProgressSlider->progressValue() == movedPositoin );
       
   215     QVERIFY( mProgBar->mProgressSlider->sliderValue() == movedPositoin );
       
   216 
       
   217     //
       
   218     // If user isnot dragging the slider and movedPosition > mDuration
       
   219     //
       
   220     movedPositoin = 30;
       
   221     mProgBar->mSliderDragging = false;
       
   222 
       
   223     emit mProgBar->mProgressSlider->move( movedPositoin );
       
   224 
       
   225     QVERIFY( mProgBar->mProgressSlider->progressValue() == mProgBar->mDuration );
       
   226     QVERIFY( mProgBar->mProgressSlider->sliderValue() == mProgBar->mDuration );
       
   227     QVERIFY( mController->mCommand == EMPXPbvCmdEndOfClip );
       
   228 
       
   229     //
       
   230     // If user isnot dragging the slider and movedPosition < mDuration
       
   231     //
       
   232     movedPositoin = 10;
       
   233 
       
   234     emit mProgBar->mProgressSlider->move( movedPositoin );
       
   235 
       
   236     QVERIFY( mProgBar->mProgressSlider->progressValue() == movedPositoin );
       
   237     QVERIFY( mProgBar->mProgressSlider->sliderValue() == movedPositoin );
       
   238 
       
   239     QVERIFY( mController->mCommand == EMPXPbvCmdSetPosition );
       
   240     QVERIFY( mController->mValue == movedPositoin );
       
   241 
       
   242     cleanup();
       
   243 }
       
   244 
       
   245 // -------------------------------------------------------------------------------------------------
       
   246 // testUpdateWithFileDetails
       
   247 // -------------------------------------------------------------------------------------------------
       
   248 //
       
   249 void TestProgressBar::testUpdateWithFileDetails()
       
   250 {
       
   251     MPX_ENTER_EXIT(_L("TestProgressBar::testUpdateWithFileDetails()"));
       
   252 
       
   253     setup();
       
   254 
       
   255     //
       
   256     // pausable + non seekable
       
   257     //
       
   258     mController->mFileDetails->mPausableStream = true;
       
   259     mController->mFileDetails->mSeekable = false;
       
   260     mProgBar->updateWithFileDetails( mController->mFileDetails );
       
   261     QVERIFY( ! mProgBar->mProgressSlider->isEnabled() );
       
   262 
       
   263     //
       
   264     // non pausable + seekable
       
   265     //
       
   266     mController->mFileDetails->mPausableStream = false;
       
   267     mController->mFileDetails->mSeekable = true;
       
   268     mProgBar->updateWithFileDetails( mController->mFileDetails );
       
   269     QVERIFY( ! mProgBar->mProgressSlider->isEnabled() );
       
   270 
       
   271     //
       
   272     // non pausable + non seekable
       
   273     //
       
   274     mController->mFileDetails->mPausableStream = false;
       
   275     mController->mFileDetails->mSeekable = false;
       
   276     mProgBar->updateWithFileDetails( mController->mFileDetails );
       
   277     QVERIFY( ! mProgBar->mProgressSlider->isEnabled() );
       
   278 
       
   279     //
       
   280     // other cases
       
   281     //
       
   282     mController->mFileDetails->mPausableStream = true;
       
   283     mController->mFileDetails->mSeekable = true;
       
   284     mProgBar->updateWithFileDetails( mController->mFileDetails );
       
   285     QVERIFY( mProgBar->mProgressSlider->isEnabled() );
       
   286 
       
   287     cleanup();
       
   288 }
       
   289 
       
   290 // -------------------------------------------------------------------------------------------------
       
   291 // testUpdateState
       
   292 // -------------------------------------------------------------------------------------------------
       
   293 //
       
   294 void TestProgressBar::testUpdateState()
       
   295 {
       
   296     MPX_ENTER_EXIT(_L("TestProgressBar::testUpdateState()"));
       
   297 
       
   298     setup();
       
   299 
       
   300     // test for 1st block of cases
       
   301     mProgBar->updateState( EPbStatePlaying );
       
   302     QVERIFY( mProgBar->mProgressSlider->isEnabled() );
       
   303 
       
   304     // test for 2nd block of cases
       
   305     mProgBar->updateState( EPbStateBuffering );
       
   306     QVERIFY( ! mProgBar->mProgressSlider->isEnabled() );
       
   307 
       
   308     cleanup();
       
   309 }
       
   310 
       
   311 // -------------------------------------------------------------------------------------------------
       
   312 // testDurationChanged
       
   313 // -------------------------------------------------------------------------------------------------
       
   314 //
       
   315 void TestProgressBar::testDurationChanged()
       
   316 {
       
   317     MPX_ENTER_EXIT(_L("TestProgressBar::testDurationChanged()"));
       
   318 
       
   319     setup();
       
   320 
       
   321     int duration = 120;
       
   322     mProgBar->durationChanged( duration );
       
   323 
       
   324     QVERIFY( mProgBar->mDuration == duration );
       
   325     QVERIFY( mProgBar->mProgressSlider->maximum() == duration );
       
   326     QVERIFY( mProgBar->mProgressSlider->maxText() == "2:00" );
       
   327 
       
   328     cleanup();
       
   329 }
       
   330 
       
   331 // -------------------------------------------------------------------------------------------------
       
   332 // testPositionChanged
       
   333 // -------------------------------------------------------------------------------------------------
       
   334 //
       
   335 void TestProgressBar::testPositionChanged()
       
   336 {
       
   337     MPX_ENTER_EXIT(_L("TestProgressBar::testPositionChanged()"));
       
   338 
       
   339     setup();
       
   340 
       
   341     //
       
   342     // position < duration
       
   343     //
       
   344     int position = 60;
       
   345     int duration = 120;
       
   346     mProgBar->durationChanged( duration );
       
   347 
       
   348     mProgBar->mSliderDragging = false;
       
   349     mProgBar->positionChanged( position );
       
   350 
       
   351     QVERIFY( mProgBar->mProgressSlider->minText() == "1:00" );
       
   352     QVERIFY( mProgBar->mProgressSlider->sliderValue() == position );
       
   353     QVERIFY( mProgBar->mProgressSlider->progressValue() == position );
       
   354 
       
   355     //
       
   356     // position > duration
       
   357     //
       
   358     position = 130;
       
   359 
       
   360     mProgBar->positionChanged( position );
       
   361 
       
   362     QVERIFY( mProgBar->mProgressSlider->minText() == "2:00" );
       
   363     QVERIFY( mProgBar->mProgressSlider->sliderValue() == duration );
       
   364     QVERIFY( mProgBar->mProgressSlider->progressValue() == duration );
       
   365 
       
   366     //
       
   367     // position < 0
       
   368     //
       
   369     position = -1;
       
   370 
       
   371     mProgBar->positionChanged( position );
       
   372 
       
   373     QVERIFY( mProgBar->mProgressSlider->minText() == "0:00" );
       
   374     QVERIFY( mProgBar->mProgressSlider->sliderValue() == 0 );
       
   375     QVERIFY( mProgBar->mProgressSlider->progressValue() == 0 );
       
   376 
       
   377     //
       
   378     // duration >= 1 hour
       
   379     //
       
   380     duration = 3600;
       
   381     mProgBar->durationChanged( duration );
       
   382 
       
   383     position = 5;
       
   384     mProgBar->positionChanged( position );
       
   385 
       
   386     QVERIFY( mProgBar->mProgressSlider->minText() == "0:00:05" );
       
   387     QVERIFY( mProgBar->mProgressSlider->sliderValue() == position );
       
   388     QVERIFY( mProgBar->mProgressSlider->progressValue() == position );
       
   389     cleanup();
       
   390 }
       
   391 
       
   392 // -------------------------------------------------------------------------------------------------
       
   393 // testHandleSeekingTimeout
       
   394 // -------------------------------------------------------------------------------------------------
       
   395 //
       
   396 void TestProgressBar::testHandleSeekingTimeout()
       
   397 {
       
   398     MPX_ENTER_EXIT(_L("TestProgressBar::testHandleSeekingTimeout()"));
       
   399 
       
   400     setup();
       
   401 
       
   402     mProgBar->mDraggingPosition = 10;
       
   403     mProgBar->mDuration = 30;
       
   404     mProgBar->mSetPosition = 0;
       
   405 
       
   406     connect( this, SIGNAL( commandSignal() ), mProgBar, SLOT( handleSeekingTimeout() ) );
       
   407     emit commandSignal();
       
   408 
       
   409     QVERIFY( mController->mCommand == EMPXPbvCmdSetPosition );
       
   410     QVERIFY( mController->mValue == mProgBar->mDraggingPosition );
       
   411 
       
   412     cleanup();
       
   413 }
       
   414 
       
   415 // End of file