videoplayback/hbvideoplaybackview/tsrc/testmpxvideoplaybackbuttonbar/src/testmpxvideoplaybackbuttonbar.cpp
author hgs
Fri, 16 Apr 2010 18:13:14 +0300
changeset 36 8aed59de29f9
parent 34 bbb98528c666
permissions -rw-r--r--
201015

/**
* 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:   tester for methods in TestMPXVideoPlaybackButtonBar
* 
*/

// Version : %version:  4 %


#include <qdebug>
#include <hbmainwindow.h>
#include <hbapplication.h>

#include "testmpxvideoplaybackbuttonbar.h"
#include "mpxvideoplaybackviewfiledetails.h"
#include "mpxvideoplaybackcontrolscontroller.h"
#include "hbpushbutton.h"

#define private public
#include "mpxvideoplaybackbuttonbar.h"
#undef private

// ---------------------------------------------------------------------------
// main
// ---------------------------------------------------------------------------
//
int main(int argc, char *argv[])
{
    MPX_ENTER_EXIT(_L("TestMPXVideoPlaybackButtonBar::Main()"));

    HbApplication app(argc, argv);
    HbMainWindow window;

    TestMPXVideoPlaybackButtonBar tv;

    char *pass[3];
    pass[0] = argv[0];
    pass[1] = "-o";
    pass[2] = "c:\\data\\testmpxvideoplaybackbuttonbar.txt";
    
    int res = QTest::qExec(&tv, 3, pass);
    
    return res;
}


// ---------------------------------------------------------------------------
// init
// ---------------------------------------------------------------------------
//
void TestMPXVideoPlaybackButtonBar::init( bool attachOperation )
{
    MPX_ENTER_EXIT(_L("TestMPXVideoPlaybackButtonBar::init()"));

    mController = new QMPXVideoPlaybackControlsController( attachOperation );   
    mButtonBar = new QMPXVideoPlaybackButtonBar( mController );

    mButtonBar->initialize();
}

// ---------------------------------------------------------------------------
// cleanup
// ---------------------------------------------------------------------------
//
void TestMPXVideoPlaybackButtonBar::cleanup()
{
    MPX_ENTER_EXIT(_L("TestMPXVideoPlaybackButtonBar::cleanup()"));

    if ( mController )
    {
        delete mController;
        mController = NULL;
    }

    if ( mButtonBar )
    {
        delete mButtonBar;
        mButtonBar = NULL;
    }
}

// ---------------------------------------------------------------------------
// testPlay
// ---------------------------------------------------------------------------
//
void TestMPXVideoPlaybackButtonBar::testPlay()
{
    MPX_ENTER_EXIT(_L("TestMPXVideoPlaybackButtonBar::testPlay()"));

    init();

    mButtonBar->mButtons[EMPXButtonPlay]->release();

    QVERIFY( mController->mTimerAction == EMPXTimerReset );
    QVERIFY( mController->mCommand == EMPXPbvCmdPlay );

    cleanup();
}

// ---------------------------------------------------------------------------
// testLongTapOnFF
// ---------------------------------------------------------------------------
//
void TestMPXVideoPlaybackButtonBar::testLongTapOnFF()
{
    MPX_ENTER_EXIT(_L("TestMPXVideoPlaybackButtonBar::testLongTapOnFF()"));

    init();

    //
    // Start seeking
    //
    mButtonBar->mButtons[EMPXButtonFF]->press();
    QVERIFY( mController->mTimerAction == EMPXTimerCancel );

    mButtonBar->mButtons[EMPXButtonFF]->pressing();

    QVERIFY( mButtonBar->mSeekingState == EMPXFastForwarding );
    QVERIFY( mButtonBar->mButtons[EMPXButtonFF]->mSelected == true );
    QVERIFY( mController->mCommand == EMPXPbvCmdSeekForward );

    //
    // End seeking
    //
    mButtonBar->mButtons[EMPXButtonFF]->release();

    QVERIFY( mButtonBar->mSeekingState == EMPXNotSeeking );
    QVERIFY( mButtonBar->mButtons[EMPXButtonFF]->mSelected == false );
    QVERIFY( mController->mTimerAction == EMPXTimerReset );
    QVERIFY( mController->mCommand == EMPXPbvCmdEndSeek );

    cleanup();
}

