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 void gifImageCount(); |
|
145 void gifLoopCount(); |
145 #endif |
146 #endif |
146 |
147 |
147 void readCorruptImage_data(); |
148 void readCorruptImage_data(); |
148 void readCorruptImage(); |
149 void readCorruptImage(); |
149 void readCorruptBmp(); |
150 void readCorruptBmp(); |
763 QImage whiteFrame = io.read(); |
764 QImage whiteFrame = io.read(); |
764 |
765 |
765 QVERIFY(io.canRead()); |
766 QVERIFY(io.canRead()); |
766 QImage greenFrame = io.read(); |
767 QImage greenFrame = io.read(); |
767 |
768 |
|
769 QVERIFY(io.imageCount() == 4); |
|
770 |
768 QVERIFY(io.canRead()); |
771 QVERIFY(io.canRead()); |
769 QImage blueFrame = io.read(); |
772 QImage blueFrame = io.read(); |
770 |
773 |
771 QVERIFY(!io.canRead()); |
774 QVERIFY(!io.canRead()); |
772 QImage emptyFrame = io.read(); |
775 QImage emptyFrame = io.read(); |
874 |
877 |
875 QCOMPARE(blueFrame.pixel(0,0), qRgb(0x0, 0x0, 0xff)); |
878 QCOMPARE(blueFrame.pixel(0,0), qRgb(0x0, 0x0, 0xff)); |
876 QCOMPARE(blueFrame.size(), QSize(64,64)); |
879 QCOMPARE(blueFrame.size(), QSize(64,64)); |
877 QVERIFY(emptyFrame.isNull()); |
880 QVERIFY(emptyFrame.isNull()); |
878 } |
881 } |
879 } |
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 |
880 #endif |
901 #endif |
881 |
902 |
882 class Server : public QObject |
903 class Server : public QObject |
883 { |
904 { |
884 Q_OBJECT |
905 Q_OBJECT |
1610 QVERIFY(reader.read().isNull()); |
1631 QVERIFY(reader.read().isNull()); |
1611 reader.setAutoDetectImageFormat(true); |
1632 reader.setAutoDetectImageFormat(true); |
1612 QVERIFY(reader.canRead()); |
1633 QVERIFY(reader.canRead()); |
1613 QVERIFY(!reader.read().isNull()); |
1634 QVERIFY(!reader.read().isNull()); |
1614 } |
1635 } |
|
1636 |
|
1637 #ifdef QTEST_HAVE_JPEG |
|
1638 { |
|
1639 QImageReader io(prefix + "YCbCr_rgb.jpg"); |
|
1640 io.setAutoDetectImageFormat(false); |
|
1641 // This should fail since no format string is given |
|
1642 QImage image; |
|
1643 QVERIFY(!io.read(&image)); |
|
1644 } |
|
1645 { |
|
1646 QImageReader io(prefix + "YCbCr_rgb.jpg", "jpg"); |
|
1647 io.setAutoDetectImageFormat(false); |
|
1648 QImage image; |
|
1649 QVERIFY(io.read(&image)); |
|
1650 } |
|
1651 #endif |
|
1652 { |
|
1653 QImageReader io(prefix + "tst7.png"); |
|
1654 io.setAutoDetectImageFormat(false); |
|
1655 // This should fail since no format string is given |
|
1656 QImage image; |
|
1657 QVERIFY(!io.read(&image)); |
|
1658 } |
|
1659 { |
|
1660 QImageReader io(prefix + "tst7.png", "png"); |
|
1661 io.setAutoDetectImageFormat(false); |
|
1662 QImage image; |
|
1663 QVERIFY(io.read(&image)); |
|
1664 } |
1615 } |
1665 } |
1616 |
1666 |
1617 void tst_QImageReader::fileNameProbing() |
1667 void tst_QImageReader::fileNameProbing() |
1618 { |
1668 { |
1619 QString name("doesnotexist.png"); |
1669 QString name("doesnotexist.png"); |
1639 |
1689 |
1640 void tst_QImageReader::pixelCompareWithBaseline() |
1690 void tst_QImageReader::pixelCompareWithBaseline() |
1641 { |
1691 { |
1642 QFETCH(QString, fileName); |
1692 QFETCH(QString, fileName); |
1643 |
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. |
1644 QImage icoImg; |
1699 QImage icoImg; |
1645 const QString inputFileName(QString::fromAscii("images/%1").arg(fileName)); |
1700 const QString inputFileName(QString::fromAscii("images/%1").arg(fileName)); |
1646 QFileInfo fi(inputFileName); |
1701 QFileInfo fi(inputFileName); |
1647 |
1702 |
|
1703 ++enteredCount; |
1648 // might fail if the plugin does not exist, which is ok. |
1704 // might fail if the plugin does not exist, which is ok. |
1649 if (icoImg.load(inputFileName)) { |
1705 if (icoImg.load(inputFileName)) { |
1650 icoImg = icoImg.convertToFormat(QImage::Format_ARGB32_Premultiplied); |
1706 icoImg = icoImg.convertToFormat(QImage::Format_ARGB32_Premultiplied); |
1651 const QString baselineFileName(QString::fromAscii("baseline/%1.png").arg(fi.baseName())); |
1707 const QString baselineFileName(QString::fromAscii("baseline/%1.png").arg(fi.baseName())); |
1652 #if 0 |
1708 #if 0 |
1656 QVERIFY(baseImg.load(baselineFileName)); |
1712 QVERIFY(baseImg.load(baselineFileName)); |
1657 baseImg = baseImg.convertToFormat(QImage::Format_ARGB32_Premultiplied); |
1713 baseImg = baseImg.convertToFormat(QImage::Format_ARGB32_Premultiplied); |
1658 QCOMPARE(int(baseImg.format()), int(icoImg.format())); |
1714 QCOMPARE(int(baseImg.format()), int(icoImg.format())); |
1659 QCOMPARE(baseImg, icoImg); |
1715 QCOMPARE(baseImg, icoImg); |
1660 #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 } |
1661 } |
1724 } |
1662 } |
1725 } |
1663 |
1726 |
1664 |
1727 |
1665 void tst_QImageReader::testIgnoresFormatAndExtension_data() |
1728 void tst_QImageReader::testIgnoresFormatAndExtension_data() |