diff options
author | Jo Asplin <jo.asplin@nokia.com> | 2011-08-31 17:11:06 +0200 |
---|---|---|
committer | Jo Asplin <jo.asplin@nokia.com> | 2011-09-01 10:59:49 +0200 |
commit | a90f50942e5304e6bf1c8a3e32f1f65c7a38f60b (patch) | |
tree | 6ed9a3d0a0a3dd09a78593d89c000f29d3494b89 /tests/auto/qglyphrun/tst_qglyphrun.cpp | |
parent | a863eb1c7bbd5d40a741151f811bd7c62cf51e2d (diff) |
Moved gui autotests into new directory structure
Task-number: QTBUG-21133
Change-Id: I83b8f652935cf92151265ca2530a3cf81c31fdef
Reviewed-on: http://codereview.qt.nokia.com/3996
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Jo Asplin <jo.asplin@nokia.com>
Diffstat (limited to 'tests/auto/qglyphrun/tst_qglyphrun.cpp')
-rw-r--r-- | tests/auto/qglyphrun/tst_qglyphrun.cpp | 679 |
1 files changed, 0 insertions, 679 deletions
diff --git a/tests/auto/qglyphrun/tst_qglyphrun.cpp b/tests/auto/qglyphrun/tst_qglyphrun.cpp deleted file mode 100644 index e84915428f..0000000000 --- a/tests/auto/qglyphrun/tst_qglyphrun.cpp +++ /dev/null @@ -1,679 +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 <qglyphrun.h> -#include <qpainter.h> -#include <qtextlayout.h> -#include <qfontdatabase.h> - -// #define DEBUG_SAVE_IMAGE - -class tst_QGlyphRun: public QObject -{ - Q_OBJECT - -#if !defined(QT_NO_RAWFONT) -private slots: - void initTestCase(); - void init(); - void cleanupTestCase(); - - void constructionAndDestruction(); - void copyConstructor(); - void assignment(); - void equalsOperator_data(); - void equalsOperator(); - void textLayoutGlyphIndexes(); - void drawExistingGlyphs(); - void drawNonExistentGlyphs(); - void drawMultiScriptText1(); - void drawMultiScriptText2(); - void drawStruckOutText(); - void drawOverlinedText(); - void drawUnderlinedText(); - void drawRightToLeft(); - void detach(); - void setRawData(); - void setRawDataAndGetAsVector(); - -private: - int m_testFontId; - QFont m_testFont; - bool m_testFont_ok; -#endif // QT_NO_RAWFONT - -}; - -#if !defined(QT_NO_RAWFONT) - -Q_DECLARE_METATYPE(QGlyphRun); - -void tst_QGlyphRun::initTestCase() -{ - m_testFont_ok = false; - - m_testFontId = QFontDatabase::addApplicationFont(SRCDIR "test.ttf"); - QVERIFY(m_testFontId >= 0); - - m_testFont = QFont("QtsSpecialTestFont"); - -#ifdef Q_WS_QPA - QEXPECT_FAIL("", "QTBUG-20760 fails on qpa", Abort); -#endif - - QCOMPARE(QFontInfo(m_testFont).family(), QString::fromLatin1("QtsSpecialTestFont")); - - m_testFont_ok = true; -} - -void tst_QGlyphRun::init() -{ - if (!m_testFont_ok) { - QSKIP("Test font is not working correctly", SkipAll); - } -} - -void tst_QGlyphRun::cleanupTestCase() -{ - QFontDatabase::removeApplicationFont(m_testFontId); -} - -void tst_QGlyphRun::constructionAndDestruction() -{ - QGlyphRun glyphIndexes; -} - -static QGlyphRun make_dummy_indexes() -{ - QGlyphRun glyphs; - - QVector<quint32> glyphIndexes; - QVector<QPointF> positions; - QFont font; - font.setPointSize(18); - - glyphIndexes.append(1); - glyphIndexes.append(2); - glyphIndexes.append(3); - - positions.append(QPointF(1, 2)); - positions.append(QPointF(3, 4)); - positions.append(QPointF(5, 6)); - - glyphs.setRawFont(QRawFont::fromFont(font)); - glyphs.setGlyphIndexes(glyphIndexes); - glyphs.setPositions(positions); - - return glyphs; -} - -void tst_QGlyphRun::copyConstructor() -{ - QGlyphRun glyphs; - - { - QVector<quint32> glyphIndexes; - QVector<QPointF> positions; - QFont font; - font.setPointSize(18); - - glyphIndexes.append(1); - glyphIndexes.append(2); - glyphIndexes.append(3); - - positions.append(QPointF(1, 2)); - positions.append(QPointF(3, 4)); - positions.append(QPointF(5, 6)); - - glyphs.setRawFont(QRawFont::fromFont(font)); - glyphs.setGlyphIndexes(glyphIndexes); - glyphs.setPositions(positions); - } - - QGlyphRun otherGlyphs(glyphs); - QCOMPARE(otherGlyphs.rawFont(), glyphs.rawFont()); - QCOMPARE(glyphs.glyphIndexes(), otherGlyphs.glyphIndexes()); - QCOMPARE(glyphs.positions(), otherGlyphs.positions()); -} - -void tst_QGlyphRun::assignment() -{ - QGlyphRun glyphs(make_dummy_indexes()); - - QGlyphRun otherGlyphs = glyphs; - QCOMPARE(otherGlyphs.rawFont(), glyphs.rawFont()); - QCOMPARE(glyphs.glyphIndexes(), otherGlyphs.glyphIndexes()); - QCOMPARE(glyphs.positions(), otherGlyphs.positions()); -} - -void tst_QGlyphRun::equalsOperator_data() -{ - QTest::addColumn<QGlyphRun>("one"); - QTest::addColumn<QGlyphRun>("two"); - QTest::addColumn<bool>("equals"); - - QGlyphRun one(make_dummy_indexes()); - QGlyphRun two(make_dummy_indexes()); - - QTest::newRow("Identical") << one << two << true; - - { - QGlyphRun busted(two); - - QVector<QPointF> positions = busted.positions(); - positions[2] += QPointF(1, 1); - busted.setPositions(positions); - - - QTest::newRow("Different positions") << one << busted << false; - } - - { - QGlyphRun busted(two); - - QFont font; - font.setPixelSize(busted.rawFont().pixelSize() * 2); - busted.setRawFont(QRawFont::fromFont(font)); - - QTest::newRow("Different fonts") << one << busted << false; - } - - { - QGlyphRun busted(two); - - QVector<quint32> glyphIndexes = busted.glyphIndexes(); - glyphIndexes[2] += 1; - busted.setGlyphIndexes(glyphIndexes); - - QTest::newRow("Different glyph indexes") << one << busted << false; - } - -} - -void tst_QGlyphRun::equalsOperator() -{ - QFETCH(QGlyphRun, one); - QFETCH(QGlyphRun, two); - QFETCH(bool, equals); - - QCOMPARE(one == two, equals); - QCOMPARE(one != two, !equals); -} - - -void tst_QGlyphRun::textLayoutGlyphIndexes() -{ - QString s; - s.append(QLatin1Char('A')); - s.append(QChar(0xe000)); - - QTextLayout layout(s); - layout.setFont(m_testFont); - layout.beginLayout(); - layout.createLine(); - layout.endLayout(); - - QList<QGlyphRun> listOfGlyphs = layout.glyphRuns(); - - QCOMPARE(listOfGlyphs.size(), 1); - - QGlyphRun glyphs = listOfGlyphs.at(0); - - QCOMPARE(glyphs.glyphIndexes().size(), 2); - QCOMPARE(glyphs.glyphIndexes().at(0), quint32(2)); - QCOMPARE(glyphs.glyphIndexes().at(1), quint32(1)); -} - -void tst_QGlyphRun::drawExistingGlyphs() -{ - QPixmap textLayoutDraw(1000, 1000); - QPixmap drawGlyphs(1000, 1000); - - textLayoutDraw.fill(Qt::white); - drawGlyphs.fill(Qt::white); - - QString s; - s.append(QLatin1Char('A')); - s.append(QChar(0xe000)); - - QTextLayout layout(s); - layout.setFont(m_testFont); - layout.beginLayout(); - layout.createLine(); - layout.endLayout(); - - { - QPainter p(&textLayoutDraw); - layout.draw(&p, QPointF(50, 50)); - } - - QGlyphRun glyphs = layout.glyphRuns().size() > 0 - ? layout.glyphRuns().at(0) - : QGlyphRun(); - - { - QPainter p(&drawGlyphs); - p.drawGlyphRun(QPointF(50, 50), glyphs); - } - -#if defined(DEBUG_SAVE_IMAGE) - textLayoutDraw.save("drawExistingGlyphs_textLayoutDraw.png"); - drawGlyphs.save("drawExistingGlyphs_drawGlyphIndexes.png"); -#endif - - QCOMPARE(textLayoutDraw, drawGlyphs); -} - -void tst_QGlyphRun::setRawData() -{ - QGlyphRun glyphRun; - glyphRun.setRawFont(QRawFont::fromFont(m_testFont)); - glyphRun.setGlyphIndexes(QVector<quint32>() << 2 << 2 << 2); - glyphRun.setPositions(QVector<QPointF>() << QPointF(2, 3) << QPointF(20, 3) << QPointF(10, 20)); - - QPixmap baseline(100, 50); - baseline.fill(Qt::white); - { - QPainter p(&baseline); - p.drawGlyphRun(QPointF(3, 2), glyphRun); - } - - QGlyphRun baselineCopied = glyphRun; - - quint32 glyphIndexArray[3] = { 2, 2, 2 }; - QPointF glyphPositionArray[3] = { QPointF(2, 3), QPointF(20, 3), QPointF(10, 20) }; - - glyphRun.setRawData(glyphIndexArray, glyphPositionArray, 3); - - QPixmap rawDataGlyphs(100, 50); - rawDataGlyphs.fill(Qt::white); - { - QPainter p(&rawDataGlyphs); - p.drawGlyphRun(QPointF(3, 2), glyphRun); - } - - quint32 otherGlyphIndexArray[1] = { 2 }; - QPointF otherGlyphPositionArray[1] = { QPointF(2, 3) }; - - glyphRun.setRawData(otherGlyphIndexArray, otherGlyphPositionArray, 1); - - QPixmap baselineCopiedPixmap(100, 50); - baselineCopiedPixmap.fill(Qt::white); - { - QPainter p(&baselineCopiedPixmap); - p.drawGlyphRun(QPointF(3, 2), baselineCopied); - } - -#if defined(DEBUG_SAVE_IMAGE) - baseline.save("setRawData_baseline.png"); - rawDataGlyphs.save("setRawData_rawDataGlyphs.png"); - baselineCopiedPixmap.save("setRawData_baselineCopiedPixmap.png"); -#endif - - QCOMPARE(rawDataGlyphs, baseline); - QCOMPARE(baselineCopiedPixmap, baseline); -} - -void tst_QGlyphRun::setRawDataAndGetAsVector() -{ - QVector<quint32> glyphIndexArray; - glyphIndexArray << 3 << 2 << 1 << 4; - - QVector<QPointF> glyphPositionArray; - glyphPositionArray << QPointF(1, 2) << QPointF(3, 4) << QPointF(5, 6) << QPointF(7, 8); - - QGlyphRun glyphRun; - glyphRun.setRawData(glyphIndexArray.constData(), glyphPositionArray.constData(), 4); - - QVector<quint32> glyphIndexes = glyphRun.glyphIndexes(); - QVector<QPointF> glyphPositions = glyphRun.positions(); - - QCOMPARE(glyphIndexes.size(), 4); - QCOMPARE(glyphPositions.size(), 4); - - QCOMPARE(glyphIndexes, glyphIndexArray); - QCOMPARE(glyphPositions, glyphPositionArray); - - QGlyphRun otherGlyphRun; - otherGlyphRun.setGlyphIndexes(glyphIndexArray); - otherGlyphRun.setPositions(glyphPositionArray); - - QCOMPARE(glyphRun, otherGlyphRun); -} - -void tst_QGlyphRun::drawNonExistentGlyphs() -{ - QVector<quint32> glyphIndexes; - glyphIndexes.append(3); - - QVector<QPointF> glyphPositions; - glyphPositions.append(QPointF(0, 0)); - - QGlyphRun glyphs; - glyphs.setGlyphIndexes(glyphIndexes); - glyphs.setPositions(glyphPositions); - glyphs.setRawFont(QRawFont::fromFont(m_testFont)); - - QPixmap image(1000, 1000); - image.fill(Qt::white); - - QPixmap imageBefore = image; - { - QPainter p(&image); - p.drawGlyphRun(QPointF(50, 50), glyphs); - } - -#if defined(DEBUG_SAVE_IMAGE) - image.save("drawNonExistentGlyphs.png"); -#endif - - QCOMPARE(image, imageBefore); // Should be unchanged -} - -void tst_QGlyphRun::drawMultiScriptText1() -{ - QString text; - text += QChar(0x03D0); // Greek, beta - - QTextLayout textLayout(text); - textLayout.beginLayout(); - textLayout.createLine(); - textLayout.endLayout(); - - QPixmap textLayoutDraw(1000, 1000); - textLayoutDraw.fill(Qt::white); - - QPixmap drawGlyphs(1000, 1000); - drawGlyphs.fill(Qt::white); - - QList<QGlyphRun> glyphsList = textLayout.glyphRuns(); - QCOMPARE(glyphsList.size(), 1); - - { - QPainter p(&textLayoutDraw); - textLayout.draw(&p, QPointF(50, 50)); - } - - { - QPainter p(&drawGlyphs); - foreach (QGlyphRun glyphs, glyphsList) - p.drawGlyphRun(QPointF(50, 50), glyphs); - } - -#if defined(DEBUG_SAVE_IMAGE) - textLayoutDraw.save("drawMultiScriptText1_textLayoutDraw.png"); - drawGlyphs.save("drawMultiScriptText1_drawGlyphIndexes.png"); -#endif - - QCOMPARE(drawGlyphs, textLayoutDraw); -} - - -void tst_QGlyphRun::drawMultiScriptText2() -{ - QString text; - text += QChar(0x0621); // Arabic, Hamza - text += QChar(0x03D0); // Greek, beta - - QTextLayout textLayout(text); - textLayout.beginLayout(); - textLayout.createLine(); - textLayout.endLayout(); - - QPixmap textLayoutDraw(1000, 1000); - textLayoutDraw.fill(Qt::white); - - QPixmap drawGlyphs(1000, 1000); - drawGlyphs.fill(Qt::white); - - QList<QGlyphRun> glyphsList = textLayout.glyphRuns(); - QCOMPARE(glyphsList.size(), 2); - - { - QPainter p(&textLayoutDraw); - textLayout.draw(&p, QPointF(50, 50)); - } - - { - QPainter p(&drawGlyphs); - foreach (QGlyphRun glyphs, glyphsList) - p.drawGlyphRun(QPointF(50, 50), glyphs); - } - -#if defined(DEBUG_SAVE_IMAGE) - textLayoutDraw.save("drawMultiScriptText2_textLayoutDraw.png"); - drawGlyphs.save("drawMultiScriptText2_drawGlyphIndexes.png"); -#endif - - QCOMPARE(drawGlyphs, textLayoutDraw); -} - -void tst_QGlyphRun::detach() -{ - QGlyphRun glyphs; - - glyphs.setGlyphIndexes(QVector<quint32>() << 1 << 2 << 3); - - QGlyphRun otherGlyphs; - otherGlyphs = glyphs; - - QCOMPARE(otherGlyphs.glyphIndexes(), glyphs.glyphIndexes()); - - otherGlyphs.setGlyphIndexes(QVector<quint32>() << 4 << 5 << 6); - - QCOMPARE(otherGlyphs.glyphIndexes(), QVector<quint32>() << 4 << 5 << 6); - QCOMPARE(glyphs.glyphIndexes(), QVector<quint32>() << 1 << 2 << 3); -} - -void tst_QGlyphRun::drawStruckOutText() -{ - QPixmap textLayoutDraw(1000, 1000); - QPixmap drawGlyphs(1000, 1000); - - textLayoutDraw.fill(Qt::white); - drawGlyphs.fill(Qt::white); - - QString s = QString::fromLatin1("Foobar"); - - QFont font; - font.setStrikeOut(true); - - QTextLayout layout(s); - layout.setFont(font); - layout.beginLayout(); - layout.createLine(); - layout.endLayout(); - - { - QPainter p(&textLayoutDraw); - layout.draw(&p, QPointF(50, 50)); - } - - QGlyphRun glyphs = layout.glyphRuns().size() > 0 - ? layout.glyphRuns().at(0) - : QGlyphRun(); - - { - QPainter p(&drawGlyphs); - p.drawGlyphRun(QPointF(50, 50), glyphs); - } - -#if defined(DEBUG_SAVE_IMAGE) - textLayoutDraw.save("drawStruckOutText_textLayoutDraw.png"); - drawGlyphs.save("drawStruckOutText_drawGlyphIndexes.png"); -#endif - - QCOMPARE(textLayoutDraw, drawGlyphs); -} - -void tst_QGlyphRun::drawOverlinedText() -{ - QPixmap textLayoutDraw(1000, 1000); - QPixmap drawGlyphs(1000, 1000); - - textLayoutDraw.fill(Qt::white); - drawGlyphs.fill(Qt::white); - - QString s = QString::fromLatin1("Foobar"); - - QFont font; - font.setOverline(true); - - QTextLayout layout(s); - layout.setFont(font); - layout.beginLayout(); - layout.createLine(); - layout.endLayout(); - - { - QPainter p(&textLayoutDraw); - layout.draw(&p, QPointF(50, 50)); - } - - QGlyphRun glyphs = layout.glyphRuns().size() > 0 - ? layout.glyphRuns().at(0) - : QGlyphRun(); - - { - QPainter p(&drawGlyphs); - p.drawGlyphRun(QPointF(50, 50), glyphs); - } - -#if defined(DEBUG_SAVE_IMAGE) - textLayoutDraw.save("drawOverlineText_textLayoutDraw.png"); - drawGlyphs.save("drawOverlineText_drawGlyphIndexes.png"); -#endif - - QCOMPARE(textLayoutDraw, drawGlyphs); -} - -void tst_QGlyphRun::drawUnderlinedText() -{ - QPixmap textLayoutDraw(1000, 1000); - QPixmap drawGlyphs(1000, 1000); - - textLayoutDraw.fill(Qt::white); - drawGlyphs.fill(Qt::white); - - QString s = QString::fromLatin1("Foobar"); - - QFont font; - font.setUnderline(true); - - QTextLayout layout(s); - layout.setFont(font); - layout.beginLayout(); - layout.createLine(); - layout.endLayout(); - - { - QPainter p(&textLayoutDraw); - layout.draw(&p, QPointF(50, 50)); - } - - QGlyphRun glyphs = layout.glyphRuns().size() > 0 - ? layout.glyphRuns().at(0) - : QGlyphRun(); - - { - QPainter p(&drawGlyphs); - p.drawGlyphRun(QPointF(50, 50), glyphs); - } - -#if defined(DEBUG_SAVE_IMAGE) - textLayoutDraw.save("drawUnderlineText_textLayoutDraw.png"); - drawGlyphs.save("drawUnderlineText_drawGlyphIndexes.png"); -#endif - - QCOMPARE(textLayoutDraw, drawGlyphs); -} - -void tst_QGlyphRun::drawRightToLeft() -{ - QString s; - s.append(QChar(1575)); - s.append(QChar(1578)); - - QPixmap textLayoutDraw(1000, 1000); - QPixmap drawGlyphs(1000, 1000); - - textLayoutDraw.fill(Qt::white); - drawGlyphs.fill(Qt::white); - - QFont font; - font.setUnderline(true); - - QTextLayout layout(s); - layout.setFont(font); - layout.beginLayout(); - layout.createLine(); - layout.endLayout(); - - { - QPainter p(&textLayoutDraw); - layout.draw(&p, QPointF(50, 50)); - } - - QGlyphRun glyphs = layout.glyphRuns().size() > 0 - ? layout.glyphRuns().at(0) - : QGlyphRun(); - - { - QPainter p(&drawGlyphs); - p.drawGlyphRun(QPointF(50, 50), glyphs); - } - -#if defined(DEBUG_SAVE_IMAGE) - textLayoutDraw.save("drawRightToLeft_textLayoutDraw.png"); - drawGlyphs.save("drawRightToLeft_drawGlyphIndexes.png"); -#endif - - QCOMPARE(textLayoutDraw, drawGlyphs); - -} - -#endif // QT_NO_RAWFONT - -QTEST_MAIN(tst_QGlyphRun) -#include "tst_qglyphrun.moc" - |