From 61fe35a74ae50920f817dd4b5e343ad909aa63d4 Mon Sep 17 00:00:00 2001 From: Ansis Brammanis Date: Mon, 8 Feb 2016 17:09:34 -0800 Subject: [PATCH] add line, fill, circle, symbol query tests --- package.json | 2 +- test/query.test.js | 73 ++---------------------------------- test/render.test.js | 55 ++------------------------- test/suite_implementation.js | 73 ++++++++++++++++++++++++++++++++++++ 4 files changed, 80 insertions(+), 123 deletions(-) create mode 100644 test/suite_implementation.js diff --git a/package.json b/package.json index f9ee97cb995..33c6807f34b 100644 --- a/package.json +++ b/package.json @@ -39,7 +39,7 @@ "eslint": "^1.5.0", "eslint-config-mourner": "^1.0.0", "istanbul": "^0.4.1", - "mapbox-gl-test-suite": "mapbox/mapbox-gl-test-suite#9dc62a59e0471196a605db265eaaa14fc7bcdf65", + "mapbox-gl-test-suite": "mapbox/mapbox-gl-test-suite#f875c1f35a7b2264220226af1f5327ae79b03339", "prova": "^2.1.2", "sinon": "^1.15.4", "st": "^1.0.0", diff --git a/test/query.test.js b/test/query.test.js index b62aadf1000..17a871220e7 100644 --- a/test/query.test.js +++ b/test/query.test.js @@ -1,8 +1,7 @@ 'use strict'; -var Map = require('../js/ui/map'); -var browser = require('../js/util/browser'); -var suite = require('mapbox-gl-test-suite').query; +var querySuite = require('mapbox-gl-test-suite').query; +var suiteImplementation = require('./suite_implementation'); var tests; @@ -10,70 +9,4 @@ if (process.argv[1] === __filename && process.argv.length > 2) { tests = process.argv.slice(2); } -suite.run('js', {tests: tests}, function(style, options, callback) { - browser.devicePixelRatio = options.pixelRatio; - - var map = new Map({ - container: { - offsetWidth: options.width, - offsetHeight: options.height, - classList: { - add: function() {} - } - }, - style: style, - classes: options.classes, - interactive: false, - attributionControl: false - }); - - map.painter.prepareBuffers = function() { - var gl = this.gl; - - if (!gl.renderbuffer) { - // Create default renderbuffer - gl.renderbuffer = gl.createRenderbuffer(); - gl.bindRenderbuffer(gl.RENDERBUFFER, gl.renderbuffer); - gl.renderbufferStorage(gl.RENDERBUFFER, gl.RGBA, gl.drawingBufferWidth, gl.drawingBufferHeight); - } - - if (!gl.stencilbuffer) { - // Create default stencilbuffer - gl.stencilbuffer = gl.createRenderbuffer(); - gl.bindRenderbuffer(gl.RENDERBUFFER, gl.stencilbuffer); - gl.renderbufferStorage(gl.RENDERBUFFER, gl.STENCIL_INDEX8, gl.drawingBufferWidth, gl.drawingBufferHeight); - } - - if (!gl.framebuffer) { - // Create frame buffer - gl.framebuffer = gl.createFramebuffer(); - } - - gl.bindFramebuffer(gl.FRAMEBUFFER, gl.framebuffer); - gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.RENDERBUFFER, gl.renderbuffer); - gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.STENCIL_ATTACHMENT, gl.RENDERBUFFER, gl.stencilbuffer); - - this.clearColor(); - }; - - map.painter.bindDefaultFramebuffer = function() { - var gl = this.gl; - gl.bindFramebuffer(gl.FRAMEBUFFER, gl.framebuffer); - }; - - map.once('load', function() { - function done(err, results) { - if (err) return callback(err); - callback(null, results.map(function (r) { - delete r.layer; - return r; - })); - } - - if (options.at) { - map.featuresAt(options.at, options, done); - } else { - map.featuresIn(options.in, options, done); - } - }); -}); +querySuite.run('js', {tests: tests}, suiteImplementation); diff --git a/test/render.test.js b/test/render.test.js index b6d2f2f9971..6995df2b533 100644 --- a/test/render.test.js +++ b/test/render.test.js @@ -1,8 +1,7 @@ 'use strict'; -var Map = require('../js/ui/map'); -var browser = require('../js/util/browser'); -var suite = require('mapbox-gl-test-suite').render; +var renderSuite = require('mapbox-gl-test-suite').render; +var suiteImplementation = require('./suite_implementation'); var tests; @@ -10,52 +9,4 @@ if (process.argv[1] === __filename && process.argv.length > 2) { tests = process.argv.slice(2); } -suite.run('js', {tests: tests}, function(style, options, callback) { - browser.devicePixelRatio = options.pixelRatio; - - var map = new Map({ - container: { - offsetWidth: options.width, - offsetHeight: options.height, - classList: { - add: function() {}, - remove: function() {} - } - }, - style: style, - classes: options.classes, - interactive: false, - attributionControl: false - }); - - if (options.debug) map.debug = true; - if (options.collisionDebug) map.collisionDebug = true; - - var gl = map.painter.gl; - - map.once('load', function() { - var w = options.width * browser.devicePixelRatio, - h = options.height * browser.devicePixelRatio; - - var pixels = new Uint8Array(w * h * 4); - gl.readPixels(0, 0, w, h, gl.RGBA, gl.UNSIGNED_BYTE, pixels); - - var data = new Buffer(pixels); - - map.remove(); - gl.destroy(); - - // Flip the scanlines. - var stride = w * 4; - var tmp = new Buffer(stride); - for (var i = 0, j = h - 1; i < j; i++, j--) { - var start = i * stride; - var end = j * stride; - data.copy(tmp, 0, start, start + stride); - data.copy(data, start, end, end + stride); - tmp.copy(data, end); - } - - callback(null, data); - }); -}); +renderSuite.run('js', {tests: tests}, suiteImplementation); diff --git a/test/suite_implementation.js b/test/suite_implementation.js new file mode 100644 index 00000000000..c56d61fc983 --- /dev/null +++ b/test/suite_implementation.js @@ -0,0 +1,73 @@ +'use strict'; + +var Map = require('../js/ui/map'); +var browser = require('../js/util/browser'); + + +module.exports = function(style, options, callback) { + browser.devicePixelRatio = options.pixelRatio; + + var map = new Map({ + container: { + offsetWidth: options.width, + offsetHeight: options.height, + classList: { + add: function() {}, + remove: function() {} + } + }, + style: style, + classes: options.classes, + interactive: false, + attributionControl: false + }); + + if (options.debug) map.debug = true; + if (options.collisionDebug) map.collisionDebug = true; + + var gl = map.painter.gl; + + map.once('load', function() { + var w = options.width * browser.devicePixelRatio, + h = options.height * browser.devicePixelRatio; + + var pixels = new Uint8Array(w * h * 4); + gl.readPixels(0, 0, w, h, gl.RGBA, gl.UNSIGNED_BYTE, pixels); + + var data = new Buffer(pixels); + + // Flip the scanlines. + var stride = w * 4; + var tmp = new Buffer(stride); + for (var i = 0, j = h - 1; i < j; i++, j--) { + var start = i * stride; + var end = j * stride; + data.copy(tmp, 0, start, start + stride); + data.copy(data, start, end, end + stride); + tmp.copy(data, end); + } + + if (options.at) { + map.featuresAt(options.at, options, done); + } else if (options.in) { + map.featuresIn(options.in, options, done); + } else { + done(null, []); + } + + function done(err, results) { + map.remove(); + gl.destroy(); + + if (err) return callback(err); + + results = results.map(function (r) { + delete r.layer; + return r; + }); + + callback(null, data, results); + } + + }); +};