diff options
author | John Firebaugh <john.firebaugh@gmail.com> | 2015-09-02 16:53:41 -0700 |
---|---|---|
committer | John Firebaugh <john.firebaugh@gmail.com> | 2015-09-04 10:52:14 -0700 |
commit | 15a66b8989645b702d207d96f6693ea3ddd93bdc (patch) | |
tree | 8f60f1e62f54a8a3afce280ddc48a1a3bef5da70 /platform/node/test/js | |
parent | e49ef97a500d7c0afa5bf55d311dc5239ccddd2a (diff) | |
download | qtlocation-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.js | 82 | ||||
-rw-r--r-- | platform/node/test/js/gzip.test.js | 125 | ||||
-rw-r--r-- | platform/node/test/js/map.test.js | 78 |
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(); }); }); }); |