// ---------------------------------------------------------------------------
// testLongTapOnRW
// ---------------------------------------------------------------------------
//
void TestMPXVideoPlaybackButtonBar::testLongTapOnRW()
{
    MPX_ENTER_EXIT(_L("TestMPXVideoPlaybackButtonBar::testLongTapOnRW()"));

    init();

    //
    // Start seeking
    //
    mButtonBar->mButtons[EMPXButtonRW]->press();
    QVERIFY( mController->mTimerAction == EMPXTimerCancel );

    mButtonBar->mButtons[EMPXButtonRW]->pressing();

    QVERIFY( mButtonBar->mSeekingState == EMPXRewinding );
    QVERIFY( mButtonBar->mButtons[EMPXButtonRW]->mSelected == true );
    QVERIFY( mController->mCommand == EMPXPbvCmdSeekBackward );

    //
    // End seeking
    //
    mButtonBar->mButtons[EMPXButtonRW]->release();

    QVERIFY( mButtonBar->mSeekingState == EMPXNotSeeking );
    QVERIFY( mButtonBar->mButtons[EMPXButtonRW]->mSelected == false );
    QVERIFY( mController->mTimerAction == EMPXTimerReset );
    QVERIFY( mController->mCommand == EMPXPbvCmdEndSeek );

    cleanup();
}

// ---------------------------------------------------------------------------
// testShortTapOnFF
// ---------------------------------------------------------------------------
//
void TestMPXVideoPlaybackButtonBar::testShortTapOnFF()
{
    MPX_ENTER_EXIT(_L("TestMPXVideoPlaybackButtonBar::testShortTapOnFF()"));

    init();

    //
    // If mPostion + KMPXFastForward < mDuration
    //
    mButtonBar->mPosition = 30;
    mButtonBar->mDuration = 70;
    mButtonBar->mButtons[EMPXButtonFF]->release();

    QVERIFY( mController->mTimerAction == EMPXTimerReset );
    QVERIFY( mController->mCommand == EMPXPbvCmdSetPosition );
    QVERIFY( mController->mCommandValue == mButtonBar->mPosition + KMPXFastForward );

    //
    // If mPostion + KMPXFastForward < mDuration
    //
    mButtonBar->mDuration = 50;
    mController->mCommand = EMPXPbvCmdPlay;

    mButtonBar->mButtons[EMPXButtonFF]->release();
    QVERIFY( mController->mTimerAction == EMPXTimerReset );
    QVERIFY( mController->mCommand == EMPXPbvCmdPlay );

    cleanup();
}

// ---------------------------------------------------------------------------
// testShortTapOnRW
// ---------------------------------------------------------------------------
//
void TestMPXVideoPlaybackButtonBar::testShortTapOnRW()
{
    MPX_ENTER_EXIT(_L("TestMPXVideoPlaybackButtonBar::testShortTapOnRW()"));

    init();

    //
    // If mPostion + KMPXRewind > 0
    //
    mButtonBar->mPosition = 30;
    mButtonBar->mButtons[EMPXButtonRW]->release();

    QVERIFY( mController->mTimerAction == EMPXTimerReset );
    QVERIFY( mController->mCommand == EMPXPbvCmdSetPosition );
    QVERIFY( mController->mCommandValue == mButtonBar->mPosition + KMPXRewind );

    //
    // If mPostion + KMPXRewind < 0
    //
    mButtonBar->mPosition = 4;
    mButtonBar->mButtons[EMPXButtonRW]->release();

    QVERIFY( mController->mTimerAction == EMPXTimerReset );
    QVERIFY( mController->mCommand == EMPXPbvCmdSetPosition );
    QVERIFY( mController->mCommandValue == 0 );

    cleanup();
}

// ---------------------------------------------------------------------------
// testPause
// ---------------------------------------------------------------------------
//
void TestMPXVideoPlaybackButtonBar::testPause()
{
    MPX_ENTER_EXIT(_L("TestMPXVideoPlaybackButtonBar::testPause()"));

    init();

    mButtonBar->mButtons[EMPXButtonPause]->release();

    QVERIFY( mController->mTimerAction == EMPXTimerReset );
    QVERIFY( mController->mCommand == EMPXPbvCmdPause );

    cleanup();
}

