tests/auto/qwindowsurface/tst_qwindowsurface.cpp
changeset 30 5dc02b23752f
parent 18 2f34d5167611
--- a/tests/auto/qwindowsurface/tst_qwindowsurface.cpp	Wed Jun 23 19:07:03 2010 +0300
+++ b/tests/auto/qwindowsurface/tst_qwindowsurface.cpp	Tue Jul 06 15:10:48 2010 +0300
@@ -66,6 +66,7 @@
     void getSetWindowSurface();
     void flushOutsidePaintEvent();
     void grabWidget();
+    void staticContentsAndPartialUpdateSupport();
 };
 
 class MyWindowSurface : public QWindowSurface
@@ -81,6 +82,8 @@
         /* nothing */
     }
 
+    using QWindowSurface::setStaticContentsSupport;
+    using QWindowSurface::setPartialUpdateSupport;
 private:
     QImage image;
 };
@@ -280,6 +283,51 @@
     QVERIFY(QColor(childInvalidSubImage.pixel(0, 0)) == QColor(Qt::white));
 }
 
+void tst_QWindowSurface::staticContentsAndPartialUpdateSupport()
+{
+    QWidget widget;
+    MyWindowSurface surface(&widget);
+
+    // Default values.
+    QVERIFY(surface.hasPartialUpdateSupport());
+    QVERIFY(!surface.hasStaticContentsSupport());
+
+    // Partial: YES, Static: YES
+    surface.setStaticContentsSupport(true);
+    QVERIFY(surface.hasPartialUpdateSupport());
+    QVERIFY(surface.hasStaticContentsSupport());
+
+    // Static contents requires support for partial updates.
+    // We simply ingore bad combinations and spit out a warning.
+
+    // CONFLICT: Partial: NO, Static: YES
+    QTest::ignoreMessage(QtWarningMsg, "QWindowSurface::setPartialUpdateSupport: static contents support requires partial update support");
+    surface.setPartialUpdateSupport(false);
+    QVERIFY(surface.hasPartialUpdateSupport());
+    QVERIFY(surface.hasStaticContentsSupport());
+
+    // Partial: YES, Static: NO
+    surface.setStaticContentsSupport(false);
+    QVERIFY(surface.hasPartialUpdateSupport());
+    QVERIFY(!surface.hasStaticContentsSupport());
+
+    // Partial: NO, Static: NO
+    surface.setPartialUpdateSupport(false);
+    QVERIFY(!surface.hasPartialUpdateSupport());
+    QVERIFY(!surface.hasStaticContentsSupport());
+
+    // CONFLICT: Partial: NO, Static: YES
+    QTest::ignoreMessage(QtWarningMsg, "QWindowSurface::setStaticContentsSupport: static contents support requires partial update support");
+    surface.setStaticContentsSupport(true);
+    QVERIFY(!surface.hasPartialUpdateSupport());
+    QVERIFY(!surface.hasStaticContentsSupport());
+
+    // Partial: YES, Static: NO
+    surface.setPartialUpdateSupport(true);
+    QVERIFY(surface.hasPartialUpdateSupport());
+    QVERIFY(!surface.hasStaticContentsSupport());
+}
+
 QTEST_MAIN(tst_QWindowSurface)
 
 #else // Q_WS_MAC