node-opencv/test/smoke.js
Peter Braden 1acbe4bcaa toBuffer
2012-01-23 08:51:59 -08:00

143 lines
3.5 KiB
JavaScript

var vows = require('vows')
, assert = require('assert')
, fs = require('fs');
vows.describe('Smoke Tests OpenCV').addBatch({
"Importing": {
topic: require('../lib/opencv')
, "returns obj": function(topic){
assert.ok(!!topic)
}
, '.version' : function(topic){
assert.ok(!!topic.version)
}
, '.Point imports': function(topic){
assert.ok(!!topic.Point)
}
, '.Image imports' : function(topic){
assert.ok(!!topic.Image)
}
}
, "Point" : {
topic : require('../lib/opencv')
, 'constructor' : function(cv){
assert.ok(!!new cv.Point(1, 2))
assert.throws(function () { cv.Point(1, 2)}, TypeError); // cannot call without new
}
, 'accessors' : function(cv){
assert.equal(new cv.Point(1, 2).x, 1)
assert.equal(new cv.Point(1, 2).y, 2)
assert.equal(Math.round(new cv.Point(1.1, 2).x * 100), 110)
assert.equal(Math.round(new cv.Point(1.2, 2.75).y *100), 275)
assert.throws(function () {new cv.Point(1.1, 2).x = 5}, Error); // Points are immutable
assert.throws(function () {new cv.Point(1.1, 2).y = 5}, Error); // Points are immutable
}
, '.dot': function(cv){
var p1 = new cv.Point(3, 6)
, p2 = new cv.Point(5, 7)
assert.ok(p1.dot);
assert.equal(p1.dot(p2), 57);
}
, '.inside' : function(){}
}
, "Matrix": {
topic : require('../lib/opencv')
, "constructor" : function(cv){
assert.ok(cv.Matrix);
assert.ok(new cv.Matrix);
assert.ok(new cv.Matrix(1,2,0));
}
, "empty": function(cv){
assert.equal(new cv.Matrix(1,2).empty(), true);
}
}
, "Image" : {
topic : require('../lib/opencv')
, "constructor(filename)": function(cv){
assert.ok(new cv.Image("./examples/mona.jpg"))
}
, "constructor(buffer)" : function(cv){
var im = new cv.Image(fs.readFileSync('./examples/mona.jpg'))
assert.ok(im);
assert.equal(im.width, 500);
assert.equal(im.height, 756)
assert.equal(im.empty(), false)
}
, "inherits from matrix": function(cv){
assert.equal(new cv.Image("./examples/mona.jpg").empty(), false)
}
, ".width / .height" : function(cv){
assert.equal(new cv.Image("./examples/mona.jpg").width, 500)
assert.equal(new cv.Image("./examples/mona.jpg").height, 756)
}
, ".ellipse": function(cv){
assert.equal(new cv.Image("./examples/mona.jpg").ellipse(10, 10, 10, 10), undefined)
}
, "toBuffer": function(cv){
var buf = fs.readFileSync('./examples/mona.jpg')
, im = new cv.Image(buf.slice(0))
, buf0 = im.toBuffer()
assert.ok(buf0);
//assert.equal(buf.toString('base64'), buf0.toString('base64'));
}
}
, "CascadeClassifier": {
topic : require('../lib/opencv')
, "constructor" : function(cv){
assert.ok(new cv.CascadeClassifier("./examples/haarcascade_frontalface_alt.xml"))
}
, "face detection": {
topic : function(){
var cv = require('../lib/opencv')
, im = new cv.Image("./examples/mona.jpg")
, cascade = new cv.CascadeClassifier("./examples/haarcascade_frontalface_alt.xml");
cascade.detectMultiScale(im, this.callback, 1.1, 2, [30, 30]);
}
, "finds face": function(err, faces){
assert.isNull(err);
assert.isArray(faces);
assert.equal(faces.length, 1)
}
}
}
}).run();