summaryrefslogtreecommitdiff
path: root/platform/node/test
diff options
context:
space:
mode:
authorAnsis Brammanis <brammanis@gmail.com>2016-04-05 16:27:37 -0700
committerJohn Firebaugh <john.firebaugh@gmail.com>2016-04-29 12:00:24 -0700
commit61d14089e0dd742719328fd74c693bcae6274a4b (patch)
treee47265a472fe75c635a22815ddc4a0c3fa1dbf84 /platform/node/test
parent25442a77be75001665771097d8978b1191e403d9 (diff)
downloadqtlocation-mapboxgl-61d14089e0dd742719328fd74c693bcae6274a4b.tar.gz
[core] implement queryRenderedFeatures
Diffstat (limited to 'platform/node/test')
-rw-r--r--platform/node/test/query.test.js12
-rw-r--r--platform/node/test/render.test.js48
-rw-r--r--platform/node/test/suite_implementation.js60
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;
+ }
+};