112 void readFromDevice(); |
112 void readFromDevice(); |
113 |
113 |
114 void readFromFileAfterJunk_data(); |
114 void readFromFileAfterJunk_data(); |
115 void readFromFileAfterJunk(); |
115 void readFromFileAfterJunk(); |
116 |
116 |
|
117 void devicePosition_data(); |
|
118 void devicePosition(); |
|
119 |
117 void setBackgroundColor_data(); |
120 void setBackgroundColor_data(); |
118 void setBackgroundColor(); |
121 void setBackgroundColor(); |
119 |
122 |
120 void supportsAnimation_data(); |
123 void supportsAnimation_data(); |
121 void supportsAnimation(); |
124 void supportsAnimation(); |
242 QTest::newRow("GIF: trolltech") << QString("trolltech.gif") << true << QByteArray("gif"); |
245 QTest::newRow("GIF: trolltech") << QString("trolltech.gif") << true << QByteArray("gif"); |
243 #endif |
246 #endif |
244 #if defined QTEST_HAVE_MNG |
247 #if defined QTEST_HAVE_MNG |
245 QTest::newRow("MNG: ball") << QString("ball.mng") << true << QByteArray("mng"); |
248 QTest::newRow("MNG: ball") << QString("ball.mng") << true << QByteArray("mng"); |
246 QTest::newRow("MNG: fire") << QString("fire.mng") << true << QByteArray("mng"); |
249 QTest::newRow("MNG: fire") << QString("fire.mng") << true << QByteArray("mng"); |
|
250 #endif |
|
251 #if defined QTEST_HAVE_SVG |
|
252 QTest::newRow("SVG: rect") << QString("rect.svg") << true << QByteArray("svg"); |
|
253 QTest::newRow("SVGZ: rect") << QString("rect.svgz") << true << QByteArray("svgz"); |
247 #endif |
254 #endif |
248 } |
255 } |
249 |
256 |
250 void tst_QImageReader::readImage() |
257 void tst_QImageReader::readImage() |
251 { |
258 { |
340 #endif // QTEST_HAVE_GIF |
346 #endif // QTEST_HAVE_GIF |
341 #ifdef QTEST_HAVE_MNG |
347 #ifdef QTEST_HAVE_MNG |
342 QTest::newRow("MNG: ball") << "ball" << QSize(200, 200) << QByteArray("mng"); |
348 QTest::newRow("MNG: ball") << "ball" << QSize(200, 200) << QByteArray("mng"); |
343 QTest::newRow("MNG: fire") << "fire" << QSize(200, 200) << QByteArray("mng"); |
349 QTest::newRow("MNG: fire") << "fire" << QSize(200, 200) << QByteArray("mng"); |
344 #endif // QTEST_HAVE_MNG |
350 #endif // QTEST_HAVE_MNG |
|
351 #if defined QTEST_HAVE_SVG |
|
352 QTest::newRow("SVG: rect") << "rect" << QSize(200, 200) << QByteArray("svg"); |
|
353 QTest::newRow("SVGZ: rect") << "rect" << QSize(200, 200) << QByteArray("svgz"); |
|
354 #endif |
345 } |
355 } |
346 |
356 |
347 void tst_QImageReader::setScaledSize() |
357 void tst_QImageReader::setScaledSize() |
348 { |
358 { |
349 QFETCH(QString, fileName); |
359 QFETCH(QString, fileName); |
407 #endif // QTEST_HAVE_GIF |
417 #endif // QTEST_HAVE_GIF |
408 #ifdef QTEST_HAVE_MNG |
418 #ifdef QTEST_HAVE_MNG |
409 QTest::newRow("MNG: ball") << "ball" << QRect(0, 0, 50, 50) << QByteArray("mng"); |
419 QTest::newRow("MNG: ball") << "ball" << QRect(0, 0, 50, 50) << QByteArray("mng"); |
410 QTest::newRow("MNG: fire") << "fire" << QRect(0, 0, 50, 50) << QByteArray("mng"); |
420 QTest::newRow("MNG: fire") << "fire" << QRect(0, 0, 50, 50) << QByteArray("mng"); |
411 #endif // QTEST_HAVE_MNG |
421 #endif // QTEST_HAVE_MNG |
|
422 #if defined QTEST_HAVE_SVG |
|
423 QTest::newRow("SVG: rect") << "rect" << QRect(0, 0, 50, 50) << QByteArray("svg"); |
|
424 QTest::newRow("SVGZ: rect") << "rect" << QRect(0, 0, 50, 50) << QByteArray("svgz"); |
|
425 #endif |
412 } |
426 } |
413 |
427 |
414 void tst_QImageReader::setClipRect() |
428 void tst_QImageReader::setClipRect() |
415 { |
429 { |
416 QFETCH(QString, fileName); |
430 QFETCH(QString, fileName); |
454 #endif // QTEST_HAVE_GIF |
468 #endif // QTEST_HAVE_GIF |
455 #ifdef QTEST_HAVE_MNG |
469 #ifdef QTEST_HAVE_MNG |
456 QTest::newRow("MNG: ball") << "ball" << QRect(0, 0, 50, 50) << QByteArray("mng"); |
470 QTest::newRow("MNG: ball") << "ball" << QRect(0, 0, 50, 50) << QByteArray("mng"); |
457 QTest::newRow("MNG: fire") << "fire" << QRect(0, 0, 50, 50) << QByteArray("mng"); |
471 QTest::newRow("MNG: fire") << "fire" << QRect(0, 0, 50, 50) << QByteArray("mng"); |
458 #endif // QTEST_HAVE_MNG |
472 #endif // QTEST_HAVE_MNG |
|
473 #if defined QTEST_HAVE_SVG |
|
474 QTest::newRow("SVG: rect") << "rect" << QRect(0, 0, 50, 50) << QByteArray("svg"); |
|
475 QTest::newRow("SVGZ: rect") << "rect" << QRect(0, 0, 50, 50) << QByteArray("svgz"); |
|
476 #endif |
459 } |
477 } |
460 |
478 |
461 void tst_QImageReader::setScaledClipRect() |
479 void tst_QImageReader::setScaledClipRect() |
462 { |
480 { |
463 QFETCH(QString, fileName); |
481 QFETCH(QString, fileName); |
507 QTest::newRow("bmp-2") << QString("font.bmp") << QByteArray("bmp") << QImage::Format_Indexed8; |
525 QTest::newRow("bmp-2") << QString("font.bmp") << QByteArray("bmp") << QImage::Format_Indexed8; |
508 QTest::newRow("png") << QString("kollada.png") << QByteArray("png") << QImage::Format_ARGB32; |
526 QTest::newRow("png") << QString("kollada.png") << QByteArray("png") << QImage::Format_ARGB32; |
509 QTest::newRow("png-2") << QString("YCbCr_cmyk.png") << QByteArray("png") << QImage::Format_RGB32; |
527 QTest::newRow("png-2") << QString("YCbCr_cmyk.png") << QByteArray("png") << QImage::Format_RGB32; |
510 QTest::newRow("mng-1") << QString("ball.mng") << QByteArray("mng") << QImage::Format_Invalid; |
528 QTest::newRow("mng-1") << QString("ball.mng") << QByteArray("mng") << QImage::Format_Invalid; |
511 QTest::newRow("mng-2") << QString("fire.mng") << QByteArray("mng") << QImage::Format_Invalid; |
529 QTest::newRow("mng-2") << QString("fire.mng") << QByteArray("mng") << QImage::Format_Invalid; |
|
530 QTest::newRow("svg") << QString("rect.svg") << QByteArray("svg") << QImage::Format_ARGB32_Premultiplied; |
|
531 QTest::newRow("svgz") << QString("rect.svgz") << QByteArray("svgz") << QImage::Format_ARGB32_Premultiplied; |
512 } |
532 } |
513 |
533 |
514 void tst_QImageReader::imageFormat() |
534 void tst_QImageReader::imageFormat() |
515 { |
535 { |
516 QFETCH(QString, fileName); |
536 QFETCH(QString, fileName); |
528 #endif // !QTEST_HAVE_GIF |
548 #endif // !QTEST_HAVE_GIF |
529 if (QByteArray("mng") == format) |
549 if (QByteArray("mng") == format) |
530 #ifndef QTEST_HAVE_MNG |
550 #ifndef QTEST_HAVE_MNG |
531 return; |
551 return; |
532 #endif // !QTEST_HAVE_MNG |
552 #endif // !QTEST_HAVE_MNG |
|
553 if (QByteArray("svg") == format || QByteArray("svgz") == format) |
|
554 #ifndef QTEST_HAVE_SVG |
|
555 return; |
|
556 #endif // !QTEST_HAVE_SVG |
533 QSKIP(("Qt does not support the " + format + " format.").constData(), SkipSingle); |
557 QSKIP(("Qt does not support the " + format + " format.").constData(), SkipSingle); |
534 } else { |
558 } else { |
535 QCOMPARE(QImageReader::imageFormat(prefix + fileName), format); |
559 QCOMPARE(QImageReader::imageFormat(prefix + fileName), format); |
536 } |
560 } |
537 QImageReader reader(prefix + fileName); |
561 QImageReader reader(prefix + fileName); |
602 #endif |
626 #endif |
603 #if defined QTEST_HAVE_MNG |
627 #if defined QTEST_HAVE_MNG |
604 QTest::newRow("MNG: ball") << QString("ball.mng") << QColor(Qt::yellow); |
628 QTest::newRow("MNG: ball") << QString("ball.mng") << QColor(Qt::yellow); |
605 QTest::newRow("MNG: fire") << QString("fire.mng") << QColor(Qt::gray); |
629 QTest::newRow("MNG: fire") << QString("fire.mng") << QColor(Qt::gray); |
606 #endif |
630 #endif |
|
631 #if defined QTEST_HAVE_SVG |
|
632 QTest::newRow("SVG: rect") << QString("rect.svg") << QColor(Qt::darkGreen); |
|
633 QTest::newRow("SVGZ: rect") << QString("rect.svgz") << QColor(Qt::darkGreen); |
|
634 #endif |
607 } |
635 } |
608 |
636 |
609 void tst_QImageReader::setBackgroundColor() |
637 void tst_QImageReader::setBackgroundColor() |
610 { |
638 { |
611 QFETCH(QString, fileName); |
639 QFETCH(QString, fileName); |
638 QTest::newRow("GIF: trolltech") << QString("trolltech.gif") << true; |
666 QTest::newRow("GIF: trolltech") << QString("trolltech.gif") << true; |
639 #endif |
667 #endif |
640 #if defined QTEST_HAVE_MNG |
668 #if defined QTEST_HAVE_MNG |
641 QTest::newRow("MNG: ball") << QString("ball.mng") << true; |
669 QTest::newRow("MNG: ball") << QString("ball.mng") << true; |
642 QTest::newRow("MNG: fire") << QString("fire.mng") << true; |
670 QTest::newRow("MNG: fire") << QString("fire.mng") << true; |
|
671 #endif |
|
672 #if defined QTEST_HAVE_SVG |
|
673 QTest::newRow("SVG: rect") << QString("rect.svg") << false; |
|
674 QTest::newRow("SVGZ: rect") << QString("rect.svgz") << false; |
643 #endif |
675 #endif |
644 } |
676 } |
645 |
677 |
646 void tst_QImageReader::supportsAnimation() |
678 void tst_QImageReader::supportsAnimation() |
647 { |
679 { |
977 QTest::newRow("png") << QString("kollada.png") << QByteArray("png"); |
1009 QTest::newRow("png") << QString("kollada.png") << QByteArray("png"); |
978 #ifdef QTEST_HAVE_MNG |
1010 #ifdef QTEST_HAVE_MNG |
979 QTest::newRow("mng-1") << QString("ball.mng") << QByteArray("mng"); |
1011 QTest::newRow("mng-1") << QString("ball.mng") << QByteArray("mng"); |
980 QTest::newRow("mng-2") << QString("fire.mng") << QByteArray("mng"); |
1012 QTest::newRow("mng-2") << QString("fire.mng") << QByteArray("mng"); |
981 #endif // QTEST_HAVE_MNG |
1013 #endif // QTEST_HAVE_MNG |
|
1014 #if defined QTEST_HAVE_SVG |
|
1015 QTest::newRow("svg") << QString("rect.svg") << QByteArray("svg"); |
|
1016 QTest::newRow("svgz") << QString("rect.svgz") << QByteArray("svgz"); |
|
1017 #endif |
982 } |
1018 } |
983 |
1019 |
984 void tst_QImageReader::readFromDevice() |
1020 void tst_QImageReader::readFromDevice() |
985 { |
1021 { |
986 QFETCH(QString, fileName); |
1022 QFETCH(QString, fileName); |
1057 QTest::newRow("bmp-1") << QString("colorful.bmp") << QByteArray("bmp"); |
1093 QTest::newRow("bmp-1") << QString("colorful.bmp") << QByteArray("bmp"); |
1058 QTest::newRow("bmp-2") << QString("font.bmp") << QByteArray("bmp"); |
1094 QTest::newRow("bmp-2") << QString("font.bmp") << QByteArray("bmp"); |
1059 QTest::newRow("png") << QString("kollada.png") << QByteArray("png"); |
1095 QTest::newRow("png") << QString("kollada.png") << QByteArray("png"); |
1060 // QTest::newRow("mng-1") << QString("images/ball.mng") << QByteArray("mng"); |
1096 // QTest::newRow("mng-1") << QString("images/ball.mng") << QByteArray("mng"); |
1061 // QTest::newRow("mng-2") << QString("images/fire.mng") << QByteArray("mng"); |
1097 // QTest::newRow("mng-2") << QString("images/fire.mng") << QByteArray("mng"); |
|
1098 #if defined QTEST_HAVE_SVG |
|
1099 QTest::newRow("svg") << QString("rect.svg") << QByteArray("svg"); |
|
1100 QTest::newRow("svgz") << QString("rect.svgz") << QByteArray("svgz"); |
|
1101 #endif |
1062 } |
1102 } |
1063 |
1103 |
1064 void tst_QImageReader::readFromFileAfterJunk() |
1104 void tst_QImageReader::readFromFileAfterJunk() |
1065 { |
1105 { |
1066 QFETCH(QString, fileName); |
1106 QFETCH(QString, fileName); |
1078 QFile imageFile(prefix + fileName); |
1118 QFile imageFile(prefix + fileName); |
1079 QVERIFY(imageFile.open(QFile::ReadOnly)); |
1119 QVERIFY(imageFile.open(QFile::ReadOnly)); |
1080 QByteArray imageData = imageFile.readAll(); |
1120 QByteArray imageData = imageFile.readAll(); |
1081 QVERIFY(!imageData.isNull()); |
1121 QVERIFY(!imageData.isNull()); |
1082 |
1122 |
1083 int iterations = 10; |
1123 int iterations = 3; |
1084 if (format == "ppm" || format == "pbm" || format == "pgm") |
1124 if (format == "ppm" || format == "pbm" || format == "pgm" || format == "svg" || format == "svgz") |
1085 iterations = 1; |
1125 iterations = 1; |
1086 |
1126 |
1087 if (format == "mng" || !QImageWriter::supportedImageFormats().contains(format)) { |
1127 if (format == "mng" || !QImageWriter::supportedImageFormats().contains(format)) { |
1088 for (int i = 0; i < iterations; ++i) { |
1128 for (int i = 0; i < iterations; ++i) { |
1089 junkFile.write("deadbeef", 9); |
1129 junkFile.write("deadbeef", 9); |
1107 QImageReader reader(&junkFile); |
1147 QImageReader reader(&junkFile); |
1108 QVERIFY(reader.canRead()); |
1148 QVERIFY(reader.canRead()); |
1109 QVERIFY(!reader.read().isNull()); |
1149 QVERIFY(!reader.read().isNull()); |
1110 } |
1150 } |
1111 } |
1151 } |
|
1152 |
|
1153 void tst_QImageReader::devicePosition_data() |
|
1154 { |
|
1155 QTest::addColumn<QString>("fileName"); |
|
1156 QTest::addColumn<QByteArray>("format"); |
|
1157 |
|
1158 QTest::newRow("pbm") << QString("image.pbm") << QByteArray("pbm"); |
|
1159 QTest::newRow("pgm") << QString("image.pgm") << QByteArray("pgm"); |
|
1160 QTest::newRow("ppm-1") << QString("image.ppm") << QByteArray("ppm"); |
|
1161 #ifdef QTEST_HAVE_JPEG |
|
1162 QTest::newRow("jpeg-1") << QString("beavis.jpg") << QByteArray("jpeg"); |
|
1163 QTest::newRow("jpeg-2") << QString("YCbCr_cmyk.jpg") << QByteArray("jpeg"); |
|
1164 QTest::newRow("jpeg-3") << QString("YCbCr_rgb.jpg") << QByteArray("jpeg"); |
|
1165 #endif |
|
1166 #if defined QTEST_HAVE_GIF |
|
1167 QTest::newRow("gif-1") << QString("earth.gif") << QByteArray("gif"); |
|
1168 #endif |
|
1169 QTest::newRow("xbm") << QString("gnus.xbm") << QByteArray("xbm"); |
|
1170 QTest::newRow("xpm") << QString("marble.xpm") << QByteArray("xpm"); |
|
1171 QTest::newRow("bmp-1") << QString("colorful.bmp") << QByteArray("bmp"); |
|
1172 QTest::newRow("bmp-2") << QString("font.bmp") << QByteArray("bmp"); |
|
1173 QTest::newRow("png") << QString("kollada.png") << QByteArray("png"); |
|
1174 // QTest::newRow("mng-1") << QString("images/ball.mng") << QByteArray("mng"); |
|
1175 // QTest::newRow("mng-2") << QString("images/fire.mng") << QByteArray("mng"); |
|
1176 #if defined QTEST_HAVE_SVG |
|
1177 QTest::newRow("svg") << QString("rect.svg") << QByteArray("svg"); |
|
1178 QTest::newRow("svgz") << QString("rect.svgz") << QByteArray("svgz"); |
|
1179 #endif |
|
1180 } |
|
1181 |
|
1182 void tst_QImageReader::devicePosition() |
|
1183 { |
|
1184 QFETCH(QString, fileName); |
|
1185 QFETCH(QByteArray, format); |
|
1186 |
|
1187 QImage expected(prefix + fileName); |
|
1188 QVERIFY(!expected.isNull()); |
|
1189 |
|
1190 QFile imageFile(prefix + fileName); |
|
1191 QVERIFY(imageFile.open(QFile::ReadOnly)); |
|
1192 QByteArray imageData = imageFile.readAll(); |
|
1193 QVERIFY(!imageData.isNull()); |
|
1194 int imageDataSize = imageData.size(); |
|
1195 |
|
1196 const char *preStr = "prebeef\n"; |
|
1197 int preLen = qstrlen(preStr); |
|
1198 imageData.prepend(preStr); |
|
1199 if (format != "svg" && format != "svgz") // Doesn't handle trailing data |
|
1200 imageData.append("\npostbeef"); |
|
1201 QBuffer buf(&imageData); |
|
1202 buf.open(QIODevice::ReadOnly); |
|
1203 buf.seek(preLen); |
|
1204 QImageReader reader(&buf, format); |
|
1205 QCOMPARE(expected, reader.read()); |
|
1206 if (format != "ppm" && format != "gif") // Known not to work |
|
1207 QCOMPARE(buf.pos(), qint64(preLen+imageDataSize)); |
|
1208 } |
|
1209 |
1112 |
1210 |
1113 void tst_QImageReader::description_data() |
1211 void tst_QImageReader::description_data() |
1114 { |
1212 { |
1115 QTest::addColumn<QString>("fileName"); |
1213 QTest::addColumn<QString>("fileName"); |
1116 QTest::addColumn<QStringMap>("description"); |
1214 QTest::addColumn<QStringMap>("description"); |
1229 QTest::newRow("fire.mng") << QString("fire.mng") |
1327 QTest::newRow("fire.mng") << QString("fire.mng") |
1230 << QByteArray("mng") << QSize(30, 60) |
1328 << QByteArray("mng") << QSize(30, 60) |
1231 << QString(""); |
1329 << QString(""); |
1232 QTest::newRow("ball.mng") << QString("ball.mng") |
1330 QTest::newRow("ball.mng") << QString("ball.mng") |
1233 << QByteArray("mng") << QSize(32, 32) |
1331 << QByteArray("mng") << QSize(32, 32) |
|
1332 << QString(""); |
|
1333 #endif |
|
1334 #ifdef QTEST_HAVE_SVG |
|
1335 QTest::newRow("rect.svg") << QString("rect.svg") |
|
1336 << QByteArray("svg") << QSize(105, 137) |
|
1337 << QString(""); |
|
1338 QTest::newRow("rect.svgz") << QString("rect.svgz") |
|
1339 << QByteArray("svgz") << QSize(105, 137) |
|
1340 << QString(""); |
|
1341 QTest::newRow("corrupt.svg") << QString("corrupt.svg") |
|
1342 << QByteArray("svg") << QSize(0, 0) |
|
1343 << QString(""); |
|
1344 QTest::newRow("corrupt.svgz") << QString("corrupt.svgz") |
|
1345 << QByteArray("svgz") << QSize(0, 0) |
1234 << QString(""); |
1346 << QString(""); |
1235 #endif |
1347 #endif |
1236 QTest::newRow("image.pbm") << QString("image.pbm") |
1348 QTest::newRow("image.pbm") << QString("image.pbm") |
1237 << QByteArray("pbm") << QSize(16, 6) |
1349 << QByteArray("pbm") << QSize(16, 6) |
1238 << QString(""); |
1350 << QString(""); |
1403 << QString("QImage: XPM pixels missing on image line 3"); |
1515 << QString("QImage: XPM pixels missing on image line 3"); |
1404 QTest::newRow("corrupt xbm") << QString("corrupt.xbm") << false << QString(""); |
1516 QTest::newRow("corrupt xbm") << QString("corrupt.xbm") << false << QString(""); |
1405 #if defined QTEST_HAVE_TIFF |
1517 #if defined QTEST_HAVE_TIFF |
1406 QTest::newRow("corrupt tiff") << QString("corrupt-data.tif") << true << QString(""); |
1518 QTest::newRow("corrupt tiff") << QString("corrupt-data.tif") << true << QString(""); |
1407 #endif |
1519 #endif |
|
1520 #if defined QTEST_HAVE_SVG |
|
1521 QTest::newRow("corrupt svg") << QString("corrupt.svg") << true << QString(""); |
|
1522 QTest::newRow("corrupt svgz") << QString("corrupt.svgz") << true << QString(""); |
|
1523 #endif |
1408 } |
1524 } |
1409 |
1525 |
1410 void tst_QImageReader::readCorruptImage() |
1526 void tst_QImageReader::readCorruptImage() |
1411 { |
1527 { |
1412 QFETCH(QString, fileName); |
1528 QFETCH(QString, fileName); |