320 QTest::newRow("PPM: teapot") << "teapot" << QSize(200, 200) << QByteArray("ppm"); |
322 QTest::newRow("PPM: teapot") << "teapot" << QSize(200, 200) << QByteArray("ppm"); |
321 QTest::newRow("PPM: runners") << "runners.ppm" << QSize(400, 400) << QByteArray("ppm"); |
323 QTest::newRow("PPM: runners") << "runners.ppm" << QSize(400, 400) << QByteArray("ppm"); |
322 QTest::newRow("PPM: test") << "test.ppm" << QSize(10, 10) << QByteArray("ppm"); |
324 QTest::newRow("PPM: test") << "test.ppm" << QSize(10, 10) << QByteArray("ppm"); |
323 QTest::newRow("XBM: gnus") << "gnus" << QSize(200, 200) << QByteArray("xbm"); |
325 QTest::newRow("XBM: gnus") << "gnus" << QSize(200, 200) << QByteArray("xbm"); |
324 #ifdef QTEST_HAVE_JPEG |
326 #ifdef QTEST_HAVE_JPEG |
325 QTest::newRow("JPEG: beavis") << "beavis" << QSize(200, 200) << QByteArray("jpeg"); |
327 QTest::newRow("JPEG: beavis A") << "beavis" << QSize(200, 200) << QByteArray("jpeg"); |
|
328 QTest::newRow("JPEG: beavis B") << "beavis" << QSize(175, 175) << QByteArray("jpeg"); |
|
329 QTest::newRow("JPEG: beavis C") << "beavis" << QSize(100, 100) << QByteArray("jpeg"); |
|
330 QTest::newRow("JPEG: beavis D") << "beavis" << QSize(100, 200) << QByteArray("jpeg"); |
|
331 QTest::newRow("JPEG: beavis E") << "beavis" << QSize(200, 100) << QByteArray("jpeg"); |
|
332 QTest::newRow("JPEG: beavis F") << "beavis" << QSize(87, 87) << QByteArray("jpeg"); |
|
333 QTest::newRow("JPEG: beavis G") << "beavis" << QSize(50, 45) << QByteArray("jpeg"); |
|
334 QTest::newRow("JPEG: beavis H") << "beavis" << QSize(43, 43) << QByteArray("jpeg"); |
|
335 QTest::newRow("JPEG: beavis I") << "beavis" << QSize(25, 25) << QByteArray("jpeg"); |
326 #endif // QTEST_HAVE_JPEG |
336 #endif // QTEST_HAVE_JPEG |
327 #ifdef QTEST_HAVE_GIF |
337 #ifdef QTEST_HAVE_GIF |
328 QTest::newRow("GIF: earth") << "earth" << QSize(200, 200) << QByteArray("gif"); |
338 QTest::newRow("GIF: earth") << "earth" << QSize(200, 200) << QByteArray("gif"); |
329 QTest::newRow("GIF: trolltech") << "trolltech" << QSize(200, 200) << QByteArray("gif"); |
339 QTest::newRow("GIF: trolltech") << "trolltech" << QSize(200, 200) << QByteArray("gif"); |
330 #endif // QTEST_HAVE_GIF |
340 #endif // QTEST_HAVE_GIF |
729 QString frameName = QString(":images/qt%1.gif").arg(++i); |
746 QString frameName = QString(":images/qt%1.gif").arg(++i); |
730 QCOMPARE(image, QImage(frameName)); |
747 QCOMPARE(image, QImage(frameName)); |
731 image = io.read(); |
748 image = io.read(); |
732 } |
749 } |
733 } |
750 } |
|
751 |
|
752 // http://bugreports.qt.nokia.com/browse/QTBUG-6696 |
|
753 // Check the count of images in various call orders... |
|
754 void tst_QImageReader::gifImageCount() |
|
755 { |
|
756 // just read every frame... and see how much we got.. |
|
757 { |
|
758 QImageReader io(":images/four-frames.gif"); |
|
759 |
|
760 QVERIFY(io.canRead()); |
|
761 QImage blackFrame = io.read(); |
|
762 |
|
763 QVERIFY(io.canRead()); |
|
764 QImage whiteFrame = io.read(); |
|
765 |
|
766 QVERIFY(io.canRead()); |
|
767 QImage greenFrame = io.read(); |
|
768 |
|
769 QVERIFY(io.imageCount() == 4); |
|
770 |
|
771 QVERIFY(io.canRead()); |
|
772 QImage blueFrame = io.read(); |
|
773 |
|
774 QVERIFY(!io.canRead()); |
|
775 QImage emptyFrame = io.read(); |
|
776 |
|
777 QVERIFY(!io.canRead()); |
|
778 QCOMPARE(blackFrame.pixel(0,0), qRgb(0, 0, 0)); |
|
779 QCOMPARE(blackFrame.size(), QSize(64,64)); |
|
780 |
|
781 QCOMPARE(whiteFrame.pixel(0,0), qRgb(0xff, 0xff, 0xff)); |
|
782 QCOMPARE(whiteFrame.size(), QSize(64,64)); |
|
783 |
|
784 QCOMPARE(greenFrame.pixel(0,0), qRgb(0x0, 0xff, 0x0)); |
|
785 QCOMPARE(greenFrame.size(), QSize(64,64)); |
|
786 |
|
787 QCOMPARE(blueFrame.pixel(0,0), qRgb(0x0, 0x0, 0xff)); |
|
788 QCOMPARE(blueFrame.size(), QSize(64,64)); |
|
789 QVERIFY(emptyFrame.isNull()); |
|
790 } |
|
791 |
|
792 // Read and get the size |
|
793 { |
|
794 QImageReader io(":images/four-frames.gif"); |
|
795 |
|
796 QVERIFY(io.canRead()); |
|
797 QCOMPARE(io.size(), QSize(64,64)); |
|
798 |
|
799 QVERIFY(io.canRead()); |
|
800 QCOMPARE(io.size(), QSize(64,64)); |
|
801 QCOMPARE(io.size(), QSize(64,64)); |
|
802 QVERIFY(io.canRead()); |
|
803 QImage blackFrame = io.read(); |
|
804 |
|
805 QVERIFY(io.canRead()); |
|
806 QCOMPARE(io.size(), QSize(64,64)); |
|
807 QCOMPARE(io.size(), QSize(64,64)); |
|
808 QVERIFY(io.canRead()); |
|
809 QImage whiteFrame = io.read(); |
|
810 |
|
811 QVERIFY(io.canRead()); |
|
812 QCOMPARE(io.size(), QSize(64,64)); |
|
813 QCOMPARE(io.size(), QSize(64,64)); |
|
814 QVERIFY(io.canRead()); |
|
815 QImage greenFrame = io.read(); |
|
816 |
|
817 QVERIFY(io.canRead()); |
|
818 QCOMPARE(io.size(), QSize(64,64)); |
|
819 QCOMPARE(io.size(), QSize(64,64)); |
|
820 QVERIFY(io.canRead()); |
|
821 QImage blueFrame = io.read(); |
|
822 |
|
823 QVERIFY(!io.canRead()); |
|
824 QCOMPARE(io.size(), QSize()); |
|
825 QCOMPARE(io.size(), QSize()); |
|
826 QVERIFY(!io.canRead()); |
|
827 QImage emptyFrame = io.read(); |
|
828 |
|
829 QVERIFY(!io.canRead()); |
|
830 QCOMPARE(blackFrame.pixel(0,0), qRgb(0, 0, 0)); |
|
831 QCOMPARE(blackFrame.size(), QSize(64,64)); |
|
832 |
|
833 QCOMPARE(whiteFrame.pixel(0,0), qRgb(0xff, 0xff, 0xff)); |
|
834 QCOMPARE(whiteFrame.size(), QSize(64,64)); |
|
835 |
|
836 QCOMPARE(greenFrame.pixel(0,0), qRgb(0x0, 0xff, 0x0)); |
|
837 QCOMPARE(greenFrame.size(), QSize(64,64)); |
|
838 |
|
839 QCOMPARE(blueFrame.pixel(0,0), qRgb(0x0, 0x0, 0xff)); |
|
840 QCOMPARE(blueFrame.size(), QSize(64,64)); |
|
841 QVERIFY(emptyFrame.isNull()); |
|
842 } |
|
843 |
|
844 // Do a Size query as substitute for canRead |
|
845 { |
|
846 QImageReader io(":images/four-frames.gif"); |
|
847 |
|
848 QCOMPARE(io.size(), QSize(64,64)); |
|
849 QCOMPARE(io.size(), QSize(64,64)); |
|
850 QImage blackFrame = io.read(); |
|
851 |
|
852 QCOMPARE(io.size(), QSize(64,64)); |
|
853 QCOMPARE(io.size(), QSize(64,64)); |
|
854 QImage whiteFrame = io.read(); |
|
855 |
|
856 QCOMPARE(io.size(), QSize(64,64)); |
|
857 QCOMPARE(io.size(), QSize(64,64)); |
|
858 QImage greenFrame = io.read(); |
|
859 |
|
860 QCOMPARE(io.size(), QSize(64,64)); |
|
861 QCOMPARE(io.size(), QSize(64,64)); |
|
862 QImage blueFrame = io.read(); |
|
863 |
|
864 QCOMPARE(io.size(), QSize()); |
|
865 QVERIFY(!io.canRead()); |
|
866 QImage emptyFrame = io.read(); |
|
867 |
|
868 QVERIFY(!io.canRead()); |
|
869 QCOMPARE(blackFrame.pixel(0,0), qRgb(0, 0, 0)); |
|
870 QCOMPARE(blackFrame.size(), QSize(64,64)); |
|
871 |
|
872 QCOMPARE(whiteFrame.pixel(0,0), qRgb(0xff, 0xff, 0xff)); |
|
873 QCOMPARE(whiteFrame.size(), QSize(64,64)); |
|
874 |
|
875 QCOMPARE(greenFrame.pixel(0,0), qRgb(0x0, 0xff, 0x0)); |
|
876 QCOMPARE(greenFrame.size(), QSize(64,64)); |
|
877 |
|
878 QCOMPARE(blueFrame.pixel(0,0), qRgb(0x0, 0x0, 0xff)); |
|
879 QCOMPARE(blueFrame.size(), QSize(64,64)); |
|
880 QVERIFY(emptyFrame.isNull()); |
|
881 } |
|
882 { |
|
883 QImageReader io(":images/trolltech.gif"); |
|
884 QVERIFY(io.imageCount() == 34); |
|
885 QVERIFY(io.size() == QSize(128,64)); |
|
886 } |
|
887 } |
|
888 |
|
889 void tst_QImageReader::gifLoopCount() |
|
890 { |
|
891 { |
|
892 QImageReader io(":images/qt-gif-anim.gif"); |
|
893 QCOMPARE(io.loopCount(), -1); // infinite loop |
|
894 } |
|
895 { |
|
896 QImageReader io(":images/qt-gif-noanim.gif"); |
|
897 QCOMPARE(io.loopCount(), 0); // no loop |
|
898 } |
|
899 } |
|
900 |
734 #endif |
901 #endif |
735 |
902 |
736 class Server : public QObject |
903 class Server : public QObject |
737 { |
904 { |
738 Q_OBJECT |
905 Q_OBJECT |
1485 { |
1681 { |
1486 QTest::addColumn<QString>("fileName"); |
1682 QTest::addColumn<QString>("fileName"); |
1487 |
1683 |
1488 QTest::newRow("floppy (16px,32px - 16 colors)") << "35floppy.ico"; |
1684 QTest::newRow("floppy (16px,32px - 16 colors)") << "35floppy.ico"; |
1489 QTest::newRow("semitransparent") << "semitransparent.ico"; |
1685 QTest::newRow("semitransparent") << "semitransparent.ico"; |
1490 QTest::newRow("slightlybroken") << "kde_favicon.ico"; |
1686 QTest::newRow("slightlybrokenBMPHeader") << "kde_favicon.ico"; |
|
1687 QTest::newRow("sightlybrokenIconHeader") << "connect.ico"; |
1491 } |
1688 } |
1492 |
1689 |
1493 void tst_QImageReader::pixelCompareWithBaseline() |
1690 void tst_QImageReader::pixelCompareWithBaseline() |
1494 { |
1691 { |
1495 QFETCH(QString, fileName); |
1692 QFETCH(QString, fileName); |
1496 |
1693 |
|
1694 static int enteredCount = 0; // Used for better error diagnostics if something fails. We |
|
1695 static int loadFailCount = 0; // don't know if the reason load() fails is that the plugin |
|
1696 // does not exist or because of a bug in the plugin. But if at |
|
1697 // least one file succeeded we know that the plugin was built. |
|
1698 // The other failures are then real failures. |
1497 QImage icoImg; |
1699 QImage icoImg; |
|
1700 const QString inputFileName(QString::fromAscii("images/%1").arg(fileName)); |
|
1701 QFileInfo fi(inputFileName); |
|
1702 |
|
1703 ++enteredCount; |
1498 // might fail if the plugin does not exist, which is ok. |
1704 // might fail if the plugin does not exist, which is ok. |
1499 if (icoImg.load(QString::fromAscii("images/%1").arg(fileName))) { |
1705 if (icoImg.load(inputFileName)) { |
1500 QString baselineFileName = QString::fromAscii("baseline/%1").arg(fileName); |
1706 icoImg = icoImg.convertToFormat(QImage::Format_ARGB32_Premultiplied); |
|
1707 const QString baselineFileName(QString::fromAscii("baseline/%1.png").arg(fi.baseName())); |
1501 #if 0 |
1708 #if 0 |
1502 icoImg.save(baselineFileName); |
1709 icoImg.save(baselineFileName); |
1503 #else |
1710 #else |
1504 QImage baseImg; |
1711 QImage baseImg; |
1505 QVERIFY(baseImg.load(baselineFileName)); |
1712 QVERIFY(baseImg.load(baselineFileName)); |
|
1713 baseImg = baseImg.convertToFormat(QImage::Format_ARGB32_Premultiplied); |
|
1714 QCOMPARE(int(baseImg.format()), int(icoImg.format())); |
1506 QCOMPARE(baseImg, icoImg); |
1715 QCOMPARE(baseImg, icoImg); |
1507 #endif |
1716 #endif |
|
1717 } else { |
|
1718 ++loadFailCount; |
|
1719 if (enteredCount != loadFailCount) { |
|
1720 QFAIL("Plugin is built, but some did not load properly"); |
|
1721 } else { |
|
1722 qWarning("loading failed, check if ico plugin is built"); |
|
1723 } |
1508 } |
1724 } |
1509 } |
1725 } |
1510 |
1726 |
1511 |
1727 |
1512 void tst_QImageReader::testIgnoresFormatAndExtension_data() |
1728 void tst_QImageReader::testIgnoresFormatAndExtension_data() |