point renderer acceptance tests

point renderer test helper to get a canvas from a windshaft torque json, cartocss, zxy and step
This commit is contained in:
Raul Ochoa 2015-03-04 17:26:05 +01:00
parent 149c741a03
commit 0305d15106
7 changed files with 127 additions and 0 deletions

View File

@ -29,9 +29,11 @@
},
"devDependencies": {
"leaflet": "0.7.3",
"underscore": "^1.6.0",
"node-qunit-phantomjs": "^1.0.0",
"browserify": "^7.0.0",
"mapnik": "^3.1.6",
"request": "^2.53.0",
"qunit": "~0.7.5",
"qunitjs": "1.x",
"uglify-js": "1.3.3"

View File

@ -0,0 +1,64 @@
var pointRenderer = require('../../support/point_renderer');
var image = require('../../support/image');
QUnit.module('renderer/point');
asyncTest('navy example', function(assert) {
var cartocss = [
'Map {',
' -torque-time-attribute: "date";',
' -torque-aggregation-function: "count(cartodb_id)";',
' -torque-frame-count: 760;',
' -torque-animation-duration: 15;',
' -torque-resolution: 2',
'}',
'#layer {',
' marker-width: 3;',
' marker-fill-opacity: 0.8;',
' marker-fill: #FEE391; ',
' comp-op: "lighten";',
' [value > 2] { marker-fill: #FEC44F; }',
' [value > 3] { marker-fill: #FE9929; }',
' [value > 4] { marker-fill: #EC7014; }',
' [value > 5] { marker-fill: #CC4C02; }',
' [value > 6] { marker-fill: #993404; }',
' [value > 7] { marker-fill: #662506; }',
' [frame-offset = 1] { marker-width: 10; marker-fill-opacity: 0.05;}',
' [frame-offset = 2] { marker-width: 15; marker-fill-opacity: 0.02;}',
'}'
].join('\n');
var step = 300;
pointRenderer.getTile('default_navy_3-3-2.torque.json', cartocss, 3, 3, 2, step, function(err, canvas) {
assert.ok(!err, 'no error while getting tile');
var imageDiff = image.compare(canvas.toBuffer(), 'default_navy_3-3-2.png');
assert.equal(imageDiff, 0, 'navy tile is ok');
QUnit.start();
});
});
asyncTest('basic heatmap', function(assert) {
var cartocss = [
'Map {',
' -torque-time-attribute: "date";',
' -torque-aggregation-function: "count(cartodb_id)";',
' -torque-frame-count: 1;',
' -torque-resolution: 1',
'}',
'#layer {',
' marker-width: 4;',
' image-filters: colorize-alpha(blue, cyan, lightgreen, yellow , orange, red);',
' marker-file: url(http://s3.amazonaws.com/com.cartodb.assets.static/alphamarker.png);',
'}'
].join('\n');
var step = 0;
pointRenderer.getTile('heatmap_navy_3-2-3.torque.json', cartocss, 3, 2, 3, step, function(err, canvas) {
assert.ok(!err, 'no error while getting tile');
var imageDiff = image.compare(canvas.toBuffer(), 'heatmap_navy_3-2-3.png');
assert.equal(imageDiff, 0, 'heatmap tile is ok');
QUnit.start();
});
});

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,59 @@
var Canvas = require('canvas');
var request = require('request');
var _ = require('underscore');
var fs = require('fs');
var torque = require('../../lib/torque/index');
function getTile(jsonRelPath, cartocss, z, x, y, step, callback) {
step = step || 0;
var cartoCssOptions = torque.common.TorqueLayer.optionsFromCartoCSS(cartocss);
var provider = new torque.providers.windshaft(_.extend({ no_fetch_map: true }, cartoCssOptions));
var rendererOptions = _.extend({cartocss: cartocss}, cartoCssOptions, {
canvasClass: Canvas,
imageClass: Canvas.Image,
setImageSrc: function(img, url, callback) {
var requestOpts = {
url: url,
method: 'GET',
encoding: null
};
request(requestOpts, function (err, response, body) {
if (!err && response.statusCode === 200) {
img.onload = function() {
callback(null);
};
img.onerror = function() {
callback(new Error('Could not load marker-file image: ' + url));
};
img.src = body;
} else {
callback(new Error('Could not load marker-file image: ' + url));
}
});
},
qualifyURL: function(url) {
return url;
}
});
var rows = JSON.parse(fs.readFileSync(__dirname + '/../fixtures/json/' + jsonRelPath));
var canvas = new Canvas(256, 256);
var pointRenderer = new torque.renderer.Point(canvas, rendererOptions);
pointRenderer.renderTile(provider.proccessTile(rows, {x: x, y: y}, z), step, function(err) {
if (err) {
return callback(err, null);
}
pointRenderer.applyFilters();
return callback(null, canvas);
});
}
module.exports = {
getTile: getTile
};