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
parent
54f0733e7d
commit
c0b899b3df
|
|
@ -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();
|
||||
|
|
|
|||
Loading…
Reference in New Issue