videoplayback/hbvideoplaybackview/tsrc/testuserinputhandler/src/testuserinputhandler.cpp
changeset 15 cf5481c2bc0b
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/videoplayback/hbvideoplaybackview/tsrc/testuserinputhandler/src/testuserinputhandler.cpp	Fri Apr 16 14:59:52 2010 +0300
@@ -0,0 +1,323 @@
+/**
+* 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/hbvideobaseplaybackview.h"
+
+#define private public
+#include "mpxvideoplaybackuserinputhandler.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 HbVideoBasePlaybackView();
+    mVideoViewWrapper = CMPXVideoViewWrapper::NewL( mBaseVideoView );   
+        
+    mUserInputHdlr = CMPXVideoPlaybackUserInputHandler::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 = EMpxVideoNone;    
+    
+    mUserInputHdlr->ProcessMediaKey(ERemConCoreApiPlay, ERemConCoreApiButtonPress);
+    QVERIFY( mUserInputHdlr->iProcessingInputType == EMpxVideoMediaKeys );
+    
+    // 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 == EMpxVideoNone );
+    
+    cleanup();
+}
+
+void TestUserInputHandler::testProcessMediaKeyPause()
+{    
+    init();
+    
+    mUserInputHdlr->iProcessingInputType = EMpxVideoNone;    
+    
+    // Issue Play
+    mUserInputHdlr->ProcessMediaKey(ERemConCoreApiPlay, ERemConCoreApiButtonPress);
+    mUserInputHdlr->ProcessMediaKey(ERemConCoreApiPlay, ERemConCoreApiButtonRelease);
+    QVERIFY( mUserInputHdlr->iProcessingInputType == EMpxVideoNone );
+
+    // Initiate Pause
+    mUserInputHdlr->ProcessMediaKey(ERemConCoreApiPause, ERemConCoreApiButtonPress);
+    QVERIFY( mUserInputHdlr->iProcessingInputType == EMpxVideoMediaKeys );    
+    QVERIFY( mUserInputHdlr->iLastMediaKeyPressed == ERemConCoreApiPause );    
+    
+    mUserInputHdlr->ProcessMediaKey(ERemConCoreApiPause, ERemConCoreApiButtonRelease); 
+    QVERIFY( mUserInputHdlr->iProcessingInputType == EMpxVideoNone );
+    
+    cleanup();    
+    
+}
+
+void TestUserInputHandler::testProcessMediaKeyPlayPause()
+{    
+    init();
+    
+    mUserInputHdlr->iProcessingInputType = EMpxVideoNone;    
+    
+    mUserInputHdlr->ProcessMediaKey(ERemConCoreApiPausePlayFunction, ERemConCoreApiButtonClick);
+    QVERIFY( mUserInputHdlr->iProcessingInputType == EMpxVideoNone );      
+    
+    // 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 == EMpxVideoNone );     
+    
+    cleanup();       
+}
+
+void TestUserInputHandler::testProcessMediaKeyStop()
+{    
+    init();
+    
+    mUserInputHdlr->iProcessingInputType = EMpxVideoNone;    
+    
+    // Issue Play
+    mUserInputHdlr->ProcessMediaKey(ERemConCoreApiPlay, ERemConCoreApiButtonPress);
+    mUserInputHdlr->ProcessMediaKey(ERemConCoreApiPlay, ERemConCoreApiButtonRelease);
+    QVERIFY( mUserInputHdlr->iProcessingInputType == EMpxVideoNone );
+
+    // Stop
+    mUserInputHdlr->ProcessMediaKey(ERemConCoreApiStop, ERemConCoreApiButtonPress);
+    QVERIFY( mUserInputHdlr->iProcessingInputType == EMpxVideoMediaKeys );    
+    QVERIFY( mUserInputHdlr->iLastMediaKeyPressed == ERemConCoreApiStop );    
+    
+    mUserInputHdlr->ProcessMediaKey(ERemConCoreApiStop, ERemConCoreApiButtonRelease); 
+    QVERIFY( mUserInputHdlr->iProcessingInputType == EMpxVideoNone );
+    
+    cleanup();     
+}
+
+void TestUserInputHandler::testProcessMediaKeyForward()
+{    
+    init();
+    
+    mUserInputHdlr->iProcessingInputType = EMpxVideoNone;    
+    
+    // Issue Play
+    mUserInputHdlr->ProcessMediaKey(ERemConCoreApiPlay, ERemConCoreApiButtonPress);
+    mUserInputHdlr->ProcessMediaKey(ERemConCoreApiPlay, ERemConCoreApiButtonRelease);
+    QVERIFY( mUserInputHdlr->iProcessingInputType == EMpxVideoNone );
+
+    // Forward
+    mUserInputHdlr->ProcessMediaKey(ERemConCoreApiFastForward, ERemConCoreApiButtonPress);
+    QVERIFY( mUserInputHdlr->iProcessingInputType == EMpxVideoMediaKeys );    
+    QVERIFY( mUserInputHdlr->iLastMediaKeyPressed == ERemConCoreApiFastForward );    
+    
+    mUserInputHdlr->ProcessMediaKey(ERemConCoreApiFastForward, ERemConCoreApiButtonRelease); 
+    QVERIFY( mUserInputHdlr->iProcessingInputType == EMpxVideoNone );
+    
+    cleanup();     
+}
+
+void TestUserInputHandler::testProcessMediaKeyRewind()
+{    
+    init();
+    
+    mUserInputHdlr->iProcessingInputType = EMpxVideoNone;    
+    
+    // Issue Play
+    mUserInputHdlr->ProcessMediaKey(ERemConCoreApiPlay, ERemConCoreApiButtonPress);
+    mUserInputHdlr->ProcessMediaKey(ERemConCoreApiPlay, ERemConCoreApiButtonRelease);
+    QVERIFY( mUserInputHdlr->iProcessingInputType == EMpxVideoNone );
+
+    // Forward
+    mUserInputHdlr->ProcessMediaKey(ERemConCoreApiFastForward, ERemConCoreApiButtonPress);
+    QVERIFY( mUserInputHdlr->iProcessingInputType == EMpxVideoMediaKeys );    
+    QVERIFY( mUserInputHdlr->iLastMediaKeyPressed == ERemConCoreApiFastForward );    
+    
+    mUserInputHdlr->ProcessMediaKey(ERemConCoreApiFastForward, ERemConCoreApiButtonRelease); 
+    QVERIFY( mUserInputHdlr->iProcessingInputType == EMpxVideoNone );
+    
+    // Rewind
+    mUserInputHdlr->ProcessMediaKey(ERemConCoreApiRewind, ERemConCoreApiButtonPress);
+    QVERIFY( mUserInputHdlr->iProcessingInputType == EMpxVideoMediaKeys );    
+    QVERIFY( mUserInputHdlr->iLastMediaKeyPressed == ERemConCoreApiRewind );    
+    
+    mUserInputHdlr->ProcessMediaKey(ERemConCoreApiRewind, ERemConCoreApiButtonRelease); 
+    QVERIFY( mUserInputHdlr->iProcessingInputType == EMpxVideoNone );
+    
+    cleanup();     
+}
+
+void TestUserInputHandler::testProcessMediaKeyVolumeUp()
+{    
+    init();
+    
+    mUserInputHdlr->iProcessingInputType = EMpxVideoNone;    
+    
+    // Issue Play
+    mUserInputHdlr->ProcessMediaKey(ERemConCoreApiPlay, ERemConCoreApiButtonPress);
+    mUserInputHdlr->ProcessMediaKey(ERemConCoreApiPlay, ERemConCoreApiButtonRelease);
+    QVERIFY( mUserInputHdlr->iProcessingInputType == EMpxVideoNone );
+    
+    // Volume Up
+    mUserInputHdlr->ProcessMediaKey(ERemConCoreApiVolumeUp, ERemConCoreApiButtonPress);
+    QVERIFY( mUserInputHdlr->iProcessingInputType == EMpxVideoMediaKeys );    
+    QVERIFY( mUserInputHdlr->iLastMediaKeyPressed == ERemConCoreApiVolumeUp );   
+    QVERIFY( mUserInputHdlr->iVolumeRepeatTimer->IsActive() );
+    QVERIFY( mUserInputHdlr->iVolumeRepeatUp );
+    
+    mUserInputHdlr->ProcessMediaKey(ERemConCoreApiVolumeUp, ERemConCoreApiButtonRelease); 
+    QVERIFY( mUserInputHdlr->iProcessingInputType == EMpxVideoNone );   
+    QVERIFY( ! mUserInputHdlr->iVolumeRepeatTimer->IsActive() );
+    
+    cleanup();        
+}
+
+void TestUserInputHandler::testProcessMediaKeyVolumeDown()
+{    
+    init();
+    
+    mUserInputHdlr->iProcessingInputType = EMpxVideoNone;    
+    
+    // Issue Play
+    mUserInputHdlr->ProcessMediaKey(ERemConCoreApiPlay, ERemConCoreApiButtonPress);
+    mUserInputHdlr->ProcessMediaKey(ERemConCoreApiPlay, ERemConCoreApiButtonRelease);
+    QVERIFY( mUserInputHdlr->iProcessingInputType == EMpxVideoNone );
+    
+    // Volume Down
+    mUserInputHdlr->ProcessMediaKey(ERemConCoreApiVolumeDown, ERemConCoreApiButtonPress);
+    QVERIFY( mUserInputHdlr->iProcessingInputType == EMpxVideoMediaKeys );    
+    QVERIFY( mUserInputHdlr->iLastMediaKeyPressed == ERemConCoreApiVolumeDown );   
+    QVERIFY( mUserInputHdlr->iVolumeRepeatTimer->IsActive() );
+    QVERIFY( ! mUserInputHdlr->iVolumeRepeatUp );
+    
+    mUserInputHdlr->ProcessMediaKey(ERemConCoreApiVolumeDown, ERemConCoreApiButtonRelease); 
+    QVERIFY( mUserInputHdlr->iProcessingInputType == EMpxVideoNone );   
+    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
+    
+
+