videoplayback/videoplaybackview/tsrc/testuserinputhandler/src/testuserinputhandler.cpp
author hgs
Mon, 23 Aug 2010 14:27:29 +0300
changeset 55 4bfa887905cf
parent 44 518105d52e45
child 58 d2b028fd1f7d
permissions -rw-r--r--
201033

/**
* Copyright (c) 2009 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 User Input Handler
* 
*/

#include <e32err.h>
#include <w32std.h>
#include <eikenv.h>

#include <hbapplication.h>
#include <hbinstance.h>
#include <QDebug>

#include "testuserinputhandler.h"
#include "../stub/inc/mpxvideoviewwrapper.h"
#include "../stub/inc/videobaseplaybackview.h"

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


// ---------------------------------------------------------------------------
// main
// ---------------------------------------------------------------------------
//
int main(int argc, char *argv[])
{
    HbApplication app(argc, argv);
    HbMainWindow window;
    
    TestUserInputHandler tv;

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


// ---------------------------------------------------------------------------
// init
// ---------------------------------------------------------------------------
//
void TestUserInputHandler::init()
{	     
    mBaseVideoView    = new VideoBasePlaybackView();
    mVideoViewWrapper = CMPXVideoViewWrapper::NewL( mBaseVideoView );   
        
    mUserInputHdlr = CVideoPlaybackUserInputHandler::NewL(mVideoViewWrapper, false);
}

// ---------------------------------------------------------------------------
// cleanup
// ---------------------------------------------------------------------------
//
void TestUserInputHandler::cleanup()
{           
    delete mUserInputHdlr;
    mUserInputHdlr = NULL;  
    
    delete mVideoViewWrapper;
    mVideoViewWrapper = NULL;
        
    delete mBaseVideoView;
    mBaseVideoView = NULL;              
}

// ---------------------------------------------------------------------------
// setup
// ---------------------------------------------------------------------------
//
void TestUserInputHandler::setup()
{    
}

void TestUserInputHandler::testProcessMediaKeyPlay()
{    
    init();
    
    mUserInputHdlr->iProcessingInputType = EVideoNone;    
    
    mUserInputHdlr->ProcessMediaKey(ERemConCoreApiPlay, ERemConCoreApiButtonPress);
    QVERIFY( mUserInputHdlr->iProcessingInputType == EVideoMediaKeys );
    
    // this event should be ignored as the 1st event is still being processed
    mUserInputHdlr->ProcessMediaKey(ERemConCoreApiPause, ERemConCoreApiButtonPress);
    
    // verify that "Play" is still being processed and not "Pause"
    QVERIFY( mUserInputHdlr->iLastMediaKeyPressed == ERemConCoreApiPlay );
    
    // send the release event for "Play"
    mUserInputHdlr->ProcessMediaKey(ERemConCoreApiPlay, ERemConCoreApiButtonRelease);
    
    // verify that no input is now being processed
    QVERIFY( mUserInputHdlr->iProcessingInputType == EVideoNone );
    
    cleanup();
}

void TestUserInputHandler::testProcessMediaKeyPause()
{    
    init();
    
    mUserInputHdlr->iProcessingInputType = EVideoNone;    
    
    // Issue Play
    mUserInputHdlr->ProcessMediaKey(ERemConCoreApiPlay, ERemConCoreApiButtonPress);
    mUserInputHdlr->ProcessMediaKey(ERemConCoreApiPlay, ERemConCoreApiButtonRelease);
    QVERIFY( mUserInputHdlr->iProcessingInputType == EVideoNone );

    // Initiate Pause
    mUserInputHdlr->ProcessMediaKey(ERemConCoreApiPause, ERemConCoreApiButtonPress);
    QVERIFY( mUserInputHdlr->iProcessingInputType == EVideoMediaKeys );    
    QVERIFY( mUserInputHdlr->iLastMediaKeyPressed == ERemConCoreApiPause );    
    
    mUserInputHdlr->ProcessMediaKey(ERemConCoreApiPause, ERemConCoreApiButtonRelease); 
    QVERIFY( mUserInputHdlr->iProcessingInputType == EVideoNone );
    
    cleanup();    
    
}

void TestUserInputHandler::testProcessMediaKeyPlayPause()
{    
    init();
    
    mUserInputHdlr->iProcessingInputType = EVideoNone;    
    
    mUserInputHdlr->ProcessMediaKey(ERemConCoreApiPausePlayFunction, ERemConCoreApiButtonClick);
    QVERIFY( mUserInputHdlr->iProcessingInputType == EVideoNone );      
    
    // set to background
    mUserInputHdlr->iForeground = false;
    
    mUserInputHdlr->iLastMediaKeyPressed = ENop;
    // this event should be ignored as iForeground is false
    mUserInputHdlr->ProcessMediaKey(ERemConCoreApiPausePlayFunction, ERemConCoreApiButtonPress);
    QVERIFY( mUserInputHdlr->iLastMediaKeyPressed == ENop );
    QVERIFY( mUserInputHdlr->iProcessingInputType == EVideoNone );     
    
    cleanup();       
}

void TestUserInputHandler::testProcessMediaKeyStop()
{    
    init();
    
    mUserInputHdlr->iProcessingInputType = EVideoNone;    
    
    // Issue Play
    mUserInputHdlr->ProcessMediaKey(ERemConCoreApiPlay, ERemConCoreApiButtonPress);
    mUserInputHdlr->ProcessMediaKey(ERemConCoreApiPlay, ERemConCoreApiButtonRelease);
    QVERIFY( mUserInputHdlr->iProcessingInputType == EVideoNone );

    // Stop
    mUserInputHdlr->ProcessMediaKey(ERemConCoreApiStop, ERemConCoreApiButtonPress);
    QVERIFY( mUserInputHdlr->iProcessingInputType == EVideoMediaKeys );    
    QVERIFY( mUserInputHdlr->iLastMediaKeyPressed == ERemConCoreApiStop );    
    
    mUserInputHdlr->ProcessMediaKey(ERemConCoreApiStop, ERemConCoreApiButtonRelease); 
    QVERIFY( mUserInputHdlr->iProcessingInputType == EVideoNone );
    
    cleanup();     
}

void TestUserInputHandler::testProcessMediaKeyForward()
{    
    init();
    
    mUserInputHdlr->iProcessingInputType = EVideoNone;    
    
    // Issue Play
    mUserInputHdlr->ProcessMediaKey(ERemConCoreApiPlay, ERemConCoreApiButtonPress);
    mUserInputHdlr->ProcessMediaKey(ERemConCoreApiPlay, ERemConCoreApiButtonRelease);
    QVERIFY( mUserInputHdlr->iProcessingInputType == EVideoNone );

    // Forward
    mUserInputHdlr->ProcessMediaKey(ERemConCoreApiFastForward, ERemConCoreApiButtonPress);
    QVERIFY( mUserInputHdlr->iProcessingInputType == EVideoMediaKeys );    
    QVERIFY( mUserInputHdlr->iLastMediaKeyPressed == ERemConCoreApiFastForward );    
    
    mUserInputHdlr->ProcessMediaKey(ERemConCoreApiFastForward, ERemConCoreApiButtonRelease); 
    QVERIFY( mUserInputHdlr->iProcessingInputType == EVideoNone );
    
    cleanup();     
}

void TestUserInputHandler::testProcessMediaKeyRewind()
{    
    init();
    
    mUserInputHdlr->iProcessingInputType = EVideoNone;    
    
    // Issue Play
    mUserInputHdlr->ProcessMediaKey(ERemConCoreApiPlay, ERemConCoreApiButtonPress);
    mUserInputHdlr->ProcessMediaKey(ERemConCoreApiPlay, ERemConCoreApiButtonRelease);
    QVERIFY( mUserInputHdlr->iProcessingInputType == EVideoNone );

    // Forward
    mUserInputHdlr->ProcessMediaKey(ERemConCoreApiFastForward, ERemConCoreApiButtonPress);
    QVERIFY( mUserInputHdlr->iProcessingInputType == EVideoMediaKeys );    
    QVERIFY( mUserInputHdlr->iLastMediaKeyPressed == ERemConCoreApiFastForward );    
    
    mUserInputHdlr->ProcessMediaKey(ERemConCoreApiFastForward, ERemConCoreApiButtonRelease); 
    QVERIFY( mUserInputHdlr->iProcessingInputType == EVideoNone );
    
    // Rewind
    mUserInputHdlr->ProcessMediaKey(ERemConCoreApiRewind, ERemConCoreApiButtonPress);
    QVERIFY( mUserInputHdlr->iProcessingInputType == EVideoMediaKeys );    
    QVERIFY( mUserInputHdlr->iLastMediaKeyPressed == ERemConCoreApiRewind );    
    
    mUserInputHdlr->ProcessMediaKey(ERemConCoreApiRewind, ERemConCoreApiButtonRelease); 
    QVERIFY( mUserInputHdlr->iProcessingInputType == EVideoNone );
    
    cleanup();     
}

void TestUserInputHandler::testProcessMediaKeyVolumeUp()
{    
    init();
    
    mUserInputHdlr->iProcessingInputType = EVideoNone;    
    
    // Issue Play
    mUserInputHdlr->ProcessMediaKey(ERemConCoreApiPlay, ERemConCoreApiButtonPress);
    mUserInputHdlr->ProcessMediaKey(ERemConCoreApiPlay, ERemConCoreApiButtonRelease);
    QVERIFY( mUserInputHdlr->iProcessingInputType == EVideoNone );
    
    // Volume Up
    mUserInputHdlr->ProcessMediaKey(ERemConCoreApiVolumeUp, ERemConCoreApiButtonPress);
    QVERIFY( mUserInputHdlr->iProcessingInputType == EVideoMediaKeys );    
    QVERIFY( mUserInputHdlr->iLastMediaKeyPressed == ERemConCoreApiVolumeUp );   
    QVERIFY( mUserInputHdlr->iVolumeRepeatTimer->IsActive() );
    QVERIFY( mUserInputHdlr->iVolumeRepeatUp );
    
    mUserInputHdlr->ProcessMediaKey(ERemConCoreApiVolumeUp, ERemConCoreApiButtonRelease); 
    QVERIFY( mUserInputHdlr->iProcessingInputType == EVideoNone );   
    QVERIFY( ! mUserInputHdlr->iVolumeRepeatTimer->IsActive() );
    
    cleanup();        
}

void TestUserInputHandler::testProcessMediaKeyVolumeDown()
{    
    init();
    
    mUserInputHdlr->iProcessingInputType = EVideoNone;    
    
    // Issue Play
    mUserInputHdlr->ProcessMediaKey(ERemConCoreApiPlay, ERemConCoreApiButtonPress);
    mUserInputHdlr->ProcessMediaKey(ERemConCoreApiPlay, ERemConCoreApiButtonRelease);
    QVERIFY( mUserInputHdlr->iProcessingInputType == EVideoNone );
    
    // Volume Down
    mUserInputHdlr->ProcessMediaKey(ERemConCoreApiVolumeDown, ERemConCoreApiButtonPress);
    QVERIFY( mUserInputHdlr->iProcessingInputType == EVideoMediaKeys );    
    QVERIFY( mUserInputHdlr->iLastMediaKeyPressed == ERemConCoreApiVolumeDown );   
    QVERIFY( mUserInputHdlr->iVolumeRepeatTimer->IsActive() );
    QVERIFY( ! mUserInputHdlr->iVolumeRepeatUp );
    
    mUserInputHdlr->ProcessMediaKey(ERemConCoreApiVolumeDown, ERemConCoreApiButtonRelease); 
    QVERIFY( mUserInputHdlr->iProcessingInputType == EVideoNone );   
    QVERIFY( ! mUserInputHdlr->iVolumeRepeatTimer->IsActive() );    
    
    cleanup();     
}

void TestUserInputHandler::testHandleTVOutEventL()
{   
    
    ///////////////////////////////
    // 1. HandleTVOutEventL(true)
    ///////////////////////////////
    init();
    
    mUserInputHdlr->iDisplayTimeOut = 0;
    
    mUserInputHdlr->HandleTVOutEventL(true);
    
    QVERIFY( mUserInputHdlr->iDisplayTimeOut != 0 ); 
    QVERIFY( mUserInputHdlr->iDisplayTimer->IsActive() );
        
    cleanup();
    
    
    ///////////////////////////////
    // 2. HandleTVOutEventL(false)
    ///////////////////////////////
    init();
    
    mUserInputHdlr->iDisplayTimeOut = 0;
    
    mUserInputHdlr->HandleTVOutEventL(false);   
    QVERIFY( ! mUserInputHdlr->iDisplayTimer->IsActive() );    
        
    cleanup();    
        
}




// End of file