diff options
author | Matthew Vogt <matthew.vogt@nokia.com> | 2012-02-16 14:43:03 +1000 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-02-24 04:51:31 +0100 |
commit | b855240b782395f94315f43ea3e7e182299fac48 (patch) | |
tree | bc594c04449be8cd14cd0ab0bb72dafc2be0ffb2 /tests/auto/qtquick2/qquickitemlayer/tst_qquickitemlayer.cpp | |
parent | 6a42a6e0a9a1abdda0d07a5a20b4ac7e45348684 (diff) | |
download | qtdeclarative-b855240b782395f94315f43ea3e7e182299fac48.tar.gz |
Rename QDeclarative symbols to QQuick and QQml
Symbols beginning with QDeclarative are already exported
by the quick1 module.
Users can apply the bin/rename-qtdeclarative-symbols.sh
script to modify client code using the previous names of the
renamed symbols.
Task-number: QTBUG-23737
Change-Id: Ifaa482663767634931e8711a8e9bf6e404859e66
Reviewed-by: Martin Jones <martin.jones@nokia.com>
Diffstat (limited to 'tests/auto/qtquick2/qquickitemlayer/tst_qquickitemlayer.cpp')
-rw-r--r-- | tests/auto/qtquick2/qquickitemlayer/tst_qquickitemlayer.cpp | 436 |
1 files changed, 0 insertions, 436 deletions
diff --git a/tests/auto/qtquick2/qquickitemlayer/tst_qquickitemlayer.cpp b/tests/auto/qtquick2/qquickitemlayer/tst_qquickitemlayer.cpp deleted file mode 100644 index 2a856707ba..0000000000 --- a/tests/auto/qtquick2/qquickitemlayer/tst_qquickitemlayer.cpp +++ /dev/null @@ -1,436 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/ -** -** 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 <qtest.h> - -#include <QtQuick/qquickitem.h> -#include <QtQuick/qquickview.h> -#include <QtGui/qopenglcontext.h> - -#include "../../shared/util.h" - -class tst_QQuickItemLayer: public QDeclarativeDataTest -{ - Q_OBJECT -public: - tst_QQuickItemLayer(); - - QImage runTest(const QString &url) - { - QQuickView view; - view.setSource(QUrl(url)); - - view.show(); - QTest::qWaitForWindowShown(&view); - - return view.grabFrameBuffer(); - } - -private slots: - void layerEnabled(); - void layerSmooth(); - void layerMipmap(); - void layerEffect(); - - void layerVisibility_data(); - void layerVisibility(); - - void layerSourceRect(); - - void layerZOrder_data(); - void layerZOrder(); - - void layerIsTextureProvider(); - - void changeZOrder_data(); - void changeZOrder(); - - void toggleLayerAndEffect(); - void disableLayer(); - void changeSamplerName(); - void itemEffect(); - void rectangleEffect(); - -private: - bool m_isMesaSoftwareRasterizer; - int m_mesaVersion; -}; - -tst_QQuickItemLayer::tst_QQuickItemLayer() - : m_mesaVersion(0) -{ - QWindow window; - QOpenGLContext context; - window.setSurfaceType(QWindow::OpenGLSurface); - window.create(); - context.create(); - context.makeCurrent(&window); - const char *vendor = (const char *)glGetString(GL_VENDOR); - const char *renderer = (const char *)glGetString(GL_RENDERER); - m_isMesaSoftwareRasterizer = strcmp(vendor, "Mesa Project") == 0 - && strcmp(renderer, "Software Rasterizer") == 0; - if (m_isMesaSoftwareRasterizer) { - // Expects format: <OpenGL version> Mesa <Mesa version>[-devel] [...] - const char *version = (const char *)glGetString(GL_VERSION); - QList<QByteArray> list = QByteArray(version).split(' '); - if (list.size() >= 3) { - list = list.at(2).split('-').at(0).split('.'); - int major = 0; - int minor = 0; - int patch = 0; - if (list.size() >= 1) - major = list.at(0).toInt(); - if (list.size() >= 2) - minor = list.at(1).toInt(); - if (list.size() >= 3) - patch = list.at(2).toInt(); - m_mesaVersion = QT_VERSION_CHECK(major, minor, patch); - } - } -} - -// The test draws a red and a blue box next to each other and tests that the -// output is still red and blue on the left and right and a combination of -// the two in the middle. - -void tst_QQuickItemLayer::layerSmooth() -{ - if (m_isMesaSoftwareRasterizer && m_mesaVersion < QT_VERSION_CHECK(7, 11, 0)) - QSKIP("Mesa Software Rasterizer below version 7.11 does not render this test correctly."); - QImage fb = runTest(testFile("Smooth.qml")); - QCOMPARE(fb.pixel(0, 0), qRgb(0xff, 0, 0)); - QCOMPARE(fb.pixel(fb.width() - 1, 0), qRgb(0, 0, 0xff)); - - uint pixel = fb.pixel(fb.width() / 2, 0); - QVERIFY(qRed(pixel) > 0); - QVERIFY(qBlue(pixel) > 0); -} - - - -// The test draws a gradient at a small size into a layer and scales the -// layer. If the layer is enabled there should be very visible bands in -// the gradient. - -void tst_QQuickItemLayer::layerEnabled() -{ - if (m_isMesaSoftwareRasterizer && m_mesaVersion < QT_VERSION_CHECK(7, 11, 0)) - QSKIP("Mesa Software Rasterizer below version 7.11 does not render this test correctly."); - QImage fb = runTest(testFile("Enabled.qml")); - // Verify the banding - QCOMPARE(fb.pixel(0, 0), fb.pixel(0, 1)); - // Verify the gradient - QVERIFY(fb.pixel(0, 0) != fb.pixel(0, fb.height() - 1)); -} - - - -// The test draws a one pixel wide line and scales it down by more than a a factor 2 -// If mipmpping works, the pixels should be gray, not white or black - -void tst_QQuickItemLayer::layerMipmap() -{ - if (m_isMesaSoftwareRasterizer) - QSKIP("Mipmapping does not work with the Mesa Software Rasterizer."); - QImage fb = runTest(testFile("Mipmap.qml")); - QVERIFY(fb.pixel(0, 0) != 0xff000000); - QVERIFY(fb.pixel(0, 0) != 0xffffffff); -} - - - -// The test implements an rgb swapping effect sourced from a blue rectangle. The -// resulting pixel should be red - -void tst_QQuickItemLayer::layerEffect() -{ - if (m_isMesaSoftwareRasterizer && m_mesaVersion < QT_VERSION_CHECK(7, 11, 0)) - QSKIP("Mesa Software Rasterizer below version 7.11 does not render this test correctly."); - QImage fb = runTest(testFile("Effect.qml")); - QCOMPARE(fb.pixel(0, 0), qRgb(0xff, 0, 0)); - QCOMPARE(fb.pixel(fb.width() - 1, 0), qRgb(0, 0xff, 0)); -} - - - -// The test draws a rectangle and verifies that there is padding on each side -// as the source rect spans outside the item. The padding is verified using -// a shader that pads transparent to blue. Everything else is red. -void tst_QQuickItemLayer::layerSourceRect() -{ - if (m_isMesaSoftwareRasterizer && m_mesaVersion < QT_VERSION_CHECK(7, 11, 0)) - QSKIP("Mesa Software Rasterizer below version 7.11 does not render this test correctly."); - - QImage fb = runTest(testFile("SourceRect.qml")); - - // Check that the edges are converted to blue - QCOMPARE(fb.pixel(0, 0), qRgb(0, 0, 0xff)); - QCOMPARE(fb.pixel(fb.width() - 1, 0), qRgb(0, 0, 0xff)); - QCOMPARE(fb.pixel(0, fb.height() - 1), qRgb(0, 0, 0xff)); - QCOMPARE(fb.pixel(fb.width() - 1, fb.height() - 1), qRgb(0, 0, 0xff)); - - // The center pixel should be red - QCOMPARE(fb.pixel(fb.width() / 2, fb.height() / 2), qRgb(0xff, 0, 0)); -} - - - -// Same as the effect test up above, but this time use the item -// directly in a stand alone ShaderEffect -void tst_QQuickItemLayer::layerIsTextureProvider() -{ - if (m_isMesaSoftwareRasterizer && m_mesaVersion < QT_VERSION_CHECK(7, 11, 0)) - QSKIP("Mesa Software Rasterizer below version 7.11 does not render this test correctly."); - QImage fb = runTest(testFile("TextureProvider.qml")); - QCOMPARE(fb.pixel(0, 0), qRgb(0xff, 0, 0)); - QCOMPARE(fb.pixel(fb.width() - 1, 0), qRgb(0, 0xff, 0)); -} - - -void tst_QQuickItemLayer::layerVisibility_data() -{ - QTest::addColumn<bool>("visible"); - QTest::addColumn<bool>("effect"); - QTest::addColumn<qreal>("opacity"); - - QTest::newRow("!effect, !visible, a=1") << false << false << 1.; - QTest::newRow("!effect, visible, a=1") << false << true << 1.; - QTest::newRow("effect, !visible, a=1") << true << false << 1.; - QTest::newRow("effect, visible, a=1") << true << true << 1.; - - QTest::newRow("!effect, !visible, a=.5") << false << false << .5; - QTest::newRow("!effect, visible, a=.5") << false << true << .5; - QTest::newRow("effect, !visible, a=.5") << true << false << .5; - QTest::newRow("effect, visible, a=.5") << true << true << .5; - - QTest::newRow("!effect, !visible, a=0") << false << false << 0.; - QTest::newRow("!effect, visible, a=0") << false << true << 0.; - QTest::newRow("effect, !visible, a=0") << true << false << 0.; - QTest::newRow("effect, visible, a=0") << true << true << 0.; -} - -void tst_QQuickItemLayer::layerVisibility() -{ - if (m_isMesaSoftwareRasterizer && m_mesaVersion < QT_VERSION_CHECK(7, 11, 0)) - QSKIP("Mesa Software Rasterizer below version 7.11 does not render this test correctly."); - - QFETCH(bool, visible); - QFETCH(bool, effect); - QFETCH(qreal, opacity); - - QQuickView view; - view.setSource(testFile("Visible.qml")); - - QQuickItem *child = view.rootItem()->childItems().at(0); - child->setProperty("layerVisible", visible); - child->setProperty("layerEffect", effect); - child->setProperty("layerOpacity", opacity); - - view.show(); - - QTest::qWaitForWindowShown(&view); - - QImage fb = view.grabFrameBuffer(); - uint pixel = fb.pixel(0, 0); - - if (!visible || opacity == 0) { - QCOMPARE(pixel, qRgb(0xff, 0xff, 0xff)); - } else if (effect) { - QCOMPARE(qRed(pixel), 0xff); - QVERIFY(qGreen(pixel) < 0xff); - QVERIFY(qBlue(pixel) < 0xff); - } else { // no effect - QCOMPARE(qBlue(pixel), 0xff); - QVERIFY(qGreen(pixel) < 0xff); - QVERIFY(qRed(pixel) < 0xff); - } -} - - - - -void tst_QQuickItemLayer::layerZOrder_data() -{ - QTest::addColumn<bool>("effect"); - - QTest::newRow("!effect") << false; - QTest::newRow("effect") << true; -} - -void tst_QQuickItemLayer::layerZOrder() -{ - if (m_isMesaSoftwareRasterizer && m_mesaVersion < QT_VERSION_CHECK(7, 11, 0)) - QSKIP("Mesa Software Rasterizer below version 7.11 does not render this test correctly."); - - QFETCH(bool, effect); - - QQuickView view; - view.setSource(testFile("ZOrder.qml")); - - QQuickItem *child = view.rootItem()->childItems().at(0); - child->setProperty("layerEffect", effect); - - view.show(); - - QTest::qWaitForWindowShown(&view); - - QImage fb = view.grabFrameBuffer(); - - QCOMPARE(fb.pixel(50, 50), qRgb(0, 0, 0xff)); - QCOMPARE(fb.pixel(150, 150), qRgb(0, 0xff, 00)); - -} - -void tst_QQuickItemLayer::changeZOrder_data() -{ - QTest::addColumn<bool>("layered"); - QTest::addColumn<bool>("effect"); - - QTest::newRow("layered, effect") << true << true; - QTest::newRow("layered, !effect") << true << false; - QTest::newRow("!layered") << false << false; -} - -void tst_QQuickItemLayer::changeZOrder() -{ - if (m_isMesaSoftwareRasterizer && m_mesaVersion < QT_VERSION_CHECK(7, 11, 0)) - QSKIP("Mesa Software Rasterizer below version 7.11 does not render this test correctly."); - - QFETCH(bool, layered); - QFETCH(bool, effect); - - QQuickView view; - view.setSource(testFile("ZOrderChange.qml")); - - QQuickItem *child = view.rootItem()->childItems().at(0); - child->setProperty("layerEnabled", layered); - child->setProperty("layerEffect", effect); - child->setProperty("layerZ", 1); - - view.show(); - - QTest::qWaitForWindowShown(&view); - - QImage fb = view.grabFrameBuffer(); - - QRgb topLeft = fb.pixel(50, 50); - QRgb topRight = fb.pixel(150, 50); - QRgb bottomLeft = fb.pixel(50, 150); - QRgb bottomRight = fb.pixel(150, 150); - - QCOMPARE(bottomLeft, qRgb(0, 0, 0xff)); - - if (layered) { - QCOMPARE(topLeft, qRgb(0, 0xff, 0xff)); - } else { - QCOMPARE(qGreen(topLeft), 0xff); - QVERIFY(qAbs(qRed(topLeft) - 0x3f) < 4); - QVERIFY(qAbs(qBlue(topLeft) - 0xbf) < 4); - } - - if (layered && effect) { - QCOMPARE(qRed(topRight), 0xff); - QCOMPARE(qGreen(topRight), 0x00); - QVERIFY(qAbs(qBlue(topRight) - 0x7f) < 4); - - QVERIFY(qAbs(qRed(bottomRight) - 0x7f) < 4); - QCOMPARE(qBlue(bottomRight), 0xff); - QVERIFY(qAbs(qGreen(bottomRight) - 0x7f) < 4); - } else { - QCOMPARE(qRed(topRight), 0xff); - QCOMPARE(qBlue(topRight), 0x00); - QVERIFY(qAbs(qGreen(topRight) - 0x7f) < 4); - - QVERIFY(qAbs(qRed(bottomRight) - 0x7f) < 4); - QCOMPARE(qGreen(bottomRight), 0xff); - QVERIFY(qAbs(qBlue(bottomRight) - 0x7f) < 4); - } -} - -void tst_QQuickItemLayer::toggleLayerAndEffect() -{ - // This test passes if it doesn't crash. - runTest(testFile("ToggleLayerAndEffect.qml")); -} - -void tst_QQuickItemLayer::disableLayer() -{ - // This test passes if it doesn't crash. - runTest(testFile("DisableLayer.qml")); -} - -void tst_QQuickItemLayer::changeSamplerName() -{ - if (m_isMesaSoftwareRasterizer && m_mesaVersion < QT_VERSION_CHECK(7, 11, 0)) - QSKIP("Mesa Software Rasterizer below version 7.11 does not render this test correctly."); - QImage fb = runTest(testFile("SamplerNameChange.qml")); - QCOMPARE(fb.pixel(0, 0), qRgb(0, 0, 0xff)); -} - -void tst_QQuickItemLayer::itemEffect() -{ - if (m_isMesaSoftwareRasterizer && m_mesaVersion < QT_VERSION_CHECK(7, 11, 0)) - QSKIP("Mesa Software Rasterizer below version 7.11 does not render this test correctly."); - QImage fb = runTest(testFile("ItemEffect.qml")); - QCOMPARE(fb.pixel(0, 0), qRgb(0xff, 0, 0)); - QCOMPARE(fb.pixel(199, 0), qRgb(0xff, 0, 0)); - QCOMPARE(fb.pixel(0, 199), qRgb(0, 0, 0xff)); - QCOMPARE(fb.pixel(199, 199), qRgb(0, 0, 0xff)); -} - -void tst_QQuickItemLayer::rectangleEffect() -{ - QImage fb = runTest(testFile("RectangleEffect.qml")); - QCOMPARE(fb.pixel(0, 0), qRgb(0, 0xff, 0)); - QCOMPARE(fb.pixel(199, 0), qRgb(0, 0xff, 0)); - QCOMPARE(fb.pixel(0, 199), qRgb(0, 0xff, 0)); - QCOMPARE(fb.pixel(199, 199), qRgb(0, 0xff, 0)); - - QCOMPARE(fb.pixel(100, 0), qRgb(0, 0, 0xff)); - QCOMPARE(fb.pixel(199, 100), qRgb(0, 0, 0xff)); - QCOMPARE(fb.pixel(100, 199), qRgb(0, 0, 0xff)); - QCOMPARE(fb.pixel(0, 100), qRgb(0, 0, 0xff)); -} - - -QTEST_MAIN(tst_QQuickItemLayer) - -#include "tst_qquickitemlayer.moc" |