tests/auto/qfontdialog/tst_qfontdialog.cpp
changeset 0 1918ee327afb
child 4 3b1da2848fc7
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/qfontdialog/tst_qfontdialog.cpp	Mon Jan 11 14:00:40 2010 +0000
@@ -0,0 +1,186 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QtTest>
+
+
+#include <qapplication.h>
+#include <qfontinfo.h>
+#include <qtimer.h>
+#include <qmainwindow.h>
+#include <qlistview.h>
+#include "qfontdialog.h"
+#include <private/qfontdialog_p.h>
+
+//TESTED_CLASS=
+//TESTED_FILES=
+
+QT_FORWARD_DECLARE_CLASS(QtTestEventThread)
+
+class tst_QFontDialog : public QObject
+{
+    Q_OBJECT
+
+public:
+    tst_QFontDialog();
+    virtual ~tst_QFontDialog();
+
+
+public slots:
+    void postKeyReturn();
+
+public slots:
+    void initTestCase();
+    void cleanupTestCase();
+    void init();
+    void cleanup();
+private slots:
+    void defaultOkButton();
+    void setFont();
+    void task256466_wrongStyle();
+};
+
+tst_QFontDialog::tst_QFontDialog()
+{
+}
+
+tst_QFontDialog::~tst_QFontDialog()
+{
+}
+
+void tst_QFontDialog::initTestCase()
+{
+}
+
+void tst_QFontDialog::cleanupTestCase()
+{
+}
+
+void tst_QFontDialog::init()
+{
+}
+
+void tst_QFontDialog::cleanup()
+{
+}
+
+
+void tst_QFontDialog::postKeyReturn() {
+#ifndef Q_WS_MAC
+    QWidgetList list = QApplication::topLevelWidgets();
+    for (int i=0; i<list.count(); ++i) {
+	QFontDialog *dialog = qobject_cast<QFontDialog*>(list[i]);
+	if (dialog) {
+	    QTest::keyClick( list[i], Qt::Key_Return, Qt::NoModifier );
+	    return;
+	}
+    }
+#else
+    extern void click_cocoa_button();
+    click_cocoa_button();
+#endif
+}
+
+void tst_QFontDialog::defaultOkButton()
+{
+    bool ok = FALSE;
+    QTimer::singleShot(2000, this, SLOT(postKeyReturn()));
+    QFontDialog::getFont(&ok);
+    QVERIFY(ok == TRUE);
+}
+
+
+void tst_QFontDialog::setFont()
+{
+    /* The font should be the same before as it is after if nothing changed
+              while the font dialog was open.
+	      Task #27662
+    */
+    bool ok = FALSE;
+#if defined Q_OS_HPUX
+    QString fontName = "Courier";
+    int fontSize = 25;
+#elif defined Q_OS_AIX
+    QString fontName = "Charter";
+    int fontSize = 13;
+#else
+    QString fontName = "Arial";
+    int fontSize = 24;
+#endif
+    QFont f1(fontName, fontSize);
+    f1.setPixelSize(QFontInfo(f1).pixelSize());
+    QTimer::singleShot(2000, this, SLOT(postKeyReturn()));
+    QFont f2 = QFontDialog::getFont(&ok, f1);
+    QCOMPARE(QFontInfo(f2).pointSize(), QFontInfo(f1).pointSize());
+}
+
+
+class FriendlyFontDialog : public QFontDialog
+{
+    friend class tst_QFontDialog;
+    Q_DECLARE_PRIVATE(QFontDialog);
+};
+
+void tst_QFontDialog::task256466_wrongStyle()
+{
+    QFontDatabase fdb;
+    FriendlyFontDialog dialog;
+    QListView *familyList = reinterpret_cast<QListView*>(dialog.d_func()->familyList);
+    QListView *styleList = reinterpret_cast<QListView*>(dialog.d_func()->styleList);
+    QListView *sizeList = reinterpret_cast<QListView*>(dialog.d_func()->sizeList);
+    for (int i = 0; i < familyList->model()->rowCount(); ++i) {
+        QModelIndex currentFamily = familyList->model()->index(i, 0);
+        familyList->setCurrentIndex(currentFamily);
+        const QFont current = dialog.currentFont(),
+                    expected = fdb.font(currentFamily.data().toString(),
+            styleList->currentIndex().data().toString(), sizeList->currentIndex().data().toInt());
+        QCOMPARE(current.family(), expected.family());
+        QCOMPARE(current.style(), expected.style());
+        QCOMPARE(current.pointSizeF(), expected.pointSizeF());
+    }
+}
+
+
+
+
+QTEST_MAIN(tst_QFontDialog)
+#include "tst_qfontdialog.moc"