summaryrefslogtreecommitdiff
path: root/platform/node/test/js
diff options
context:
space:
mode:
authorJohn Firebaugh <john.firebaugh@gmail.com>2015-09-02 16:53:41 -0700
committerJohn Firebaugh <john.firebaugh@gmail.com>2015-09-04 10:52:14 -0700
commit15a66b8989645b702d207d96f6693ea3ddd93bdc (patch)
tree8f60f1e62f54a8a3afce280ddc48a1a3bef5da70 /platform/node/test/js
parente49ef97a500d7c0afa5bf55d311dc5239ccddd2a (diff)
downloadqtlocation-mapboxgl-15a66b8989645b702d207d96f6693ea3ddd93bdc.tar.gz
Consolidate test-suite rendering harnesses (#2236)
Diffstat (limited to 'platform/node/test/js')
-rw-r--r--platform/node/test/js/consecutive.test.js82
-rw-r--r--platform/node/test/js/gzip.test.js125
-rw-r--r--platform/node/test/js/map.test.js78
3 files changed, 43 insertions, 242 deletions
diff --git a/platform/node/test/js/consecutive.test.js b/platform/node/test/js/consecutive.test.js
deleted file mode 100644
index 928ca1d837..0000000000
--- a/platform/node/test/js/consecutive.test.js
+++ /dev/null
@@ -1,82 +0,0 @@
-'use strict';
-
-/* jshint node:true */
-
-var test = require('tape');
-var mbgl = require('../../../..');
-var fs = require('fs');
-var path = require('path');
-
-var suitePath = path.join(__dirname, '../../../../test/suite');
-
-function renderTest(style, info, dir, key) {
- return function (t) {
- var completed = 0;
- var remaining = 10;
- var start = +new Date;
-
- var options = {};
- options.request = function(req) {
- fs.readFile(path.join(suitePath, decodeURIComponent(req.url)), function(err, data) {
- req.respond(err, { data: data });
- t.error(err);
- });
- };
- options.cancel = function() {};
- options.ratio = 1.0;
-
- var map = new mbgl.Map(options);
- map.load(style);
-
- function render() {
- map.render(info[key], function(err, image) {
- t.error(err);
-
- t.ok(true, 'render @ ' + ((+new Date) - start) + 'ms');
- if (++completed === remaining) {
- map.release();
- t.end();
- } else {
- render();
- }
- });
- }
-
- render();
- };
-}
-
-function rewriteLocalSchema(uri) {
- return uri.replace(/^local:\/\//, '');
-}
-
-test('Consecutive', function(t) {
- var dir = 'line-join';
- var k = 'round';
-
- var style = require(path.join(suitePath, 'tests', dir, 'style.json')),
- info = require(path.join(suitePath, 'tests', dir, 'info.json'));
-
- for (var k in style.sources) {
- var source = style.sources[k];
-
- if (source.tiles) {
- source.tiles = source.tiles.map(rewriteLocalSchema);
- }
-
- if (source.url) {
- source.url = rewriteLocalSchema(source.url);
- }
- }
-
- if (style.sprite) style.sprite = rewriteLocalSchema(style.sprite);
- if (style.glyphs) style.glyphs = rewriteLocalSchema(style.glyphs);
-
- style = JSON.stringify(style);
-
- for (k in info) {
- t.test(dir + ' ' + k, renderTest(style, info, dir, k));
- }
-
- t.end();
-});
diff --git a/platform/node/test/js/gzip.test.js b/platform/node/test/js/gzip.test.js
deleted file mode 100644
index 4545a18cf5..0000000000
--- a/platform/node/test/js/gzip.test.js
+++ /dev/null
@@ -1,125 +0,0 @@
-'use strict';
-
-/* jshint node: true */
-
-var test = require('tape').test;
-var mbgl = require('../../../..');
-var fs = require('fs');
-var path = require('path');
-var mkdirp = require('mkdirp');
-var http = require('http');
-var request = require('request');
-var st = require('st');
-var style = require('../fixtures/style.json');
-var PNG = require('pngjs').PNG;
-var compare = require('../compare.js');
-
-var server = http.createServer(st({ path: path.join(__dirname, '..') }));
-server.listen(0);
-
-function filePath(name) {
- return ['expected', 'actual', 'diff'].reduce(function(prev, key) {
- var dir = path.join(__dirname, '..', key, 'gzip');
- mkdirp.sync(dir);
- prev[key] = path.join(dir, name);
- return prev;
- }, {});
-}
-
-function setup(options, callback) {
- callback(new mbgl.Map(options));
-}
-
-function getOptions(gzip, t) {
- return {
- request: function(req) {
- var parts = req.url.split('.');
- var filetype = parts[parts.length - 1];
-
- request({
- url: 'http://localhost:' + server.address().port + path.join('/', req.url),
- encoding: null,
- gzip: filetype === 'pbf' ? gzip : true,
- headers: {
- 'Accept-Encoding': 'gzip'
- }
- }, function (err, res, body) {
- t.error(err);
- var response = {};
- response.data = res.body;
- req.respond(null, response);
- });
- },
- ratio: 1.0
- };
-}
-
-test('gzip', function(t) {
- t.test('success', function(t) {
- mbgl.on('message', function(msg) {
- if (msg.severity == 'ERROR') t.error(msg);
- });
-
- setup(getOptions(true, t), function(map) {
- map.load(style);
- map.render({}, function(err, data) {
- mbgl.removeAllListeners('message');
- map.release();
-
- t.error(err);
-
- var filename = filePath('success.png');
-
- var png = new PNG({
- width: data.width,
- height: data.height
- });
-
- png.data = data.pixels;
-
- if (process.env.UPDATE) {
- png.pack()
- .pipe(fs.createWriteStream(filename.expected))
- .on('finish', t.end);
- } else {
- png.pack()
- .pipe(fs.createWriteStream(filename.actual))
- .on('finish', function() {
- compare(filename.actual, filename.expected, filename.diff, t, function(err, diff) {
- t.error(err);
- t.ok(diff <= 0.01, 'actual matches expected');
- t.end();
- });
- });
- }
- });
- });
- });
-
- t.test('unhandled', function(t) {
- mbgl.once('message', function(msg) {
- if (msg.severity == 'ERROR') {
- t.ok(msg, 'emits error');
- t.equal(msg.class, 'Style');
- t.equal(msg.severity, 'ERROR');
- t.ok(msg.text.match(/pbf unknown field type exception/), 'error text matches');
- }
- });
-
- setup(getOptions(false, t), function(map) {
- map.load(style);
- map.render({}, function(err, data) {
- map.release();
-
- t.ok(err, 'returns error');
- t.ok(err.message.match(/Failed to parse/), 'error text matches');
-
- t.end();
- });
- });
- });
-
- t.test('teardown', function(t) {
- server.close(t.end);
- });
-});
diff --git a/platform/node/test/js/map.test.js b/platform/node/test/js/map.test.js
index 09870abaaa..c4e3416322 100644
--- a/platform/node/test/js/map.test.js
+++ b/platform/node/test/js/map.test.js
@@ -1,24 +1,10 @@
'use strict';
-/* jshint node: true */
-
var test = require('tape');
var mbgl = require('../../../..');
var fs = require('fs');
var path = require('path');
-var mkdirp = require('mkdirp');
var style = require('../fixtures/style.json');
-var PNG = require('pngjs').PNG;
-var compare = require('../compare.js');
-
-function filePath(name) {
- return ['expected', 'actual', 'diff'].reduce(function(prev, key) {
- var dir = path.join(__dirname, '..', key, 'map');
- mkdirp.sync(dir);
- prev[key] = path.join(dir, name);
- return prev;
- }, {});
-}
test('Map', function(t) {
t.test('must be constructed with new', function(t) {
@@ -250,31 +236,53 @@ test('Map', function(t) {
map.release();
- var filename = filePath('image.png');
+ t.ok(data.pixels);
+ t.equal(data.width, 512);
+ t.equal(data.height, 512);
+ t.end();
+ });
+ });
+
+ t.test('can be called several times in serial', function(t) {
+ var completed = 0;
+ var remaining = 10;
+ var start = +new Date;
- var png = new PNG({
- width: data.width,
- height: data.height
+ var map = new mbgl.Map(options);
+ map.load(style);
+
+ function render() {
+ map.render({}, function(err, data) {
+ t.error(err);
+
+ t.ok(true, 'render @ ' + ((+new Date) - start) + 'ms');
+ if (++completed === remaining) {
+ map.release();
+ t.end();
+ } else {
+ render();
+ }
});
+ }
+
+ render();
+ });
- png.data = data.pixels;
-
- if (process.env.UPDATE) {
- png.pack()
- .pipe(fs.createWriteStream(filename.expected))
- .on('finish', t.end);
- } else {
- png.pack()
- .pipe(fs.createWriteStream(filename.actual))
- .on('finish', function() {
- compare(filename.actual, filename.expected, filename.diff, t, function(err, diff) {
- t.error(err);
- t.ok(diff <= 0.01, 'actual matches expected');
- t.end();
- });
- });
- }
+ t.skip('throws if called in parallel', function(t) {
+ var completed = 0;
+ var remaining = 10;
+ var start = +new Date;
+
+ var map = new mbgl.Map(options);
+ map.load(style);
+
+ t.throws(function() {
+ map.render({}, function() {});
+ map.render({}, function() {});
});
+
+ map.release();
+ t.end();
});
});
});