From 95cebd34ebc5b4d39b11dc91610309a35e488663 Mon Sep 17 00:00:00 2001 From: Jason McDonald Date: Tue, 27 Sep 2011 19:53:01 +1000 Subject: Remove Symbian-specific code from tests. Symbian is not a supported platform for Qt5, so this code is no longer required. Change-Id: I1172e6a42d518490e63e9599bf10579df08259aa Reviewed-on: http://codereview.qt-project.org/5657 Reviewed-by: Rohan McGovern --- tests/auto/qinputcontext/qinputcontext.pro | 4 - tests/auto/qinputcontext/tst_qinputcontext.cpp | 965 ------------------------- 2 files changed, 969 deletions(-) (limited to 'tests/auto/qinputcontext') diff --git a/tests/auto/qinputcontext/qinputcontext.pro b/tests/auto/qinputcontext/qinputcontext.pro index 8dedc85cf0..cdadb0c5ed 100644 --- a/tests/auto/qinputcontext/qinputcontext.pro +++ b/tests/auto/qinputcontext/qinputcontext.pro @@ -2,10 +2,6 @@ load(qttest_p4) QT += widgets SOURCES += tst_qinputcontext.cpp -symbian { - LIBS += -lws32 -lcone -} - mac*:CONFIG+=insignificant_test CONFIG += insignificant_test # QTBUG-21402 diff --git a/tests/auto/qinputcontext/tst_qinputcontext.cpp b/tests/auto/qinputcontext/tst_qinputcontext.cpp index 2f74988954..942160edac 100644 --- a/tests/auto/qinputcontext/tst_qinputcontext.cpp +++ b/tests/auto/qinputcontext/tst_qinputcontext.cpp @@ -58,14 +58,6 @@ #include #endif -#ifdef Q_OS_SYMBIAN -#include -#include - -#include -#include -#endif - class tst_QInputContext : public QObject { Q_OBJECT @@ -74,10 +66,7 @@ public: tst_QInputContext() : m_phoneIsQwerty(false) {} virtual ~tst_QInputContext() {} - template void symbianTestCoeFepInputContext_addData(); - public slots: - void initTestCase(); void cleanupTestCase() {} void init() {} void cleanup() {} @@ -88,178 +77,11 @@ private slots: void closeSoftwareInputPanel(); void selections(); void focusProxy(); - void symbianTestCoeFepInputContext_data(); - void symbianTestCoeFepInputContext(); - void symbianTestCoeFepAutoCommit_data(); - void symbianTestCoeFepAutoCommit(); private: bool m_phoneIsQwerty; }; -#ifdef Q_OS_SYMBIAN -class KeyEvent : public TWsEvent -{ -public: - KeyEvent(QWidget *w, TInt type, TInt scanCode, TUint code, TUint modifiers, TInt repeats) { - iHandle = w->effectiveWinId()->DrawableWindow()->WindowGroupId(); - iType = type; - SetTimeNow(); - TKeyEvent *keyEvent = reinterpret_cast(iEventData); - keyEvent->iScanCode = scanCode; - keyEvent->iCode = code; - keyEvent->iModifiers = modifiers; - keyEvent->iRepeats = repeats; - } -}; - -class FepReplayEvent -{ -public: - enum Type { - Pause, - Key, - CompleteKey - }; - - FepReplayEvent(int msecsToPause) - : m_type(Pause) - , m_msecsToPause(msecsToPause) - { - } - - FepReplayEvent(TInt keyType, TInt scanCode, TUint code, TUint modifiers, TInt repeats) - : m_type(Key) - , m_keyType(keyType) - , m_scanCode(scanCode) - , m_code(code) - , m_modifiers(modifiers) - , m_repeats(repeats) - { - } - - FepReplayEvent(TInt scanCode, TUint code, TUint modifiers, TInt repeats) - : m_type(CompleteKey) - , m_scanCode(scanCode) - , m_code(code) - , m_modifiers(modifiers) - , m_repeats(repeats) - { - } - - void sendEvent(QWidget *w, TInt type, TInt scanCode, TUint code, TUint modifiers, TInt repeats) - { - KeyEvent event(w, type, scanCode, code, modifiers, repeats); - S60->wsSession().SendEventToWindowGroup(w->effectiveWinId()->DrawableWindow()->WindowGroupId(), event); - } - - void pause(int msecs) - { - // Don't use qWait here. The polling nature of that function screws up the test. - QTimer timer; - QEventLoop loop; - QObject::connect(&timer, SIGNAL(timeout()), &loop, SLOT(quit())); - timer.setSingleShot(true); - timer.start(msecs); - loop.exec(); - } - - // For some reason, the test fails if using processEvents instead of an event loop - // with a timer to quit it, so use the timer. -#define KEY_WAIT 10 - - void replay(QWidget *w) - { - if (m_type == Pause) { - pause(m_msecsToPause); - } else if (m_type == Key) { - sendEvent(w, m_keyType, m_scanCode, m_code, m_modifiers, m_repeats); - if (m_keyType != EEventKeyDown) - // EEventKeyDown events should have no pause before the EEventKey event. - pause(KEY_WAIT); - } else if (m_type == CompleteKey) { - sendEvent(w, EEventKeyDown, m_scanCode, 0, m_modifiers, m_repeats); - // EEventKeyDown events should have no pause before the EEventKey event. - sendEvent(w, EEventKey, m_scanCode, m_code, m_modifiers, m_repeats); - pause(KEY_WAIT); - sendEvent(w, EEventKeyUp, m_scanCode, 0, m_modifiers, m_repeats); - pause(KEY_WAIT); - } - } - -private: - Type m_type; - int m_msecsToPause; - TInt m_keyType; - TInt m_scanCode; - TUint m_code; - TUint m_modifiers; - TInt m_repeats; -}; - -Q_DECLARE_METATYPE(QList) -Q_DECLARE_METATYPE(Qt::InputMethodHints) -Q_DECLARE_METATYPE(QLineEdit::EchoMode); - -#endif // Q_OS_SYMBIAN - -void tst_QInputContext::initTestCase() -{ -#ifdef Q_OS_SYMBIAN - // Sanity test. Checks FEP for: - // - T9 mode is default (it will attempt to fix this) - // - Language is English (it cannot fix this; bail out if not correct) - QWidget w; - QLayout *layout = new QVBoxLayout; - w.setLayout(layout); - QLineEdit *lineedit = new QLineEdit; - layout->addWidget(lineedit); - lineedit->setFocus(); -#ifdef QT_KEYPAD_NAVIGATION - lineedit->setEditFocus(true); -#endif - w.show(); - - QDesktopWidget desktop; - QRect screenSize = desktop.screenGeometry(&w); - if (screenSize.width() > screenSize.height()) { - // Crude way of finding out we are running on a qwerty phone. - m_phoneIsQwerty = true; - return; - } - - for (int iterations = 0; iterations < 16; iterations++) { - QTest::qWait(500); - - QList keyEvents; - - keyEvents << FepReplayEvent('9', '9', 0, 0); - keyEvents << FepReplayEvent('6', '6', 0, 0); - keyEvents << FepReplayEvent('8', '8', 0, 0); - keyEvents << FepReplayEvent(EStdKeyRightArrow, EKeyRightArrow, 0, 0); - - foreach(FepReplayEvent event, keyEvents) { - event.replay(lineedit); - } - - QApplication::processEvents(); - - if (lineedit->text().endsWith("you", Qt::CaseInsensitive)) { - // Success! - return; - } - - // Try changing modes. - // After 8 iterations, try to press the mode switch twice before typing. - for (int c = 0; c <= iterations / 8; c++) { - FepReplayEvent(EStdKeyHash, '#', 0, 0).replay(lineedit); - } - } - - QFAIL("FEP sanity test failed. Either the phone is not set to English, or the test was unable to enable T9"); -#endif -} - void tst_QInputContext::maximumTextLength() { QLineEdit le; @@ -574,792 +396,5 @@ public: }; #endif // QT_WEBKIT_LIB -void tst_QInputContext::symbianTestCoeFepInputContext_data() -{ -#ifdef Q_OS_SYMBIAN - QTest::addColumn ("editwidget"); - QTest::addColumn ("inputMethodEnabled"); - QTest::addColumn ("inputMethodHints"); - QTest::addColumn ("maxLength"); // Zero for no limit - QTest::addColumn ("echoMode"); - QTest::addColumn > ("keyEvents"); - QTest::addColumn ("finalString"); - QTest::addColumn ("preeditString"); - - symbianTestCoeFepInputContext_addData(); - symbianTestCoeFepInputContext_addData(); - symbianTestCoeFepInputContext_addData(); -# ifdef QT_WEBKIT_LIB - symbianTestCoeFepInputContext_addData(); - symbianTestCoeFepInputContext_addData(); -# endif -#endif -} - -Q_DECLARE_METATYPE(QWidget *) -Q_DECLARE_METATYPE(QLineEdit *) -Q_DECLARE_METATYPE(QPlainTextEdit *) -Q_DECLARE_METATYPE(QTextEdit *) - -template -void tst_QInputContext::symbianTestCoeFepInputContext_addData() -{ -#ifdef Q_OS_SYMBIAN - QList events; - QWidget *editwidget; - - events << FepReplayEvent(EStdKeyBackspace, EKeyBackspace, 0, 0); - events << FepReplayEvent(EStdKeyBackspace, EKeyBackspace, 0, 0); - events << FepReplayEvent('5', '5', 0, 0); - events << FepReplayEvent('4', '4', 0, 0); - events << FepReplayEvent('6', '6', 0, 0); - events << FepReplayEvent(EStdKeyBackspace, EKeyBackspace, 0, 0); - events << FepReplayEvent(EStdKeyBackspace, EKeyBackspace, 0, 0); - events << FepReplayEvent('1', '1', 0, 0); - events << FepReplayEvent(EStdKeyBackspace, EKeyBackspace, 0, 0); - events << FepReplayEvent('2', '2', 0, 0); - events << FepReplayEvent('1', '1', 0, 0); - editwidget = new WidgetType; - QTest::newRow(QString(QString::fromLatin1(editwidget->metaObject()->className()) - + ": Numbers (no FEP)").toLocal8Bit()) - << editwidget - << false - << Qt::InputMethodHints(Qt::ImhNone) - << 0 - << QLineEdit::Normal - << events - << QString("521") - << QString(""); - editwidget = new WidgetType; - QTest::newRow(QString(QString::fromLatin1(editwidget->metaObject()->className()) - + ": Numbers and password mode (no FEP)").toLocal8Bit()) - << editwidget - << false - << Qt::InputMethodHints(Qt::ImhNone) - << 0 - << QLineEdit::Password - << events - << QString("521") - << QString(""); - editwidget = new WidgetType; - QTest::newRow(QString(QString::fromLatin1(editwidget->metaObject()->className()) - + ": Numbers").toLocal8Bit()) - << editwidget - << true - << Qt::InputMethodHints(Qt::ImhDigitsOnly) - << 0 - << QLineEdit::Normal - << events - << QString("521") - << QString(""); - editwidget = new WidgetType; - QTest::newRow(QString(QString::fromLatin1(editwidget->metaObject()->className()) - + ": Numbers max length (no FEP)").toLocal8Bit()) - << editwidget - << false - << Qt::InputMethodHints(Qt::ImhNone) - << 2 - << QLineEdit::Normal - << events - << QString("21") - << QString(""); - editwidget = new WidgetType; - QTest::newRow(QString(QString::fromLatin1(editwidget->metaObject()->className()) - + ": Numbers max length").toLocal8Bit()) - << editwidget - << true - << Qt::InputMethodHints(Qt::ImhDigitsOnly) - << 2 - << QLineEdit::Normal - << events - << QString("21") - << QString(""); - events.clear(); - - events << FepReplayEvent(EEventKeyDown, '5', 0, 0, 0); - events << FepReplayEvent(EEventKey, '5', '5', 0, 0); - events << FepReplayEvent(EEventKey, '5', '5', 0, 1); - events << FepReplayEvent(EEventKey, '5', '5', 0, 1); - events << FepReplayEvent(EEventKeyUp, '5', 0, 0, 0); - editwidget = new WidgetType; - QTest::newRow(QString(QString::fromLatin1(editwidget->metaObject()->className()) - + ": Numbers and autorepeat (no FEP)").toLocal8Bit()) - << editwidget - << false - << Qt::InputMethodHints(Qt::ImhNone) - << 0 - << QLineEdit::Normal - << events - << QString("555") - << QString(""); - events.clear(); - - events << FepReplayEvent(EStdKeyBackspace, EKeyBackspace, 0, 0); - events << FepReplayEvent('2', '2', 0, 0); - events << FepReplayEvent('3', '3', 0, 0); - events << FepReplayEvent('4', '4', 0, 0); - events << FepReplayEvent('4', '4', 0, 0); - events << FepReplayEvent('5', '5', 0, 0); - events << FepReplayEvent('5', '5', 0, 0); - events << FepReplayEvent(EStdKeyBackspace, EKeyBackspace, 0, 0); - editwidget = new WidgetType; - QTest::newRow(QString(QString::fromLatin1(editwidget->metaObject()->className()) - + ": Multitap").toLocal8Bit()) - << editwidget - << true - << Qt::InputMethodHints(Qt::ImhNoPredictiveText) - << 0 - << QLineEdit::Normal - << events - << QString("Adh") - << QString(""); - editwidget = new WidgetType; - QTest::newRow(QString(QString::fromLatin1(editwidget->metaObject()->className()) - + ": Multitap with no auto uppercase").toLocal8Bit()) - << editwidget - << true - << Qt::InputMethodHints(Qt::ImhNoPredictiveText | Qt::ImhNoAutoUppercase) - << 0 - << QLineEdit::Normal - << events - << QString("adh") - << QString(""); - editwidget = new WidgetType; - QTest::newRow(QString(QString::fromLatin1(editwidget->metaObject()->className()) - + ": Multitap with uppercase").toLocal8Bit()) - << editwidget - << true - << Qt::InputMethodHints(Qt::ImhNoPredictiveText | Qt::ImhPreferUppercase) - << 0 - << QLineEdit::Normal - << events - << QString("ADH") - << QString(""); - editwidget = new WidgetType; - QTest::newRow(QString(QString::fromLatin1(editwidget->metaObject()->className()) - + ": Multitap with lowercase").toLocal8Bit()) - << editwidget - << true - << Qt::InputMethodHints(Qt::ImhNoPredictiveText | Qt::ImhPreferLowercase) - << 0 - << QLineEdit::Normal - << events - << QString("adh") - << QString(""); - editwidget = new WidgetType; - QTest::newRow(QString(QString::fromLatin1(editwidget->metaObject()->className()) - + ": Multitap with forced uppercase").toLocal8Bit()) - << editwidget - << true - << Qt::InputMethodHints(Qt::ImhNoPredictiveText | Qt::ImhUppercaseOnly) - << 0 - << QLineEdit::Normal - << events - << QString("ADH") - << QString(""); - editwidget = new WidgetType; - QTest::newRow(QString(QString::fromLatin1(editwidget->metaObject()->className()) - + ": Multitap with forced lowercase").toLocal8Bit()) - << editwidget - << true - << Qt::InputMethodHints(Qt::ImhNoPredictiveText | Qt::ImhLowercaseOnly) - << 0 - << QLineEdit::Normal - << events - << QString("adh") - << QString(""); - events.clear(); - - events << FepReplayEvent(EStdKeyHash, '#', 0, 0); - events << FepReplayEvent('2', '2', 0, 0); - events << FepReplayEvent('2', '2', 0, 0); - events << FepReplayEvent('3', '3', 0, 0); - events << FepReplayEvent('4', '4', 0, 0); - events << FepReplayEvent('4', '4', 0, 0); - events << FepReplayEvent('5', '5', 0, 0); - events << FepReplayEvent('5', '5', 0, 0); - events << FepReplayEvent(EStdKeyBackspace, EKeyBackspace, 0, 0); - editwidget = new WidgetType; - QTest::newRow(QString(QString::fromLatin1(editwidget->metaObject()->className()) - + ": Multitap with mode switch").toLocal8Bit()) - << editwidget - << true - << Qt::InputMethodHints(Qt::ImhNoPredictiveText) - << 0 - << QLineEdit::Normal - << events - << QString("bdh") - << QString(""); - events.clear(); - - events << FepReplayEvent('7', '7', 0, 0); - events << FepReplayEvent('7', '7', 0, 0); - events << FepReplayEvent('8', '8', 0, 0); - events << FepReplayEvent('9', '9', 0, 0); - events << FepReplayEvent('9', '9', 0, 0); - editwidget = new WidgetType; - QTest::newRow(QString(QString::fromLatin1(editwidget->metaObject()->className()) - + ": Multitap with unfinished text").toLocal8Bit()) - << editwidget - << true - << Qt::InputMethodHints(Qt::ImhNoPredictiveText) - << 0 - << QLineEdit::Normal - << events - << QString("Qt") - << QString("x"); - events << FepReplayEvent(2000); - editwidget = new WidgetType; - QTest::newRow(QString(QString::fromLatin1(editwidget->metaObject()->className()) - + ": Multitap with committed text").toLocal8Bit()) - << editwidget - << true - << Qt::InputMethodHints(Qt::ImhNoPredictiveText) - << 0 - << QLineEdit::Normal - << events - << QString("Qtx") - << QString(""); - events.clear(); - - events << FepReplayEvent('4', '4', 0, 0); - events << FepReplayEvent('4', '4', 0, 0); - // Simulate holding down hash key. - events << FepReplayEvent(EEventKeyDown, EStdKeyHash, 0, 0, 0); - events << FepReplayEvent(EEventKey, EStdKeyHash, '#', 0, 0); - events << FepReplayEvent(500); - events << FepReplayEvent(EEventKey, EStdKeyHash, '#', 0, 1); - events << FepReplayEvent(EEventKey, EStdKeyHash, '#', 0, 1); - events << FepReplayEvent(EEventKey, EStdKeyHash, '#', 0, 1); - events << FepReplayEvent(EEventKeyUp, EStdKeyHash, 0, 0, 0); - events << FepReplayEvent('7', '7', 0, 0); - events << FepReplayEvent('7', '7', 0, 0); - events << FepReplayEvent('8', '8', 0, 0); - // QTBUG-9867: Switch back as well to make sure we don't get extra symbols - events << FepReplayEvent(EEventKeyDown, EStdKeyHash, 0, 0, 0); - events << FepReplayEvent(EEventKey, EStdKeyHash, '#', 0, 0); - events << FepReplayEvent(500); - events << FepReplayEvent(EEventKey, EStdKeyHash, '#', 0, 1); - events << FepReplayEvent(EEventKey, EStdKeyHash, '#', 0, 1); - events << FepReplayEvent(EEventKey, EStdKeyHash, '#', 0, 1); - events << FepReplayEvent(EEventKeyUp, EStdKeyHash, 0, 0, 0); - events << FepReplayEvent('9', '9', 0, 0); - events << FepReplayEvent('6', '6', 0, 0); - events << FepReplayEvent('8', '8', 0, 0); - events << FepReplayEvent(2000); - events << FepReplayEvent(EStdKeyDevice3, EKeyDevice3, 0, 0); // Select key - editwidget = new WidgetType; - QTest::newRow(QString(QString::fromLatin1(editwidget->metaObject()->className()) - + ": Multitap and numbers").toLocal8Bit()) - << editwidget - << true - << Qt::InputMethodHints(Qt::ImhNoPredictiveText) - << 0 - << QLineEdit::Normal - << events - << QString("H778wmt") - << QString(""); - editwidget = new WidgetType; - QTest::newRow(QString(QString::fromLatin1(editwidget->metaObject()->className()) - + ": T9 and numbers").toLocal8Bit()) - << editwidget - << true - << Qt::InputMethodHints(Qt::ImhPreferLowercase) - << 0 - << QLineEdit::Normal - << events - << QString("hi778you") - << QString(""); - events.clear(); - - events << FepReplayEvent('4', '4', 0, 0); - events << FepReplayEvent('4', '4', 0, 0); - events << FepReplayEvent(EStdKeyDevice3, EKeyDevice3, 0, 0); // Select key - editwidget = new WidgetType; - QTest::newRow(QString(QString::fromLatin1(editwidget->metaObject()->className()) - + ": T9").toLocal8Bit()) - << editwidget - << true - << Qt::InputMethodHints(Qt::ImhPreferLowercase) - << 0 - << QLineEdit::Normal - << events - << QString("hi") - << QString(""); - editwidget = new WidgetType; - QTest::newRow(QString(QString::fromLatin1(editwidget->metaObject()->className()) - + ": T9 with uppercase").toLocal8Bit()) - << editwidget - << true - << Qt::InputMethodHints(Qt::ImhPreferUppercase) - << 0 - << QLineEdit::Normal - << events - << QString("HI") - << QString(""); - editwidget = new WidgetType; - QTest::newRow(QString(QString::fromLatin1(editwidget->metaObject()->className()) - + ": T9 with forced lowercase").toLocal8Bit()) - << editwidget - << true - << Qt::InputMethodHints(Qt::ImhLowercaseOnly) - << 0 - << QLineEdit::Normal - << events - << QString("hi") - << QString(""); - editwidget = new WidgetType; - QTest::newRow(QString(QString::fromLatin1(editwidget->metaObject()->className()) - + ": T9 with forced uppercase").toLocal8Bit()) - << editwidget - << true - << Qt::InputMethodHints(Qt::ImhUppercaseOnly) - << 0 - << QLineEdit::Normal - << events - << QString("HI") - << QString(""); - editwidget = new WidgetType; - QTest::newRow(QString(QString::fromLatin1(editwidget->metaObject()->className()) - + ": T9 with maxlength").toLocal8Bit()) - << editwidget - << true - << Qt::InputMethodHints(Qt::ImhLowercaseOnly) - << 1 - << QLineEdit::Normal - << events - << QString("i") - << QString(""); - events.clear(); - - events << FepReplayEvent('4', '4', 0, 0); - events << FepReplayEvent('4', '4', 0, 0); - events << FepReplayEvent(EStdKeyLeftArrow, EKeyLeftArrow, 0, 0); - events << FepReplayEvent(EStdKeyLeftArrow, EKeyLeftArrow, 0, 0); - events << FepReplayEvent('9', '9', 0, 0); - events << FepReplayEvent('6', '6', 0, 0); - events << FepReplayEvent('8', '8', 0, 0); - events << FepReplayEvent('0', '0', 0, 0); - events << FepReplayEvent(EStdKeyRightArrow, EKeyRightArrow, 0, 0); - events << FepReplayEvent(EStdKeyRightArrow, EKeyRightArrow, 0, 0); - events << FepReplayEvent('8', '8', 0, 0); - events << FepReplayEvent('8', '8', 0, 0); - editwidget = new WidgetType; - QTest::newRow(QString(QString::fromLatin1(editwidget->metaObject()->className()) - + ": T9 with movement and unfinished text").toLocal8Bit()) - << editwidget - << true - << Qt::InputMethodHints(Qt::ImhPreferLowercase) - << 0 - << QLineEdit::Normal - << events - << QString("you hi") - << QString("tv"); - editwidget = new WidgetType; - QTest::newRow(QString(QString::fromLatin1(editwidget->metaObject()->className()) - + ": T9 with movement, password and unfinished text").toLocal8Bit()) - << editwidget - << true - << Qt::InputMethodHints(Qt::ImhPreferLowercase) - << 0 - << QLineEdit::Password - << events - << QString("wmt h") - << QString("u"); - editwidget = new WidgetType; - QTest::newRow(QString(QString::fromLatin1(editwidget->metaObject()->className()) - + ": T9 with movement, maxlength, password and unfinished text").toLocal8Bit()) - << editwidget - << true - << Qt::InputMethodHints(Qt::ImhPreferLowercase) - << 2 - << QLineEdit::Password - << events - << QString("wh") - << QString(""); - editwidget = new WidgetType; - QTest::newRow(QString(QString::fromLatin1(editwidget->metaObject()->className()) - + ": T9 with movement, maxlength and unfinished text").toLocal8Bit()) - << editwidget - << true - << Qt::InputMethodHints(Qt::ImhPreferLowercase) - << 2 - << QLineEdit::Normal - << events - << QString("hi") - << QString(""); - editwidget = new WidgetType; - QTest::newRow(QString(QString::fromLatin1(editwidget->metaObject()->className()) - + ": Multitap with movement and unfinished text").toLocal8Bit()) - << editwidget - << true - << Qt::InputMethodHints(Qt::ImhNoPredictiveText | Qt::ImhPreferLowercase) - << 0 - << QLineEdit::Normal - << events - << QString("wmt h") - << QString("u"); - editwidget = new WidgetType; - QTest::newRow(QString(QString::fromLatin1(editwidget->metaObject()->className()) - + ": Multitap with movement, maxlength and unfinished text").toLocal8Bit()) - << editwidget - << true - << Qt::InputMethodHints(Qt::ImhNoPredictiveText | Qt::ImhPreferLowercase) - << 2 - << QLineEdit::Normal - << events - << QString("wh") - << QString(""); - editwidget = new WidgetType; - QTest::newRow(QString(QString::fromLatin1(editwidget->metaObject()->className()) - + ": Numbers with movement").toLocal8Bit()) - << editwidget - << true - << Qt::InputMethodHints(Qt::ImhDigitsOnly) - << 0 - << QLineEdit::Normal - << events - << QString("96804488") - << QString(""); - editwidget = new WidgetType; - QTest::newRow(QString(QString::fromLatin1(editwidget->metaObject()->className()) - + ": Numbers with movement and maxlength").toLocal8Bit()) - << editwidget - << true - << Qt::InputMethodHints(Qt::ImhDigitsOnly) - << 2 - << QLineEdit::Normal - << events - << QString("44") - << QString(""); - editwidget = new WidgetType; - QTest::newRow(QString(QString::fromLatin1(editwidget->metaObject()->className()) - + ": Numbers with movement, password and unfinished text").toLocal8Bit()) - << editwidget - << true - << Qt::InputMethodHints(Qt::ImhDigitsOnly) - << 0 - << QLineEdit::Password - << events - << QString("9680448") - << QString("8"); - editwidget = new WidgetType; - QTest::newRow(QString(QString::fromLatin1(editwidget->metaObject()->className()) - + ": Numbers with movement, maxlength, password and unfinished text").toLocal8Bit()) - << editwidget - << true - << Qt::InputMethodHints(Qt::ImhDigitsOnly) - << 2 - << QLineEdit::Password - << events - << QString("44") - << QString(""); - events << FepReplayEvent(EStdKeyRightArrow, EKeyRightArrow, 0, 0); - editwidget = new WidgetType; - QTest::newRow(QString(QString::fromLatin1(editwidget->metaObject()->className()) - + ": T9 with movement").toLocal8Bit()) - << editwidget - << true - << Qt::InputMethodHints(Qt::ImhPreferLowercase) - << 0 - << QLineEdit::Normal - << events - << QString("you htvi") - << QString(""); - editwidget = new WidgetType; - QTest::newRow(QString(QString::fromLatin1(editwidget->metaObject()->className()) - + ": T9 with movement and password").toLocal8Bit()) - << editwidget - << true - << Qt::InputMethodHints(Qt::ImhPreferLowercase) - << 0 - << QLineEdit::Password - << events - << QString("wmt hu") - << QString(""); - editwidget = new WidgetType; - QTest::newRow(QString(QString::fromLatin1(editwidget->metaObject()->className()) - + ": T9 with movement, maxlength and password").toLocal8Bit()) - << editwidget - << true - << Qt::InputMethodHints(Qt::ImhPreferLowercase) - << 2 - << QLineEdit::Password - << events - << QString("wh") - << QString(""); - editwidget = new WidgetType; - QTest::newRow(QString(QString::fromLatin1(editwidget->metaObject()->className()) - + ": Multitap with movement").toLocal8Bit()) - << editwidget - << true - << Qt::InputMethodHints(Qt::ImhNoPredictiveText | Qt::ImhPreferLowercase) - << 0 - << QLineEdit::Normal - << events - << QString("wmt hu") - << QString(""); - editwidget = new WidgetType; - QTest::newRow(QString(QString::fromLatin1(editwidget->metaObject()->className()) - + ": Multitap with movement and maxlength").toLocal8Bit()) - << editwidget - << true - << Qt::InputMethodHints(Qt::ImhNoPredictiveText | Qt::ImhPreferLowercase) - << 2 - << QLineEdit::Normal - << events - << QString("wh") - << QString(""); - editwidget = new WidgetType; - QTest::newRow(QString(QString::fromLatin1(editwidget->metaObject()->className()) - + ": Numbers with movement and password").toLocal8Bit()) - << editwidget - << true - << Qt::InputMethodHints(Qt::ImhDigitsOnly) - << 0 - << QLineEdit::Password - << events - << QString("96804488") - << QString(""); - editwidget = new WidgetType; - QTest::newRow(QString(QString::fromLatin1(editwidget->metaObject()->className()) - + ": Numbers with movement, maxlength and password").toLocal8Bit()) - << editwidget - << true - << Qt::InputMethodHints(Qt::ImhDigitsOnly) - << 2 - << QLineEdit::Password - << events - << QString("44") - << QString(""); - events.clear(); - - // Test that the symbol key successfully does nothing when in number-only mode. - events << FepReplayEvent(EEventKeyDown, EStdKeyLeftFunc, 0, 0, 0); - events << FepReplayEvent(EEventKeyUp, EStdKeyLeftFunc, 0, 0, 0); - editwidget = new WidgetType; - QTest::newRow(QString(QString::fromLatin1(editwidget->metaObject()->className()) - + ": Dead symbols key").toLocal8Bit()) - << editwidget - << true - << Qt::InputMethodHints(Qt::ImhDigitsOnly) - << 0 - << QLineEdit::Normal - << events - << QString("") - << QString(""); - editwidget = new WidgetType; - QTest::newRow(QString(QString::fromLatin1(editwidget->metaObject()->className()) - + ": Dead symbols key and password").toLocal8Bit()) - << editwidget - << true - << Qt::InputMethodHints(Qt::ImhDigitsOnly) - << 0 - << QLineEdit::Password - << events - << QString("") - << QString(""); - events.clear(); -#endif -} - -void tst_QInputContext::symbianTestCoeFepInputContext() -{ -#ifndef Q_OS_SYMBIAN - QSKIP("This is a Symbian-only test", SkipAll); -#else - QCoeFepInputContext *ic = qobject_cast(qApp->inputContext()); - if (!ic) { - QSKIP("coefep is not the active input context; skipping test", SkipAll); - } - - QFETCH(QWidget *, editwidget); - QFETCH(bool, inputMethodEnabled); - QFETCH(Qt::InputMethodHints, inputMethodHints); - QFETCH(int, maxLength); - QFETCH(QLineEdit::EchoMode, echoMode); - QFETCH(QList, keyEvents); - QFETCH(QString, finalString); - QFETCH(QString, preeditString); - - if (inputMethodEnabled && m_phoneIsQwerty) { - QSKIP("Skipping advanced input method tests on QWERTY phones", SkipSingle); - } - - QWidget w; - QLayout *layout = new QVBoxLayout; - w.setLayout(layout); - - layout->addWidget(editwidget); - editwidget->setFocus(); -#ifdef QT_KEYPAD_NAVIGATION - editwidget->setEditFocus(true); -#endif - w.show(); - - editwidget->setAttribute(Qt::WA_InputMethodEnabled, inputMethodEnabled); - editwidget->setInputMethodHints(inputMethodHints); - if (QLineEdit *lineedit = qobject_cast(editwidget)) { - if (maxLength > 0) - lineedit->setMaxLength(maxLength); - lineedit->setEchoMode(echoMode); -#ifdef QT_WEBKIT_LIB - } else if (AutoWebView *webView = qobject_cast(editwidget)) { - if (maxLength > 0) - webView->setMaxLength(maxLength); - webView->setEchoMode(echoMode); - // WebKit disables T9 everywhere. - if (inputMethodEnabled && !(inputMethodHints & Qt::ImhNoPredictiveText)) - return; - } else if (AutoGraphicsWebView *webView = qobject_cast(editwidget)) { - if (maxLength > 0) - webView->setMaxLength(maxLength); - webView->setEchoMode(echoMode); - // WebKit disables T9 everywhere. - if (inputMethodEnabled && !(inputMethodHints & Qt::ImhNoPredictiveText)) - return; -#endif - } else if (maxLength > 0 || echoMode != QLineEdit::Normal) { - // Only some widgets support these features so don't attempt any tests using those - // on other widgets. - return; - } - - QTest::qWait(200); - - foreach(FepReplayEvent event, keyEvents) { - event.replay(editwidget); - } - - QApplication::processEvents(); - - QCOMPARE(editwidget->inputMethodQuery(Qt::ImSurroundingText).toString(), finalString); - QCOMPARE(ic->m_preeditString, preeditString); - - delete editwidget; -#endif -} - -void tst_QInputContext::symbianTestCoeFepAutoCommit_data() -{ -#ifdef Q_OS_SYMBIAN - QTest::addColumn ("inputMethodHints"); - QTest::addColumn ("echoMode"); - QTest::addColumn > ("keyEvents"); - QTest::addColumn ("finalString"); - - QList events; - - events << FepReplayEvent('4', '4', 0, 0); - events << FepReplayEvent('4', '4', 0, 0); - events << FepReplayEvent('0', '0', 0, 0); - events << FepReplayEvent('9', '9', 0, 0); - events << FepReplayEvent('6', '6', 0, 0); - events << FepReplayEvent('8', '8', 0, 0); - QTest::newRow("Numbers") - << Qt::InputMethodHints(Qt::ImhDigitsOnly) - << QLineEdit::Normal - << events - << QString("440968"); - QTest::newRow("Numbers and password") - << Qt::InputMethodHints(Qt::ImhDigitsOnly) - << QLineEdit::Password - << events - << QString("440968"); - QTest::newRow("Multitap") - << Qt::InputMethodHints(Qt::ImhPreferLowercase | Qt::ImhNoPredictiveText) - << QLineEdit::Normal - << events - << QString("h wmt"); - QTest::newRow("T9") - << Qt::InputMethodHints(Qt::ImhPreferLowercase) - << QLineEdit::Normal - << events - << QString("hi you"); - QTest::newRow("Multitap with password") - << Qt::InputMethodHints(Qt::ImhPreferLowercase | Qt::ImhNoPredictiveText) - << QLineEdit::Password - << events - << QString("h wmt"); - QTest::newRow("T9 with password") - << Qt::InputMethodHints(Qt::ImhPreferLowercase) - << QLineEdit::Password - << events - << QString("h wmt"); -#endif -} - -void tst_QInputContext::symbianTestCoeFepAutoCommit() -{ -#ifndef Q_OS_SYMBIAN - QSKIP("This is a Symbian-only test", SkipAll); -#else - QCoeFepInputContext *ic = qobject_cast(qApp->inputContext()); - if (!ic) { - QSKIP("coefep is not the active input context; skipping test", SkipAll); - } - - QFETCH(Qt::InputMethodHints, inputMethodHints); - QFETCH(QLineEdit::EchoMode, echoMode); - QFETCH(QList, keyEvents); - QFETCH(QString, finalString); - - if (m_phoneIsQwerty) { - QSKIP("Skipping advanced input method tests on QWERTY phones", SkipSingle); - } - - QWidget w; - QLayout *layout = new QVBoxLayout; - w.setLayout(layout); - QLineEdit *lineedit = new QLineEdit; - layout->addWidget(lineedit); - lineedit->setFocus(); -#ifdef QT_KEYPAD_NAVIGATION - lineedit->setEditFocus(true); -#endif - QPushButton *pushButton = new QPushButton("Done"); - layout->addWidget(pushButton); - QAction softkey("Done", &w); - softkey.setSoftKeyRole(QAction::PositiveSoftKey); - w.addAction(&softkey); - w.show(); - - lineedit->setInputMethodHints(inputMethodHints); - lineedit->setEchoMode(echoMode); - - QTest::qWait(200); - foreach(FepReplayEvent event, keyEvents) { - event.replay(lineedit); - } - QApplication::processEvents(); - - QTest::mouseClick(pushButton, Qt::LeftButton); - - QCOMPARE(lineedit->text(), finalString); - QVERIFY(ic->m_preeditString.isEmpty()); - -#ifdef Q_WS_S60 - lineedit->inputContext()->reset(); - lineedit->clear(); - lineedit->setFocus(); -#ifdef QT_KEYPAD_NAVIGATION - lineedit->setEditFocus(true); -#endif - - QTest::qWait(200); - foreach(FepReplayEvent event, keyEvents) { - event.replay(lineedit); - } - QApplication::processEvents(); - - FepReplayEvent(EStdKeyDevice0, EKeyDevice0, 0, 0).replay(lineedit); // Left softkey - - QCOMPARE(lineedit->text(), finalString); - QVERIFY(ic->m_preeditString.isEmpty()); - -#endif // Q_WS_S60 -#endif // Q_OS_SYMBIAN -} - QTEST_MAIN(tst_QInputContext) #include "tst_qinputcontext.moc" -- cgit v1.2.3