diff options
author | Ansis Brammanis <brammanis@gmail.com> | 2016-04-05 16:27:37 -0700 |
---|---|---|
committer | John Firebaugh <john.firebaugh@gmail.com> | 2016-04-29 12:00:24 -0700 |
commit | 61d14089e0dd742719328fd74c693bcae6274a4b (patch) | |
tree | e47265a472fe75c635a22815ddc4a0c3fa1dbf84 /platform/node/test | |
parent | 25442a77be75001665771097d8978b1191e403d9 (diff) | |
download | qtlocation-mapboxgl-61d14089e0dd742719328fd74c693bcae6274a4b.tar.gz |
[core] implement queryRenderedFeatures
Diffstat (limited to 'platform/node/test')
-rw-r--r-- | platform/node/test/query.test.js | 12 | ||||
-rw-r--r-- | platform/node/test/render.test.js | 48 | ||||
-rw-r--r-- | platform/node/test/suite_implementation.js | 60 |
3 files changed, 74 insertions, 46 deletions
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; + } +}; |