diff options
Diffstat (limited to 'tests/auto/qfont')
-rw-r--r-- | tests/auto/qfont/.gitignore | 1 | ||||
-rw-r--r-- | tests/auto/qfont/qfont.pro | 4 | ||||
-rw-r--r-- | tests/auto/qfont/tst_qfont.cpp | 629 |
3 files changed, 0 insertions, 634 deletions
diff --git a/tests/auto/qfont/.gitignore b/tests/auto/qfont/.gitignore deleted file mode 100644 index 61aa3df16c..0000000000 --- a/tests/auto/qfont/.gitignore +++ /dev/null @@ -1 +0,0 @@ -tst_qfont diff --git a/tests/auto/qfont/qfont.pro b/tests/auto/qfont/qfont.pro deleted file mode 100644 index b071d88dce..0000000000 --- a/tests/auto/qfont/qfont.pro +++ /dev/null @@ -1,4 +0,0 @@ -load(qttest_p4) -SOURCES += tst_qfont.cpp - - diff --git a/tests/auto/qfont/tst_qfont.cpp b/tests/auto/qfont/tst_qfont.cpp deleted file mode 100644 index a564e71e19..0000000000 --- a/tests/auto/qfont/tst_qfont.cpp +++ /dev/null @@ -1,629 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2011 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$ -** GNU Lesser General Public License Usage -** 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. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU General -** Public License version 3.0 as published by the Free Software Foundation -** and appearing in the file LICENSE.GPL included in the packaging of this -** file. Please review the following information to ensure the GNU General -** Public License version 3.0 requirements will be met: -** http://www.gnu.org/copyleft/gpl.html. -** -** Other Usage -** Alternatively, this file may be used in accordance with the terms and -** conditions contained in a signed written agreement between you and Nokia. -** -** -** -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - - -#include <QtTest/QtTest> - - -#include <qfont.h> -#include <qfontdatabase.h> -#include <qfontinfo.h> -#include <qstringlist.h> -#include <qapplication.h> -#include <qwidget.h> -#include <qlist.h> - -//TESTED_CLASS= -//TESTED_FILES= - -class tst_QFont : public QObject -{ -Q_OBJECT - -public: - tst_QFont(); - virtual ~tst_QFont(); - -public slots: - void init(); - void cleanup(); -private slots: - void getSetCheck(); - void exactMatch(); - void compare(); - void resolve(); - void resetFont(); - void isCopyOf(); - void setFontRaw(); - void italicOblique(); - void insertAndRemoveSubstitutions(); - void serializeSpacing(); - void lastResortFont(); - void styleName(); -}; - -// Testing get/set functions -void tst_QFont::getSetCheck() -{ - QFont obj1; - // Style QFont::style() - // void QFont::setStyle(Style) - obj1.setStyle(QFont::Style(QFont::StyleNormal)); - QCOMPARE(QFont::Style(QFont::StyleNormal), obj1.style()); - obj1.setStyle(QFont::Style(QFont::StyleItalic)); - QCOMPARE(QFont::Style(QFont::StyleItalic), obj1.style()); - obj1.setStyle(QFont::Style(QFont::StyleOblique)); - QCOMPARE(QFont::Style(QFont::StyleOblique), obj1.style()); - - // StyleStrategy QFont::styleStrategy() - // void QFont::setStyleStrategy(StyleStrategy) - obj1.setStyleStrategy(QFont::StyleStrategy(QFont::PreferDefault)); - QCOMPARE(QFont::StyleStrategy(QFont::PreferDefault), obj1.styleStrategy()); - obj1.setStyleStrategy(QFont::StyleStrategy(QFont::PreferBitmap)); - QCOMPARE(QFont::StyleStrategy(QFont::PreferBitmap), obj1.styleStrategy()); - obj1.setStyleStrategy(QFont::StyleStrategy(QFont::PreferDevice)); - QCOMPARE(QFont::StyleStrategy(QFont::PreferDevice), obj1.styleStrategy()); - obj1.setStyleStrategy(QFont::StyleStrategy(QFont::PreferOutline)); - QCOMPARE(QFont::StyleStrategy(QFont::PreferOutline), obj1.styleStrategy()); - obj1.setStyleStrategy(QFont::StyleStrategy(QFont::ForceOutline)); - QCOMPARE(QFont::StyleStrategy(QFont::ForceOutline), obj1.styleStrategy()); - obj1.setStyleStrategy(QFont::StyleStrategy(QFont::PreferMatch)); - QCOMPARE(QFont::StyleStrategy(QFont::PreferMatch), obj1.styleStrategy()); - obj1.setStyleStrategy(QFont::StyleStrategy(QFont::PreferQuality)); - QCOMPARE(QFont::StyleStrategy(QFont::PreferQuality), obj1.styleStrategy()); - obj1.setStyleStrategy(QFont::StyleStrategy(QFont::PreferAntialias)); - QCOMPARE(QFont::StyleStrategy(QFont::PreferAntialias), obj1.styleStrategy()); - obj1.setStyleStrategy(QFont::StyleStrategy(QFont::NoAntialias)); - QCOMPARE(QFont::StyleStrategy(QFont::NoAntialias), obj1.styleStrategy()); - obj1.setStyleStrategy(QFont::StyleStrategy(QFont::OpenGLCompatible)); - QCOMPARE(QFont::StyleStrategy(QFont::OpenGLCompatible), obj1.styleStrategy()); -} - -tst_QFont::tst_QFont() -{ -} - -tst_QFont::~tst_QFont() -{ - -} - -void tst_QFont::init() -{ -// TODO: Add initialization code here. -// This will be executed immediately before each test is run. -} - -void tst_QFont::cleanup() -{ -// TODO: Add cleanup code here. -// This will be executed immediately after each test is run. -} - -void tst_QFont::exactMatch() -{ - QFont font; - - // Check if a non-existing font hasn't an exact match - font = QFont( "BogusFont", 33 ); - QVERIFY( !font.exactMatch() ); - -#ifdef Q_WS_WIN - QSKIP("Exact matching on windows misses a lot because of the sample chars", SkipAll); - return; -#endif - -#ifdef Q_WS_X11 - QVERIFY(QFont("sans").exactMatch()); - QVERIFY(QFont("sans-serif").exactMatch()); - QVERIFY(QFont("serif").exactMatch()); - QVERIFY(QFont("monospace").exactMatch()); -#endif - - QSKIP("This test is bogus on Unix with support for font aliases in fontconfig", SkipAll); - return; - - QFontDatabase fdb; - - QList<QFontDatabase::WritingSystem> systems = fdb.writingSystems(); - for (int system = 0; system < systems.count(); ++system) { - QStringList families = fdb.families(systems[system]); - if (families.isEmpty()) - return; - - QStringList::ConstIterator f_it, f_end = families.end(); - for (f_it = families.begin(); f_it != f_end; ++f_it) { - const QString &family = *f_it; - if (family.contains('[')) - continue; - - QStringList styles = fdb.styles(family); - QVERIFY(!styles.isEmpty()); - QStringList::ConstIterator s_it, s_end = styles.end(); - for (s_it = styles.begin(); s_it != s_end; ++s_it) { - const QString &style = *s_it; - - if (fdb.isSmoothlyScalable(family, style)) { - // smoothly scalable font... don't need to load every pointsize - font = fdb.font(family, style, 12); - QFontInfo fontinfo(font); - - if (! fontinfo.exactMatch()) { - // Unfortunately, this can fail, since - // QFontDatabase does not fill in all font - // properties. Check to make sure that the - // test didn't fail for obvious reasons - - if (fontinfo.family().isEmpty() - && fontinfo.pointSize() == 0) { - // this is a box rendering engine... this can happen from - // time to time, especially on X11 with iso10646-1 or - // unknown font encodings - continue; - } - -#ifdef Q_WS_WIN32 - if (font.family().startsWith("MS ") || fontinfo.family().startsWith("MS ")) { - /* qDebug("Family matching skipped for MS-Alias font: %s, fontinfo: %s", - font.family().latin1(), fontinfo.family().latin1()); - */ - } else -#endif - { - if (!(font.family() == fontinfo.family() - || fontinfo.family().contains(font.family()) - || fontinfo.family().isEmpty())) { - qDebug("Test about to fail for font: %s, fontinfo: %s", - font.family().toLatin1().constData(), - fontinfo.family().toLatin1().constData()); - } - QVERIFY(font.family() == fontinfo.family() - || fontinfo.family().contains(font.family()) - || fontinfo.family().isEmpty()); - } - if (font.pointSize() != -1) { - QVERIFY(font.pointSize() == fontinfo.pointSize()); - } else { - QVERIFY(font.pixelSize() == fontinfo.pixelSize()); - } - QVERIFY(font.italic() == fontinfo.italic()); - if (font.weight() != fontinfo.weight()) { - qDebug("font is %s", font.toString().toLatin1().constData()); - } - QVERIFY(font.weight() == fontinfo.weight()); - } else { - font.setFixedPitch(!fontinfo.fixedPitch()); - QFontInfo fontinfo1(font); - QVERIFY( !fontinfo1.exactMatch() ); - - font.setFixedPitch(fontinfo.fixedPitch()); - QFontInfo fontinfo2(font); - QVERIFY( fontinfo2.exactMatch() ); - } - } -#if 0 - // ############## can only work if we have float point sizes in QFD - else { - QList<int> sizes = fdb.pointSizes(family, style); - QVERIFY(!sizes.isEmpty()); - QList<int>::ConstIterator z_it, z_end = sizes.end(); - for (z_it = sizes.begin(); z_it != z_end; ++z_it) { - const int size = *z_it; - - // Initialize the font, and check if it is an exact match - font = fdb.font(family, style, size); - QFontInfo fontinfo(font, (QFont::Script) script); - - if (! fontinfo.exactMatch()) { - // Unfortunately, this can fail, since - // QFontDatabase does not fill in all font - // properties. Check to make sure that the - // test didn't fail for obvious reasons - - if (fontinfo.family().isEmpty() - && fontinfo.pointSize() == 0) { - // this is a box rendering engine... this can happen from - // time to time, especially on X11 with iso10646-1 or - // unknown font encodings - continue; - } - - // no need to skip MS-fonts here it seems - if (!(font.family() == fontinfo.family() - || fontinfo.family().contains(font.family()) - || fontinfo.family().isEmpty())) { - qDebug("Test about to fail for font: %s, fontinfo: %s", - font.family().latin1(), fontinfo.family().latin1()); - } - QVERIFY(font.family() == fontinfo.family() - || fontinfo.family().contains(font.family()) - || fontinfo.family().isEmpty()); - if (font.pointSize() != -1) { - QVERIFY(font.pointSize() == fontinfo.pointSize()); - } else { - QVERIFY(font.pixelSize() == fontinfo.pixelSize()); - } - QVERIFY(font.italic() == fontinfo.italic()); - QVERIFY(font.weight() == fontinfo.weight()); - } else { - font.setFixedPitch(!fontinfo.fixedPitch()); - QFontInfo fontinfo1(font, (QFont::Script) script); - QVERIFY( !fontinfo1.exactMatch() ); - - font.setFixedPitch(fontinfo.fixedPitch()); - QFontInfo fontinfo2(font, (QFont::Script) script); - QVERIFY( fontinfo2.exactMatch() ); - } - } - } -#endif - } - } - } -} - -void tst_QFont::italicOblique() -{ - QFontDatabase fdb; - - QStringList families = fdb.families(); - if (families.isEmpty()) - return; - - QStringList::ConstIterator f_it, f_end = families.end(); - for (f_it = families.begin(); f_it != f_end; ++f_it) { - - QString family = *f_it; - QStringList styles = fdb.styles(family); - QVERIFY(!styles.isEmpty()); - QStringList::ConstIterator s_it, s_end = styles.end(); - for (s_it = styles.begin(); s_it != s_end; ++s_it) { - QString style = *s_it; - - if (fdb.isSmoothlyScalable(family, style)) { - if (style.contains("Oblique")) { - style.replace("Oblique", "Italic"); - } else if (style.contains("Italic")) { - style.replace("Italic", "Oblique"); - } else { - continue; - } - QFont f = fdb.font(family, style, 12); - QVERIFY(f.italic()); - } - } - } -} - -void tst_QFont::compare() -{ - QFont font; - { - QFont font2 = font; - font2.setPointSize( 24 ); - QVERIFY( font != font2 ); - QCOMPARE(font < font2,!(font2 < font)); - } - { - QFont font2 = font; - font2.setPixelSize( 24 ); - QVERIFY( font != font2 ); - QCOMPARE(font < font2,!(font2 < font)); - } - - font.setPointSize(12); - font.setItalic(false); - font.setWeight(QFont::Normal); - font.setUnderline(false); - font.setStrikeOut(false); - font.setOverline(false); - { - QFont font2 = font; - font2.setPointSize( 24 ); - QVERIFY( font != font2 ); - QCOMPARE(font < font2,!(font2 < font)); - } - { - QFont font2 = font; - font2.setPixelSize( 24 ); - QVERIFY( font != font2 ); - QCOMPARE(font < font2,!(font2 < font)); - } - { - QFont font2 = font; - - font2.setItalic(true); - QVERIFY( font != font2 ); - QCOMPARE(font < font2,!(font2 < font)); - font2.setItalic(false); - QVERIFY( font == font2 ); - QVERIFY(!(font < font2)); - - font2.setWeight(QFont::Bold); - QVERIFY( font != font2 ); - QCOMPARE(font < font2,!(font2 < font)); - font2.setWeight(QFont::Normal); - QVERIFY( font == font2 ); - QVERIFY(!(font < font2)); - - font.setUnderline(true); - QVERIFY( font != font2 ); - QCOMPARE(font < font2,!(font2 < font)); - font.setUnderline(false); - QVERIFY( font == font2 ); - QVERIFY(!(font < font2)); - - font.setStrikeOut(true); - QVERIFY( font != font2 ); - QCOMPARE(font < font2,!(font2 < font)); - font.setStrikeOut(false); - QVERIFY( font == font2 ); - QVERIFY(!(font < font2)); - - font.setOverline(true); - QVERIFY( font != font2 ); - QCOMPARE(font < font2,!(font2 < font)); - font.setOverline(false); - QVERIFY( font == font2 ); - QVERIFY(!(font < font2)); - - font.setCapitalization(QFont::SmallCaps); - QVERIFY( font != font2 ); - QCOMPARE(font < font2,!(font2 < font)); - font.setCapitalization(QFont::MixedCase); - QVERIFY( font == font2 ); - QVERIFY(!(font < font2)); - } - -#if defined(Q_WS_X11) - { - QFont font1, font2; - font1.setRawName("-Adobe-Helvetica-medium-r-normal--12-120-75-75-p-67-iso8859-1"); - font2.setRawName("-Adobe-Helvetica-medium-r-normal--24-240-75-75-p-130-iso8859-1"); - QVERIFY(font1 != font2); - } -#endif -} - -void tst_QFont::resolve() -{ - QFont font; - font.setPointSize(font.pointSize() * 2); - font.setItalic(false); - font.setWeight(QFont::Normal); - font.setUnderline(false); - font.setStrikeOut(false); - font.setOverline(false); - font.setStretch(QFont::Unstretched); - - QFont font1; - font1.setWeight(QFont::Bold); - QFont font2 = font1.resolve(font); - - QVERIFY(font2.weight() == font1.weight()); - - QVERIFY(font2.pointSize() == font.pointSize()); - QVERIFY(font2.italic() == font.italic()); - QVERIFY(font2.underline() == font.underline()); - QVERIFY(font2.overline() == font.overline()); - QVERIFY(font2.strikeOut() == font.strikeOut()); - QVERIFY(font2.stretch() == font.stretch()); - - QFont font3; - font3.setStretch(QFont::UltraCondensed); - QFont font4 = font3.resolve(font1).resolve(font); - - QVERIFY(font4.stretch() == font3.stretch()); - - QVERIFY(font4.weight() == font.weight()); - QVERIFY(font4.pointSize() == font.pointSize()); - QVERIFY(font4.italic() == font.italic()); - QVERIFY(font4.underline() == font.underline()); - QVERIFY(font4.overline() == font.overline()); - QVERIFY(font4.strikeOut() == font.strikeOut()); - - - QFont f1,f2,f3; - f2.setPointSize(45); - f3.setPointSize(55); - - QFont f4 = f1.resolve(f2); - QCOMPARE(f4.pointSize(), 45); - f4 = f4.resolve(f3); - QCOMPARE(f4.pointSize(), 55); -} - -void tst_QFont::resetFont() -{ - QWidget parent; - QFont parentFont = parent.font(); - parentFont.setPointSize(parentFont.pointSize() + 2); - parent.setFont(parentFont); - - QWidget *child = new QWidget(&parent); - - QFont childFont = child->font(); - childFont.setBold(!childFont.bold()); - child->setFont(childFont); - - QVERIFY(parentFont.resolve() != 0); - QVERIFY(childFont.resolve() != 0); - QVERIFY(childFont != parentFont); - - child->setFont(QFont()); // reset font - - QVERIFY(child->font().resolve() == 0); - QVERIFY(child->font().pointSize() == parent.font().pointSize()); - QVERIFY(parent.font().resolve() != 0); -} - -void tst_QFont::isCopyOf() -{ - QFont font; - QVERIFY(font.isCopyOf(QApplication::font())); - - QFont font2("bogusfont", 23); - QVERIFY(! font2.isCopyOf(QApplication::font())); - - QFont font3 = font; - QVERIFY(font3.isCopyOf(font)); - - font3.setPointSize(256); - QVERIFY(!font3.isCopyOf(font)); - font3.setPointSize(font.pointSize()); - QVERIFY(!font3.isCopyOf(font)); -} - -void tst_QFont::setFontRaw() -{ -#ifndef Q_WS_X11 - QSKIP("Only tested on X11", SkipAll); -#else - QFont f; - f.setRawName("-*-fixed-bold-r-normal--0-0-*-*-*-0-iso8859-1"); -// qDebug("font family: %s", f.family().utf8()); - QFontDatabase fdb; - QStringList families = fdb.families(); - bool found = false; - for (int i = 0; i < families.size(); ++i) { - QString str = families.at(i); - if (str.contains('[')) - str = str.left(str.indexOf('[')-1); - if (str.toLower() == "fixed") - found = true; - } - if (!found) { - QSKIP("Fixed font not available.", SkipSingle); - } - QCOMPARE(QFontInfo(f).family().left(5).toLower(), QString("fixed")); -#endif -} - -void tst_QFont::insertAndRemoveSubstitutions() -{ - QFont::removeSubstitution("BogusFontFamily"); - // make sure it is empty before we start - QVERIFY(QFont::substitutes("BogusFontFamily").isEmpty()); - QVERIFY(QFont::substitutes("bogusfontfamily").isEmpty()); - - // inserting Foo - QFont::insertSubstitution("BogusFontFamily", "Foo"); - QCOMPARE(QFont::substitutes("BogusFontFamily").count(), 1); - QCOMPARE(QFont::substitutes("bogusfontfamily").count(), 1); - - // inserting Bar and Baz - QStringList moreFonts; - moreFonts << "Bar" << "Baz"; - QFont::insertSubstitutions("BogusFontFamily", moreFonts); - QCOMPARE(QFont::substitutes("BogusFontFamily").count(), 3); - QCOMPARE(QFont::substitutes("bogusfontfamily").count(), 3); - - QFont::removeSubstitution("BogusFontFamily"); - // make sure it is empty again - QVERIFY(QFont::substitutes("BogusFontFamily").isEmpty()); - QVERIFY(QFont::substitutes("bogusfontfamily").isEmpty()); -} - - -static QFont copyFont(const QFont &font1) // copy using a QDataStream -{ - QBuffer buffer; - buffer.open(QIODevice::WriteOnly); - QDataStream ds(&buffer); - ds << font1; - buffer.close(); - - buffer.open(QIODevice::ReadOnly); - QFont font2; - ds >> font2; - return font2; -} - -void tst_QFont::serializeSpacing() -{ - QFont font; - QCOMPARE(font.letterSpacing(), 0.); - QCOMPARE(font.wordSpacing(), 0.); - - font.setLetterSpacing(QFont::AbsoluteSpacing, 105); - QCOMPARE(font.letterSpacing(), 105.); - QCOMPARE(font.letterSpacingType(), QFont::AbsoluteSpacing); - QCOMPARE(font.wordSpacing(), 0.); - QFont font2 = copyFont(font); - QCOMPARE(font2.letterSpacing(), 105.); - QCOMPARE(font2.letterSpacingType(), QFont::AbsoluteSpacing); - QCOMPARE(font2.wordSpacing(), 0.); - - font.setWordSpacing(50.0); - QCOMPARE(font.letterSpacing(), 105.); - QCOMPARE(font.wordSpacing(), 50.); - - QFont font3 = copyFont(font); - QCOMPARE(font3.letterSpacing(), 105.); - QCOMPARE(font3.letterSpacingType(), QFont::AbsoluteSpacing); - QCOMPARE(font3.wordSpacing(), 50.); -} - -void tst_QFont::lastResortFont() -{ -#if defined(Q_WS_QWS) || defined(Q_WS_QPA) - QSKIP("QFont::lastResortFont() may abort with qFatal() on QWS/QPA", SkipAll); - // ...if absolutely no font is found. Just as ducumented for QFont::lastResortFont(). - // This happens on our CI machines which run QWS autotests. -#endif - QFont font; - QVERIFY(!font.lastResortFont().isEmpty()); -} - -void tst_QFont::styleName() -{ -#if !defined(Q_WS_MAC) - QSKIP("Only tested on Mac", SkipAll); -#else - QFont font("Helvetica Neue"); - font.setStyleName("UltraLight"); - - QCOMPARE(QFontInfo(font).styleName(), QString("UltraLight")); -#endif -} - -QTEST_MAIN(tst_QFont) -#include "tst_qfont.moc" |