Files
image-sequencer/test/core/templates/module-test.js
Harsh Khandeparkar ea2069d7f6 [GCI] Experimental GIF Manipulation (#1404)
* wasmSuccess

* modules use wasmSuccess

* modules use wasmSuccess

* add the tooltip

* add GIF support

* fix imageDImensions function

* fix inputCoordinatesParser function

* show correct image dimensions

* show correct image dimensions

* don't allow save as PDF for GIFs

* fix QR module

* fix BlobAnalysis

* fix Blur

* fix Colorbar

* fix Crop

* fix crop defaults

* fix DrawRectangle

* fix EdgeDetect

* fix FlipImage

* fix Gradient

* fix Invert

* fix Overlay

* fix Resize

* fix Rotate

* fix TextOverlay

* fix parse input test

* make GIFs work in nodejs

* sample GIF test

* small change

* cleanup

* cleanup

* cleanup

* small fix

* small change

* handle errors

* proper error handling and fix tests

* cleanup

* try a fix

* try another fix

* fix module benchmarks

* try more fixes

* revert

* try fixing the tests

* fix overlay test

* add the gif tests

* remove unnecessary changes

* fix tests

* whoops

* add some docs

* inBrowser

* fix all module tests

Co-authored-by: Jeffrey Warren <jeff@unterbahn.com>
2020-01-11 12:05:10 -05:00

57 lines
2.1 KiB
JavaScript

const test = require('tape'),
base64Img = require('base64-img'),
looksSame = require('looks-same');
const ImageSequencer = require('../../../src/ImageSequencer');
const red = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABlBMVEX+AAD///+KQee0AAAAAWJLR0QB/wIt3gAAAAd0SU1FB+EGHRIVAvrm6EMAAAAMSURBVAjXY2AgDQAAADAAAceqhY4AAAAldEVYdGRhdGU6Y3JlYXRlADIwMTctMDYtMjlUMTg6MjE6MDIrMDI6MDDGD83DAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDE3LTA2LTI5VDE4OjIxOjAyKzAyOjAwt1J1fwAAAABJRU5ErkJggg==';
target = 'test_outputs';
/**
* @method moduleTest
* @description a common test for modules
* @param {String} moduleName name of the module
* @param {"Object"} options module options
* @param {String} benchmark dataURI of the benchmark image
* @param {String} [input="red_image"] optional input image. Default is a red image.
*/
module.exports = (moduleName, options, benchmark, input) => {
let sequencer = ImageSequencer({ui: false});
test(`${moduleName} module loads correctly`, t => {
sequencer.loadImages(input || red);
sequencer.addSteps(moduleName, options);
t.equal(sequencer.steps[1].options.name, moduleName, `${moduleName} module is getting loaded`);
t.end();
});
test(`${moduleName} module loads with correct options`, t => {
for (const option in options) {
t.equal(sequencer.steps[1].options[option], options[option], `Option ${option} is correct`);
}
t.end();
});
test(`${moduleName} module works correctly`, t => {
sequencer.run({mode: 'test'}, () => {
let result = sequencer.steps[1].output.src;
base64Img.imgSync(result, target, `${moduleName}-result`);
base64Img.imgSync(benchmark, target, `${moduleName}-benchmark`);
result = `./test_outputs/${moduleName}-result.png`;
benchmark = `./test_outputs/${moduleName}-benchmark.png`;
looksSame(result, benchmark, function(err, res) {
if (err) console.log(err);
t.equal(res.equal, true, `${moduleName} module works correctly`);
sequencer = null;
t.end();
});
});
});
};