// ---------------------------------------------------------------------------
// testChangeAspectRatio
// ---------------------------------------------------------------------------
//
void TestMPXVideoPlaybackButtonBar::testChangeAspectRatio()
{
    MPX_ENTER_EXIT(_L("TestMPXVideoPlaybackButtonBar::testChangeAspectRatio()"));

    init();

    //
    // Test natural
    //
    mButtonBar->mButtons[EMPXButtonNatural]->setVisible( true );
    mButtonBar->mButtons[EMPXButtonStretch]->setVisible( false );
    mButtonBar->mButtons[EMPXButtonZoom]->setVisible( false );
    mButtonBar->mButtons[EMPXButtonNatural]->release();

    QVERIFY( mController->mTimerAction == EMPXTimerReset );
    QVERIFY( mController->mCommand == EMPXPbvCmdNaturalAspectRatio );

    //
    // Test stretch
    //
    mButtonBar->mButtons[EMPXButtonNatural]->setVisible( false );
    mButtonBar->mButtons[EMPXButtonStretch]->setVisible( true );
    mButtonBar->mButtons[EMPXButtonZoom]->setVisible( false );
    mButtonBar->mButtons[EMPXButtonStretch]->release();

    QVERIFY( mController->mTimerAction == EMPXTimerReset );
    QVERIFY( mController->mCommand == EMPXPbvCmdStretchAspectRatio );

    //
    // Test stretch
    //
    mButtonBar->mButtons[EMPXButtonNatural]->setVisible( false );
    mButtonBar->mButtons[EMPXButtonStretch]->setVisible( false );
    mButtonBar->mButtons[EMPXButtonZoom]->setVisible( true );
    mButtonBar->mButtons[EMPXButtonZoom]->release();

    QVERIFY( mController->mTimerAction == EMPXTimerReset );
    QVERIFY( mController->mCommand == EMPXPbvCmdZoomAspectRatio );

    cleanup();
}

// ---------------------------------------------------------------------------
// testUpdateState
// ---------------------------------------------------------------------------
//
void TestMPXVideoPlaybackButtonBar::testUpdateState()
{
    MPX_ENTER_EXIT(_L("TestMPXVideoPlaybackButtonBar::testUpdateState()"));

    init();

    //
    // Playing
    //
    TMPXPlaybackState state = EPbStatePlaying;
    mButtonBar->updateState( state );

    QVERIFY( mButtonBar->mButtons[EMPXButtonPlay]->mVisible == false );
    QVERIFY( mButtonBar->mButtons[EMPXButtonPause]->mVisible == true );

    //
    // Paused
    //
    state = EPbStatePaused;
    mButtonBar->updateState( state );

    QVERIFY( mButtonBar->mButtons[EMPXButtonPlay]->mVisible == true );
    QVERIFY( mButtonBar->mButtons[EMPXButtonPause]->mVisible == false );

    //
    // Not initialized
    //
    state = EPbStateNotInitialised;
    mButtonBar->updateState( state );

    QVERIFY( mButtonBar->isEnabled() == false );

    cleanup();
}

// ---------------------------------------------------------------------------
// testAspectRatioChanged
// ---------------------------------------------------------------------------
//
void TestMPXVideoPlaybackButtonBar::testAspectRatioChanged()
{
    MPX_ENTER_EXIT(_L("TestMPXVideoPlaybackButtonBar::testAspectRatioChanged()"));

    init();

    //
    // Natural
    //
    int aspectRatio = EMMFNatural;
    mButtonBar->aspectRatioChanged( aspectRatio );
    QVERIFY( mButtonBar->mButtons[EMPXButtonNatural]->mVisible == false );
    QVERIFY( mButtonBar->mButtons[EMPXButtonStretch]->mVisible == true );
    QVERIFY( mButtonBar->mButtons[EMPXButtonZoom]->mVisible == false );

    //
    // Stretch
    //
    aspectRatio = EMMFStretch;
    mButtonBar->aspectRatioChanged( aspectRatio );
    QVERIFY( mButtonBar->mButtons[EMPXButtonNatural]->mVisible == false );
    QVERIFY( mButtonBar->mButtons[EMPXButtonStretch]->mVisible == false );
    QVERIFY( mButtonBar->mButtons[EMPXButtonZoom]->mVisible == true );

    //
    // Zoom
    //
    aspectRatio = EMMFZoom;
    mButtonBar->aspectRatioChanged( aspectRatio );
    QVERIFY( mButtonBar->mButtons[EMPXButtonNatural]->mVisible == true );
    QVERIFY( mButtonBar->mButtons[EMPXButtonStretch]->mVisible == false );
    QVERIFY( mButtonBar->mButtons[EMPXButtonZoom]->mVisible == false );

    cleanup();
}

// ---------------------------------------------------------------------------
// testHandleButtonPressed
// ---------------------------------------------------------------------------
//
void TestMPXVideoPlaybackButtonBar::testHandleButtonPressed()
{
    MPX_ENTER_EXIT(_L("TestMPXVideoPlaybackButtonBar::testHandleButtonPressed()"));

    init();

    mButtonBar->mButtons[EMPXButtonNatural]->press();

    QVERIFY( mController->mTimerAction == EMPXTimerCancel );

    cleanup();
}

