From 9b04abb36ca9478098baf6bccb5a28bdea3fe05b Mon Sep 17 00:00:00 2001 From: Sandro Santilli Date: Fri, 22 Feb 2013 11:34:03 +0100 Subject: [PATCH] Add UTF grid checker function --- test/support/assert.js | 58 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) diff --git a/test/support/assert.js b/test/support/assert.js index 82fcf99d..26d3221f 100644 --- a/test/support/assert.js +++ b/test/support/assert.js @@ -8,6 +8,64 @@ var exec = require('child_process').exec; var assert = module.exports = exports = require('assert'); +// @param tolerance number of tolerated grid cell differences +assert.utfgridEqualsFile = function(buffer, file_b, tolerance, callback) { + fs.writeFileSync('/tmp/grid.json', buffer, 'binary'); // <-- to debug/update + var expected_json = JSON.parse(fs.readFileSync(file_b, 'utf8')); + + var err = null; + + var Celldiff = function(x, y, ev, ov) { + this.x = x; + this.y = y; + this.ev = ev; + this.ov = ov; + }; + + Celldiff.prototype.toString = function() { + return '(' + this.x + ',' + this.y + ')["' + this.ev + '" != "' + this.ov + '"]'; + }; + + try { + var obtained_json = JSON.parse(buffer); + + // compare grid + var obtained_grid = obtained_json.grid; + var expected_grid = expected_json.grid; + var nrows = obtained_grid.length + if (nrows != expected_grid.length) { + throw new Error( "Obtained grid rows (" + nrows + + ") != expected grid rows (" + expected_grid.length + ")" ); + } + var celldiff = []; + for (var i=0; i tolerance ) { + throw new Error( celldiff.length + " cell differences: " + celldiff ); + } + + assert.deepEqual(obtained_json.keys, expected_json.keys); + } catch (e) { err = e; } + + callback(err); +}; + // // @param tol tolerated color distance as a percent over max channel value // by default this is zero. For meaningful values, see