diff options
author | Alan Alpert <alan.alpert@nokia.com> | 2009-09-09 08:57:21 (GMT) |
---|---|---|
committer | Alan Alpert <alan.alpert@nokia.com> | 2009-09-09 08:57:21 (GMT) |
commit | 23dff035edbda475b987b452570489626b647f30 (patch) | |
tree | 6825589d64305bb625df7acb7f420dd97476a054 | |
parent | a5ed015bc369483206382689b77a4af0aaf0c547 (diff) | |
download | Qt-23dff035edbda475b987b452570489626b647f30.zip Qt-23dff035edbda475b987b452570489626b647f30.tar.gz Qt-23dff035edbda475b987b452570489626b647f30.tar.bz2 |
Start on QFxTextInput autotests
Actually has tests in it now. Not all implemented yet though.
-rw-r--r-- | tests/auto/declarative/qfxtextinput/data/navigation.qml | 4 | ||||
-rw-r--r-- | tests/auto/declarative/qfxtextinput/tst_qfxtextinput.cpp | 291 |
2 files changed, 291 insertions, 4 deletions
diff --git a/tests/auto/declarative/qfxtextinput/data/navigation.qml b/tests/auto/declarative/qfxtextinput/data/navigation.qml index c1a6162..282c52c 100644 --- a/tests/auto/declarative/qfxtextinput/data/navigation.qml +++ b/tests/auto/declarative/qfxtextinput/data/navigation.qml @@ -6,11 +6,11 @@ Rectangle { width: 800; height: 600; color: "blue" Item { - id: FirstItem + id: FirstItem; KeyNavigation.right: Input } - TextInput { id: Input; focus: true; + TextInput { id: Input; focus: true KeyNavigation.left: FirstItem KeyNavigation.right: LastItem KeyNavigation.up: FirstItem diff --git a/tests/auto/declarative/qfxtextinput/tst_qfxtextinput.cpp b/tests/auto/declarative/qfxtextinput/tst_qfxtextinput.cpp index 852a868..c883aa3 100644 --- a/tests/auto/declarative/qfxtextinput/tst_qfxtextinput.cpp +++ b/tests/auto/declarative/qfxtextinput/tst_qfxtextinput.cpp @@ -1,8 +1,9 @@ #include <qtest.h> +#include "../../../shared/util.h" #include <QtDeclarative/qmlengine.h> #include <QFile> #include <QtDeclarative/qfxview.h> -#include <qfxtextinput.h> +#include <QFxTextInput> #include <QDebug> class tst_qfxtextinput : public QObject @@ -13,6 +14,17 @@ public: tst_qfxtextinput(); private slots: + void text(); + void width(); + void font(); + void color(); + void selection(); + + void maxLength(); + void masks(); + void validators(); + + void cursorDelegate(); void navigation(); private: @@ -20,10 +32,280 @@ private: QFxView *createView(const QString &filename); QmlEngine engine; + QStringList standard; + QStringList colorStrings; }; tst_qfxtextinput::tst_qfxtextinput() { + standard << "the quick brown fox jumped over the lazy dog" + << "It's supercalifragisiticexpialidocious!" + << "Hello, world!"; + + colorStrings << "aliceblue" + << "antiquewhite" + << "aqua" + << "darkkhaki" + << "darkolivegreen" + << "dimgray" + << "palevioletred" + << "lightsteelblue" + << "#000000" + << "#AAAAAA" + << "#FFFFFF" + << "#2AC05F"; +} + +void tst_qfxtextinput::text() +{ + { + QmlComponent textinputComponent(&engine, "import Qt 4.6\nTextInput { text: \"\" }", QUrl()); + QFxTextInput *textinputObject = qobject_cast<QFxTextInput*>(textinputComponent.create()); + + QVERIFY(textinputObject != 0); + QCOMPARE(textinputObject->text(), QString("")); + } + + for (int i = 0; i < standard.size(); i++) + { + QString componentStr = "import Qt 4.6\nTextInput { text: \"" + standard.at(i) + "\" }"; + QmlComponent textinputComponent(&engine, componentStr.toLatin1(), QUrl()); + QFxTextInput *textinputObject = qobject_cast<QFxTextInput*>(textinputComponent.create()); + + QVERIFY(textinputObject != 0); + QCOMPARE(textinputObject->text(), standard.at(i)); + } + +} + +void tst_qfxtextinput::width() +{ + // uses Font metrics to find the width for standard + { + QmlComponent textinputComponent(&engine, "import Qt 4.6\nTextInput { text: \"\" }", QUrl()); + QFxTextInput *textinputObject = qobject_cast<QFxTextInput*>(textinputComponent.create()); + + QVERIFY(textinputObject != 0); + QCOMPARE(textinputObject->width(), 1.);//1 for the cursor + } + + for (int i = 0; i < standard.size(); i++) + { + QFont f; + QFontMetrics fm(f); + int metricWidth = fm.size(Qt::TextExpandTabs && Qt::TextShowMnemonic, standard.at(i)).width(); + + QString componentStr = "import Qt 4.6\nTextInput { text: \"" + standard.at(i) + "\" }"; + QmlComponent textinputComponent(&engine, componentStr.toLatin1(), QUrl()); + QFxTextInput *textinputObject = qobject_cast<QFxTextInput*>(textinputComponent.create()); + + QVERIFY(textinputObject != 0); + QCOMPARE(textinputObject->width(), qreal(metricWidth) + 1.);//1 for the cursor + } +} + +void tst_qfxtextinput::font() +{ + //test size, then bold, then italic, then family + { + QString componentStr = "import Qt 4.6\nTextInput { font.pointSize: 40; text: \"Hello World\" }"; + QmlComponent textinputComponent(&engine, componentStr.toLatin1(), QUrl()); + QFxTextInput *textinputObject = qobject_cast<QFxTextInput*>(textinputComponent.create()); + + QVERIFY(textinputObject != 0); + QCOMPARE(textinputObject->font().pointSize(), 40); + QCOMPARE(textinputObject->font().bold(), false); + QCOMPARE(textinputObject->font().italic(), false); + } + + { + QString componentStr = "import Qt 4.6\nTextInput { font.bold: true; text: \"Hello World\" }"; + QmlComponent textinputComponent(&engine, componentStr.toLatin1(), QUrl()); + QFxTextInput *textinputObject = qobject_cast<QFxTextInput*>(textinputComponent.create()); + + QVERIFY(textinputObject != 0); + QCOMPARE(textinputObject->font().bold(), true); + QCOMPARE(textinputObject->font().italic(), false); + } + + { + QString componentStr = "import Qt 4.6\nTextInput { font.italic: true; text: \"Hello World\" }"; + QmlComponent textinputComponent(&engine, componentStr.toLatin1(), QUrl()); + QFxTextInput *textinputObject = qobject_cast<QFxTextInput*>(textinputComponent.create()); + + QVERIFY(textinputObject != 0); + QCOMPARE(textinputObject->font().italic(), true); + QCOMPARE(textinputObject->font().bold(), false); + } + + { + QString componentStr = "import Qt 4.6\nTextInput { font.family: \"Helvetica\"; text: \"Hello World\" }"; + QmlComponent textinputComponent(&engine, componentStr.toLatin1(), QUrl()); + QFxTextInput *textinputObject = qobject_cast<QFxTextInput*>(textinputComponent.create()); + + QVERIFY(textinputObject != 0); + QCOMPARE(textinputObject->font().family(), QString("Helvetica")); + QCOMPARE(textinputObject->font().bold(), false); + QCOMPARE(textinputObject->font().italic(), false); + } + + { + QString componentStr = "import Qt 4.6\nTextInput { font.family: \"\"; text: \"Hello World\" }"; + QmlComponent textinputComponent(&engine, componentStr.toLatin1(), QUrl()); + QFxTextInput *textinputObject = qobject_cast<QFxTextInput*>(textinputComponent.create()); + + QVERIFY(textinputObject != 0); + QCOMPARE(textinputObject->font().family(), QString("")); + } +} + +void tst_qfxtextinput::color() +{ + //test style + for (int i = 0; i < colorStrings.size(); i++) + { + QString componentStr = "import Qt 4.6\nTextInput { color: \"" + colorStrings.at(i) + "\"; text: \"Hello World\" }"; + QmlComponent textinputComponent(&engine, componentStr.toLatin1(), QUrl()); + QFxTextInput *textinputObject = qobject_cast<QFxTextInput*>(textinputComponent.create()); + //qDebug() << "textinputObject: " << textinputObject->color() << "vs. " << QColor(colorStrings.at(i)); + QVERIFY(textinputObject != 0); + QCOMPARE(textinputObject->color(), QColor(colorStrings.at(i))); + } + + { + QString colorStr = "#AA001234"; + QColor testColor("#001234"); + testColor.setAlpha(170); + + QString componentStr = "import Qt 4.6\nTextInput { color: \"" + colorStr + "\"; text: \"Hello World\" }"; + QmlComponent textinputComponent(&engine, componentStr.toLatin1(), QUrl()); + QFxTextInput *textinputObject = qobject_cast<QFxTextInput*>(textinputComponent.create()); + + QVERIFY(textinputObject != 0); + QCOMPARE(textinputObject->color(), testColor); + } +} + +void tst_qfxtextinput::selection() +{ + QString testStr = standard[0]; + QString componentStr = "import Qt 4.6\nTextInput { text: \""+ testStr +"\"; }"; + QmlComponent textinputComponent(&engine, componentStr.toLatin1(), QUrl()); + QFxTextInput *textinputObject = qobject_cast<QFxTextInput*>(textinputComponent.create()); + QVERIFY(textinputObject != 0); + + + //Test selection follows cursor + for(int i=0; i<= testStr.size(); i++) { + textinputObject->setCursorPosition(i); + QCOMPARE(textinputObject->cursorPosition(), i); + QCOMPARE(textinputObject->selectionStart(), i); + QCOMPARE(textinputObject->selectionEnd(), i); + QVERIFY(textinputObject->selectedText().isNull()); + } + + textinputObject->setCursorPosition(0); + QVERIFY(textinputObject->cursorPosition() == 0); + QVERIFY(textinputObject->selectionStart() == 0); + QVERIFY(textinputObject->selectionEnd() == 0); + QVERIFY(textinputObject->selectedText().isNull()); + + //Test selection + for(int i=0; i<= testStr.size(); i++) { + textinputObject->setSelectionEnd(i); + QCOMPARE(testStr.mid(0,i), textinputObject->selectedText()); + } + for(int i=0; i<= testStr.size(); i++) { + textinputObject->setSelectionStart(i); + QCOMPARE(testStr.mid(i,testStr.size()-i), textinputObject->selectedText()); + } + + textinputObject->setCursorPosition(0); + QVERIFY(textinputObject->cursorPosition() == 0); + QVERIFY(textinputObject->selectionStart() == 0); + QVERIFY(textinputObject->selectionEnd() == 0); + QVERIFY(textinputObject->selectedText().isNull()); + + for(int i=0; i< testStr.size(); i++) { + textinputObject->setSelectionStart(i); + QCOMPARE(textinputObject->selectionEnd(), i); + QCOMPARE(testStr.mid(i,0), textinputObject->selectedText()); + textinputObject->setSelectionEnd(i+1); + QCOMPARE(textinputObject->selectionStart(), i); + QCOMPARE(testStr.mid(i,1), textinputObject->selectedText()); + } + + for(int i= testStr.size() - 1; i>0; i--) { + textinputObject->setSelectionEnd(i); + QCOMPARE(testStr.mid(i,0), textinputObject->selectedText()); + textinputObject->setSelectionStart(i-1); + QCOMPARE(testStr.mid(i-1,1), textinputObject->selectedText()); + } + + //Test Error Ignoring behaviour + textinputObject->setCursorPosition(0); + QVERIFY(textinputObject->selectedText().isNull()); + textinputObject->setSelectionStart(-10); + QVERIFY(textinputObject->selectedText().isNull()); + textinputObject->setSelectionStart(100); + QVERIFY(textinputObject->selectedText().isNull()); + textinputObject->setSelectionEnd(-10); + QVERIFY(textinputObject->selectedText().isNull()); + textinputObject->setSelectionEnd(100); + QVERIFY(textinputObject->selectedText().isNull()); + textinputObject->setSelectionStart(0); + textinputObject->setSelectionEnd(10); + QVERIFY(textinputObject->selectedText().size() == 10); + textinputObject->setSelectionStart(-10); + QVERIFY(textinputObject->selectedText().size() == 10); + textinputObject->setSelectionStart(100); + QVERIFY(textinputObject->selectedText().size() == 10); + textinputObject->setSelectionEnd(-10); + QVERIFY(textinputObject->selectedText().size() == 10); + textinputObject->setSelectionEnd(100); + QVERIFY(textinputObject->selectedText().size() == 10); +} + +void tst_qfxtextinput::maxLength() +{ + QFxView *canvas = createView(SRCDIR "/data/navigation.qml"); + canvas->execute(); + canvas->show(); + + QVERIFY(canvas->root() != 0); + + QFxItem *input = qobject_cast<QFxItem *>(qvariant_cast<QObject *>(canvas->root()->property("myInput"))); + + QVERIFY(input != 0); + //TODO: Me +} + +void tst_qfxtextinput::masks() +{ + QFxView *canvas = createView(SRCDIR "/data/navigation.qml"); + canvas->execute(); + canvas->show(); + + QVERIFY(canvas->root() != 0); + + QFxItem *input = qobject_cast<QFxItem *>(qvariant_cast<QObject *>(canvas->root()->property("myInput"))); + + QVERIFY(input != 0); + //TODO: Me +} + +void tst_qfxtextinput::validators() +{ + QFxView *canvas = createView(SRCDIR "/data/navigation.qml"); + canvas->execute(); + canvas->show(); + + QVERIFY(canvas->root() != 0); + + QFxItem *input = qobject_cast<QFxItem *>(qvariant_cast<QObject *>(canvas->root()->property("myInput"))); + + QVERIFY(input != 0); + //TODO: Me } /* @@ -41,7 +323,7 @@ void tst_qfxtextinput::navigation() QFxItem *input = qobject_cast<QFxItem *>(qvariant_cast<QObject *>(canvas->root()->property("myInput"))); QVERIFY(input != 0); - QVERIFY(input->hasFocus() == true); + QTRY_VERIFY(input->hasFocus() == true); simulateKey(canvas, Qt::Key_Left); QVERIFY(input->hasFocus() == false); simulateKey(canvas, Qt::Key_Right); @@ -52,6 +334,11 @@ void tst_qfxtextinput::navigation() QVERIFY(input->hasFocus() == true); } +void tst_qfxtextinput::cursorDelegate() +{ + //TODO:Get the QFxTextInput test passing first +} + void tst_qfxtextinput::simulateKey(QFxView *view, int key) { QKeyEvent press(QKeyEvent::KeyPress, key, 0); |