From 7067bd5e906051d2359f6ea7ff30f62eb363001b Mon Sep 17 00:00:00 2001 From: Florian Sesser Date: Thu, 21 Feb 2013 11:26:16 +0100 Subject: [PATCH 1/8] Move all test-related files into separate directory --- .../sample-images}/blue-bottle-coffee.jpg | Bin test-crop.js => test/test-crop.js | 0 test.js => test/test.js | 0 3 files changed, 0 insertions(+), 0 deletions(-) rename {sample-images => test/sample-images}/blue-bottle-coffee.jpg (100%) rename test-crop.js => test/test-crop.js (100%) rename test.js => test/test.js (100%) diff --git a/sample-images/blue-bottle-coffee.jpg b/test/sample-images/blue-bottle-coffee.jpg similarity index 100% rename from sample-images/blue-bottle-coffee.jpg rename to test/sample-images/blue-bottle-coffee.jpg diff --git a/test-crop.js b/test/test-crop.js similarity index 100% rename from test-crop.js rename to test/test-crop.js diff --git a/test.js b/test/test.js similarity index 100% rename from test.js rename to test/test.js From a8afbfeed9960262d96ea45e0383e27a7071b5cf Mon Sep 17 00:00:00 2001 From: Florian Sesser Date: Thu, 21 Feb 2013 11:33:36 +0100 Subject: [PATCH 2/8] Add mocha.js test runner to devDependencies --- package.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/package.json b/package.json index dfcb83b..bd54c21 100644 --- a/package.json +++ b/package.json @@ -7,4 +7,7 @@ , "url" : "http://github.com/rsms/node-imagemagick.git" } , "engine" : ["node >=0.6"] , "main" : "imagemagick" +, "devDependencies": { + "mocha": ">= 1.8" +} } From 24a3d5faa9a94703e49a7332bc643ecbf173f8d0 Mon Sep 17 00:00:00 2001 From: Florian Sesser Date: Thu, 21 Feb 2013 11:34:54 +0100 Subject: [PATCH 3/8] Fixup include paths --- test/test-crop.js | 2 +- test/test.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/test/test-crop.js b/test/test-crop.js index a122a60..8f4d634 100644 --- a/test/test-crop.js +++ b/test/test-crop.js @@ -1,5 +1,5 @@ var fs = require('fs'), - im = require('./imagemagick'); + im = require('../imagemagick'); var path = __dirname+'/sample-images/blue-bottle-coffee.jpg'; diff --git a/test/test.js b/test/test.js index 2678c93..8f32b37 100644 --- a/test/test.js +++ b/test/test.js @@ -1,5 +1,5 @@ var fs = require('fs'), - im = require('./imagemagick'); + im = require('../imagemagick'); var path = __dirname+'/sample-images/blue-bottle-coffee.jpg'; var imdata = fs.readFileSync(path, 'binary'); From e5baed19d2a713d00602378f273af929a8833246 Mon Sep 17 00:00:00 2001 From: Florian Sesser Date: Thu, 21 Feb 2013 13:02:38 +0100 Subject: [PATCH 4/8] Modify test-crop.js for Mocha test runner --- test/test-crop.js | 74 +++++++++++++++++++++++++++++------------------ 1 file changed, 46 insertions(+), 28 deletions(-) diff --git a/test/test-crop.js b/test/test-crop.js index 8f4d634..283ecf5 100644 --- a/test/test-crop.js +++ b/test/test-crop.js @@ -1,35 +1,53 @@ var fs = require('fs'), - im = require('../imagemagick'); + im = require('../imagemagick'), + assert = require('assert'); 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'); +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(); + }); }); -})(); -(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'); + 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(); + }); }); -})(); + +}); + From 109928d3f27328a589e1e925528224a22919c56c Mon Sep 17 00:00:00 2001 From: Florian Sesser Date: Thu, 21 Feb 2013 15:20:28 +0100 Subject: [PATCH 5/8] Modify test.js for Mocha test runner --- test/test.js | 134 +++++++++++++++++++++++++++++++++------------------ 1 file changed, 87 insertions(+), 47 deletions(-) diff --git a/test/test.js b/test/test.js index 8f32b37..921dd88 100644 --- a/test/test.js +++ b/test/test.js @@ -1,52 +1,92 @@ var fs = require('fs'), - im = require('../imagemagick'); + im = require('../imagemagick'), + assert = require('assert'); 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)'); -}) + +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(); + }); + }); + +}); + + +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(); + }); + }); + +}); + + +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(); + }); + }); + +}); + From 03993ed9e794a0d63b3fa12db02e4375cbe668ac Mon Sep 17 00:00:00 2001 From: Florian Sesser Date: Thu, 21 Feb 2013 15:23:47 +0100 Subject: [PATCH 6/8] Separated test.js into different suites --- test/test-identify.js | 33 ++++++++++++++ test/test-readMetadata.js | 30 +++++++++++++ test/test-resize.js | 43 ++++++++++++++++++ test/test.js | 92 --------------------------------------- 4 files changed, 106 insertions(+), 92 deletions(-) create mode 100644 test/test-identify.js create mode 100644 test/test-readMetadata.js create mode 100644 test/test-resize.js delete mode 100644 test/test.js diff --git a/test/test-identify.js b/test/test-identify.js new file mode 100644 index 0000000..c7191d1 --- /dev/null +++ b/test/test-identify.js @@ -0,0 +1,33 @@ +var fs = require('fs'), + im = require('../imagemagick'), + assert = require('assert'); + +var path = __dirname+'/sample-images/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..0c3f2ee --- /dev/null +++ b/test/test-readMetadata.js @@ -0,0 +1,30 @@ +var fs = require('fs'), + im = require('../imagemagick'), + assert = require('assert'); + +var path = __dirname+'/sample-images/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..013c445 --- /dev/null +++ b/test/test-resize.js @@ -0,0 +1,43 @@ +var fs = require('fs'), + im = require('../imagemagick'), + assert = require('assert'); + +var path = __dirname+'/sample-images/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(); + }); + }); + +}); + diff --git a/test/test.js b/test/test.js deleted file mode 100644 index 921dd88..0000000 --- a/test/test.js +++ /dev/null @@ -1,92 +0,0 @@ -var fs = require('fs'), - im = require('../imagemagick'), - assert = require('assert'); - -var path = __dirname+'/sample-images/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(); - }); - }); - -}); - - -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(); - }); - }); - -}); - - -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(); - }); - }); - -}); - From 3b3ce2616f5b9c8fd23f80a5609fa0e38dd25008 Mon Sep 17 00:00:00 2001 From: Florian Sesser Date: Thu, 21 Feb 2013 15:26:57 +0100 Subject: [PATCH 7/8] Add test script (to be called using "npm test") to package.json --- package.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/package.json b/package.json index bd54c21..4205550 100644 --- a/package.json +++ b/package.json @@ -10,4 +10,7 @@ , "devDependencies": { "mocha": ">= 1.8" } +, "scripts": { + "test": "./node_modules/mocha/bin/mocha --reporter spec" +} } From bba166860fbc4b1aa1754a78197bc882bdb4d66f Mon Sep 17 00:00:00 2001 From: Florian Sesser Date: Thu, 21 Feb 2013 16:49:44 +0100 Subject: [PATCH 8/8] Rename 'sample-images' to 'fixtures' Tests may require all kinds of input data. --- .../blue-bottle-coffee.jpg | Bin test/test-crop.js | 2 +- test/test-identify.js | 2 +- test/test-readMetadata.js | 2 +- test/test-resize.js | 2 +- 5 files changed, 4 insertions(+), 4 deletions(-) rename test/{sample-images => fixtures}/blue-bottle-coffee.jpg (100%) diff --git a/test/sample-images/blue-bottle-coffee.jpg b/test/fixtures/blue-bottle-coffee.jpg similarity index 100% rename from test/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 index 283ecf5..d011c57 100644 --- a/test/test-crop.js +++ b/test/test-crop.js @@ -2,7 +2,7 @@ var fs = require('fs'), im = require('../imagemagick'), assert = require('assert'); -var path = __dirname+'/sample-images/blue-bottle-coffee.jpg'; +var path = __dirname+'/fixtures/blue-bottle-coffee.jpg'; describe('crop()', function() { diff --git a/test/test-identify.js b/test/test-identify.js index c7191d1..805028b 100644 --- a/test/test-identify.js +++ b/test/test-identify.js @@ -2,7 +2,7 @@ var fs = require('fs'), im = require('../imagemagick'), assert = require('assert'); -var path = __dirname+'/sample-images/blue-bottle-coffee.jpg'; +var path = __dirname+'/fixtures/blue-bottle-coffee.jpg'; var imdata = fs.readFileSync(path, 'binary'); diff --git a/test/test-readMetadata.js b/test/test-readMetadata.js index 0c3f2ee..64a140a 100644 --- a/test/test-readMetadata.js +++ b/test/test-readMetadata.js @@ -2,7 +2,7 @@ var fs = require('fs'), im = require('../imagemagick'), assert = require('assert'); -var path = __dirname+'/sample-images/blue-bottle-coffee.jpg'; +var path = __dirname+'/fixtures/blue-bottle-coffee.jpg'; var imdata = fs.readFileSync(path, 'binary'); diff --git a/test/test-resize.js b/test/test-resize.js index 013c445..70a6f11 100644 --- a/test/test-resize.js +++ b/test/test-resize.js @@ -2,7 +2,7 @@ var fs = require('fs'), im = require('../imagemagick'), assert = require('assert'); -var path = __dirname+'/sample-images/blue-bottle-coffee.jpg'; +var path = __dirname+'/fixtures/blue-bottle-coffee.jpg'; var imdata = fs.readFileSync(path, 'binary');