mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
dcc2d8f492
--HG-- rename : toolkit/components/downloads/test/downloads.empty.sqlite => browser/components/privatebrowsing/test/unit/downloads.empty.sqlite rename : dom/src/json/test/fail1.json => dom/src/json/test/unit/fail1.json rename : dom/src/json/test/fail10.json => dom/src/json/test/unit/fail10.json rename : dom/src/json/test/fail11.json => dom/src/json/test/unit/fail11.json rename : dom/src/json/test/fail12.json => dom/src/json/test/unit/fail12.json rename : dom/src/json/test/fail13.json => dom/src/json/test/unit/fail13.json rename : dom/src/json/test/fail14.json => dom/src/json/test/unit/fail14.json rename : dom/src/json/test/fail15.json => dom/src/json/test/unit/fail15.json rename : dom/src/json/test/fail16.json => dom/src/json/test/unit/fail16.json rename : dom/src/json/test/fail17.json => dom/src/json/test/unit/fail17.json rename : dom/src/json/test/fail18.json => dom/src/json/test/unit/fail18.json rename : dom/src/json/test/fail19.json => dom/src/json/test/unit/fail19.json rename : dom/src/json/test/fail2.json => dom/src/json/test/unit/fail2.json rename : dom/src/json/test/fail20.json => dom/src/json/test/unit/fail20.json rename : dom/src/json/test/fail21.json => dom/src/json/test/unit/fail21.json rename : dom/src/json/test/fail22.json => dom/src/json/test/unit/fail22.json rename : dom/src/json/test/fail23.json => dom/src/json/test/unit/fail23.json rename : dom/src/json/test/fail24.json => dom/src/json/test/unit/fail24.json rename : dom/src/json/test/fail25.json => dom/src/json/test/unit/fail25.json rename : dom/src/json/test/fail26.json => dom/src/json/test/unit/fail26.json rename : dom/src/json/test/fail27.json => dom/src/json/test/unit/fail27.json rename : dom/src/json/test/fail28.json => dom/src/json/test/unit/fail28.json rename : dom/src/json/test/fail29.json => dom/src/json/test/unit/fail29.json rename : dom/src/json/test/fail3.json => dom/src/json/test/unit/fail3.json rename : dom/src/json/test/fail30.json => dom/src/json/test/unit/fail30.json rename : dom/src/json/test/fail31.json => dom/src/json/test/unit/fail31.json rename : dom/src/json/test/fail32.json => dom/src/json/test/unit/fail32.json rename : dom/src/json/test/fail33.json => dom/src/json/test/unit/fail33.json rename : dom/src/json/test/fail34.json => dom/src/json/test/unit/fail34.json rename : dom/src/json/test/fail4.json => dom/src/json/test/unit/fail4.json rename : dom/src/json/test/fail5.json => dom/src/json/test/unit/fail5.json rename : dom/src/json/test/fail6.json => dom/src/json/test/unit/fail6.json rename : dom/src/json/test/fail7.json => dom/src/json/test/unit/fail7.json rename : dom/src/json/test/fail8.json => dom/src/json/test/unit/fail8.json rename : dom/src/json/test/fail9.json => dom/src/json/test/unit/fail9.json rename : dom/src/json/test/json2.js => dom/src/json/test/unit/json2.js rename : dom/src/json/test/pass1.json => dom/src/json/test/unit/pass1.json rename : dom/src/json/test/pass3.json => dom/src/json/test/unit/pass3.json rename : testing/xpcshell/example/location_load.js => testing/xpcshell/example/unit/location_load.js rename : toolkit/components/commandlines/test/unit/unix/test_bug410156.js => toolkit/components/commandlines/test/unit_unix/test_bug410156.js rename : toolkit/components/commandlines/test/unit/win/test_bug410156.js => toolkit/components/commandlines/test/unit_win/test_bug410156.js rename : toolkit/mozapps/extensions/test/unit/addons/test_bug257155/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug257155/install.rdf rename : toolkit/mozapps/extensions/test/unit/addons/test_bug299716_2/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug299716_2/install.rdf rename : toolkit/mozapps/extensions/test/unit/addons/test_bug299716_a_1/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug299716_a_1/install.rdf rename : toolkit/mozapps/extensions/test/unit/addons/test_bug299716_a_2/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug299716_a_2/install.rdf rename : toolkit/mozapps/extensions/test/unit/addons/test_bug299716_b_1/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug299716_b_1/install.rdf rename : toolkit/mozapps/extensions/test/unit/addons/test_bug299716_b_2/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug299716_b_2/install.rdf rename : toolkit/mozapps/extensions/test/unit/addons/test_bug299716_c_1/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug299716_c_1/install.rdf rename : toolkit/mozapps/extensions/test/unit/addons/test_bug299716_c_2/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug299716_c_2/install.rdf rename : toolkit/mozapps/extensions/test/unit/addons/test_bug299716_d_1/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug299716_d_1/install.rdf rename : toolkit/mozapps/extensions/test/unit/addons/test_bug299716_d_2/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug299716_d_2/install.rdf rename : toolkit/mozapps/extensions/test/unit/addons/test_bug299716_e_1/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug299716_e_1/install.rdf rename : toolkit/mozapps/extensions/test/unit/addons/test_bug299716_e_2/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug299716_e_2/install.rdf rename : toolkit/mozapps/extensions/test/unit/addons/test_bug299716_f_1/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug299716_f_1/install.rdf rename : toolkit/mozapps/extensions/test/unit/addons/test_bug299716_f_2/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug299716_f_2/install.rdf rename : toolkit/mozapps/extensions/test/unit/addons/test_bug299716_g_1/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug299716_g_1/install.rdf rename : toolkit/mozapps/extensions/test/unit/addons/test_bug299716_g_2/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug299716_g_2/install.rdf rename : toolkit/mozapps/extensions/test/unit/addons/test_bug324121_1/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug324121_1/install.rdf rename : toolkit/mozapps/extensions/test/unit/addons/test_bug324121_2/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug324121_2/install.rdf rename : toolkit/mozapps/extensions/test/unit/addons/test_bug324121_3/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug324121_3/install.rdf rename : toolkit/mozapps/extensions/test/unit/addons/test_bug324121_4/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug324121_4/install.rdf rename : toolkit/mozapps/extensions/test/unit/addons/test_bug324121_5/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug324121_5/install.rdf rename : toolkit/mozapps/extensions/test/unit/addons/test_bug324121_6/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug324121_6/install.rdf rename : toolkit/mozapps/extensions/test/unit/addons/test_bug324121_7/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug324121_7/install.rdf rename : toolkit/mozapps/extensions/test/unit/addons/test_bug324121_8/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug324121_8/install.rdf rename : toolkit/mozapps/extensions/test/unit/addons/test_bug324121_9/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug324121_9/install.rdf rename : toolkit/mozapps/extensions/test/unit/addons/test_bug335238_1/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug335238_1/install.rdf rename : toolkit/mozapps/extensions/test/unit/addons/test_bug335238_2/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug335238_2/install.rdf rename : toolkit/mozapps/extensions/test/unit/addons/test_bug378216_1/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug378216_1/install.rdf rename : toolkit/mozapps/extensions/test/unit/addons/test_bug378216_10/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug378216_10/install.rdf rename : toolkit/mozapps/extensions/test/unit/addons/test_bug378216_11/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug378216_11/install.rdf rename : toolkit/mozapps/extensions/test/unit/addons/test_bug378216_12/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug378216_12/install.rdf rename : toolkit/mozapps/extensions/test/unit/addons/test_bug378216_13/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug378216_13/install.rdf rename : toolkit/mozapps/extensions/test/unit/addons/test_bug378216_2/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug378216_2/install.rdf rename : toolkit/mozapps/extensions/test/unit/addons/test_bug378216_3/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug378216_3/install.rdf rename : toolkit/mozapps/extensions/test/unit/addons/test_bug378216_4/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug378216_4/install.rdf rename : toolkit/mozapps/extensions/test/unit/addons/test_bug378216_5/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug378216_5/install.rdf rename : toolkit/mozapps/extensions/test/unit/addons/test_bug378216_6/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug378216_6/install.rdf rename : toolkit/mozapps/extensions/test/unit/addons/test_bug378216_7/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug378216_7/install.rdf rename : toolkit/mozapps/extensions/test/unit/addons/test_bug378216_8/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug378216_8/install.rdf rename : toolkit/mozapps/extensions/test/unit/addons/test_bug378216_9/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug378216_9/install.rdf rename : toolkit/mozapps/extensions/test/unit/addons/test_bug394300_1/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug394300_1/install.rdf rename : toolkit/mozapps/extensions/test/unit/addons/test_bug394300_2/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug394300_2/install.rdf rename : toolkit/mozapps/extensions/test/unit/addons/test_bug396129_a_1/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug396129_a_1/install.rdf rename : toolkit/mozapps/extensions/test/unit/addons/test_bug396129_a_2/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug396129_a_2/install.rdf rename : toolkit/mozapps/extensions/test/unit/addons/test_bug396129_b_1/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug396129_b_1/install.rdf rename : toolkit/mozapps/extensions/test/unit/addons/test_bug396129_b_2/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug396129_b_2/install.rdf rename : toolkit/mozapps/extensions/test/unit/addons/test_bug396129_c_1/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug396129_c_1/install.rdf rename : toolkit/mozapps/extensions/test/unit/addons/test_bug396129_c_2/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug396129_c_2/install.rdf rename : toolkit/mozapps/extensions/test/unit/addons/test_bug396129_d_1/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug396129_d_1/install.rdf rename : toolkit/mozapps/extensions/test/unit/addons/test_bug396129_d_2/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug396129_d_2/install.rdf rename : toolkit/mozapps/extensions/test/unit/addons/test_bug397778/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug397778/install.rdf rename : toolkit/mozapps/extensions/test/unit/addons/test_bug425657/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug425657/install.rdf rename : toolkit/mozapps/extensions/test/unit/addons/test_bug428341_1/README => toolkit/mozapps/extensions/test/addons/test_bug428341_1/README rename : toolkit/mozapps/extensions/test/unit/addons/test_bug428341_2/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug428341_2/install.rdf rename : toolkit/mozapps/extensions/test/unit/addons/test_bug428341_3/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug428341_3/install.rdf rename : toolkit/mozapps/extensions/test/unit/addons/test_bug428341_4/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug428341_4/install.rdf rename : toolkit/mozapps/extensions/test/unit/addons/test_bug428341_5/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug428341_5/install.rdf rename : toolkit/mozapps/extensions/test/unit/addons/test_bug428341_6/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug428341_6/install.rdf rename : toolkit/mozapps/extensions/test/unit/addons/test_bug428341_7/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug428341_7/install.rdf rename : toolkit/mozapps/extensions/test/unit/addons/test_bug428341_8/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug428341_8/install.rdf rename : toolkit/mozapps/extensions/test/unit/addons/test_bug428341_9/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug428341_9/install.rdf rename : toolkit/mozapps/extensions/test/unit/addons/test_bug436207/install.js => toolkit/mozapps/extensions/test/addons/test_bug436207/install.js rename : toolkit/mozapps/extensions/test/unit/addons/test_bug463819_1/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug463819_1/install.rdf rename : toolkit/mozapps/extensions/test/unit/addons/test_bug463819_2/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug463819_2/install.rdf rename : toolkit/mozapps/extensions/test/unit/addons/test_bug463819_3/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug463819_3/install.rdf rename : toolkit/mozapps/extensions/test/unit/addons/test_bug463819_4/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug463819_4/install.rdf rename : toolkit/mozapps/extensions/test/unit/addons/test_bug463819_5/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug463819_5/install.rdf rename : toolkit/mozapps/extensions/test/unit/addons/test_bug463819_6/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug463819_6/install.rdf rename : toolkit/mozapps/extensions/test/unit/addons/test_bug463819_7/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug463819_7/install.rdf rename : toolkit/mozapps/extensions/test/unit/addons/test_bug463819_8/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug463819_8/install.rdf rename : toolkit/mozapps/extensions/test/unit/addons/test_bug463819_9/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug463819_9/install.rdf
407 lines
11 KiB
JavaScript
407 lines
11 KiB
JavaScript
/*
|
|
* Tests for imgITools
|
|
*/
|
|
|
|
const Ci = Components.interfaces;
|
|
const Cc = Components.classes;
|
|
|
|
|
|
/*
|
|
* dumpToFile()
|
|
*
|
|
* For test development, dumps the specified array to a file.
|
|
* Call |dumpToFile(outData);| in a test to file to a file.
|
|
*/
|
|
function dumpToFile(aData) {
|
|
const path = "/tmp";
|
|
|
|
var outputFile = Cc["@mozilla.org/file/local;1"].
|
|
createInstance(Ci.nsILocalFile);
|
|
outputFile.initWithPath(path);
|
|
outputFile.append("testdump.png");
|
|
|
|
var outputStream = Cc["@mozilla.org/network/file-output-stream;1"].
|
|
createInstance(Ci.nsIFileOutputStream);
|
|
// WR_ONLY|CREAT|TRUNC
|
|
outputStream.init(outputFile, 0x02 | 0x08 | 0x20, 0644, null);
|
|
|
|
var bos = Cc["@mozilla.org/binaryoutputstream;1"].
|
|
createInstance(Ci.nsIBinaryOutputStream);
|
|
bos.setOutputStream(outputStream);
|
|
|
|
bos.writeByteArray(aData, aData.length);
|
|
|
|
outputStream.close();
|
|
}
|
|
|
|
|
|
/*
|
|
* getFileInputStream()
|
|
*
|
|
* Returns an input stream for the specified file.
|
|
*/
|
|
function getFileInputStream(aFile) {
|
|
var inputStream = Cc["@mozilla.org/network/file-input-stream;1"].
|
|
createInstance(Ci.nsIFileInputStream);
|
|
// init the stream as RD_ONLY, -1 == default permissions.
|
|
inputStream.init(aFile, 0x01, -1, null);
|
|
|
|
// Blah. The image decoders use ReadSegments, which isn't implemented on
|
|
// file input streams. Use a buffered stream to make it work.
|
|
var bis = Cc["@mozilla.org/network/buffered-input-stream;1"].
|
|
createInstance(Ci.nsIBufferedInputStream);
|
|
bis.init(inputStream, 1024);
|
|
|
|
return bis;
|
|
}
|
|
|
|
|
|
/*
|
|
* streamToArray()
|
|
*
|
|
* Consumes an input stream, and returns its bytes as an array.
|
|
*/
|
|
function streamToArray(aStream) {
|
|
var size = aStream.available();
|
|
|
|
// use a binary input stream to grab the bytes.
|
|
var bis = Cc["@mozilla.org/binaryinputstream;1"].
|
|
createInstance(Ci.nsIBinaryInputStream);
|
|
bis.setInputStream(aStream);
|
|
|
|
var bytes = bis.readByteArray(size);
|
|
if (size != bytes.length)
|
|
throw "Didn't read expected number of bytes";
|
|
|
|
return bytes;
|
|
}
|
|
|
|
|
|
/*
|
|
* compareArrays
|
|
*
|
|
* Compares two arrays, and throws if there's a difference.
|
|
*/
|
|
function compareArrays(aArray1, aArray2) {
|
|
do_check_eq(aArray1.length, aArray2.length);
|
|
|
|
for (var i = 0; i < aArray1.length; i++)
|
|
if (aArray1[i] != aArray2[i])
|
|
throw "arrays differ at index " + i;
|
|
}
|
|
|
|
|
|
/*
|
|
* checkExpectedError
|
|
*
|
|
* Checks to see if a thrown error was expected or not, and if it
|
|
* matches the expected value.
|
|
*/
|
|
function checkExpectedError (aExpectedError, aActualError) {
|
|
if (aExpectedError) {
|
|
if (!aActualError)
|
|
throw "Didn't throw as expected (" + aExpectedError + ")";
|
|
|
|
if (!aExpectedError.test(aActualError))
|
|
throw "Threw (" + aActualError + "), not (" + aExpectedError;
|
|
|
|
// We got the expected error, so make a note in the test log.
|
|
dump("...that error was expected.\n\n");
|
|
} else if (aActualError) {
|
|
throw "Threw unexpected error: " + aActualError;
|
|
}
|
|
}
|
|
|
|
|
|
function run_test() {
|
|
|
|
try {
|
|
|
|
|
|
/* ========== 0 ========== */
|
|
var testnum = 0;
|
|
var testdesc = "imgITools setup";
|
|
var err = null;
|
|
|
|
var imgTools = Cc["@mozilla.org/image/tools;1"].
|
|
getService(Ci.imgITools);
|
|
|
|
if (!imgTools)
|
|
throw "Couldn't get imgITools service"
|
|
|
|
// Ugh, this is an ugly hack. The pixel values we get in Windows are sometimes
|
|
// +/- 1 value compared to other platforms, so we need to compare against a
|
|
// different set of reference images. nsIXULRuntime.OS doesn't seem to be
|
|
// available in xpcshell, so we'll use this as a kludgy way to figure out if
|
|
// we're running on Windows.
|
|
var isWindows = ("@mozilla.org/windows-registry-key;1" in Cc);
|
|
|
|
|
|
/* ========== 1 ========== */
|
|
testnum++;
|
|
testdesc = "test decoding a PNG";
|
|
|
|
// 64x64 png, 10698 bytes.
|
|
var imgName = "image1.png";
|
|
var inMimeType = "image/png";
|
|
var imgFile = do_get_file(imgName);
|
|
|
|
var istream = getFileInputStream(imgFile);
|
|
do_check_eq(istream.available(), 10698);
|
|
|
|
var outParam = { value: null };
|
|
imgTools.decodeImageData(istream, inMimeType, outParam);
|
|
var container = outParam.value;
|
|
|
|
// It's not easy to look at the pixel values from JS, so just
|
|
// check the container's size.
|
|
do_check_eq(container.width, 64);
|
|
do_check_eq(container.height, 64);
|
|
|
|
|
|
/* ========== 2 ========== */
|
|
testnum++;
|
|
testdesc = "test encoding a scaled JPEG";
|
|
|
|
// we'll reuse the container from the previous test
|
|
istream = imgTools.encodeScaledImage(container, "image/jpeg", 16, 16);
|
|
|
|
var encodedBytes = streamToArray(istream);
|
|
// Get bytes for exected result
|
|
var refName = "image1png16x16.jpg";
|
|
var refFile = do_get_file(refName);
|
|
istream = getFileInputStream(refFile);
|
|
do_check_eq(istream.available(), 1081);
|
|
var referenceBytes = streamToArray(istream);
|
|
|
|
// compare the encoder's output to the reference file.
|
|
compareArrays(encodedBytes, referenceBytes);
|
|
|
|
|
|
/* ========== 3 ========== */
|
|
testnum++;
|
|
testdesc = "test encoding an unscaled JPEG";
|
|
|
|
// we'll reuse the container from the previous test
|
|
istream = imgTools.encodeImage(container, "image/jpeg");
|
|
encodedBytes = streamToArray(istream);
|
|
|
|
// Get bytes for exected result
|
|
refName = "image1png64x64.jpg";
|
|
refFile = do_get_file(refName);
|
|
istream = getFileInputStream(refFile);
|
|
do_check_eq(istream.available(), 4493);
|
|
referenceBytes = streamToArray(istream);
|
|
|
|
// compare the encoder's output to the reference file.
|
|
compareArrays(encodedBytes, referenceBytes);
|
|
|
|
|
|
/* ========== 4 ========== */
|
|
testnum++;
|
|
testdesc = "test decoding a JPEG";
|
|
|
|
// 32x32 jpeg, 3494 bytes.
|
|
imgName = "image2.jpg";
|
|
inMimeType = "image/jpeg";
|
|
imgFile = do_get_file(imgName);
|
|
|
|
istream = getFileInputStream(imgFile);
|
|
do_check_eq(istream.available(), 3494);
|
|
|
|
outParam = {};
|
|
imgTools.decodeImageData(istream, inMimeType, outParam);
|
|
container = outParam.value;
|
|
|
|
// It's not easy to look at the pixel values from JS, so just
|
|
// check the container's size.
|
|
do_check_eq(container.width, 32);
|
|
do_check_eq(container.height, 32);
|
|
|
|
|
|
/* ========== 5 ========== */
|
|
testnum++;
|
|
testdesc = "test encoding a scaled PNG";
|
|
|
|
if (!isWindows) {
|
|
// we'll reuse the container from the previous test
|
|
istream = imgTools.encodeScaledImage(container, "image/png", 16, 16);
|
|
|
|
encodedBytes = streamToArray(istream);
|
|
// Get bytes for exected result
|
|
refName = isWindows ? "image2jpg16x16-win.png" : "image2jpg16x16.png";
|
|
refFile = do_get_file(refName);
|
|
istream = getFileInputStream(refFile);
|
|
do_check_eq(istream.available(), 948);
|
|
referenceBytes = streamToArray(istream);
|
|
|
|
// compare the encoder's output to the reference file.
|
|
compareArrays(encodedBytes, referenceBytes);
|
|
}
|
|
|
|
|
|
/* ========== 6 ========== */
|
|
testnum++;
|
|
testdesc = "test encoding an unscaled PNG";
|
|
|
|
if (!isWindows) {
|
|
// we'll reuse the container from the previous test
|
|
istream = imgTools.encodeImage(container, "image/png");
|
|
encodedBytes = streamToArray(istream);
|
|
|
|
// Get bytes for exected result
|
|
refName = isWindows ? "image2jpg32x32-win.png" : "image2jpg32x32.png";
|
|
refFile = do_get_file(refName);
|
|
istream = getFileInputStream(refFile);
|
|
do_check_eq(istream.available(), 3105);
|
|
referenceBytes = streamToArray(istream);
|
|
|
|
// compare the encoder's output to the reference file.
|
|
compareArrays(encodedBytes, referenceBytes);
|
|
}
|
|
|
|
|
|
/* ========== 7 ========== */
|
|
testnum++;
|
|
testdesc = "test decoding a ICO";
|
|
|
|
// 16x16 ico, 1406 bytes.
|
|
imgName = "image3.ico";
|
|
inMimeType = "image/x-icon";
|
|
imgFile = do_get_file(imgName);
|
|
|
|
istream = getFileInputStream(imgFile);
|
|
do_check_eq(istream.available(), 1406);
|
|
|
|
outParam = { value: null };
|
|
imgTools.decodeImageData(istream, inMimeType, outParam);
|
|
container = outParam.value;
|
|
|
|
// It's not easy to look at the pixel values from JS, so just
|
|
// check the container's size.
|
|
do_check_eq(container.width, 16);
|
|
do_check_eq(container.height, 16);
|
|
|
|
|
|
/* ========== 8 ========== */
|
|
testnum++;
|
|
testdesc = "test encoding a scaled PNG"; // note that we're scaling UP
|
|
|
|
// we'll reuse the container from the previous test
|
|
istream = imgTools.encodeScaledImage(container, "image/png", 32, 32);
|
|
encodedBytes = streamToArray(istream);
|
|
|
|
// Get bytes for exected result
|
|
refName = "image3ico32x32.png";
|
|
refFile = do_get_file(refName);
|
|
istream = getFileInputStream(refFile);
|
|
do_check_eq(istream.available(), 2281);
|
|
referenceBytes = streamToArray(istream);
|
|
|
|
// compare the encoder's output to the reference file.
|
|
compareArrays(encodedBytes, referenceBytes);
|
|
|
|
|
|
/* ========== 9 ========== */
|
|
testnum++;
|
|
testdesc = "test encoding an unscaled PNG";
|
|
|
|
// we'll reuse the container from the previous test
|
|
istream = imgTools.encodeImage(container, "image/png");
|
|
encodedBytes = streamToArray(istream);
|
|
|
|
// Get bytes for exected result
|
|
refName = "image3ico16x16.png";
|
|
refFile = do_get_file(refName);
|
|
istream = getFileInputStream(refFile);
|
|
do_check_eq(istream.available(), 330);
|
|
referenceBytes = streamToArray(istream);
|
|
|
|
// compare the encoder's output to the reference file.
|
|
compareArrays(encodedBytes, referenceBytes);
|
|
|
|
|
|
|
|
|
|
/* ========== bug 363986 ========== */
|
|
testnum = 363986;
|
|
testdesc = "test PNG and JPEG encoders' Read/ReadSegments methods";
|
|
|
|
var testData =
|
|
[{preImage: "image3.ico",
|
|
preImageMimeType: "image/x-icon",
|
|
refImage: "image3ico16x16.png",
|
|
refImageMimeType: "image/png"},
|
|
{preImage: "image1.png",
|
|
preImageMimeType: "image/png",
|
|
refImage: "image1png64x64.jpg",
|
|
refImageMimeType: "image/jpeg"}];
|
|
|
|
for(var i=0; i<testData.length; ++i) {
|
|
var dict = testData[i];
|
|
|
|
var imgFile = do_get_file(dict["refImage"]);
|
|
var istream = getFileInputStream(imgFile);
|
|
var refBytes = streamToArray(istream);
|
|
|
|
imgFile = do_get_file(dict["preImage"]);
|
|
istream = getFileInputStream(imgFile);
|
|
|
|
var outParam = { value: null };
|
|
imgTools.decodeImageData(istream, dict["preImageMimeType"], outParam);
|
|
var container = outParam.value;
|
|
|
|
istream = imgTools.encodeImage(container, dict["refImageMimeType"]);
|
|
|
|
var sstream = Cc["@mozilla.org/storagestream;1"].
|
|
createInstance(Ci.nsIStorageStream);
|
|
sstream.init(4096, 4294967295, null);
|
|
var ostream = sstream.getOutputStream(0);
|
|
var bostream = Cc["@mozilla.org/network/buffered-output-stream;1"].
|
|
createInstance(Ci.nsIBufferedOutputStream);
|
|
|
|
//use a tiny buffer to make sure the image data doesn't fully fit in it
|
|
bostream.init(ostream, 8);
|
|
|
|
bostream.writeFrom(istream, istream.available());
|
|
bostream.flush(); bostream.close();
|
|
|
|
var encBytes = streamToArray(sstream.newInputStream(0));
|
|
|
|
compareArrays(refBytes, encBytes);
|
|
}
|
|
|
|
|
|
/* ========== bug 413512 ========== */
|
|
testnum = 413512;
|
|
testdesc = "test decoding bad favicon (bug 413512)";
|
|
|
|
imgName = "bug413512.ico";
|
|
inMimeType = "image/x-icon";
|
|
imgFile = do_get_file(imgName);
|
|
|
|
istream = getFileInputStream(imgFile);
|
|
do_check_eq(istream.available(), 17759);
|
|
|
|
// You'd think the decoder would fail, but it doesn't. The decoders use
|
|
// stream->ReadSegments with a callback, and buffered streams ignore errors
|
|
// from the callback. :-( See bug 413595.
|
|
outParam = { value: null };
|
|
imgTools.decodeImageData(istream, inMimeType, outParam);
|
|
container = outParam.value;
|
|
|
|
try {
|
|
istream = imgTools.encodeImage(container, "image/png");
|
|
} catch (e) {
|
|
err = e;
|
|
}
|
|
checkExpectedError(/NS_ERROR_NOT_AVAILABLE/, err);
|
|
|
|
|
|
/* ========== end ========== */
|
|
|
|
} catch (e) {
|
|
throw "FAILED in test #" + testnum + " -- " + testdesc + ": " + e;
|
|
}
|
|
};
|