diff options
author | Tim Jenssen <tim.jenssen@digia.com> | 2013-04-23 13:09:38 +0200 |
---|---|---|
committer | Tim Jenssen <tim.jenssen@digia.com> | 2013-04-23 16:02:05 +0200 |
commit | 2d832326bd1b6257849b23a86527c12a19d120b9 (patch) | |
tree | cb7eb3542df34ef37f3ac6138816e417942ec90f /tests/auto/installer/messageboxhandler/tst_messageboxhandler.cpp | |
parent | 1ee847c0dd56fcfbe2d93d64120789083c7a5bcf (diff) |
fix messageboxhandler with help of new autotests
- fix setDefaultAction (use std::reverse directly)
- fix missing Ok MessageBox value in script context
Change-Id: I82fa5a06d83b6c8659c60a3e56a1d4bd91e70c14
Reviewed-by: Karsten Heimrich <karsten.heimrich@digia.com>
Diffstat (limited to 'tests/auto/installer/messageboxhandler/tst_messageboxhandler.cpp')
-rw-r--r-- | tests/auto/installer/messageboxhandler/tst_messageboxhandler.cpp | 108 |
1 files changed, 108 insertions, 0 deletions
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" |