diff -r 7d48bed6ce0c -r 987c9837762f telutils/dialpad/tsrc/unit/mt_dialpad/mt_dialpad.cpp --- a/telutils/dialpad/tsrc/unit/mt_dialpad/mt_dialpad.cpp Tue Aug 31 15:45:17 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,401 +0,0 @@ -/*! -* 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: -* -*/ - -#include -#include - -#include -#include -#include -#include -#include -#include -#include - -#include "dialpadtest.h" -#include "dialpadtestutil.h" -#include "dialpad.h" - -const int WAIT_TIME = 300; -const int LONGPRESS_DURATION = 1000; - -// helper class -class KeyEventCatcher : public QObject -{ -public: - bool eventFilter(QObject* watched, QEvent * event) - { - Q_UNUSED(watched); - - if (event->type() == QEvent::KeyPress) { - QKeyEvent *keyEvent = static_cast(event); - mKeyPresses.append(keyEvent->key()); - return false; - } else if (event->type() == QEvent::KeyRelease) { - QKeyEvent *keyEvent = static_cast(event); - mKeyReleases.append(keyEvent->key()); - return false; - } - return false; - } - -public: - QList mKeyPresses; - QList mKeyReleases; -}; - -// test cases -class mt_Dialpad : public QObject -{ - Q_OBJECT - -private slots: - void initTestCase(); - void cleanupTestCase(); - void cleanup(); - - void testNumericButtons(); - void testNumericButtonLongPress(); - void testBackspace(); - void testAsteriskMultitap(); - void testCallButton(); - void testCloseGesture(); - void testOpenDialogWhileButtonPressed(); - void testTapOutsideDismiss(); - -#ifndef Q_OS_SYMBIAN - void testCloseGestureLandscape(); - void testOrientationChange(); -#endif - -private: - HbMainWindow* mMainWindow; - Dialpad* mDialpad; - KeyEventCatcher* mKeyCatcher; - DialpadTestUtil* mUtil; -}; - -void mt_Dialpad::initTestCase() -{ - mMainWindow = new HbMainWindow; - - mKeyCatcher = new KeyEventCatcher; - mMainWindow->installEventFilter(mKeyCatcher); - - mUtil = new DialpadTestUtil(*mMainWindow); - - mDialpad = new Dialpad(*mMainWindow); - - QRectF rect(mMainWindow->contentsRect()); - rect.setHeight(rect.height()*0.7); - rect.moveTop((mMainWindow->contentsRect().height()-rect.height())/2); - - mDialpad->resize(mMainWindow->layoutRect().width(), - mMainWindow->layoutRect().height()/2); - mDialpad->setPos(0,mMainWindow->layoutRect().height()/4); - - mMainWindow->show(); - mDialpad->show(); - mDialpad->hide(); -} - -void mt_Dialpad::cleanupTestCase() -{ - delete mDialpad; - delete mMainWindow; - delete mKeyCatcher; - delete mUtil; -} - -void mt_Dialpad::cleanup() -{ - mKeyCatcher->mKeyPresses.clear(); - mKeyCatcher->mKeyReleases.clear(); - mDialpad->editor().setText(QString()); - QTest::qWait( WAIT_TIME ); // delay between tests -} - -void mt_Dialpad::testNumericButtons() -{ - QSignalSpy aboutToOpenSpy( mDialpad, SIGNAL(aboutToOpen())); - QSignalSpy aboutToCloseSpy( mDialpad, SIGNAL(aboutToClose())); - - QVERIFY(mDialpad->isOpen()==false); - mDialpad->openDialpad(); - QVERIFY(mDialpad->isOpen()==true); - QVERIFY(aboutToOpenSpy.count()==1); - QTest::qWait( 2*WAIT_TIME ); - - mUtil->mouseClickDialpad(Qt::Key_1); - mUtil->mouseClickDialpad(Qt::Key_2); - mUtil->mouseClickDialpad(Qt::Key_3); - mUtil->mouseClickDialpad(Qt::Key_4); - mUtil->mouseClickDialpad(Qt::Key_5); - mUtil->mouseClickDialpad(Qt::Key_6); - mUtil->mouseClickDialpad(Qt::Key_7); - mUtil->mouseClickDialpad(Qt::Key_8); - mUtil->mouseClickDialpad(Qt::Key_9); - mUtil->mouseClickDialpad(Qt::Key_Asterisk); - mUtil->mouseClickDialpad(Qt::Key_0); - mUtil->mouseClickDialpad(Qt::Key_NumberSign); - - QVERIFY(mDialpad->editor().text()=="123456789*0#"); - - QVERIFY(mKeyCatcher->mKeyPresses.count()==12); - QVERIFY(mKeyCatcher->mKeyReleases.count()==12); - QVERIFY(mKeyCatcher->mKeyPresses.at(0)==Qt::Key_1); - QVERIFY(mKeyCatcher->mKeyReleases.at(0)==Qt::Key_1); - QVERIFY(mKeyCatcher->mKeyPresses.at(11)==Qt::Key_NumberSign); - QVERIFY(mKeyCatcher->mKeyReleases.at(11)==Qt::Key_NumberSign); - mDialpad->closeDialpad(); - QVERIFY(mDialpad->isOpen()==false); - QVERIFY(aboutToCloseSpy.count()==1); -} - -void mt_Dialpad::testNumericButtonLongPress() -{ - mDialpad->openDialpad(); - QTest::qWait( WAIT_TIME ); - mUtil->mouseClickDialpad(Qt::Key_1, DialpadTestUtil::Press); - QTest::qWait( LONGPRESS_DURATION ); - mUtil->mouseClickDialpad(Qt::Key_1, DialpadTestUtil::Release); - QVERIFY(mDialpad->editor().text()=="1"); - mDialpad->closeDialpad(); -} - -void mt_Dialpad::testBackspace() -{ - mDialpad->openDialpad(); - QTest::qWait( WAIT_TIME ); - mUtil->mouseClickDialpad(Qt::Key_1); - QVERIFY(mDialpad->editor().text()=="1"); - mUtil->mouseClickDialpad(Qt::Key_Backspace); - QVERIFY(mDialpad->editor().text()==""); - QVERIFY(mKeyCatcher->mKeyPresses.count()==2); - QVERIFY(mKeyCatcher->mKeyReleases.count()==2); - QVERIFY(mKeyCatcher->mKeyPresses.at(1)==Qt::Key_Backspace); - QVERIFY(mKeyCatcher->mKeyReleases.at(1)==Qt::Key_Backspace); - // test repeats - QTest::qWait( WAIT_TIME ); - mUtil->mouseClickDialpad(Qt::Key_1); - mUtil->mouseClickDialpad(Qt::Key_2); - mUtil->mouseClickDialpad(Qt::Key_3); - QVERIFY(mDialpad->editor().text()=="123"); - mUtil->mouseClickDialpad(Qt::Key_Backspace, DialpadTestUtil::Press); - QTest::qWait( 1500 ); - mUtil->mouseClickDialpad(Qt::Key_Backspace, DialpadTestUtil::Release); - QVERIFY(mDialpad->editor().text()==""); - mDialpad->closeDialpad(); -} - -void mt_Dialpad::testAsteriskMultitap() -{ - mDialpad->openDialpad(); - QTest::qWait( WAIT_TIME ); - mUtil->mouseClickDialpad(Qt::Key_Asterisk); - QVERIFY(mDialpad->editor().text()=="*"); - mUtil->mouseClickDialpad(Qt::Key_Asterisk); - QVERIFY(mDialpad->editor().text()=="+"); - mUtil->mouseClickDialpad(Qt::Key_Asterisk); - QVERIFY(mDialpad->editor().text()=="p"); - mUtil->mouseClickDialpad(Qt::Key_Asterisk); - QVERIFY(mDialpad->editor().text()=="w"); - - QVERIFY(mKeyCatcher->mKeyPresses.count()==4); - QVERIFY(mKeyCatcher->mKeyReleases.count()==4); - QVERIFY(mKeyCatcher->mKeyPresses.at(1)==Qt::Key_Asterisk); - QVERIFY(mKeyCatcher->mKeyReleases.at(1)==Qt::Key_Asterisk); - QVERIFY(mKeyCatcher->mKeyPresses.at(2)==Qt::Key_Asterisk); - QVERIFY(mKeyCatcher->mKeyReleases.at(2)==Qt::Key_Asterisk); - - // Verify that the second char can't be + - QTest::qWait(1000); - mUtil->mouseClickDialpad(Qt::Key_Asterisk); - QCOMPARE(mDialpad->editor().text(), QString("w*")); - mUtil->mouseClickDialpad(Qt::Key_Asterisk); - QCOMPARE(mDialpad->editor().text(), QString("wp")); - mUtil->mouseClickDialpad(Qt::Key_Asterisk); - QCOMPARE(mDialpad->editor().text(), QString("ww")); - mUtil->mouseClickDialpad(Qt::Key_Asterisk); - QCOMPARE(mDialpad->editor().text(), QString("w*")); - - // test entering two asterisk - QTest::qWait(1000); - mDialpad->editor().setText(QString()); - mUtil->mouseClickDialpad(Qt::Key_Asterisk); - QTest::qWait( 1000 ); // longer than short tap - mUtil->mouseClickDialpad(Qt::Key_Asterisk); - QCOMPARE(mDialpad->editor().text(), QString("**")); - - mDialpad->closeDialpad(); -} - -void mt_Dialpad::testCallButton() -{ - mDialpad->openDialpad(); - QTest::qWait( WAIT_TIME ); - mDialpad->setCallButtonEnabled(false); - mUtil->mouseClickDialpad(Qt::Key_Yes); - QVERIFY(mKeyCatcher->mKeyPresses.count()==0); - QVERIFY(mKeyCatcher->mKeyReleases.count()==0); - mDialpad->setCallButtonEnabled(true); - mUtil->mouseClickDialpad(Qt::Key_Yes); - QTest::qWait( WAIT_TIME ); - QVERIFY(mKeyCatcher->mKeyPresses.count()==1); - QVERIFY(mKeyCatcher->mKeyReleases.count()==1); - QVERIFY(mKeyCatcher->mKeyPresses.at(0)==Qt::Key_Yes); - QVERIFY(mKeyCatcher->mKeyReleases.at(0)==Qt::Key_Yes); - mDialpad->closeDialpad(); -} - -void mt_Dialpad::testCloseGesture() -{ - // QTest::mouseMove() doesn't work -} - -void mt_Dialpad::testOpenDialogWhileButtonPressed() -{ - mDialpad->openDialpad(); - QTest::qWait( WAIT_TIME ); - mUtil->mouseClickDialpad(Qt::Key_5, DialpadTestUtil::Press); - QTest::qWait( LONGPRESS_DURATION ); - - HbMessageBox* box = new HbMessageBox("Test dialog!"); - box->setAttribute(Qt::WA_DeleteOnClose); - box->setTimeout(1000); - box->show(); - QTest::qWait( 500 ); - mUtil->mouseClickDialpad(Qt::Key_5, DialpadTestUtil::Release); - QTest::qWait( 100 ); - - QVERIFY(mDialpad->editor().text()=="5"); - QVERIFY(mKeyCatcher->mKeyPresses.at(0)==Qt::Key_5); - QVERIFY(mKeyCatcher->mKeyReleases.at(0)==Qt::Key_5); - mDialpad->closeDialpad(); -} - -void mt_Dialpad::testTapOutsideDismiss() -{ - mDialpad->openDialpad(); - QTest::qWait( WAIT_TIME ); - - QPointF aboveTop = mDialpad->scenePos(); - aboveTop.setY(aboveTop.y()-10); - aboveTop.setX(aboveTop.x()+mDialpad->rect().center().x()); - QPoint windowPos = mMainWindow->mapFromScene( aboveTop ); - - // test tap outside dismiss is OFF (default) - QTest::mouseClick( mMainWindow->viewport(), Qt::LeftButton, - 0, windowPos ); - QTest::qWait( 500 ); - QVERIFY(mDialpad->isVisible()); - mDialpad->closeDialpad(); - - // test tap outside dismiss is ON - mDialpad->setTapOutsideDismiss(true); - mDialpad->openDialpad(); - QTest::qWait( WAIT_TIME ); - QTest::mouseClick( mMainWindow->viewport(), Qt::LeftButton, - 0, windowPos ); - QTest::qWait( 500 ); - QVERIFY(!mDialpad->isVisible()); -} - -#ifndef Q_OS_SYMBIAN -void mt_Dialpad::testCloseGestureLandscape() -{ - /* - // switch to landscape - mMainWindow->setOrientation(Qt::Horizontal); - mMainWindow->resize(640,360); - QTest::qWait( 1000 ); - - mDialpad->resize(mMainWindow->layoutRect().width()/2, - mMainWindow->layoutRect().height()); - mDialpad->setPos(mMainWindow->layoutRect().width()/2,0); - - mDialpad->openDialpad(); - - // slow swipe - QTest::qWait( WAIT_TIME ); - mUtil->mouseClickDialpad(Qt::Key_4, Press, false); - QTest::qWait( 500 ); // longer than swipe - mUtil->mouseClickDialpad(Qt::Key_6, Release, false); - QTest::qWait( 500 ); - QVERIFY(mDialpad->isVisible()==true); - - // short swipe - QTest::qWait( WAIT_TIME ); - mUtil->mouseClickDialpad(Qt::Key_4, Press, false); - QTest::qWait( 200 ); - mUtil->mouseClickDialpad(Qt::Key_5, Release, false); - QTest::qWait( 500 ); - QVERIFY(mDialpad->isVisible()==true); - - // ok swipe - mDialpad->editor().setText(QString()); - QTest::qWait( WAIT_TIME ); - mUtil->mouseClickDialpad(Qt::Key_4, Press, false); - QTest::qWait( 200 ); - mUtil->mouseClickDialpad(Qt::Key_6, Release, false); - QVERIFY(mDialpad->editor().text()==""); - QTest::qWait( 1000 ); - QVERIFY(mDialpad->isVisible()==false);*/ -} - -void mt_Dialpad::testOrientationChange() -{ - mDialpad->openDialpad(); - QTest::qWait( WAIT_TIME ); - - // test landscape - mMainWindow->setOrientation(Qt::Horizontal); - mMainWindow->resize(640,360); - QTest::qWait( 1000 ); - mDialpad->resize(mMainWindow->layoutRect().width()/2, - mMainWindow->layoutRect().height()); - mDialpad->setPos(mMainWindow->layoutRect().width()/2,0); - QTest::qWait( 1000 ); - - QVERIFY(mDialpad->isVisible()==true); - mUtil->mouseClickDialpad(Qt::Key_5); - QVERIFY(mDialpad->editor().text()=="5"); - QTest::qWait( 500 ); - - // test portrait - mMainWindow->setOrientation(Qt::Vertical); - mMainWindow->resize(360,640); - mDialpad->resize(mMainWindow->layoutRect().width(), - mMainWindow->layoutRect().height()/2); - mDialpad->setPos(0,mMainWindow->layoutRect().height()/4); - QTest::qWait( 1000 ); - - QVERIFY(mDialpad->isVisible()==true); - mDialpad->editor().setText(""); - mUtil->mouseClickDialpad(Qt::Key_5); - QVERIFY(mDialpad->editor().text()=="5"); - - mDialpad->closeDialpad(); - QTest::qWait( 500 ); - QVERIFY(mDialpad->isVisible()==false); -} - -#endif //Q_OS_SYMBIAN - -DIALPAD_TEST_MAIN(mt_Dialpad) -#include "mt_dialpad.moc" -