aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto/qtquick2/qquickcanvas/tst_qquickcanvas.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/qtquick2/qquickcanvas/tst_qquickcanvas.cpp')
-rw-r--r--tests/auto/qtquick2/qquickcanvas/tst_qquickcanvas.cpp70
1 files changed, 70 insertions, 0 deletions
diff --git a/tests/auto/qtquick2/qquickcanvas/tst_qquickcanvas.cpp b/tests/auto/qtquick2/qquickcanvas/tst_qquickcanvas.cpp
index f894ff3d39..60522b7d44 100644
--- a/tests/auto/qtquick2/qquickcanvas/tst_qquickcanvas.cpp
+++ b/tests/auto/qtquick2/qquickcanvas/tst_qquickcanvas.cpp
@@ -203,6 +203,11 @@ private slots:
void qmlCreation();
void clearColor();
+
+ void grab();
+ void multipleWindows();
+
+ void animationsWhileHidden();
};
tst_qquickcanvas::tst_qquickcanvas()
@@ -221,6 +226,7 @@ void tst_qquickcanvas::cleanupTestCase()
void tst_qquickcanvas::constantUpdates()
{
QQuickCanvas canvas;
+ canvas.resize(250, 250);
ConstantUpdateItem item(canvas.rootItem());
canvas.show();
QTRY_VERIFY(item.iterations > 60);
@@ -520,6 +526,8 @@ void tst_qquickcanvas::mouseFiltering()
QCOMPARE(middleItem->mousePressId, 1);
QCOMPARE(bottomItem->mousePressId, 2);
QCOMPARE(topItem->mousePressId, 3);
+
+ delete canvas;
}
void tst_qquickcanvas::qmlCreation()
@@ -552,6 +560,68 @@ void tst_qquickcanvas::clearColor()
delete canvas;
}
+void tst_qquickcanvas::grab()
+{
+ QQuickCanvas canvas;
+ canvas.setClearColor(Qt::red);
+
+ canvas.resize(250, 250);
+ canvas.show();
+
+ QImage content = canvas.grabFrameBuffer();
+ QCOMPARE(content.width(), canvas.width());
+ QCOMPARE(content.height(), canvas.height());
+ QCOMPARE((uint) content.convertToFormat(QImage::Format_RGB32).pixel(0, 0), (uint) 0xffff0000);
+}
+
+void tst_qquickcanvas::multipleWindows()
+{
+ QList<QQuickCanvas *> windows;
+ for (int i=0; i<6; ++i) {
+ QQuickCanvas *c = new QQuickCanvas();
+ c->setClearColor(Qt::GlobalColor(Qt::red + i));
+ c->resize(300, 200);
+ c->setPos(100 + i * 30, 100 + i * 20);
+ c->show();
+ windows << c;
+ QVERIFY(c->visible());
+ }
+
+ // move them
+ for (int i=0; i<windows.size(); ++i) {
+ QQuickCanvas *c = windows.at(i);
+ c->setPos(c->x() - 10, c->y() - 10);
+ }
+
+ // resize them
+ for (int i=0; i<windows.size(); ++i) {
+ QQuickCanvas *c = windows.at(i);
+ c->resize(200, 150);
+ }
+
+ qDeleteAll(windows);
+}
+
+void tst_qquickcanvas::animationsWhileHidden()
+{
+ QDeclarativeEngine engine;
+ QDeclarativeComponent component(&engine);
+ component.loadUrl(TESTDATA("AnimationsWhileHidden.qml"));
+ QObject* created = component.create();
+
+ QQuickCanvas* canvas = qobject_cast<QQuickCanvas*>(created);
+ QVERIFY(canvas);
+ QVERIFY(canvas->visible());
+
+ // Now hide the window and verify that it went off screen
+ canvas->hide();
+ QTest::qWait(10);
+ QVERIFY(!canvas->visible());
+
+ // Running animaiton should cause it to become visible again shortly.
+ QTRY_VERIFY(canvas->visible());
+}
+
QTEST_MAIN(tst_qquickcanvas)
#include "tst_qquickcanvas.moc"