Skip to content

Commit

Permalink
added fixture test
Browse files Browse the repository at this point in the history
  • Loading branch information
Alexander Rodin committed Feb 21, 2016
1 parent 7ecf600 commit b5570e5
Show file tree
Hide file tree
Showing 8 changed files with 110 additions and 3 deletions.
1 change: 1 addition & 0 deletions .gitignore
@@ -1,3 +1,4 @@
doc/
node_modules/
v8.log
fixture-test-*
6 changes: 4 additions & 2 deletions index.js
Expand Up @@ -34,6 +34,8 @@ try {
__cvs = null;
}

var createCanvas = require('./lib/util/create_canvas.js');

var ResizerJS = require('./lib/resizer_js');
var ResizerJSWW = require('./lib/resizer_js_ww');
var ResizerWebgl = require('./lib/resizer_webgl');
Expand Down Expand Up @@ -146,8 +148,8 @@ function resizeTiled (from, to, options, resizer, callback) {

for (i = 0; i < resizer.concurrency; i++) {
tileData = {
src: document.createElement('canvas'),
dest: document.createElement('canvas')
src: createCanvas(),
dest: createCanvas()
};
tileData.src.width = SRC_TILE_SIZE;
tileData.src.height = SRC_TILE_SIZE;
Expand Down
7 changes: 7 additions & 0 deletions lib/util/create_canvas.js
@@ -0,0 +1,7 @@
'use strict';

var Canvas = require('canvas');

module.exports = function () {
return new Canvas();
};
7 changes: 7 additions & 0 deletions lib/util/create_canvas_browser.js
@@ -0,0 +1,7 @@
'use strict';

/* global document */

module.exports = function () {
return document.createElement('canvas');
};
5 changes: 4 additions & 1 deletion package.json
Expand Up @@ -29,8 +29,10 @@
"brfs"
]
},
"browser": {
"./lib/util/create_canvas.js": "./lib/util/create_canvas_browser.js"
},
"dependencies": {
"async": "^1.5.2",
"glur": "^1.1.1",
"webworkify": "1.0.2"
},
Expand All @@ -43,6 +45,7 @@
"eslint": "0.10.1",
"eslint-plugin-nodeca": "^1.0.3",
"mocha": "^2.3.3",
"node-resemble": "^1.1.3",
"uglify-js": "*"
}
}
87 changes: 87 additions & 0 deletions test/fixture.js
@@ -0,0 +1,87 @@
'use strict';
/* global it, describe */

var Canvas = require('canvas');
var Image = Canvas.Image;
var fs = require('fs');
var path = require('path');
var pica = require('../');
var resemble = require('node-resemble');

var FIXTURES_DIRECTORY = path.join(__dirname, 'fixtures');
var OUTPUT_DIRECTORY = path.join(__dirname, '..');

function saveDataUrlToFile(dataUrl, fileName) {
var image, canvas;

image = new Image();
image.src = dataUrl;
canvas = new Canvas();
canvas.width = image.width;
canvas.height = image.height;
canvas.getContext('2d').drawImage(image, 0, 0);

canvas
.pngStream()
.pipe(fs.createWriteStream(path.join(OUTPUT_DIRECTORY, fileName)));
}

describe('Fixtures', function () {
it('algorithm should be correct for the given fixture', function (done) {
var srcImage, srcCanvas, srcCtx,
fixtureImage, fixtureCanvas, fixtureCtx,
destCanvas;

this.timeout(3000);

srcImage = new Image();
srcImage.src = fs.readFileSync(path.join(FIXTURES_DIRECTORY, 'original.jpg'));

srcCanvas = new Canvas();
srcCanvas.width = srcImage.width;
srcCanvas.height = srcImage.height;
srcCtx = srcCanvas.getContext('2d');
srcCtx.drawImage(srcImage, 0, 0);

fixtureImage = new Image();
fixtureImage.src = fs.readFileSync(path.join(FIXTURES_DIRECTORY, 'resized.png'));
fixtureCanvas = new Canvas();
fixtureCanvas.width = fixtureImage.width;
fixtureCanvas.height = fixtureImage.height;
fixtureCtx = fixtureCanvas.getContext('2d');
fixtureCtx.drawImage(fixtureImage, 0, 0);

destCanvas = new Canvas();
destCanvas.width = fixtureImage.width;
destCanvas.height = fixtureImage.height;

pica.WEBGL = false;
pica.WW = false;

pica.resizeCanvas(srcCanvas, destCanvas, {
quality: 3,
unsharpAmount: 0
}, function (err) {
if (err) {
throw err;
}

resemble(destCanvas.toDataURL())
.compareTo(fixtureCanvas.toDataURL())
.onComplete(function (data) {
if (data.misMatchPercentage !== '0.00') {
saveDataUrlToFile(data.getImageDataUrl(), 'fixture-test-diff.png');
destCanvas
.pngStream()
.pipe(fs.createWriteStream(path.join(OUTPUT_DIRECTORY, 'fixture-test-output.png')));
fixtureCanvas
.pngStream()
.pipe(fs.createWriteStream(path.join(OUTPUT_DIRECTORY, 'fixture-test-expected.png')));
done(new Error('Images mismatch in ' + data.misMatchPercentage + '% of pixels'));
} else {
done();
}
});
});
});
});
Binary file added test/fixtures/original.jpg
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added test/fixtures/resized.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit b5570e5

Please sign in to comment.