// ---------------------------------------------------------------------------
// testUpdateWithFileDetails
// ---------------------------------------------------------------------------
//
void TestMPXVideoPlaybackButtonBar::testUpdateWithFileDetails()
{
    MPX_ENTER_EXIT(_L("TestMPXVideoPlaybackButtonBar::testUpdateWithFileDetails()"));

    init();

    QMPXVideoPlaybackViewFileDetails *details = mController->fileDetails();

    details->mVideoEnabled = true;
    details->mVideoHeight = 1;
    details->mVideoWidth = 1;
    details->mTvOutConnected = false;
    details->mTvOutPlayAllowed = true;
    details->mSeekable = true;
    details->mPausableStream = true;

    mButtonBar->updateWithFileDetails( details );
    QVERIFY( mButtonBar->mButtons[EMPXButtonNatural]->mEnabled == true );
    QVERIFY( mButtonBar->mButtons[EMPXButtonStretch]->mEnabled == true );
    QVERIFY( mButtonBar->mButtons[EMPXButtonZoom]->mEnabled == true );
    QVERIFY( mButtonBar->mButtons[EMPXButtonRW]->mEnabled == true );
    QVERIFY( mButtonBar->mButtons[EMPXButtonPause]->mEnabled == true );
    QVERIFY( mButtonBar->mButtons[EMPXButtonPlay]->mEnabled == true );
    QVERIFY( mButtonBar->mButtons[EMPXButtonDetails]->mEnabled == true );

    details->mVideoEnabled = false;
    details->mVideoHeight = 0;
    details->mVideoWidth = 1;
    details->mTvOutConnected = true;
    details->mTvOutPlayAllowed = true;
    details->mSeekable = false;
    details->mPausableStream = false;

    mButtonBar->updateWithFileDetails( details );
    QVERIFY( mButtonBar->mButtons[EMPXButtonNatural]->mEnabled == false );
    QVERIFY( mButtonBar->mButtons[EMPXButtonStretch]->mEnabled == false );
    QVERIFY( mButtonBar->mButtons[EMPXButtonZoom]->mEnabled == false );
    QVERIFY( mButtonBar->mButtons[EMPXButtonRW]->mEnabled == false );
    QVERIFY( mButtonBar->mButtons[EMPXButtonPause]->mEnabled == false );
    QVERIFY( mButtonBar->mButtons[EMPXButtonPlay]->mEnabled == true );
    QVERIFY( mButtonBar->mButtons[EMPXButtonDetails]->mEnabled == false );

    cleanup();
}

// ---------------------------------------------------------------------------
// testOpenDetailsView
// ---------------------------------------------------------------------------
//
void TestMPXVideoPlaybackButtonBar::testOpenDetailsView()
{
    MPX_ENTER_EXIT(_L("TestMPXVideoPlaybackButtonBar::testOpenDetailsView()"));

    init();

    QSignalSpy spy( mButtonBar, SIGNAL( openDetailsView() ) );  

    mController->mViewMode = EFullScreenView;
    mButtonBar->mButtons[EMPXButtonDetails]->release();
    QVERIFY( mController->mViewMode == EDetailsView );

    mController->mViewMode = EDetailsView;
    mButtonBar->mButtons[EMPXButtonDetails]->release();
    QVERIFY( mController->mViewMode == EDetailsView );

    mController->mViewMode = EAudioOnlyView;
    mButtonBar->mButtons[EMPXButtonDetails]->release();
    QVERIFY( mController->mViewMode == EAudioOnlyView );

    cleanup();
}

// ---------------------------------------------------------------------------
// testAttach
// ---------------------------------------------------------------------------
//
void TestMPXVideoPlaybackButtonBar::testAttach()
{
    MPX_ENTER_EXIT(_L("TestMPXVideoPlaybackButtonBar::testAttach()"));

    //
    // test when 'attach' operation is enabled
    //
    init( true );

    //
    // verify 'attach' button is visible
    //
    QVERIFY( mButtonBar->mButtons[EMPXButtonAttach]->isVisible() == true );
    
    //
    // release 'attach' button
    //
    mButtonBar->mButtons[EMPXButtonAttach]->release();

    //
    // verify the controller attachVideo() slot has been called
    //
    QVERIFY( mController->mCommand == EMPXPbvCmdClose );
    QVERIFY( mController->mAttachVideoDone == true );
    
    //
    // clean up
    //
    cleanup();
    
    //
    // test when 'attach' operation is disabled
    //
    init();

    //
    // verify 'attach' button is not visible
    //
    QVERIFY( mButtonBar->mButtons[EMPXButtonAttach]->isVisible() == false );
        
    //
    // verify the controller attachVideo() slot is not called
    //
    QVERIFY( mController->mAttachVideoDone == false );
    
    //
    // clean up
    //
    cleanup();
    
}

// End of file