tst_qlinedit: Create a new test widget on demand for each test.

The test used a member testWidget that was cleared and reset after each
test, which caused focus fights and side effects. The widget is now
created and shown only when necessary.

Change-Id: I0dc635e9d4cdf4f899994b88206bb0125526f6df
Reviewed-by: J-P Nurmi <jpnurmi@digia.com>
bb10
Friedemann Kleint 2013-12-12 10:38:26 +02:00 committed by The Qt Project
parent 54f0733e7d
commit c0b899b3df
1 changed files with 120 additions and 36 deletions

View File

@ -71,6 +71,7 @@
#include <qstringlistmodel.h>
#include <qsortfilterproxymodel.h>
#include <qdebug.h>
#include <qscreen.h>
#include "qcommonstyle.h"
#include "qstyleoption.h"
@ -87,6 +88,17 @@ QT_BEGIN_NAMESPACE
class QPainter;
QT_END_NAMESPACE
static inline void centerOnScreen(QWidget *w, const QSize &size)
{
const QPoint offset = QPoint(size.width() / 2, size.height() / 2);
w->move(QGuiApplication::primaryScreen()->availableGeometry().center() - offset);
}
static inline void centerOnScreen(QWidget *w)
{
centerOnScreen(w, w->geometry().size());
}
class StyleOptionTestStyle : public QCommonStyle
{
private:
@ -316,6 +328,7 @@ private:
// keyClicks(..) is moved to QtTestCase
void psKeyClick(QWidget *target, Qt::Key key, Qt::KeyboardModifiers pressState = 0);
void psKeyClick(QTestEventList &keys, Qt::Key key, Qt::KeyboardModifiers pressState = 0);
QLineEdit *ensureTestWidget();
bool validInput;
QString changed_string;
@ -325,7 +338,7 @@ private:
int selection_count;
int lastCursorPos;
int newCursorPos;
QLineEdit *testWidget;
QLineEdit *m_testWidget;
int m_keyboardScheme;
PlatformInputContext m_platformInputContext;
};
@ -354,7 +367,7 @@ void tst_QLineEdit::getSetCheck()
QCOMPARE(true, obj1.dragEnabled());
}
tst_QLineEdit::tst_QLineEdit() : validInput(false), m_keyboardScheme(0)
tst_QLineEdit::tst_QLineEdit() : validInput(false), m_testWidget(0), m_keyboardScheme(0)
{
if (const QPlatformTheme *theme = QGuiApplicationPrivate::platformTheme())
m_keyboardScheme = theme->themeHint(QPlatformTheme::KeyboardScheme).toInt();
@ -370,23 +383,24 @@ tst_QLineEdit::~tst_QLineEdit()
{
}
QLineEdit *tst_QLineEdit::ensureTestWidget()
{
if (!m_testWidget) {
m_testWidget = new QLineEdit;
m_testWidget->setObjectName("testWidget");
connect(m_testWidget, SIGNAL(cursorPositionChanged(int,int)), this, SLOT(onCursorPositionChanged(int,int)));
connect(m_testWidget, SIGNAL(textChanged(QString)), this, SLOT(onTextChanged(QString)));
connect(m_testWidget, SIGNAL(textEdited(QString)), this, SLOT(onTextEdited(QString)));
connect(m_testWidget, SIGNAL(returnPressed()), this, SLOT(onReturnPressed()));
connect(m_testWidget, SIGNAL(selectionChanged()), this, SLOT(onSelectionChanged()));
connect(m_testWidget, SIGNAL(editingFinished()), this, SLOT(editingFinished()));
m_testWidget->resize(200,50);
}
return m_testWidget;
}
void tst_QLineEdit::initTestCase()
{
testWidget = new QLineEdit(0);
testWidget->setObjectName("testWidget");
connect(testWidget, SIGNAL(cursorPositionChanged(int,int)), this, SLOT(onCursorPositionChanged(int,int)));
connect(testWidget, SIGNAL(textChanged(QString)), this, SLOT(onTextChanged(QString)));
connect(testWidget, SIGNAL(textEdited(QString)), this, SLOT(onTextEdited(QString)));
connect(testWidget, SIGNAL(returnPressed()), this, SLOT(onReturnPressed()));
connect(testWidget, SIGNAL(selectionChanged()), this, SLOT(onSelectionChanged()));
connect(testWidget, SIGNAL(editingFinished()), this, SLOT(editingFinished()));
testWidget->resize(200,50);
testWidget->show();
QVERIFY(QTest::qWaitForWindowExposed(testWidget));
QApplication::setActiveWindow(testWidget);
QTRY_VERIFY(testWidget->hasFocus());
changed_count = 0;
edited_count = 0;
selection_count = 0;
@ -397,7 +411,6 @@ void tst_QLineEdit::initTestCase()
void tst_QLineEdit::cleanupTestCase()
{
delete testWidget;
QInputMethodPrivate *inputMethodPrivate = QInputMethodPrivate::get(qApp->inputMethod());
inputMethodPrivate->testContext = 0;
}
@ -405,23 +418,17 @@ void tst_QLineEdit::cleanupTestCase()
void tst_QLineEdit::init()
{
return_count = 0;
testWidget->clear();
testWidget->setEchoMode(QLineEdit::Normal);
testWidget->setMaxLength(32767);
testWidget->setReadOnly(false);
testWidget->setText("");
testWidget->setInputMask("");
testWidget->setFrame(true);
testWidget->setValidator(0);
testWidget->setDragEnabled(true);
}
void tst_QLineEdit::cleanup()
{
delete m_testWidget;
m_testWidget = 0;
}
void tst_QLineEdit::experimental()
{
QLineEdit *testWidget = ensureTestWidget();
QIntValidator intValidator(3, 7, 0);
testWidget->setValidator(&intValidator);
testWidget->setText("");
@ -439,8 +446,7 @@ void tst_QLineEdit::experimental()
void tst_QLineEdit::upperAndLowercase()
{
testWidget->setInputMask("");
testWidget->setText("");
QLineEdit *testWidget = ensureTestWidget();
QTest::keyClicks(testWidget, "aAzZ`1234567890-=~!@#$%^&*()_+[]{}\\|;:'\",.<>/?");
qApp->processEvents();
@ -662,6 +668,7 @@ void tst_QLineEdit::setInputMask()
QEXPECT_FAIL( "insert blank=input", "To eat blanks or not? Known issue. Task 43172", Abort);
// First set the input mask
QLineEdit *testWidget = ensureTestWidget();
testWidget->setInputMask(mask);
// then either insert using insert() or keyboard
@ -705,12 +712,14 @@ void tst_QLineEdit::inputMask()
QFETCH(QString, mask);
QFETCH(QString, expectedMask);
QLineEdit *testWidget = ensureTestWidget();
testWidget->setInputMask(mask);
QCOMPARE(testWidget->inputMask(), expectedMask);
}
void tst_QLineEdit::clearInputMask()
{
QLineEdit *testWidget = ensureTestWidget();
testWidget->setInputMask("000.000.000.000");
QVERIFY(testWidget->inputMask() != QString::null);
testWidget->setInputMask(QString::null);
@ -792,6 +801,7 @@ void tst_QLineEdit::keypress_inputMask()
QFETCH(QString, expectedText);
QFETCH(QString, expectedDisplayText);
QLineEdit *testWidget = ensureTestWidget();
testWidget->setInputMask(mask);
keys.simulate(testWidget);
@ -828,6 +838,7 @@ void tst_QLineEdit::hasAcceptableInputMask()
QFETCH(QString, valid);
// test that invalid input (for required) work for optionalMask
QLineEdit *testWidget = ensureTestWidget();
testWidget->setInputMask(optionalMask);
validInput = false;
testWidget->setText(invalid);
@ -879,6 +890,7 @@ public:
void tst_QLineEdit::hasAcceptableInputValidator()
{
QLineEdit *testWidget = ensureTestWidget();
QSignalSpy spyChanged(testWidget, SIGNAL(textChanged(QString)));
QSignalSpy spyEdited(testWidget, SIGNAL(textEdited(QString)));
@ -929,6 +941,7 @@ void tst_QLineEdit::maskCharacter()
QFETCH(QString, input);
QFETCH(bool, expectedValid);
QLineEdit *testWidget = ensureTestWidget();
QFocusEvent lostFocus(QEvent::FocusOut);
testWidget->setInputMask(mask);
@ -1079,6 +1092,7 @@ void tst_QLineEdit::undo()
QFETCH(QStringList, expectedString);
QFETCH(bool, use_keys);
QLineEdit *testWidget = ensureTestWidget();
QVERIFY(!testWidget->isUndoAvailable());
int i;
@ -1170,6 +1184,7 @@ void tst_QLineEdit::redo()
QFETCH(IntList, insertIndex);
QFETCH(QStringList, expectedString);
QLineEdit *testWidget = ensureTestWidget();
QVERIFY(!testWidget->isUndoAvailable());
QVERIFY(!testWidget->isRedoAvailable());
@ -1439,6 +1454,7 @@ void tst_QLineEdit::undo_keypressevents()
QFETCH(QTestEventList, keys);
QFETCH(QStringList, expectedString);
QLineEdit *testWidget = ensureTestWidget();
keys.simulate(testWidget);
for (int i=0; i<expectedString.size(); ++i) {
@ -1483,6 +1499,7 @@ void tst_QLineEdit::QTBUG5786_undoPaste()
void tst_QLineEdit::clear()
{
// checking that clear of empty/nullstring doesn't add to undo history
QLineEdit *testWidget = ensureTestWidget();
int max = 5000;
while (max > 0 && testWidget->isUndoAvailable()) {
max--;
@ -1504,7 +1521,7 @@ void tst_QLineEdit::clear()
void tst_QLineEdit::editingFinished()
{
if (testWidget->hasAcceptableInput())
if (m_testWidget->hasAcceptableInput())
validInput = true;
else
validInput = false;
@ -1526,6 +1543,7 @@ void tst_QLineEdit::text_data()
void tst_QLineEdit::text()
{
QFETCH(QString, insertString);
QLineEdit *testWidget = ensureTestWidget();
testWidget->setText(insertString);
QCOMPARE(testWidget->text(), insertString);
}
@ -1540,6 +1558,7 @@ void tst_QLineEdit::textMask_data()
void tst_QLineEdit::textMask()
{
QFETCH( QString, insertString );
QLineEdit *testWidget = ensureTestWidget();
testWidget->setInputMask( "#" );
testWidget->setText( insertString );
QCOMPARE( testWidget->text(), insertString );
@ -1547,6 +1566,7 @@ void tst_QLineEdit::textMask()
void tst_QLineEdit::setText()
{
QLineEdit *testWidget = ensureTestWidget();
QSignalSpy editedSpy(testWidget, SIGNAL(textEdited(QString)));
QSignalSpy changedSpy(testWidget, SIGNAL(textChanged(QString)));
testWidget->setText("hello");
@ -1616,7 +1636,7 @@ void tst_QLineEdit::displayText_data()
m << bool(use_setText);
s = key_mode_str + "Password";
m = QLineEdit::Password;
QChar passChar = qApp->style()->styleHint(QStyle::SH_LineEdit_PasswordCharacter, 0, testWidget);
QChar passChar = qApp->style()->styleHint(QStyle::SH_LineEdit_PasswordCharacter, 0, m_testWidget);
QString input;
QString pass;
input = "Hello World";
@ -1648,6 +1668,7 @@ void tst_QLineEdit::displayText()
QFETCH(QLineEdit::EchoMode, mode);
//QFETCH(bool, use_setText); Currently unused.
QLineEdit *testWidget = ensureTestWidget();
testWidget->setEchoMode(mode);
testWidget->setText(insertString);
QCOMPARE(testWidget->displayText(), expectedString);
@ -1657,11 +1678,15 @@ void tst_QLineEdit::displayText()
void tst_QLineEdit::passwordEchoOnEdit()
{
QStyleOptionFrameV2 opt;
QLineEdit *testWidget = ensureTestWidget();
QChar fillChar = testWidget->style()->styleHint(QStyle::SH_LineEdit_PasswordCharacter, &opt, testWidget);
testWidget->setEchoMode(QLineEdit::PasswordEchoOnEdit);
testWidget->setFocus();
centerOnScreen(testWidget);
testWidget->show();
testWidget->raise();
QVERIFY(QTest::qWaitForWindowExposed(testWidget));
QTRY_VERIFY(testWidget->hasFocus());
QTest::keyPress(testWidget, '0');
@ -1686,6 +1711,7 @@ void tst_QLineEdit::passwordEchoOnEdit()
void tst_QLineEdit::passwordEchoDelay()
{
QLineEdit *testWidget = ensureTestWidget();
int delay = qGuiApp->styleHints()->passwordMaskDelay();
#if defined QT_BUILD_INTERNAL
QLineEditPrivate *priv = QLineEditPrivate::get(testWidget);
@ -1701,7 +1727,10 @@ void tst_QLineEdit::passwordEchoDelay()
testWidget->setEchoMode(QLineEdit::Password);
testWidget->setFocus();
centerOnScreen(testWidget);
testWidget->show();
testWidget->raise();
QVERIFY(QTest::qWaitForWindowExposed(testWidget));
QTRY_VERIFY(testWidget->hasFocus());
QTest::keyPress(testWidget, '0');
@ -1760,6 +1789,7 @@ void tst_QLineEdit::maxLength_mask()
QFETCH(QString, mask);
QFETCH(int, expectedLength);
QLineEdit *testWidget = ensureTestWidget();
testWidget->setInputMask(mask);
QCOMPARE(testWidget->maxLength(), expectedLength);
@ -1792,6 +1822,7 @@ void tst_QLineEdit::maxLength()
QFETCH(bool, use_setText);
// in some cases we set the maxLength _before_ entering the text.
QLineEdit *testWidget = ensureTestWidget();
if (!insertBeforeSettingMaxLength)
testWidget->setMaxLength(length);
@ -1823,6 +1854,7 @@ void tst_QLineEdit::maxLength()
void tst_QLineEdit::isReadOnly()
{
QLineEdit *testWidget = ensureTestWidget();
QVERIFY(!testWidget->isReadOnly());
// start with a basic text
@ -1866,6 +1898,7 @@ void tst_QLineEdit::noCursorBlinkWhenReadOnly()
if (cursorFlashTime == 0)
return;
BlinkTestLineEdit le;
centerOnScreen(&le);
le.show();
le.setFocus();
QTest::qWaitForWindowActive(&le);
@ -1931,6 +1964,7 @@ void tst_QLineEdit::psKeyClick(QTestEventList &keys, Qt::Key key, Qt::KeyboardMo
void tst_QLineEdit::cursorPosition()
{
QLineEdit *testWidget = ensureTestWidget();
QVERIFY(testWidget->cursorPosition() == 0);
// start with a basic text
@ -2018,7 +2052,7 @@ void tst_QLineEdit::cursorPositionChanged_data()
QTestEventList keys;
keys.addKeyClick(Qt::Key_A);
QTest::newRow("a") << keys << 0 << 1;
QTest::newRow("a") << keys << -1 << 1;
keys.clear();
keys.addKeyClick(Qt::Key_A);
@ -2149,6 +2183,7 @@ void tst_QLineEdit::cursorPositionChanged()
lastCursorPos = 0;
newCursorPos = 0;
QLineEdit *testWidget = ensureTestWidget();
input.simulate(testWidget);
QCOMPARE(lastCursorPos, lastPos);
QCOMPARE(newCursorPos, newPos);
@ -2159,6 +2194,7 @@ void tst_QLineEdit::selectedText()
QString testString = "Abc defg hijklmno, p 'qrst' uvw xyz";
// start with a basic text
QLineEdit *testWidget = ensureTestWidget();
testWidget->setText(testString);
selection_count = 0;
@ -2228,6 +2264,7 @@ void tst_QLineEdit::textChangedAndTextEdited()
changed_count = 0;
edited_count = 0;
QLineEdit *testWidget = ensureTestWidget();
QTest::keyClick(testWidget, Qt::Key_A);
QCOMPARE(changed_count, 1);
QVERIFY(edited_count == changed_count);
@ -2286,6 +2323,7 @@ void tst_QLineEdit::returnPressed()
{
return_count = 0;
QLineEdit *testWidget = ensureTestWidget();
QTest::keyClick(testWidget, Qt::Key_Return);
QVERIFY(return_count == 1);
return_count = 0;
@ -2434,6 +2472,7 @@ void tst_QLineEdit::returnPressed_maskvalidator()
QFETCH(bool, returnPressed);
QEXPECT_FAIL("mask '999', intfix validator(0,999), input '12<cr>'", "QIntValidator has changed behaviour. Does not accept spaces. Task 43082.", Abort);
QLineEdit *testWidget = ensureTestWidget();
testWidget->setInputMask(inputMask);
if (hasValidator)
@ -2454,6 +2493,7 @@ void tst_QLineEdit::onReturnPressed()
void tst_QLineEdit::setValidator()
{
// Verify that we can set and re-set a validator.
QLineEdit *testWidget = ensureTestWidget();
QVERIFY(!testWidget->validator());
QIntValidator iv1(0);
@ -2604,6 +2644,7 @@ void tst_QLineEdit::setValidator_QIntValidator()
QFETCH(bool, is_valid);
QIntValidator intValidator(mini, maxi, 0);
QLineEdit *testWidget = ensureTestWidget();
testWidget->setValidator(&intValidator);
QVERIFY(testWidget->text().isEmpty());
//qDebug("1 input: '" + input + "' Exp: '" + expectedText + "'");
@ -2640,6 +2681,7 @@ void tst_QLineEdit::frame_data()
void tst_QLineEdit::frame()
{
QLineEdit *testWidget = ensureTestWidget();
testWidget->setFrame(false);
// verify that the editor is shown without a frame
#ifndef NO_PIXMAP_TESTS
@ -2677,6 +2719,7 @@ void tst_QLineEdit::setAlignment_data()
void tst_QLineEdit::setAlignment()
{
QLineEdit *testWidget = ensureTestWidget();
testWidget->setText("left");
testWidget->setAlignment(Qt::AlignLeft);
#ifndef NO_PIXMAP_TESTS
@ -2716,6 +2759,7 @@ void tst_QLineEdit::setAlignment()
void tst_QLineEdit::isModified()
{
QLineEdit *testWidget = ensureTestWidget();
QVERIFY(!testWidget->isModified());
testWidget->setText("bla");
QVERIFY(!testWidget->isModified());
@ -2750,6 +2794,7 @@ void tst_QLineEdit::isModified()
void tst_QLineEdit::edited()
{
QLineEdit *testWidget = ensureTestWidget();
QVERIFY(!testWidget->isModified());
testWidget->setText("bla");
QVERIFY(!testWidget->isModified());
@ -2781,6 +2826,7 @@ void tst_QLineEdit::edited()
void tst_QLineEdit::insert()
{
QLineEdit *testWidget = ensureTestWidget();
testWidget->insert("This");
testWidget->insert(" is");
testWidget->insert(" a");
@ -2857,6 +2903,7 @@ void tst_QLineEdit::setSelection()
QFETCH(QString, expectedText);
QFETCH(bool, expectedHasSelectedText);
QLineEdit *testWidget = ensureTestWidget();
testWidget->setText(text);
testWidget->setSelection(start, length);
QCOMPARE(testWidget->hasSelectedText(), expectedHasSelectedText);
@ -2872,6 +2919,7 @@ void tst_QLineEdit::cut()
QSKIP("Autotests run from cron and pasteboard don't get along quite ATM");
// test newlines in cut'n'paste
QLineEdit *testWidget = ensureTestWidget();
testWidget->setText("A\nB\nC\n");
testWidget->setSelection(0, 6);
testWidget->cut();
@ -2967,6 +3015,7 @@ void tst_QLineEdit::inputMaskAndValidator()
QFETCH(QString, validateText);
QFETCH(int, validatePos);
QLineEdit *testWidget = ensureTestWidget();
InputMaskValidator imv(testWidget);
testWidget->setValidator(&imv);
@ -2980,6 +3029,7 @@ void tst_QLineEdit::inputMaskAndValidator()
void tst_QLineEdit::maxLengthAndInputMask()
{
// Really a test for #30447
QLineEdit *testWidget = ensureTestWidget();
QVERIFY(testWidget->inputMask().isNull());
testWidget->setMaxLength(10);
QVERIFY(testWidget->maxLength() == 10);
@ -3019,6 +3069,7 @@ Q_DECLARE_METATYPE(LineEdit::State);
void tst_QLineEdit::returnPressedKeyEvent()
{
LineEdit lineedit;
centerOnScreen(&lineedit);
lineedit.show();
QCOMPARE((int)lineedit.state, (int)LineEdit::Other);
QTest::keyClick(&lineedit, Qt::Key_Enter);
@ -3035,6 +3086,7 @@ void tst_QLineEdit::returnPressedKeyEvent()
void tst_QLineEdit::keepSelectionOnTabFocusIn()
{
QLineEdit *testWidget = ensureTestWidget();
testWidget->setText("hello world");
{
QFocusEvent e(QEvent::FocusIn, Qt::TabFocusReason);
@ -3052,6 +3104,7 @@ void tst_QLineEdit::keepSelectionOnTabFocusIn()
void tst_QLineEdit::readOnlyStyleOption()
{
QLineEdit *testWidget = ensureTestWidget();
bool wasReadOnly = testWidget->isReadOnly();
QStyle *oldStyle = testWidget->style();
@ -3074,6 +3127,7 @@ void tst_QLineEdit::readOnlyStyleOption()
void tst_QLineEdit::validateOnFocusOut()
{
QLineEdit *testWidget = ensureTestWidget();
QSignalSpy editingFinishedSpy(testWidget, SIGNAL(editingFinished()));
testWidget->setValidator(new QIntValidator(100, 999, 0));
QTest::keyPress(testWidget, '1');
@ -3083,8 +3137,11 @@ void tst_QLineEdit::validateOnFocusOut()
QCOMPARE(editingFinishedSpy.count(), 0);
testWidget->setFocus();
centerOnScreen(testWidget);
testWidget->show();
testWidget->activateWindow();
QTRY_VERIFY(testWidget->hasFocus());
QVERIFY(QTest::qWaitForWindowActive(testWidget));
QVERIFY(testWidget->hasFocus());
QTest::keyPress(testWidget, '0');
QTRY_COMPARE(testWidget->text(), QString("100"));
@ -3095,6 +3152,7 @@ void tst_QLineEdit::validateOnFocusOut()
void tst_QLineEdit::editInvalidText()
{
QLineEdit *testWidget = ensureTestWidget();
testWidget->clear();
testWidget->setValidator(new QIntValidator(0, 120, 0));
testWidget->setText("1234");
@ -3122,6 +3180,7 @@ void tst_QLineEdit::editInvalidText()
void tst_QLineEdit::charWithAltOrCtrlModifier()
{
QLineEdit *testWidget = ensureTestWidget();
testWidget->clear();
QCOMPARE(testWidget->text(), QString(""));
QTest::keyPress(testWidget, Qt::Key_Plus);
@ -3136,6 +3195,7 @@ void tst_QLineEdit::charWithAltOrCtrlModifier()
void tst_QLineEdit::leftKeyOnSelectedText()
{
QLineEdit *testWidget = ensureTestWidget();
testWidget->clear();
testWidget->setText("0123");
testWidget->setCursorPosition(4);
@ -3158,6 +3218,7 @@ void tst_QLineEdit::leftKeyOnSelectedText()
void tst_QLineEdit::inlineCompletion()
{
QLineEdit *testWidget = ensureTestWidget();
testWidget->clear();
QStandardItemModel *model = new QStandardItemModel;
QStandardItem *root = model->invisibleRootItem();
@ -3172,6 +3233,9 @@ void tst_QLineEdit::inlineCompletion()
QCompleter *completer = new QCompleter(model);
completer->setCompletionMode(QCompleter::InlineCompletion);
completer->setCaseSensitivity(Qt::CaseInsensitive);
centerOnScreen(testWidget);
testWidget->show();
QTest::qWaitForWindowExposed(testWidget);
testWidget->setFocus();
QTRY_COMPARE(qApp->activeWindow(), (QWidget*)testWidget);
testWidget->setCompleter(completer);
@ -3238,6 +3302,7 @@ void tst_QLineEdit::inlineCompletion()
void tst_QLineEdit::noTextEditedOnClear()
{
QLineEdit *testWidget = ensureTestWidget();
testWidget->setText("Test");
QSignalSpy textEditedSpy(testWidget, SIGNAL(textEdited(QString)));
testWidget->clear();
@ -3301,6 +3366,7 @@ void tst_QLineEdit::textMargin()
sizeHint.setHeight(sizeHint.height() + top +bottom);
QCOMPARE(testWidget.sizeHint(), sizeHint);
testWidget.setFrame(false);
centerOnScreen(&tlw);
tlw.show();
int l;
@ -3320,6 +3386,7 @@ void tst_QLineEdit::textMargin()
#ifndef QTEST_NO_CURSOR
void tst_QLineEdit::cursor()
{
QLineEdit *testWidget = ensureTestWidget();
testWidget->setReadOnly(false);
QCOMPARE(testWidget->cursor().shape(), Qt::IBeamCursor);
testWidget->setReadOnly(true);
@ -3559,12 +3626,16 @@ void tst_QLineEdit::task233101_cursorPosAfterInputMethod()
void tst_QLineEdit::task241436_passwordEchoOnEditRestoreEchoMode()
{
QStyleOptionFrameV2 opt;
QLineEdit *testWidget = ensureTestWidget();
QChar fillChar = testWidget->style()->styleHint(QStyle::SH_LineEdit_PasswordCharacter, &opt, testWidget);
testWidget->setEchoMode(QLineEdit::PasswordEchoOnEdit);
testWidget->setFocus();
centerOnScreen(testWidget);
testWidget->show();
QApplication::setActiveWindow(testWidget);
QTRY_VERIFY(testWidget->hasFocus());
QVERIFY(QTest::qWaitForWindowActive(testWidget));
QVERIFY(testWidget->hasFocus());
QTest::keyPress(testWidget, '0');
QCOMPARE(testWidget->displayText(), QString("0"));
@ -3588,6 +3659,7 @@ void tst_QLineEdit::task241436_passwordEchoOnEditRestoreEchoMode()
void tst_QLineEdit::task248948_redoRemovedSelection()
{
QLineEdit *testWidget = ensureTestWidget();
testWidget->setText("a");
testWidget->selectAll();
QTest::keyPress(testWidget, Qt::Key_Delete);
@ -3602,12 +3674,15 @@ void tst_QLineEdit::taskQTBUG_4401_enterKeyClearsPassword()
{
QString password("Wanna guess?");
QLineEdit *testWidget = ensureTestWidget();
testWidget->setText(password);
testWidget->setEchoMode(QLineEdit::PasswordEchoOnEdit);
testWidget->setFocus();
testWidget->selectAll();
centerOnScreen(testWidget);
testWidget->show();
QApplication::setActiveWindow(testWidget);
QTRY_VERIFY(testWidget->hasFocus());
QVERIFY(QTest::qWaitForWindowActive(testWidget));
QTest::keyPress(testWidget, Qt::Key_Enter);
QTRY_COMPARE(testWidget->text(), password);
@ -3617,6 +3692,7 @@ void tst_QLineEdit::taskQTBUG_4679_moveToStartEndOfBlock()
{
#ifdef Q_OS_MAC
const QString text("there are no blocks for lineEdit");
QLineEdit *testWidget = ensureTestWidget();
testWidget->setText(text);
testWidget->setCursorPosition(5);
QCOMPARE(testWidget->cursorPosition(), 5);
@ -3632,6 +3708,7 @@ void tst_QLineEdit::taskQTBUG_4679_selectToStartEndOfBlock()
{
#ifdef Q_OS_MAC
const QString text("there are no blocks for lineEdit, select all");
QLineEdit *testWidget = ensureTestWidget();
testWidget->setText(text);
testWidget->setCursorPosition(5);
QCOMPARE(testWidget->cursorPosition(), 5);
@ -3901,6 +3978,7 @@ void tst_QLineEdit::bidiLogicalMovement()
void tst_QLineEdit::selectAndCursorPosition()
{
QLineEdit *testWidget = ensureTestWidget();
testWidget->setText("This is a long piece of text");
testWidget->setSelection(0, 5);
@ -3911,6 +3989,10 @@ void tst_QLineEdit::selectAndCursorPosition()
void tst_QLineEdit::inputMethod()
{
QLineEdit *testWidget = ensureTestWidget();
centerOnScreen(testWidget);
testWidget->show();
QVERIFY(QTest::qWaitForWindowExposed(testWidget));
// widget accepts input
QInputMethodQueryEvent queryEvent(Qt::ImEnabled);
QApplication::sendEvent(testWidget, &queryEvent);
@ -3945,6 +4027,7 @@ void tst_QLineEdit::inputMethod()
void tst_QLineEdit::inputMethodSelection()
{
QLineEdit *testWidget = ensureTestWidget();
testWidget->setText("Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
testWidget->setSelection(0,0);
QSignalSpy selectionSpy(testWidget, SIGNAL(selectionChanged()));
@ -3992,6 +4075,7 @@ void tst_QLineEdit::inputMethodQueryImHints_data()
void tst_QLineEdit::inputMethodQueryImHints()
{
QFETCH(Qt::InputMethodHints, hints);
QLineEdit *testWidget = ensureTestWidget();
testWidget->setInputMethodHints(hints);
QVariant value = testWidget->inputMethodQuery(Qt::ImHints);
@ -4034,7 +4118,7 @@ void tst_QLineEdit::undoRedoAndEchoModes()
QFETCH(QStringList, expected);
// create some history for the QLineEdit
testWidget->clear();
QLineEdit *testWidget = ensureTestWidget();
testWidget->setEchoMode(QLineEdit::EchoMode(echoMode));
testWidget->insert(input.at(0));
testWidget->selectAll();