From 61d14089e0dd742719328fd74c693bcae6274a4b Mon Sep 17 00:00:00 2001 From: Ansis Brammanis Date: Tue, 5 Apr 2016 16:27:37 -0700 Subject: [core] implement queryRenderedFeatures --- platform/node/test/query.test.js | 12 ++++++ platform/node/test/render.test.js | 48 +----------------------- platform/node/test/suite_implementation.js | 60 ++++++++++++++++++++++++++++++ 3 files changed, 74 insertions(+), 46 deletions(-) create mode 100644 platform/node/test/query.test.js create mode 100644 platform/node/test/suite_implementation.js (limited to 'platform/node/test') diff --git a/platform/node/test/query.test.js b/platform/node/test/query.test.js new file mode 100644 index 0000000000..1309c03467 --- /dev/null +++ b/platform/node/test/query.test.js @@ -0,0 +1,12 @@ +'use strict'; + +var suite = require('mapbox-gl-test-suite').query; +var suiteImplementation = require('./suite_implementation'); + +var tests; + +if (process.argv[1] === __filename && process.argv.length > 2) { + tests = process.argv.slice(2); +} + +suite.run('native', {tests: tests}, suiteImplementation); diff --git a/platform/node/test/render.test.js b/platform/node/test/render.test.js index 05a6b2ba68..0527a19070 100644 --- a/platform/node/test/render.test.js +++ b/platform/node/test/render.test.js @@ -1,8 +1,7 @@ 'use strict'; -var mbgl = require('../../../lib/mapbox-gl-native'); var suite = require('mapbox-gl-test-suite').render; -var request = require('request'); +var suiteImplementation = require('./suite_implementation'); var tests; @@ -10,47 +9,4 @@ if (process.argv[1] === __filename && process.argv.length > 2) { tests = process.argv.slice(2); } -mbgl.on('message', function(msg) { - console.log('%s (%s): %s', msg.severity, msg.class, msg.text); -}); - -suite.run('native', {tests: tests}, function (style, options, callback) { - var map = new mbgl.Map({ - ratio: options.pixelRatio, - request: function(req, callback) { - request(req.url, {encoding: null}, function (err, response, body) { - if (err) { - callback(err); - } else if (response.statusCode != 200) { - callback(new Error(response.statusMessage)); - } else { - callback(null, {data: body}); - } - }); - } - }); - - var timedOut = false; - var watchdog = setTimeout(function () { - timedOut = true; - map.dumpDebugLogs(); - callback(new Error('timed out after 20 seconds')); - }, 20000); - - options.center = style.center; - options.zoom = style.zoom; - options.bearing = style.bearing; - options.pitch = style.pitch; - options.debug = { - tileBorders: options.debug, - collision: options.collisionDebug - }; - - map.load(style); - map.render(options, function (err, pixels) { - map.release(); - if (timedOut) return; - clearTimeout(watchdog); - callback(err, pixels); - }); -}); +suite.run('native', {tests: tests}, suiteImplementation); diff --git a/platform/node/test/suite_implementation.js b/platform/node/test/suite_implementation.js new file mode 100644 index 0000000000..a5c70ab802 --- /dev/null +++ b/platform/node/test/suite_implementation.js @@ -0,0 +1,60 @@ +'use strict'; + +var mbgl = require('../../../lib/mapbox-gl-native'); +var request = require('request'); + +mbgl.on('message', function(msg) { + console.log('%s (%s): %s', msg.severity, msg.class, msg.text); +}); + +module.exports = function (style, options, callback) { + var map = new mbgl.Map({ + ratio: options.pixelRatio, + request: function(req, callback) { + request(req.url, {encoding: null}, function (err, response, body) { + if (err) { + callback(err); + } else if (response.statusCode != 200) { + callback(new Error(response.statusMessage)); + } else { + callback(null, {data: body}); + } + }); + } + }); + + var timedOut = false; + var watchdog = setTimeout(function () { + timedOut = true; + map.dumpDebugLogs(); + callback(new Error('timed out after 20 seconds')); + }, 20000); + + options.center = style.center; + options.zoom = style.zoom; + options.bearing = style.bearing; + options.pitch = style.pitch; + options.debug = { + tileBorders: options.debug, + collision: options.collisionDebug + }; + + map.load(style); + + map.render(options, function (err, pixels) { + var results = options.queryGeometry ? + map.queryRenderedFeatures(options.queryGeometry) : + []; + map.release(); + if (timedOut) return; + clearTimeout(watchdog); + callback(err, pixels, results.map(prepareFeatures)); + }); + + function prepareFeatures(json) { + var r = JSON.parse(json); + delete r.layer; + r.geometry = null; + return r; + } +}; -- cgit v1.2.1