diff --git a/package.json b/package.json index dfcb83b..4205550 100644 --- a/package.json +++ b/package.json @@ -7,4 +7,10 @@ , "url" : "http://github.com/rsms/node-imagemagick.git" } , "engine" : ["node >=0.6"] , "main" : "imagemagick" +, "devDependencies": { + "mocha": ">= 1.8" +} +, "scripts": { + "test": "./node_modules/mocha/bin/mocha --reporter spec" +} } diff --git a/test-crop.js b/test-crop.js deleted file mode 100644 index a122a60..0000000 --- a/test-crop.js +++ /dev/null @@ -1,35 +0,0 @@ -var fs = require('fs'), - im = require('./imagemagick'); - -var path = __dirname+'/sample-images/blue-bottle-coffee.jpg'; - -(function () { - var opt, timeStarted = new Date; - im.crop(opt = { - srcPath: path, - dstPath: 'cropped.jpg', - width: 200, - height: 90, - quality: 1 - }, function (err, stdout, stderr){ - if (err) return console.error(err.stack || err); - console.log('crop(',opt,') ->', stdout); - console.log('Real time spent: '+(new Date() - timeStarted) + ' ms'); - }); -})(); - -(function () { - var opt, timeStarted = new Date; - im.crop(opt = { - srcPath: path, - dstPath: 'cropped2.jpg', - width: 200, - height: 90, - gravity: "North", - quality: 1 - }, function (err, stdout, stderr){ - if (err) return console.error(err.stack || err); - console.log('crop(',opt,') ->', stdout); - console.log('Real time spent: '+(new Date() - timeStarted) + ' ms'); - }); -})(); diff --git a/test.js b/test.js deleted file mode 100644 index 2678c93..0000000 --- a/test.js +++ /dev/null @@ -1,52 +0,0 @@ -var fs = require('fs'), - im = require('./imagemagick'); - -var path = __dirname+'/sample-images/blue-bottle-coffee.jpg'; -var imdata = fs.readFileSync(path, 'binary'); - -im.identify(path, function (err, features){ - if (err) return console.error(err.stack || err); - console.log('identify(path) ->', features); -}) - -im.identify({data:imdata}, function (err, features){ - if (err) return console.error(err.stack || err); - console.log('identify({data:imdata}) ->', features); -}) - -im.readMetadata(path, function (err, metadata){ - if (err) return console.error(err.stack || err); - console.log('readMetadata(path) ->', metadata); -}) - -im.readMetadata({data:imdata}, function (err, metadata){ - if (err) return console.error(err.stack || err); - console.log('readMetadata({data:imdata} ->', metadata); -}) - -var timeStarted = new Date; -im.resize({ - srcPath: path, - dstPath: 'test-resized.jpg', - width: 256 -}, function (err, stdout, stderr){ - if (err) return console.error(err.stack || err); - console.log('resize(...) wrote "test-resized.jpg"'); - console.log('real time taken for convert: '+((new Date)-timeStarted)+' ms'); - im.identify(['-format', '%b', 'test-resized.jpg'], function (err, r){ - if (err) throw err; - console.log("identify(['-format', '%b', 'test-resized.jpg']) ->", r); - }) -}) - -timeStarted = new Date; -im.resize({ - srcData: imdata, - width: 256 -}, function (err, stdout, stderr){ - if (err) return console.error(err.stack || err); - console.log('real time taken for convert (with buffers): '+ - ((new Date)-timeStarted)+' ms'); - fs.writeFileSync('test-resized-io.jpg', stdout, 'binary'); - console.log('resize(...) wrote "test-resized.jpg" ('+stdout.length+' Bytes)'); -}) diff --git a/sample-images/blue-bottle-coffee.jpg b/test/fixtures/blue-bottle-coffee.jpg similarity index 100% rename from sample-images/blue-bottle-coffee.jpg rename to test/fixtures/blue-bottle-coffee.jpg diff --git a/test/test-crop.js b/test/test-crop.js new file mode 100644 index 0000000..d011c57 --- /dev/null +++ b/test/test-crop.js @@ -0,0 +1,53 @@ +var fs = require('fs'), + im = require('../imagemagick'), + assert = require('assert'); + +var path = __dirname+'/fixtures/blue-bottle-coffee.jpg'; + +describe('crop()', function() { + + it('(simple) should crop the image and not return an error', function (done) { + var opt; + var outFile = 'cropped.jpg'; + im.crop(opt = { + srcPath: path, + dstPath: outFile, + width: 200, + height: 90, + quality: 1 + }, function (err, stdout, stderr){ + assert.ifError(err); + assert(fs.existsSync(outFile), "Output file exists"); + assert( + fs.statSync(outFile).size >= 23, + "Output has a length of at least 23 bytes" + ); + // console.log('crop(',opt,') ->', stdout, stderr); + done(); + }); + }); + + it('with "gravity: North" should crop the image and not return an error', function (done) { + var opt; + var outFile = 'cropped2.jpg'; + im.crop(opt = { + srcPath: path, + dstPath: outFile, + width: 200, + height: 90, + gravity: "North", + quality: 1 + }, function (err, stdout, stderr){ + assert.ifError(err); + assert(fs.existsSync(outFile), "Output file exists"); + assert( + fs.statSync(outFile).size >= 23, + "Output has a length of at least 23 bytes" + ); + // console.log('crop(',opt,') ->', stdout, stderr); + done(); + }); + }); + +}); + diff --git a/test/test-identify.js b/test/test-identify.js new file mode 100644 index 0000000..805028b --- /dev/null +++ b/test/test-identify.js @@ -0,0 +1,33 @@ +var fs = require('fs'), + im = require('../imagemagick'), + assert = require('assert'); + +var path = __dirname+'/fixtures/blue-bottle-coffee.jpg'; +var imdata = fs.readFileSync(path, 'binary'); + + +describe('identify()', function() { + + it('should return info when called with image path', function(done) { + im.identify(path, function (err, features){ + assert.ifError(err); + assert.strictEqual(features.format, 'JPEG'); + assert.strictEqual(features.geometry, '640x480'); + // console.log('identify(path) ->', features); + done(); + }); + }); + + it('should return info when called with object: {data: }', function(done) { + im.identify({data:imdata}, function (err, features){ + if (err) return console.error(err.stack || err); + assert.ifError(err); + assert.strictEqual(features.format, 'JPEG'); + assert.strictEqual(features.geometry, '640x480'); + //console.log('identify({data:imdata}) ->', features); + done(); + }); + }); + +}); + diff --git a/test/test-readMetadata.js b/test/test-readMetadata.js new file mode 100644 index 0000000..64a140a --- /dev/null +++ b/test/test-readMetadata.js @@ -0,0 +1,30 @@ +var fs = require('fs'), + im = require('../imagemagick'), + assert = require('assert'); + +var path = __dirname+'/fixtures/blue-bottle-coffee.jpg'; +var imdata = fs.readFileSync(path, 'binary'); + + +describe('readMetadata()', function() { + + it('should return info when called with image path', function(done) { + im.readMetadata(path, function (err, metadata){ + assert.ifError(err); + assert(metadata); + // console.log('readMetadata(path) ->', metadata); + done(); + }); + }); + + it('should return info when called with object: {data: }', function(done) { + im.readMetadata({data:imdata}, function (err, metadata){ + assert.ifError(err); + assert(metadata); + // console.log('readMetadata({data:imdata} ->', metadata); + done(); + }); + }); + +}); + diff --git a/test/test-resize.js b/test/test-resize.js new file mode 100644 index 0000000..70a6f11 --- /dev/null +++ b/test/test-resize.js @@ -0,0 +1,43 @@ +var fs = require('fs'), + im = require('../imagemagick'), + assert = require('assert'); + +var path = __dirname+'/fixtures/blue-bottle-coffee.jpg'; +var imdata = fs.readFileSync(path, 'binary'); + + +describe('resize()', function() { + + it('should resize the image (by file name) and not return an error', function (done) { + var outFile = 'test-resized.jpg'; + im.resize({ + srcPath: path, + dstPath: outFile, + width: 256 + }, function (err, stdout, stderr){ + assert.ifError(err); + // console.log('resize(...) wrote "test-resized.jpg"'); + im.identify(['-format', '%b', outFile], function (err, r){ + assert.ifError(err); + assert(r, "Identify should report the file size"); + // console.log("identify(['-format', '%b', 'test-resized.jpg']) ->", r); + done(); + }); + }); + }); + + it('should resize the image (using raw data) and not return an error', function (done) { + var outFile = 'test-resized-io.jpg'; + im.resize({ + srcData: imdata, + width: 256 + }, function (err, stdout, stderr){ + assert.ifError(err); + fs.writeFileSync(outFile, stdout, 'binary'); + // console.log('resize(...) wrote "test-resized-io.jpg" ('+stdout.length+' Bytes)'); + done(); + }); + }); + +}); +