diff options
Diffstat (limited to 'tests/auto')
-rw-r--r-- | tests/auto/installer/installer.pro | 3 | ||||
-rw-r--r-- | tests/auto/installer/messageboxhandler/messageboxhandler.pro | 5 | ||||
-rw-r--r-- | tests/auto/installer/messageboxhandler/tst_messageboxhandler.cpp | 108 |
3 files changed, 115 insertions, 1 deletions
diff --git a/tests/auto/installer/installer.pro b/tests/auto/installer/installer.pro index 67a454db7..e8d31a23e 100644 --- a/tests/auto/installer/installer.pro +++ b/tests/auto/installer/installer.pro @@ -4,4 +4,5 @@ SUBDIRS += \ settings \ repository \ componentmodel \ - fakestopprocessforupdateoperation + fakestopprocessforupdateoperation \ + messageboxhandler diff --git a/tests/auto/installer/messageboxhandler/messageboxhandler.pro b/tests/auto/installer/messageboxhandler/messageboxhandler.pro new file mode 100644 index 000000000..4736205c6 --- /dev/null +++ b/tests/auto/installer/messageboxhandler/messageboxhandler.pro @@ -0,0 +1,5 @@ +include(../../qttest.pri) + +QT += script + +SOURCES += tst_messageboxhandler.cpp diff --git a/tests/auto/installer/messageboxhandler/tst_messageboxhandler.cpp b/tests/auto/installer/messageboxhandler/tst_messageboxhandler.cpp new file mode 100644 index 000000000..4b12507d3 --- /dev/null +++ b/tests/auto/installer/messageboxhandler/tst_messageboxhandler.cpp @@ -0,0 +1,108 @@ +#include "messageboxhandler.h" +#include "qinstallerglobal.h" + +#include <QTest> +#include <QMetaEnum> +#include <QScriptEngine> +#include <QDebug> + +using namespace QInstaller; + +namespace QTest { + template<> + char *toString(const QMessageBox::StandardButton &button) + { + QString buttonAsString(QString::number(button)); + return qstrdup(buttonAsString.toLatin1().data()); + } +} + +class tst_MessageBoxHandler : public QObject +{ + Q_OBJECT +public: +private slots: + void initTestCase() + { + m_maxStandardButtons = 0; + + const QMetaObject &messageBoxMetaObject = QMessageBox::staticMetaObject; + int index = messageBoxMetaObject.indexOfEnumerator("StandardButtons"); + + QMetaEnum metaEnum = messageBoxMetaObject.enumerator(index); + for (int i = 0; i < metaEnum.keyCount(); i++) { + int enumValue = metaEnum.value(i); + if (enumValue < QMessageBox::FirstButton) + continue; + m_standardButtonValueMap.insert(static_cast<QMessageBox::StandardButton>(enumValue), + metaEnum.valueToKey(metaEnum.value(i))); + m_maxStandardButtons += enumValue; + if (enumValue == QMessageBox::LastButton) + break; + } + QInstaller::registerMessageBox(&m_scriptEngine); + } + + void testScriptButtonValues() + { + QMapIterator<QMessageBox::StandardButton, QString> i(m_standardButtonValueMap); + while (i.hasNext()) { + i.next(); + QString scriptString = QString::fromLatin1("QMessageBox.%1").arg(i.value()); + QScriptValue scriptValue(m_scriptEngine.evaluate(scriptString)); + + QVERIFY2(!scriptValue.isUndefined(), qPrintable( + QString::fromLatin1("It seems that %1 is undefined.").arg(scriptString))); + + qint32 evaluatedValue = scriptValue.toInt32(); + QVERIFY2(!m_scriptEngine.hasUncaughtException(), qPrintable( + QInstaller::uncaughtExceptionString(&m_scriptEngine))); + + QCOMPARE(static_cast<QMessageBox::StandardButton>(evaluatedValue), i.key()); + } + } + + void testDefaultAction() + { + int standardButtons = QMessageBox::FirstButton; + QList<QMessageBox::Button> orderedButtons = MessageBoxHandler::orderedButtons(); + MessageBoxHandler *messageBoxHandler = MessageBoxHandler::instance(); + + messageBoxHandler->setDefaultAction(MessageBoxHandler::Reject); + QString testidentifier(QLatin1String("TestError")); + QString testTitle(QLatin1String("A test error")); + QString testMessage(QLatin1String("This is a test error message.")); + + const char *ignoreMessage("\"created critical message box TestError: 'A test error', This is a test error message.\" "); + do { + standardButtons += QMessageBox::FirstButton; + + QTest::ignoreMessage(QtDebugMsg, ignoreMessage); + const QMessageBox::StandardButton returnButton = static_cast<QMessageBox::StandardButton>( + messageBoxHandler->critical(testidentifier, testTitle, testMessage, + static_cast<QMessageBox::StandardButton>(standardButtons))); + + QMessageBox::StandardButton wantedButton = QMessageBox::NoButton; + // find the last button which is the wanted reject button in the current + // standardButtons combination + foreach (QMessageBox::StandardButton button, orderedButtons) { + if (standardButtons & button) + wantedButton = button; + } + + QVERIFY2(wantedButton != QMessageBox::NoButton, "Could not find a wantedButton."); + QCOMPARE(returnButton, wantedButton); + + } while (standardButtons < m_maxStandardButtons); + + } + +private: + QMap<QMessageBox::StandardButton, QString> m_standardButtonValueMap; + int m_maxStandardButtons; + QScriptEngine m_scriptEngine; +}; + +QTEST_MAIN(tst_MessageBoxHandler) + +#include "tst_messageboxhandler.moc" |