tests/auto/qpixmap/tst_qpixmap.cpp
changeset 7 f7bc934e204c
parent 3 41300fa6a67c
child 30 5dc02b23752f
--- a/tests/auto/qpixmap/tst_qpixmap.cpp	Tue Feb 02 00:43:10 2010 +0200
+++ b/tests/auto/qpixmap/tst_qpixmap.cpp	Wed Mar 31 11:06:36 2010 +0300
@@ -1,6 +1,6 @@
 /****************************************************************************
 **
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
 ** All rights reserved.
 ** Contact: Nokia Corporation (qt-info@nokia.com)
 **
@@ -145,9 +145,11 @@
     void fromWinHICON();
 #endif
 
-#if defined(Q_WS_S60)
+#if defined(Q_OS_SYMBIAN)
     void fromSymbianCFbsBitmap_data();
     void fromSymbianCFbsBitmap();
+    void toSymbianCFbsBitmap_data();
+    void toSymbianCFbsBitmap();
 #endif
 
     void onlyNullPixmapsOutsideGuiThread();
@@ -171,6 +173,8 @@
 
     void preserveDepth();
     void splash_crash();
+
+    void loadAsBitmapOrPixmap();
 };
 
 static bool lenientCompare(const QPixmap &actual, const QPixmap &expected)
@@ -1108,7 +1112,7 @@
 
 #endif // Q_WS_WIN
 
-#if defined(Q_WS_S60)
+#if defined(Q_OS_SYMBIAN)
 Q_DECLARE_METATYPE(TDisplayMode)
 
 void tst_QPixmap::fromSymbianCFbsBitmap_data()
@@ -1204,6 +1208,45 @@
 
     CleanupStack::PopAndDestroy(3);
 }
+
+void tst_QPixmap::toSymbianCFbsBitmap_data()
+{
+    QTest::addColumn<int>("red");
+    QTest::addColumn<int>("green");
+    QTest::addColumn<int>("blue");
+
+    QTest::newRow("red")   << 255 << 0 << 0;
+    QTest::newRow("green") << 0 << 255 << 0;
+    QTest::newRow("blue")  << 0 << 0 << 255;
+}
+
+void tst_QPixmap::toSymbianCFbsBitmap()
+{
+    QFETCH(int, red);
+    QFETCH(int, green);
+    QFETCH(int, blue);
+
+    QPixmap pm(100, 100);
+    pm.fill(QColor(red, green, blue));
+
+    CFbsBitmap *bitmap = pm.toSymbianCFbsBitmap();
+
+    QVERIFY(bitmap != 0);
+
+    // Verify size
+    QCOMPARE(100, (int) bitmap->SizeInPixels().iWidth);
+    QCOMPARE(100, (int) bitmap->SizeInPixels().iHeight);
+
+    // Verify pixel color
+    TRgb pixel;
+    bitmap->GetPixel(pixel, TPoint(0,0));
+    QCOMPARE((int)pixel.Red(), red);
+    QCOMPARE((int)pixel.Green(), green);
+    QCOMPARE((int)pixel.Blue(), blue);
+
+    // Clean up
+    delete bitmap;
+}
 #endif
 
 void tst_QPixmap::onlyNullPixmapsOutsideGuiThread()
@@ -1510,5 +1553,41 @@
     QCOMPARE(depth, source.depth());
 }
 
+void tst_QPixmap::loadAsBitmapOrPixmap()
+{
+    QImage tmp(10, 10, QImage::Format_RGB32);
+    tmp.save("tmp.png");
+
+    bool ok;
+
+    // Check that we can load the pixmap as a pixmap and that it then turns into a pixmap
+    QPixmap pixmap("tmp.png");
+    QVERIFY(!pixmap.isNull());
+    QVERIFY(pixmap.depth() > 1);
+    QVERIFY(!pixmap.isQBitmap());
+
+    pixmap = QPixmap();
+    ok = pixmap.load("tmp.png");
+    QVERIFY(ok);
+    QVERIFY(!pixmap.isNull());
+    QVERIFY(pixmap.depth() > 1);
+    QVERIFY(!pixmap.isQBitmap());
+
+    // The do the same check for bitmaps..
+    QBitmap bitmap("tmp.png");
+    QVERIFY(!bitmap.isNull());
+    QVERIFY(bitmap.depth() == 1);
+    QVERIFY(bitmap.isQBitmap());
+
+    bitmap = QBitmap();
+    ok = bitmap.load("tmp.png");
+    QVERIFY(ok);
+    QVERIFY(!bitmap.isNull());
+    QVERIFY(bitmap.depth() == 1);
+    QVERIFY(bitmap.isQBitmap());
+}
+
+
+
 QTEST_MAIN(tst_QPixmap)
 #include "tst_qpixmap.moc"