summaryrefslogtreecommitdiff
path: root/platform/node/test/suite_implementation.js
diff options
context:
space:
mode:
Diffstat (limited to 'platform/node/test/suite_implementation.js')
-rw-r--r--platform/node/test/suite_implementation.js39
1 files changed, 31 insertions, 8 deletions
diff --git a/platform/node/test/suite_implementation.js b/platform/node/test/suite_implementation.js
index da226a68f4..4369c81ffc 100644
--- a/platform/node/test/suite_implementation.js
+++ b/platform/node/test/suite_implementation.js
@@ -41,16 +41,39 @@ module.exports = function (style, options, callback) {
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));
+ applyOperations(options.operations, function() {
+ 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 applyOperations(operations, callback) {
+ var operation = operations && operations[0];
+ if (!operations || operations.length === 0) {
+ callback();
+
+ } else if (operation[0] === 'wait') {
+ var wait = function() {
+ if (map.loaded()) {
+ applyOperations(operations.slice(1), callback);
+ } else {
+ map.render(options, wait);
+ }
+ };
+ wait();
+
+ } else {
+ map[operation[0]].apply(map, operation.slice(1));
+ applyOperations(operations.slice(1), callback);
+ }
+ }
+
function prepareFeatures(r) {
delete r.layer;
return r;