tests/auto/qimagereader/tst_qimagereader.cpp
branchRCL_3
changeset 4 3b1da2848fc7
parent 3 41300fa6a67c
child 5 d3bac044e0f0
equal deleted inserted replaced
3:41300fa6a67c 4:3b1da2848fc7
     1 /****************************************************************************
     1 /****************************************************************************
     2 **
     2 **
     3 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
     3 ** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
     4 ** All rights reserved.
     4 ** All rights reserved.
     5 ** Contact: Nokia Corporation (qt-info@nokia.com)
     5 ** Contact: Nokia Corporation (qt-info@nokia.com)
     6 **
     6 **
     7 ** This file is part of the test suite of the Qt Toolkit.
     7 ** This file is part of the test suite of the Qt Toolkit.
     8 **
     8 **
   139     void imageFormatBeforeRead();
   139     void imageFormatBeforeRead();
   140 
   140 
   141 #if defined QTEST_HAVE_GIF
   141 #if defined QTEST_HAVE_GIF
   142     void gifHandlerBugs();
   142     void gifHandlerBugs();
   143     void animatedGif();
   143     void animatedGif();
       
   144     void gifImageCount();
   144 #endif
   145 #endif
   145 
   146 
   146     void readCorruptImage_data();
   147     void readCorruptImage_data();
   147     void readCorruptImage();
   148     void readCorruptImage();
   148     void readCorruptBmp();
   149     void readCorruptBmp();
   320     QTest::newRow("PPM: teapot") << "teapot" << QSize(200, 200) << QByteArray("ppm");
   321     QTest::newRow("PPM: teapot") << "teapot" << QSize(200, 200) << QByteArray("ppm");
   321     QTest::newRow("PPM: runners") << "runners.ppm" << QSize(400, 400) << QByteArray("ppm");
   322     QTest::newRow("PPM: runners") << "runners.ppm" << QSize(400, 400) << QByteArray("ppm");
   322     QTest::newRow("PPM: test") << "test.ppm" << QSize(10, 10) << QByteArray("ppm");
   323     QTest::newRow("PPM: test") << "test.ppm" << QSize(10, 10) << QByteArray("ppm");
   323     QTest::newRow("XBM: gnus") << "gnus" << QSize(200, 200) << QByteArray("xbm");
   324     QTest::newRow("XBM: gnus") << "gnus" << QSize(200, 200) << QByteArray("xbm");
   324 #ifdef QTEST_HAVE_JPEG
   325 #ifdef QTEST_HAVE_JPEG
   325     QTest::newRow("JPEG: beavis") << "beavis" << QSize(200, 200) << QByteArray("jpeg");
   326     QTest::newRow("JPEG: beavis A") << "beavis" << QSize(200, 200) << QByteArray("jpeg");
       
   327     QTest::newRow("JPEG: beavis B") << "beavis" << QSize(175, 175) << QByteArray("jpeg");
       
   328     QTest::newRow("JPEG: beavis C") << "beavis" << QSize(100, 100) << QByteArray("jpeg");
       
   329     QTest::newRow("JPEG: beavis D") << "beavis" << QSize(100, 200) << QByteArray("jpeg");
       
   330     QTest::newRow("JPEG: beavis E") << "beavis" << QSize(200, 100) << QByteArray("jpeg");
       
   331     QTest::newRow("JPEG: beavis F") << "beavis" << QSize(87, 87) << QByteArray("jpeg");
       
   332     QTest::newRow("JPEG: beavis G") << "beavis" << QSize(50, 45) << QByteArray("jpeg");
       
   333     QTest::newRow("JPEG: beavis H") << "beavis" << QSize(43, 43) << QByteArray("jpeg");
       
   334     QTest::newRow("JPEG: beavis I") << "beavis" << QSize(25, 25) << QByteArray("jpeg");
   326 #endif // QTEST_HAVE_JPEG
   335 #endif // QTEST_HAVE_JPEG
   327 #ifdef QTEST_HAVE_GIF
   336 #ifdef QTEST_HAVE_GIF
   328     QTest::newRow("GIF: earth") << "earth" << QSize(200, 200) << QByteArray("gif");
   337     QTest::newRow("GIF: earth") << "earth" << QSize(200, 200) << QByteArray("gif");
   329     QTest::newRow("GIF: trolltech") << "trolltech" << QSize(200, 200) << QByteArray("gif");
   338     QTest::newRow("GIF: trolltech") << "trolltech" << QSize(200, 200) << QByteArray("gif");
   330 #endif // QTEST_HAVE_GIF
   339 #endif // QTEST_HAVE_GIF
   715         QVERIFY(io1.canRead());  QVERIFY(io2.canRead());
   724         QVERIFY(io1.canRead());  QVERIFY(io2.canRead());
   716         QImage im1 = io1.read(); QImage im2 = io2.read();
   725         QImage im1 = io1.read(); QImage im2 = io2.read();
   717         QVERIFY(!im1.isNull());  QVERIFY(!im2.isNull());
   726         QVERIFY(!im1.isNull());  QVERIFY(!im2.isNull());
   718         QCOMPARE(im1.convertToFormat(QImage::Format_ARGB32), im2.convertToFormat(QImage::Format_ARGB32));
   727         QCOMPARE(im1.convertToFormat(QImage::Format_ARGB32), im2.convertToFormat(QImage::Format_ARGB32));
   719     }
   728     }
       
   729 
       
   730     // Check the undocumented feature.
       
   731     {
       
   732         QImageReader io(prefix + "endless-anim.gif");
       
   733         QVERIFY(io.canRead());
       
   734         QCOMPARE(io.loopCount(), -1);
       
   735     }
   720 }
   736 }
   721 
   737 
   722 void tst_QImageReader::animatedGif()
   738 void tst_QImageReader::animatedGif()
   723 {
   739 {
   724     QImageReader io(":images/qt.gif");
   740     QImageReader io(":images/qt.gif");
   727     int i = 0;
   743     int i = 0;
   728     while(!image.isNull()){
   744     while(!image.isNull()){
   729         QString frameName = QString(":images/qt%1.gif").arg(++i);
   745         QString frameName = QString(":images/qt%1.gif").arg(++i);
   730         QCOMPARE(image, QImage(frameName));
   746         QCOMPARE(image, QImage(frameName));
   731         image = io.read();
   747         image = io.read();
       
   748     }
       
   749 }
       
   750 
       
   751 // http://bugreports.qt.nokia.com/browse/QTBUG-6696
       
   752 // Check the count of images in various call orders...
       
   753 void tst_QImageReader::gifImageCount()
       
   754 {
       
   755     // just read every frame... and see how much we got..
       
   756     {
       
   757         QImageReader io(":images/four-frames.gif");
       
   758 
       
   759         QVERIFY(io.canRead());
       
   760         QImage blackFrame = io.read();
       
   761 
       
   762         QVERIFY(io.canRead());
       
   763         QImage whiteFrame = io.read();
       
   764 
       
   765         QVERIFY(io.canRead());
       
   766         QImage greenFrame = io.read();
       
   767 
       
   768         QVERIFY(io.canRead());
       
   769         QImage blueFrame = io.read();
       
   770 
       
   771         QVERIFY(!io.canRead());
       
   772         QImage emptyFrame = io.read();
       
   773 
       
   774         QVERIFY(!io.canRead());
       
   775         QCOMPARE(blackFrame.pixel(0,0), qRgb(0, 0, 0));
       
   776         QCOMPARE(blackFrame.size(), QSize(64,64));
       
   777 
       
   778         QCOMPARE(whiteFrame.pixel(0,0), qRgb(0xff, 0xff, 0xff));
       
   779         QCOMPARE(whiteFrame.size(), QSize(64,64));
       
   780 
       
   781         QCOMPARE(greenFrame.pixel(0,0), qRgb(0x0, 0xff, 0x0));
       
   782         QCOMPARE(greenFrame.size(), QSize(64,64));
       
   783 
       
   784         QCOMPARE(blueFrame.pixel(0,0), qRgb(0x0, 0x0, 0xff));
       
   785         QCOMPARE(blueFrame.size(), QSize(64,64));
       
   786         QVERIFY(emptyFrame.isNull());
       
   787     }
       
   788 
       
   789     // Read and get the size
       
   790     {
       
   791         QImageReader io(":images/four-frames.gif");
       
   792 
       
   793         QVERIFY(io.canRead());
       
   794         QCOMPARE(io.size(), QSize(64,64));
       
   795 
       
   796         QVERIFY(io.canRead());
       
   797         QCOMPARE(io.size(), QSize(64,64));
       
   798         QCOMPARE(io.size(), QSize(64,64));
       
   799         QVERIFY(io.canRead());
       
   800         QImage blackFrame = io.read();
       
   801 
       
   802         QVERIFY(io.canRead());
       
   803         QCOMPARE(io.size(), QSize(64,64));
       
   804         QCOMPARE(io.size(), QSize(64,64));
       
   805         QVERIFY(io.canRead());
       
   806         QImage whiteFrame = io.read();
       
   807 
       
   808         QVERIFY(io.canRead());
       
   809         QCOMPARE(io.size(), QSize(64,64));
       
   810         QCOMPARE(io.size(), QSize(64,64));
       
   811         QVERIFY(io.canRead());
       
   812         QImage greenFrame = io.read();
       
   813 
       
   814         QVERIFY(io.canRead());
       
   815         QCOMPARE(io.size(), QSize(64,64));
       
   816         QCOMPARE(io.size(), QSize(64,64));
       
   817         QVERIFY(io.canRead());
       
   818         QImage blueFrame = io.read();
       
   819 
       
   820         QVERIFY(!io.canRead());
       
   821         QCOMPARE(io.size(), QSize());
       
   822         QCOMPARE(io.size(), QSize());
       
   823         QVERIFY(!io.canRead());
       
   824         QImage emptyFrame = io.read();
       
   825 
       
   826         QVERIFY(!io.canRead());
       
   827         QCOMPARE(blackFrame.pixel(0,0), qRgb(0, 0, 0));
       
   828         QCOMPARE(blackFrame.size(), QSize(64,64));
       
   829 
       
   830         QCOMPARE(whiteFrame.pixel(0,0), qRgb(0xff, 0xff, 0xff));
       
   831         QCOMPARE(whiteFrame.size(), QSize(64,64));
       
   832 
       
   833         QCOMPARE(greenFrame.pixel(0,0), qRgb(0x0, 0xff, 0x0));
       
   834         QCOMPARE(greenFrame.size(), QSize(64,64));
       
   835 
       
   836         QCOMPARE(blueFrame.pixel(0,0), qRgb(0x0, 0x0, 0xff));
       
   837         QCOMPARE(blueFrame.size(), QSize(64,64));
       
   838         QVERIFY(emptyFrame.isNull());
       
   839     }
       
   840 
       
   841     // Do a Size query as substitute for canRead
       
   842     {
       
   843         QImageReader io(":images/four-frames.gif");
       
   844 
       
   845         QCOMPARE(io.size(), QSize(64,64));
       
   846         QCOMPARE(io.size(), QSize(64,64));
       
   847         QImage blackFrame = io.read();
       
   848 
       
   849         QCOMPARE(io.size(), QSize(64,64));
       
   850         QCOMPARE(io.size(), QSize(64,64));
       
   851         QImage whiteFrame = io.read();
       
   852 
       
   853         QCOMPARE(io.size(), QSize(64,64));
       
   854         QCOMPARE(io.size(), QSize(64,64));
       
   855         QImage greenFrame = io.read();
       
   856 
       
   857         QCOMPARE(io.size(), QSize(64,64));
       
   858         QCOMPARE(io.size(), QSize(64,64));
       
   859         QImage blueFrame = io.read();
       
   860 
       
   861         QCOMPARE(io.size(), QSize());
       
   862         QVERIFY(!io.canRead());
       
   863         QImage emptyFrame = io.read();
       
   864 
       
   865         QVERIFY(!io.canRead());
       
   866         QCOMPARE(blackFrame.pixel(0,0), qRgb(0, 0, 0));
       
   867         QCOMPARE(blackFrame.size(), QSize(64,64));
       
   868 
       
   869         QCOMPARE(whiteFrame.pixel(0,0), qRgb(0xff, 0xff, 0xff));
       
   870         QCOMPARE(whiteFrame.size(), QSize(64,64));
       
   871 
       
   872         QCOMPARE(greenFrame.pixel(0,0), qRgb(0x0, 0xff, 0x0));
       
   873         QCOMPARE(greenFrame.size(), QSize(64,64));
       
   874 
       
   875         QCOMPARE(blueFrame.pixel(0,0), qRgb(0x0, 0x0, 0xff));
       
   876         QCOMPARE(blueFrame.size(), QSize(64,64));
       
   877         QVERIFY(emptyFrame.isNull());
   732     }
   878     }
   733 }
   879 }
   734 #endif
   880 #endif
   735 
   881 
   736 class Server : public QObject
   882 class Server : public QObject