From 44a976eb6084565e018f232c6f92740fec09bd48 Mon Sep 17 00:00:00 2001 From: Tim Schaub Date: Sun, 25 Jun 2017 12:38:12 -0600 Subject: [PATCH 01/18] Run tests in real browsers with Karma --- package.json | 7 +- tasks/test-all.js | 71 +++++++++++++ test/karma.config.js | 99 ++++++++++++++++++ test/no-deps.js | 2 + test/spec/ol/format/kml.test.js | 2 +- .../images/zoomify}/TileGroup0/0-0-0.jpg | Bin test/spec/ol/source/zoomify.test.js | 24 ++--- 7 files changed, 191 insertions(+), 14 deletions(-) create mode 100644 tasks/test-all.js create mode 100644 test/karma.config.js create mode 100644 test/no-deps.js rename test/{zoomify-url => spec/ol/source/images/zoomify}/TileGroup0/0-0-0.jpg (100%) diff --git a/package.json b/package.json index 19c2db35c5..2ee4725af0 100644 --- a/package.json +++ b/package.json @@ -15,7 +15,8 @@ "pretest": "eslint tasks test test_rendering src examples", "lint-package": "eslint --fix build/package", "test": "node tasks/test.js", - "debug-server": "node tasks/serve-lib.js" + "debug-server": "node tasks/serve-lib.js", + "karma": "node tasks/test-all.js start test/karma.config.js" }, "main": "dist/ol.js", "repository": { @@ -61,6 +62,10 @@ "istanbul": "0.4.5", "jquery": "3.2.1", "jscodeshift": "^0.3.30", + "karma": "^1.7.0", + "karma-chrome-launcher": "^2.1.1", + "karma-mocha": "^1.3.0", + "karma-sauce-launcher": "^1.1.0", "marked": "0.3.6", "metalsmith": "2.3.0", "metalsmith-layouts": "1.8.1", diff --git a/tasks/test-all.js b/tasks/test-all.js new file mode 100644 index 0000000000..27afe7b81b --- /dev/null +++ b/tasks/test-all.js @@ -0,0 +1,71 @@ +const Server = require('karma').Server; +const closure = require('closure-util'); +const path = require('path'); +const processCliArgs = require('karma/lib/cli').process; + +/** + * Start Karma. This prepends the Karma `files` config with all library files + * sorted in dependency order. + * @param {Object} config Karma options. + * @param {Manager} manager The dependency file manager. + * @param {function(Error)} callback Called with any error. + */ +function serve(config, manager, callback) { + function exit(code) { + let error = null; + if (code) { + error = new Error(`Karma exited with ${code}`); + error.code = code; + } + callback(error); + } + const server = new Server(config, exit); + + const files = server.get('config.files'); + const dependencies = manager.getDependencies().map(script => script.path); + dependencies.reverse().forEach(filePath => { + files.unshift({ + pattern: filePath, + included: true, + served: true, + watched: true + }); + }); + + // stop goog base.js from trying to load deps.js + files.unshift({ + pattern: path.resolve(__dirname, '../test/no-deps.js'), + included: true, + served: true, + watched: false + }); + + server.start(); +} + +function main(config, callback) { + const manager = new closure.Manager({ + lib: [ + 'src/**/*.js', + 'build/ol.ext/*.js' + ] + }); + + manager.on('error', callback); + + manager.on('ready', () => { + serve(config, manager, callback); + }); +} + +if (require.main === module) { + const config = processCliArgs(); + main(config, (err, manager) => { + if (err) { + process.stderr.write(err.message, () => process.exit(1)); + return; + } else { + process.exit(0); + } + }); +} diff --git a/test/karma.config.js b/test/karma.config.js new file mode 100644 index 0000000000..dbd1943ccc --- /dev/null +++ b/test/karma.config.js @@ -0,0 +1,99 @@ +var pkg = require('../package.json'); +var path = require('path'); + +/** + * The config below is not enough to run Karma. In addition, we need to add + * all library files in dependency order. This could be done with a plugin if + * Karma supported async plugins (there may other alternatives as well). But + * for now we start Karma with the `tasks/test-all.js` script. This script + * sorts dependencies and add files to the Karma config below. + */ + +module.exports = function(karma) { + karma.set({ + frameworks: ['mocha'], + files: [ + { + pattern: path.resolve(__dirname, require.resolve('jquery/dist/jquery.js')), + watched: false + }, { + pattern: path.resolve(__dirname, require.resolve('expect.js/index.js')), + watched: false + }, { + pattern: path.resolve(__dirname, require.resolve('sinon/pkg/sinon.js')), + watched: false + }, { + pattern: path.resolve(__dirname, require.resolve('proj4/dist/proj4.js')), + watched: false + }, { + pattern: path.resolve(__dirname, './test-extensions.js') + }, { + pattern: '**/*.test.js' + }, { + pattern: '**/*', + included: false, + watched: false + } + ], + proxies: { + '/spec/': '/base/spec/' + } + }); + + if (process.env.TRAVIS) { + if (!process.env.SAUCE_USERNAME || !process.env.SAUCE_ACCESS_KEY) { + process.stderr.write('SAUCE_USERNAME or SAUCE_ACCESS_KEY not set\n'); + process.exit(1); + } + + // see https://wiki.saucelabs.com/display/DOCS/Platform+Configurator + // for platform and browserName options (Selenium API, node.js code) + var customLaunchers = { + SL_Chrome: { + base: 'SauceLabs', + browserName: 'chrome' + }, + SL_Firefox: { + base: 'SauceLabs', + browserName: 'firefox' + }, + SL_IE: { + base: 'SauceLabs', + platform: 'Windows 10', + browserName: 'internet explorer' + }, + SL_Edge: { + base: 'SauceLabs', + platform: 'Windows 10', + browserName: 'MicrosoftEdge' + }, + SL_Safari: { + base: 'SauceLabs', + platform: 'macos 10.12', + browserName: 'safari' + } + }; + karma.set({ + sauceLabs: { + testName: pkg.name + ' ' + pkg.version, + recordScreenshots: false, + connectOptions: { + port: 5757 + }, + startConnect: false, + tunnelIdentifier: process.env.TRAVIS_JOB_NUMBER, + username: process.env.SAUCE_USERNAME, + accessKey: process.env.SAUCE_ACCESS_KEY + }, + reporters: ['dots', 'saucelabs'], + captureTimeout: 240000, + browserNoActivityTimeout: 240000, + customLaunchers: customLaunchers, + browsers: Object.keys(customLaunchers) + }); + } else { + karma.set({ + browsers: ['Chrome'] + }); + } +}; diff --git a/test/no-deps.js b/test/no-deps.js new file mode 100644 index 0000000000..f870b409a7 --- /dev/null +++ b/test/no-deps.js @@ -0,0 +1,2 @@ +// TODO: get rid of this when we get rid of goog base.js +var CLOSURE_NO_DEPS = true; // eslint-disable-line diff --git a/test/spec/ol/format/kml.test.js b/test/spec/ol/format/kml.test.js index 85cf8124cf..48ac137bd9 100644 --- a/test/spec/ol/format/kml.test.js +++ b/test/spec/ol/format/kml.test.js @@ -3334,7 +3334,7 @@ describe('ol.format.KML', function() { var nl = format.readNetworkLinks(text); expect(nl).to.have.length(2); expect(nl[0].name).to.be('bar'); - expect(nl[0].href.replace(window.location.href, '')).to.be('bar/bar.kml'); + expect(nl[0].href.replace(window.location.origin, '')).to.be('/bar/bar.kml'); expect(nl[1].href).to.be('http://foo.com/foo.kml'); }); diff --git a/test/zoomify-url/TileGroup0/0-0-0.jpg b/test/spec/ol/source/images/zoomify/TileGroup0/0-0-0.jpg similarity index 100% rename from test/zoomify-url/TileGroup0/0-0-0.jpg rename to test/spec/ol/source/images/zoomify/TileGroup0/0-0-0.jpg diff --git a/test/spec/ol/source/zoomify.test.js b/test/spec/ol/source/zoomify.test.js index ea5e513e8e..aee503e965 100644 --- a/test/spec/ol/source/zoomify.test.js +++ b/test/spec/ol/source/zoomify.test.js @@ -11,7 +11,7 @@ describe('ol.source.Zoomify', function() { var w = 1024; var h = 512; var size = [w, h]; - var url = 'zoomify-url/{TileGroup}/{z}-{x}-{y}.jpg'; + var url = 'spec/ol/source/images/zoomify/{TileGroup}/{z}-{x}-{y}.jpg'; var proj = new ol.proj.Projection({ code: 'ZOOMIFY', units: 'pixels', @@ -171,27 +171,27 @@ describe('ol.source.Zoomify', function() { var source = getZoomifySource(); var tileUrlFunction = source.getTileUrlFunction(); // zoomlevel 0 - expect(tileUrlFunction([0, 0, -1])).to.eql('zoomify-url/TileGroup0/0-0-0.jpg'); + expect(tileUrlFunction([0, 0, -1])).to.eql('spec/ol/source/images/zoomify/TileGroup0/0-0-0.jpg'); // zoomlevel 1 - expect(tileUrlFunction([1, 0, -1])).to.eql('zoomify-url/TileGroup0/1-0-0.jpg'); - expect(tileUrlFunction([1, 1, -1])).to.eql('zoomify-url/TileGroup0/1-1-0.jpg'); - expect(tileUrlFunction([1, 0, -2])).to.eql('zoomify-url/TileGroup0/1-0-1.jpg'); - expect(tileUrlFunction([1, 1, -2])).to.eql('zoomify-url/TileGroup0/1-1-1.jpg'); + expect(tileUrlFunction([1, 0, -1])).to.eql('spec/ol/source/images/zoomify/TileGroup0/1-0-0.jpg'); + expect(tileUrlFunction([1, 1, -1])).to.eql('spec/ol/source/images/zoomify/TileGroup0/1-1-0.jpg'); + expect(tileUrlFunction([1, 0, -2])).to.eql('spec/ol/source/images/zoomify/TileGroup0/1-0-1.jpg'); + expect(tileUrlFunction([1, 1, -2])).to.eql('spec/ol/source/images/zoomify/TileGroup0/1-1-1.jpg'); }); it('creates an expected tileUrlFunction without template', function() { var source = new ol.source.Zoomify({ - url: 'zoomify-url/', + url: 'spec/ol/source/images/zoomify/', size: size }); var tileUrlFunction = source.getTileUrlFunction(); // zoomlevel 0 - expect(tileUrlFunction([0, 0, -1])).to.eql('zoomify-url/TileGroup0/0-0-0.jpg'); + expect(tileUrlFunction([0, 0, -1])).to.eql('spec/ol/source/images/zoomify/TileGroup0/0-0-0.jpg'); // zoomlevel 1 - expect(tileUrlFunction([1, 0, -1])).to.eql('zoomify-url/TileGroup0/1-0-0.jpg'); - expect(tileUrlFunction([1, 1, -1])).to.eql('zoomify-url/TileGroup0/1-1-0.jpg'); - expect(tileUrlFunction([1, 0, -2])).to.eql('zoomify-url/TileGroup0/1-0-1.jpg'); - expect(tileUrlFunction([1, 1, -2])).to.eql('zoomify-url/TileGroup0/1-1-1.jpg'); + expect(tileUrlFunction([1, 0, -1])).to.eql('spec/ol/source/images/zoomify/TileGroup0/1-0-0.jpg'); + expect(tileUrlFunction([1, 1, -1])).to.eql('spec/ol/source/images/zoomify/TileGroup0/1-1-0.jpg'); + expect(tileUrlFunction([1, 0, -2])).to.eql('spec/ol/source/images/zoomify/TileGroup0/1-0-1.jpg'); + expect(tileUrlFunction([1, 1, -2])).to.eql('spec/ol/source/images/zoomify/TileGroup0/1-1-1.jpg'); }); it('returns undefined if no tileCoord passed', function() { var source = getZoomifySource(); From 32c26c25248f777b941d3ac29b7369cdac2b3140 Mon Sep 17 00:00:00 2001 From: Tim Schaub Date: Mon, 3 Jul 2017 12:24:40 -0600 Subject: [PATCH 02/18] More consistent clean up --- test/spec/ol/control/control.test.js | 6 +- test/spec/ol/control/scaleline.test.js | 18 ++- .../ol/interaction/mousewheelzoom.test.js | 126 ++++++++++-------- test/test-extensions.js | 4 +- 4 files changed, 83 insertions(+), 71 deletions(-) diff --git a/test/spec/ol/control/control.test.js b/test/spec/ol/control/control.test.js index 3b3b65d103..655b64d6c8 100644 --- a/test/spec/ol/control/control.test.js +++ b/test/spec/ol/control/control.test.js @@ -16,7 +16,9 @@ describe('ol.control.Control', function() { }); afterEach(function() { - map.dispose(); + disposeMap(map); + map = null; + control = null; }); describe('dispose', function() { @@ -36,6 +38,7 @@ describe('ol.control.Control\'s target', function() { var ctrl = new ol.control.Control({target: 'mycontrol'}); expect(ctrl.target_.id).to.equal('mycontrol'); ctrl.dispose(); + target.parentNode.removeChild(target); }); it('accepts element for target', function() { var target = document.createElement('div'); @@ -44,6 +47,7 @@ describe('ol.control.Control\'s target', function() { var ctrl = new ol.control.Control({target: target}); expect(ctrl.target_.id).to.equal('mycontrol'); ctrl.dispose(); + target.parentNode.removeChild(target); }); it('ignores non-existing target id', function() { var ctrl = new ol.control.Control({target: 'doesnotexist'}); diff --git a/test/spec/ol/control/scaleline.test.js b/test/spec/ol/control/scaleline.test.js index 709a20a428..b2642defb7 100644 --- a/test/spec/ol/control/scaleline.test.js +++ b/test/spec/ol/control/scaleline.test.js @@ -6,19 +6,17 @@ goog.require('ol.control.ScaleLine'); goog.require('ol.proj'); describe('ol.control.ScaleLine', function() { - var mapDiv; var map; beforeEach(function() { - mapDiv = document.createElement('div'); - document.body.appendChild(mapDiv); + var target = document.createElement('div'); + document.body.appendChild(target); map = new ol.Map({ - target: mapDiv + target: target }); }); afterEach(function() { - map.dispose(); - mapDiv.parentNode.removeChild(mapDiv); - mapDiv = null; + disposeMap(map); + map = null; }); describe('constructor', function() { @@ -34,7 +32,7 @@ describe('ol.control.ScaleLine', function() { it('defaults to "ol-scale-line"', function() { var ctrl = new ol.control.ScaleLine(); ctrl.setMap(map); - var element = document.querySelector('.ol-scale-line', mapDiv); + var element = document.querySelector('.ol-scale-line', map.getTarget()); expect(element).to.not.be(null); expect(element).to.be.a(HTMLDivElement); }); @@ -45,10 +43,10 @@ describe('ol.control.ScaleLine', function() { ctrl.setMap(map); // check that the default was not chosen - var element1 = document.querySelector('.ol-scale-line', mapDiv); + var element1 = document.querySelector('.ol-scale-line', map.getTarget()); expect(element1).to.be(null); // check if the configured classname was chosen - var element2 = document.querySelector('.humpty-dumpty', mapDiv); + var element2 = document.querySelector('.humpty-dumpty', map.getTarget()); expect(element2).to.not.be(null); expect(element2).to.be.a(HTMLDivElement); }); diff --git a/test/spec/ol/interaction/mousewheelzoom.test.js b/test/spec/ol/interaction/mousewheelzoom.test.js index 9de7463337..a477a1ad86 100644 --- a/test/spec/ol/interaction/mousewheelzoom.test.js +++ b/test/spec/ol/interaction/mousewheelzoom.test.js @@ -35,15 +35,16 @@ describe('ol.interaction.MouseWheelZoom', function() { describe('timeout duration', function() { var clock; beforeEach(function() { + sinon.spy(ol.interaction.Interaction, 'zoomByDelta'); clock = sinon.useFakeTimers(); }); afterEach(function() { clock.restore(); + ol.interaction.Interaction.zoomByDelta.restore(); }); it('works with the defaut value', function(done) { - var spy = sinon.spy(ol.interaction.Interaction, 'zoomByDelta'); var event = new ol.MapBrowserEvent('mousewheel', map, { type: 'mousewheel', target: map.getViewport(), @@ -52,11 +53,10 @@ describe('ol.interaction.MouseWheelZoom', function() { map.handleMapBrowserEvent(event); clock.tick(50); // default timeout is 80 ms, not called yet - expect(spy.called).to.be(false); + expect(ol.interaction.Interaction.zoomByDelta.called).to.be(false); clock.tick(30); - expect(spy.called).to.be(true); + expect(ol.interaction.Interaction.zoomByDelta.called).to.be(true); - ol.interaction.Interaction.zoomByDelta.restore(); done(); }); @@ -102,66 +102,74 @@ describe('ol.interaction.MouseWheelZoom', function() { map.handleMapBrowserEvent(event); }); - it('works in DOM_DELTA_LINE mode (wheel)', function(done) { - var spy = sinon.spy(ol.interaction.Interaction, 'zoomByDelta'); - map.once('postrender', function() { - expect(spy.getCall(0).args[1]).to.be(-1); - expect(spy.getCall(0).args[2]).to.eql([0, 0]); + describe('spying on ol.interaction.Interaction.zoomByDelta', function() { + beforeEach(function() { + sinon.spy(ol.interaction.Interaction, 'zoomByDelta'); + }); + afterEach(function() { ol.interaction.Interaction.zoomByDelta.restore(); - done(); }); - var event = new ol.MapBrowserEvent('wheel', map, { - type: 'wheel', - deltaMode: WheelEvent.DOM_DELTA_LINE, - deltaY: 3.714599609375, - target: map.getViewport(), - preventDefault: ol.events.Event.prototype.preventDefault + + it('works in DOM_DELTA_LINE mode (wheel)', function(done) { + map.once('postrender', function() { + var call = ol.interaction.Interaction.zoomByDelta.getCall(0); + expect(call.args[1]).to.be(-1); + expect(call.args[2]).to.eql([0, 0]); + done(); + }); + var event = new ol.MapBrowserEvent('wheel', map, { + type: 'wheel', + deltaMode: WheelEvent.DOM_DELTA_LINE, + deltaY: 3.714599609375, + target: map.getViewport(), + preventDefault: ol.events.Event.prototype.preventDefault + }); + event.coordinate = [0, 0]; + map.handleMapBrowserEvent(event); }); - event.coordinate = [0, 0]; - map.handleMapBrowserEvent(event); + + it('works on Safari (wheel)', function(done) { + var origHasSafari = ol.has.SAFARI; + ol.has.SAFARI = true; + map.once('postrender', function() { + var call = ol.interaction.Interaction.zoomByDelta.getCall(0); + expect(call.args[1]).to.be(-1); + expect(call.args[2]).to.eql([0, 0]); + ol.has.SAFARI = origHasSafari; + done(); + }); + var event = new ol.MapBrowserEvent('mousewheel', map, { + type: 'mousewheel', + wheelDeltaY: -50, + target: map.getViewport(), + preventDefault: ol.events.Event.prototype.preventDefault + }); + event.coordinate = [0, 0]; + map.handleMapBrowserEvent(event); + }); + + it('works on other browsers (wheel)', function(done) { + var origHasSafari = ol.has.SAFARI; + ol.has.SAFARI = false; + map.once('postrender', function() { + var call = ol.interaction.Interaction.zoomByDelta.getCall(0); + expect(call.args[1]).to.be(-1); + expect(call.args[2]).to.eql([0, 0]); + ol.has.SAFARI = origHasSafari; + done(); + }); + var event = new ol.MapBrowserEvent('mousewheel', map, { + type: 'mousewheel', + wheelDeltaY: -120, + target: map.getViewport(), + preventDefault: ol.events.Event.prototype.preventDefault + }); + event.coordinate = [0, 0]; + map.handleMapBrowserEvent(event); + }); + }); - it('works on Safari (wheel)', function(done) { - var origHasSafari = ol.has.SAFARI; - ol.has.SAFARI = true; - var spy = sinon.spy(ol.interaction.Interaction, 'zoomByDelta'); - map.once('postrender', function() { - expect(spy.getCall(0).args[1]).to.be(-1); - expect(spy.getCall(0).args[2]).to.eql([0, 0]); - ol.interaction.Interaction.zoomByDelta.restore(); - ol.has.SAFARI = origHasSafari; - done(); - }); - var event = new ol.MapBrowserEvent('mousewheel', map, { - type: 'mousewheel', - wheelDeltaY: -50, - target: map.getViewport(), - preventDefault: ol.events.Event.prototype.preventDefault - }); - event.coordinate = [0, 0]; - map.handleMapBrowserEvent(event); - }); - - it('works on other browsers (wheel)', function(done) { - var origHasSafari = ol.has.SAFARI; - ol.has.SAFARI = false; - var spy = sinon.spy(ol.interaction.Interaction, 'zoomByDelta'); - map.once('postrender', function() { - expect(spy.getCall(0).args[1]).to.be(-1); - expect(spy.getCall(0).args[2]).to.eql([0, 0]); - ol.interaction.Interaction.zoomByDelta.restore(); - ol.has.SAFARI = origHasSafari; - done(); - }); - var event = new ol.MapBrowserEvent('mousewheel', map, { - type: 'mousewheel', - wheelDeltaY: -120, - target: map.getViewport(), - preventDefault: ol.events.Event.prototype.preventDefault - }); - event.coordinate = [0, 0]; - map.handleMapBrowserEvent(event); - }); }); }); diff --git a/test/test-extensions.js b/test/test-extensions.js index 03122b1a51..3988e14e30 100644 --- a/test/test-extensions.js +++ b/test/test-extensions.js @@ -368,8 +368,10 @@ global.disposeMap = function(map) { var target = map.getTarget(); map.setTarget(null); + if (target && target.parentNode) { + target.parentNode.removeChild(target); + } map.dispose(); - document.body.removeChild(target); }; global.assertWebGL = function(map) { From 8e91d51d7c99b60923f988f73ea75b8812f990a0 Mon Sep 17 00:00:00 2001 From: Tim Schaub Date: Mon, 3 Jul 2017 12:26:12 -0600 Subject: [PATCH 03/18] Provide Karma with updated dependencies on change --- tasks/test-all.js | 49 ++++++++++++++++++++++++++++++++++++-------- test/karma.config.js | 3 +++ 2 files changed, 43 insertions(+), 9 deletions(-) diff --git a/tasks/test-all.js b/tasks/test-all.js index 27afe7b81b..5a5ac8223e 100644 --- a/tasks/test-all.js +++ b/tasks/test-all.js @@ -3,6 +3,39 @@ const closure = require('closure-util'); const path = require('path'); const processCliArgs = require('karma/lib/cli').process; +function insertDependencies(manager, files, previousLookup) { + previousLookup = previousLookup || {}; + let firstIndex = NaN; + const original = files.filter((obj, index) => { + if (previousLookup[obj.pattern]) { + if (isNaN(firstIndex)) { + firstIndex = index; + } + return false; + } else { + return true; + } + }); + if (isNaN(firstIndex)) { + firstIndex = 0; + } + const lookup = {}; + const dependencies = manager.getDependencies().map(script => { + lookup[script.path] = true; + return { + pattern: script.path, + included: true, + served: true, + watched: false + }; + }); + original.splice.apply(original, [firstIndex, 0].concat(dependencies)); + files.length = 0; + files.push.apply(files, original); + + return lookup; +} + /** * Start Karma. This prepends the Karma `files` config with all library files * sorted in dependency order. @@ -22,15 +55,8 @@ function serve(config, manager, callback) { const server = new Server(config, exit); const files = server.get('config.files'); - const dependencies = manager.getDependencies().map(script => script.path); - dependencies.reverse().forEach(filePath => { - files.unshift({ - pattern: filePath, - included: true, - served: true, - watched: true - }); - }); + + let lookup = insertDependencies(manager, files); // stop goog base.js from trying to load deps.js files.unshift({ @@ -40,6 +66,11 @@ function serve(config, manager, callback) { watched: false }); + manager.on('update', () => { + lookup = insertDependencies(manager, files, lookup); + server.refreshFiles(); + }); + server.start(); } diff --git a/test/karma.config.js b/test/karma.config.js index dbd1943ccc..d0ac0c557f 100644 --- a/test/karma.config.js +++ b/test/karma.config.js @@ -12,6 +12,9 @@ var path = require('path'); module.exports = function(karma) { karma.set({ frameworks: ['mocha'], + client: { + runInParent: true + }, files: [ { pattern: path.resolve(__dirname, require.resolve('jquery/dist/jquery.js')), From 0dfd6da5a9b1ce4262fcee83bb5017dc354e867c Mon Sep 17 00:00:00 2001 From: Tim Schaub Date: Mon, 3 Jul 2017 13:53:01 -0600 Subject: [PATCH 04/18] Run rendering tests with the rest of the tests --- package.json | 2 +- test/.eslintrc | 14 +++- test/README.md | 23 +++++++ test/karma.config.js | 4 ++ .../spec => test/rendering}/ol/data/icon.png | Bin .../spec => test/rendering}/ol/data/me0.svg | 0 .../ol/data/tiles/192x256/5/6/9.png | Bin .../ol/data/tiles/192x256/5/7/9.png | Bin .../rendering}/ol/data/tiles/4326/0/0/0.png | Bin .../ol/data/tiles/512x256/5/3/12.png | Bin .../ol/data/tiles/mvt/14-8938-5680.vector.pbf | Bin .../ol/data/tiles/osm-512x256/5/3/12.png | Bin .../rendering}/ol/data/tiles/osm/0/0/0.png | Bin .../rendering}/ol/data/tiles/osm/5/4/12.png | Bin .../rendering}/ol/data/tiles/osm/5/5/12.png | Bin .../rendering}/ol/data/tiles/osm/5/5/13.png | Bin .../rendering}/ol/data/tiles/osm/5/6/12.png | Bin .../rendering}/ol/data/tiles/osm/5/6/13.png | Bin .../ol/data/tiles/stamen-labels/5/5/12.png | Bin .../rendering}/ol/data/tiles/wms/wms0.png | Bin .../rendering}/ol/data/tiles/wms/wms20.png | Bin .../rendering}/ol/expected/pan-canvas.png | Bin .../rendering}/ol/expected/pan-webgl.png | Bin .../rendering}/ol/expected/render-canvas.png | Bin .../ol/expected/render-linestring-bevel.png | Bin .../ol/expected/render-linestring-butt.png | Bin .../ol/expected/render-linestring.png | Bin .../rendering}/ol/expected/render-point.png | Bin .../rendering}/ol/expected/render-polygon.png | Bin .../rendering}/ol/expected/render-webgl.png | Bin .../rendering}/ol/expected/rotate-canvas.png | Bin .../rendering}/ol/expected/rotate-webgl.png | Bin .../rendering}/ol/expected/zoom-canvas.png | Bin .../rendering}/ol/expected/zoom-webgl.png | Bin .../rendering}/ol/layer/clip.test.js | 4 +- .../ol/layer/expected/192x256-canvas.png | Bin .../ol/layer/expected/192x256-webgl.png | Bin .../expected/2-layers-canvas-extent-hidpi.png | Bin .../2-layers-canvas-extent-rotate-hidpi.png | Bin .../2-layers-canvas-extent-rotate.png | Bin .../layer/expected/2-layers-canvas-extent.png | Bin .../ol/layer/expected/2-layers-canvas.png | Bin .../ol/layer/expected/2-layers-webgl.png | Bin .../ol/layer/expected/512x256-canvas.png | Bin .../ol/layer/expected/512x256-webgl.png | Bin .../ol/layer/expected/image-canvas.png | Bin .../ol/layer/expected/image-scaled.png | Bin .../ol/layer/expected/image-webgl.png | Bin .../ol/layer/expected/inverted-star.png | Bin .../ol/layer/expected/multipolygon-clip.png | Bin .../ol/layer/expected/opacity-canvas.png | Bin .../ol/layer/expected/opacity-webgl.png | Bin .../ol/layer/expected/osm-canvas.png | Bin .../ol/layer/expected/osm-webgl.png | Bin .../ol/layer/expected/render-canvas.png | Bin .../layer/expected/vector-canvas-opaque.png | Bin .../layer/expected/vector-canvas-rotated.png | Bin .../vector-canvas-simplified-fill.png | Bin .../vector-canvas-simplified-stroke.png | Bin .../expected/vector-canvas-simplified.png | Bin .../layer/expected/vector-canvas-stroke.png | Bin .../ol/layer/expected/vector-canvas.png | Bin .../expected/vectortile-canvas-hidpi.png | Bin .../vectortile-canvas-rotated-hidpi.png | Bin .../expected/vectortile-canvas-rotated.png | Bin .../ol/layer/expected/vectortile-canvas.png | Bin .../rendering}/ol/layer/image.test.js | 10 +-- .../rendering}/ol/layer/tile.test.js | 42 +++++------ .../rendering}/ol/layer/vector.test.js | 20 +++--- .../rendering}/ol/layer/vectortile.test.js | 10 +-- .../spec => test/rendering}/ol/map.test.js | 16 ++--- .../spec => test/rendering}/ol/render.test.js | 10 +-- .../ol/reproj/expected/4326-to-3857.png | Bin .../ol/reproj/expected/512x256-to-64x128.png | Bin .../ol/reproj/expected/dateline-merc-180.png | Bin .../ol/reproj/expected/dateline-pole.png | Bin .../ol/reproj/expected/image-3857-to-4326.png | Bin .../expected/image-dateline-merc-180.png | Bin .../reproj/expected/image-dateline-pole.png | Bin .../rendering}/ol/reproj/expected/osm4326.png | Bin .../rendering}/ol/reproj/expected/osm5070.png | Bin .../ol/reproj/expected/osm54009.png | Bin .../ol/reproj/expected/stitch-osm3740.png | Bin .../ol/reproj/expected/stitch-osm4326.png | Bin .../rendering}/ol/reproj/image.test.js | 6 +- .../rendering}/ol/reproj/tile.test.js | 34 ++++----- .../ol/source/expected/0_1.canvas.png | Bin .../ol/source/expected/0_1.webgl.png | Bin .../ol/source/expected/0_2.canvas.png | Bin .../ol/source/expected/0_2.webgl.png | Bin .../ol/source/expected/20_1.canvas.png | Bin .../ol/source/expected/20_1.webgl.png | Bin .../ol/source/expected/20_2.canvas.png | Bin .../ol/source/expected/20_2.webgl.png | Bin .../rendering}/ol/source/tilewms.test.js | 18 ++--- .../rendering}/ol/style/circle.test.js | 4 +- .../ol/style/expected/circle-canvas.png | Bin .../ol/style/expected/circle-webgl.png | Bin .../style/expected/icon-canvas-svg-offset.png | Bin .../expected/icon-canvas-svg-offset2.png | Bin .../style/expected/icon-canvas-svg-scale.png | Bin .../ol/style/expected/icon-canvas.png | Bin .../ol/style/expected/icon-webgl.png | Bin .../linestring-strokes-canvas-hidpi.png | Bin .../expected/linestring-strokes-canvas.png | Bin .../expected/linestring-strokes-webgl.png | Bin .../polygon-fill-and-strokes-canvas.png | Bin .../polygon-fill-and-strokes-webgl.png | Bin .../polygon-pattern-gradient-canvas.png | Bin .../expected/polygon-types-canvas-stroke.png | Bin .../style/expected/polygon-types-canvas.png | Bin .../expected/polygon-types-webgl-stroke.png | Bin .../ol/style/expected/polygon-types-webgl.png | Bin .../style/expected/polygon-zindex-canvas.png | Bin .../style/expected/polygon-zindex-webgl.png | Bin .../regularshape-canvas-default-style.png | Bin .../ol/style/expected/regularshape-canvas.png | Bin .../regularshape-webgl-default-style.png | Bin .../ol/style/expected/regularshape-webgl.png | Bin .../ol/style/expected/text-canvas.png | Bin .../ol/style/expected/text-rotated-canvas.png | Bin .../ol/style/expected/text-rotated-webgl.png | Bin .../ol/style/expected/text-webgl.png | Bin .../rendering}/ol/style/icon.test.js | 20 +++--- .../rendering}/ol/style/linestring.test.js | 6 +- .../rendering}/ol/style/polygon.test.js | 18 ++--- .../rendering}/ol/style/regularshape.test.js | 8 +-- .../rendering}/ol/style/text.test.js | 8 +-- test/spec/.eslintrc | 12 ---- test_rendering/.eslintrc | 5 -- test_rendering/README.md | 25 ------- test_rendering/index.html | 65 ------------------ test_rendering/slimerjs-profile/prefs.js | 6 -- test_rendering/slimerjs-profile/times.json | 3 - test_rendering/spec/.eslintrc | 14 ---- test_rendering/test.js | 47 ------------- 136 files changed, 158 insertions(+), 296 deletions(-) rename {test_rendering/spec => test/rendering}/ol/data/icon.png (100%) rename {test_rendering/spec => test/rendering}/ol/data/me0.svg (100%) rename {test_rendering/spec => test/rendering}/ol/data/tiles/192x256/5/6/9.png (100%) rename {test_rendering/spec => test/rendering}/ol/data/tiles/192x256/5/7/9.png (100%) rename {test_rendering/spec => test/rendering}/ol/data/tiles/4326/0/0/0.png (100%) rename {test_rendering/spec => test/rendering}/ol/data/tiles/512x256/5/3/12.png (100%) rename {test_rendering/spec => test/rendering}/ol/data/tiles/mvt/14-8938-5680.vector.pbf (100%) rename {test_rendering/spec => test/rendering}/ol/data/tiles/osm-512x256/5/3/12.png (100%) rename {test_rendering/spec => test/rendering}/ol/data/tiles/osm/0/0/0.png (100%) rename {test_rendering/spec => test/rendering}/ol/data/tiles/osm/5/4/12.png (100%) rename {test_rendering/spec => test/rendering}/ol/data/tiles/osm/5/5/12.png (100%) rename {test_rendering/spec => test/rendering}/ol/data/tiles/osm/5/5/13.png (100%) rename {test_rendering/spec => test/rendering}/ol/data/tiles/osm/5/6/12.png (100%) rename {test_rendering/spec => test/rendering}/ol/data/tiles/osm/5/6/13.png (100%) rename {test_rendering/spec => test/rendering}/ol/data/tiles/stamen-labels/5/5/12.png (100%) rename {test_rendering/spec => test/rendering}/ol/data/tiles/wms/wms0.png (100%) rename {test_rendering/spec => test/rendering}/ol/data/tiles/wms/wms20.png (100%) rename {test_rendering/spec => test/rendering}/ol/expected/pan-canvas.png (100%) rename {test_rendering/spec => test/rendering}/ol/expected/pan-webgl.png (100%) rename {test_rendering/spec => test/rendering}/ol/expected/render-canvas.png (100%) rename {test_rendering/spec => test/rendering}/ol/expected/render-linestring-bevel.png (100%) rename {test_rendering/spec => test/rendering}/ol/expected/render-linestring-butt.png (100%) rename {test_rendering/spec => test/rendering}/ol/expected/render-linestring.png (100%) rename {test_rendering/spec => test/rendering}/ol/expected/render-point.png (100%) rename {test_rendering/spec => test/rendering}/ol/expected/render-polygon.png (100%) rename {test_rendering/spec => test/rendering}/ol/expected/render-webgl.png (100%) rename {test_rendering/spec => test/rendering}/ol/expected/rotate-canvas.png (100%) rename {test_rendering/spec => test/rendering}/ol/expected/rotate-webgl.png (100%) rename {test_rendering/spec => test/rendering}/ol/expected/zoom-canvas.png (100%) rename {test_rendering/spec => test/rendering}/ol/expected/zoom-webgl.png (100%) rename {test_rendering/spec => test/rendering}/ol/layer/clip.test.js (93%) rename {test_rendering/spec => test/rendering}/ol/layer/expected/192x256-canvas.png (100%) rename {test_rendering/spec => test/rendering}/ol/layer/expected/192x256-webgl.png (100%) rename {test_rendering/spec => test/rendering}/ol/layer/expected/2-layers-canvas-extent-hidpi.png (100%) rename {test_rendering/spec => test/rendering}/ol/layer/expected/2-layers-canvas-extent-rotate-hidpi.png (100%) rename {test_rendering/spec => test/rendering}/ol/layer/expected/2-layers-canvas-extent-rotate.png (100%) rename {test_rendering/spec => test/rendering}/ol/layer/expected/2-layers-canvas-extent.png (100%) rename {test_rendering/spec => test/rendering}/ol/layer/expected/2-layers-canvas.png (100%) rename {test_rendering/spec => test/rendering}/ol/layer/expected/2-layers-webgl.png (100%) rename {test_rendering/spec => test/rendering}/ol/layer/expected/512x256-canvas.png (100%) rename {test_rendering/spec => test/rendering}/ol/layer/expected/512x256-webgl.png (100%) rename {test_rendering/spec => test/rendering}/ol/layer/expected/image-canvas.png (100%) rename {test_rendering/spec => test/rendering}/ol/layer/expected/image-scaled.png (100%) rename {test_rendering/spec => test/rendering}/ol/layer/expected/image-webgl.png (100%) rename {test_rendering/spec => test/rendering}/ol/layer/expected/inverted-star.png (100%) rename {test_rendering/spec => test/rendering}/ol/layer/expected/multipolygon-clip.png (100%) rename {test_rendering/spec => test/rendering}/ol/layer/expected/opacity-canvas.png (100%) rename {test_rendering/spec => test/rendering}/ol/layer/expected/opacity-webgl.png (100%) rename {test_rendering/spec => test/rendering}/ol/layer/expected/osm-canvas.png (100%) rename {test_rendering/spec => test/rendering}/ol/layer/expected/osm-webgl.png (100%) rename {test_rendering/spec => test/rendering}/ol/layer/expected/render-canvas.png (100%) rename {test_rendering/spec => test/rendering}/ol/layer/expected/vector-canvas-opaque.png (100%) rename {test_rendering/spec => test/rendering}/ol/layer/expected/vector-canvas-rotated.png (100%) rename {test_rendering/spec => test/rendering}/ol/layer/expected/vector-canvas-simplified-fill.png (100%) rename {test_rendering/spec => test/rendering}/ol/layer/expected/vector-canvas-simplified-stroke.png (100%) rename {test_rendering/spec => test/rendering}/ol/layer/expected/vector-canvas-simplified.png (100%) rename {test_rendering/spec => test/rendering}/ol/layer/expected/vector-canvas-stroke.png (100%) rename {test_rendering/spec => test/rendering}/ol/layer/expected/vector-canvas.png (100%) rename {test_rendering/spec => test/rendering}/ol/layer/expected/vectortile-canvas-hidpi.png (100%) rename {test_rendering/spec => test/rendering}/ol/layer/expected/vectortile-canvas-rotated-hidpi.png (100%) rename {test_rendering/spec => test/rendering}/ol/layer/expected/vectortile-canvas-rotated.png (100%) rename {test_rendering/spec => test/rendering}/ol/layer/expected/vectortile-canvas.png (100%) rename {test_rendering/spec => test/rendering}/ol/layer/image.test.js (88%) rename {test_rendering/spec => test/rendering}/ol/layer/tile.test.js (83%) rename {test_rendering/spec => test/rendering}/ol/layer/vector.test.js (93%) rename {test_rendering/spec => test/rendering}/ol/layer/vectortile.test.js (85%) rename {test_rendering/spec => test/rendering}/ol/map.test.js (85%) rename {test_rendering/spec => test/rendering}/ol/render.test.js (92%) rename {test_rendering/spec => test/rendering}/ol/reproj/expected/4326-to-3857.png (100%) rename {test_rendering/spec => test/rendering}/ol/reproj/expected/512x256-to-64x128.png (100%) rename {test_rendering/spec => test/rendering}/ol/reproj/expected/dateline-merc-180.png (100%) rename {test_rendering/spec => test/rendering}/ol/reproj/expected/dateline-pole.png (100%) rename {test_rendering/spec => test/rendering}/ol/reproj/expected/image-3857-to-4326.png (100%) rename {test_rendering/spec => test/rendering}/ol/reproj/expected/image-dateline-merc-180.png (100%) rename {test_rendering/spec => test/rendering}/ol/reproj/expected/image-dateline-pole.png (100%) rename {test_rendering/spec => test/rendering}/ol/reproj/expected/osm4326.png (100%) rename {test_rendering/spec => test/rendering}/ol/reproj/expected/osm5070.png (100%) rename {test_rendering/spec => test/rendering}/ol/reproj/expected/osm54009.png (100%) rename {test_rendering/spec => test/rendering}/ol/reproj/expected/stitch-osm3740.png (100%) rename {test_rendering/spec => test/rendering}/ol/reproj/expected/stitch-osm4326.png (100%) rename {test_rendering/spec => test/rendering}/ol/reproj/image.test.js (90%) rename {test_rendering/spec => test/rendering}/ol/reproj/tile.test.js (83%) rename {test_rendering/spec => test/rendering}/ol/source/expected/0_1.canvas.png (100%) rename {test_rendering/spec => test/rendering}/ol/source/expected/0_1.webgl.png (100%) rename {test_rendering/spec => test/rendering}/ol/source/expected/0_2.canvas.png (100%) rename {test_rendering/spec => test/rendering}/ol/source/expected/0_2.webgl.png (100%) rename {test_rendering/spec => test/rendering}/ol/source/expected/20_1.canvas.png (100%) rename {test_rendering/spec => test/rendering}/ol/source/expected/20_1.webgl.png (100%) rename {test_rendering/spec => test/rendering}/ol/source/expected/20_2.canvas.png (100%) rename {test_rendering/spec => test/rendering}/ol/source/expected/20_2.webgl.png (100%) rename {test_rendering/spec => test/rendering}/ol/source/tilewms.test.js (79%) rename {test_rendering/spec => test/rendering}/ol/style/circle.test.js (97%) rename {test_rendering/spec => test/rendering}/ol/style/expected/circle-canvas.png (100%) rename {test_rendering/spec => test/rendering}/ol/style/expected/circle-webgl.png (100%) rename {test_rendering/spec => test/rendering}/ol/style/expected/icon-canvas-svg-offset.png (100%) rename {test_rendering/spec => test/rendering}/ol/style/expected/icon-canvas-svg-offset2.png (100%) rename {test_rendering/spec => test/rendering}/ol/style/expected/icon-canvas-svg-scale.png (100%) rename {test_rendering/spec => test/rendering}/ol/style/expected/icon-canvas.png (100%) rename {test_rendering/spec => test/rendering}/ol/style/expected/icon-webgl.png (100%) rename {test_rendering/spec => test/rendering}/ol/style/expected/linestring-strokes-canvas-hidpi.png (100%) rename {test_rendering/spec => test/rendering}/ol/style/expected/linestring-strokes-canvas.png (100%) rename {test_rendering/spec => test/rendering}/ol/style/expected/linestring-strokes-webgl.png (100%) rename {test_rendering/spec => test/rendering}/ol/style/expected/polygon-fill-and-strokes-canvas.png (100%) rename {test_rendering/spec => test/rendering}/ol/style/expected/polygon-fill-and-strokes-webgl.png (100%) rename {test_rendering/spec => test/rendering}/ol/style/expected/polygon-pattern-gradient-canvas.png (100%) rename {test_rendering/spec => test/rendering}/ol/style/expected/polygon-types-canvas-stroke.png (100%) rename {test_rendering/spec => test/rendering}/ol/style/expected/polygon-types-canvas.png (100%) rename {test_rendering/spec => test/rendering}/ol/style/expected/polygon-types-webgl-stroke.png (100%) rename {test_rendering/spec => test/rendering}/ol/style/expected/polygon-types-webgl.png (100%) rename {test_rendering/spec => test/rendering}/ol/style/expected/polygon-zindex-canvas.png (100%) rename {test_rendering/spec => test/rendering}/ol/style/expected/polygon-zindex-webgl.png (100%) rename {test_rendering/spec => test/rendering}/ol/style/expected/regularshape-canvas-default-style.png (100%) rename {test_rendering/spec => test/rendering}/ol/style/expected/regularshape-canvas.png (100%) rename {test_rendering/spec => test/rendering}/ol/style/expected/regularshape-webgl-default-style.png (100%) rename {test_rendering/spec => test/rendering}/ol/style/expected/regularshape-webgl.png (100%) rename {test_rendering/spec => test/rendering}/ol/style/expected/text-canvas.png (100%) rename {test_rendering/spec => test/rendering}/ol/style/expected/text-rotated-canvas.png (100%) rename {test_rendering/spec => test/rendering}/ol/style/expected/text-rotated-webgl.png (100%) rename {test_rendering/spec => test/rendering}/ol/style/expected/text-webgl.png (100%) rename {test_rendering/spec => test/rendering}/ol/style/icon.test.js (79%) rename {test_rendering/spec => test/rendering}/ol/style/linestring.test.js (93%) rename {test_rendering/spec => test/rendering}/ol/style/polygon.test.js (92%) rename {test_rendering/spec => test/rendering}/ol/style/regularshape.test.js (90%) rename {test_rendering/spec => test/rendering}/ol/style/text.test.js (88%) delete mode 100644 test/spec/.eslintrc delete mode 100644 test_rendering/.eslintrc delete mode 100644 test_rendering/README.md delete mode 100644 test_rendering/index.html delete mode 100644 test_rendering/slimerjs-profile/prefs.js delete mode 100755 test_rendering/slimerjs-profile/times.json delete mode 100644 test_rendering/spec/.eslintrc delete mode 100644 test_rendering/test.js diff --git a/package.json b/package.json index 2ee4725af0..91bec39a15 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,7 @@ "install": "node tasks/install.js", "postinstall": "closure-util update", "start": "node tasks/serve.js", - "pretest": "eslint tasks test test_rendering src examples", + "pretest": "eslint tasks test src examples", "lint-package": "eslint --fix build/package", "test": "node tasks/test.js", "debug-server": "node tasks/serve-lib.js", diff --git a/test/.eslintrc b/test/.eslintrc index 351bc6b350..5f03f0ac52 100644 --- a/test/.eslintrc +++ b/test/.eslintrc @@ -1,11 +1,23 @@ { + "env": { + "mocha": true + }, "rules": { "openlayers-internal/no-missing-requires": 0, "openlayers-internal/valid-provide": 0 }, "globals": { + "IMAGE_TOLERANCE": false, + "afterLoadText": false, + "assertWebGL": false, "createMapDiv": true, "disposeMap": true, - "resemble": true + "expect": false, + "expectResemble": false, + "proj4": false, + "resemble": false, + "resembleCanvas": false, + "sinon": false, + "where": false } } diff --git a/test/README.md b/test/README.md index dc27fdbf46..6afea658f3 100644 --- a/test/README.md +++ b/test/README.md @@ -32,3 +32,26 @@ any time one of the source or spec files changes. Tip for TDD'ers: to make PhantomJS run the test suite continuously each time a spec file is changed you can use nosier (http://pypi.python.org/pypi/nosier) and do `nosier -p test -p src "make test"`. + +# Rendering tests + +The `test/rendering` directory contains rendering tests which compare a rendered map with a +reference image using [resemble.js](http://huddle.github.io/Resemble.js/). + +To run the tests in the browser, make sure the development server is running +(`make serve`) and open the URL +[http://localhost:3000/test_rendering/index.html](http://localhost:3000/test_rendering/index.html). + +From the command-line the tests can be run with the build target `make test-rendering`. + +## Adding new tests +When creating a new test case, a reference image has to be created. By appending `?generate` +to the URL, a canvas with the rendered map will be shown on the page when calling +`expectResemble`. Then the reference image can simply be created with a right-click +and "Save image as". + +It is recommended to only run a single test case when generating the reference image. + +## Image difference +When a test fails, an image showing the difference between the reference image and the +rendered map can be displayed by appending `?showdiff` to the URL. diff --git a/test/karma.config.js b/test/karma.config.js index d0ac0c557f..739d466bb0 100644 --- a/test/karma.config.js +++ b/test/karma.config.js @@ -28,6 +28,9 @@ module.exports = function(karma) { }, { pattern: path.resolve(__dirname, require.resolve('proj4/dist/proj4.js')), watched: false + }, { + pattern: path.resolve(__dirname, require.resolve('resemblejs/resemble.js')), + watched: false }, { pattern: path.resolve(__dirname, './test-extensions.js') }, { @@ -39,6 +42,7 @@ module.exports = function(karma) { } ], proxies: { + '/rendering/': '/base/rendering/', '/spec/': '/base/spec/' } }); diff --git a/test_rendering/spec/ol/data/icon.png b/test/rendering/ol/data/icon.png similarity index 100% rename from test_rendering/spec/ol/data/icon.png rename to test/rendering/ol/data/icon.png diff --git a/test_rendering/spec/ol/data/me0.svg b/test/rendering/ol/data/me0.svg similarity index 100% rename from test_rendering/spec/ol/data/me0.svg rename to test/rendering/ol/data/me0.svg diff --git a/test_rendering/spec/ol/data/tiles/192x256/5/6/9.png b/test/rendering/ol/data/tiles/192x256/5/6/9.png similarity index 100% rename from test_rendering/spec/ol/data/tiles/192x256/5/6/9.png rename to test/rendering/ol/data/tiles/192x256/5/6/9.png diff --git a/test_rendering/spec/ol/data/tiles/192x256/5/7/9.png b/test/rendering/ol/data/tiles/192x256/5/7/9.png similarity index 100% rename from test_rendering/spec/ol/data/tiles/192x256/5/7/9.png rename to test/rendering/ol/data/tiles/192x256/5/7/9.png diff --git a/test_rendering/spec/ol/data/tiles/4326/0/0/0.png b/test/rendering/ol/data/tiles/4326/0/0/0.png similarity index 100% rename from test_rendering/spec/ol/data/tiles/4326/0/0/0.png rename to test/rendering/ol/data/tiles/4326/0/0/0.png diff --git a/test_rendering/spec/ol/data/tiles/512x256/5/3/12.png b/test/rendering/ol/data/tiles/512x256/5/3/12.png similarity index 100% rename from test_rendering/spec/ol/data/tiles/512x256/5/3/12.png rename to test/rendering/ol/data/tiles/512x256/5/3/12.png diff --git a/test_rendering/spec/ol/data/tiles/mvt/14-8938-5680.vector.pbf b/test/rendering/ol/data/tiles/mvt/14-8938-5680.vector.pbf similarity index 100% rename from test_rendering/spec/ol/data/tiles/mvt/14-8938-5680.vector.pbf rename to test/rendering/ol/data/tiles/mvt/14-8938-5680.vector.pbf diff --git a/test_rendering/spec/ol/data/tiles/osm-512x256/5/3/12.png b/test/rendering/ol/data/tiles/osm-512x256/5/3/12.png similarity index 100% rename from test_rendering/spec/ol/data/tiles/osm-512x256/5/3/12.png rename to test/rendering/ol/data/tiles/osm-512x256/5/3/12.png diff --git a/test_rendering/spec/ol/data/tiles/osm/0/0/0.png b/test/rendering/ol/data/tiles/osm/0/0/0.png similarity index 100% rename from test_rendering/spec/ol/data/tiles/osm/0/0/0.png rename to test/rendering/ol/data/tiles/osm/0/0/0.png diff --git a/test_rendering/spec/ol/data/tiles/osm/5/4/12.png b/test/rendering/ol/data/tiles/osm/5/4/12.png similarity index 100% rename from test_rendering/spec/ol/data/tiles/osm/5/4/12.png rename to test/rendering/ol/data/tiles/osm/5/4/12.png diff --git a/test_rendering/spec/ol/data/tiles/osm/5/5/12.png b/test/rendering/ol/data/tiles/osm/5/5/12.png similarity index 100% rename from test_rendering/spec/ol/data/tiles/osm/5/5/12.png rename to test/rendering/ol/data/tiles/osm/5/5/12.png diff --git a/test_rendering/spec/ol/data/tiles/osm/5/5/13.png b/test/rendering/ol/data/tiles/osm/5/5/13.png similarity index 100% rename from test_rendering/spec/ol/data/tiles/osm/5/5/13.png rename to test/rendering/ol/data/tiles/osm/5/5/13.png diff --git a/test_rendering/spec/ol/data/tiles/osm/5/6/12.png b/test/rendering/ol/data/tiles/osm/5/6/12.png similarity index 100% rename from test_rendering/spec/ol/data/tiles/osm/5/6/12.png rename to test/rendering/ol/data/tiles/osm/5/6/12.png diff --git a/test_rendering/spec/ol/data/tiles/osm/5/6/13.png b/test/rendering/ol/data/tiles/osm/5/6/13.png similarity index 100% rename from test_rendering/spec/ol/data/tiles/osm/5/6/13.png rename to test/rendering/ol/data/tiles/osm/5/6/13.png diff --git a/test_rendering/spec/ol/data/tiles/stamen-labels/5/5/12.png b/test/rendering/ol/data/tiles/stamen-labels/5/5/12.png similarity index 100% rename from test_rendering/spec/ol/data/tiles/stamen-labels/5/5/12.png rename to test/rendering/ol/data/tiles/stamen-labels/5/5/12.png diff --git a/test_rendering/spec/ol/data/tiles/wms/wms0.png b/test/rendering/ol/data/tiles/wms/wms0.png similarity index 100% rename from test_rendering/spec/ol/data/tiles/wms/wms0.png rename to test/rendering/ol/data/tiles/wms/wms0.png diff --git a/test_rendering/spec/ol/data/tiles/wms/wms20.png b/test/rendering/ol/data/tiles/wms/wms20.png similarity index 100% rename from test_rendering/spec/ol/data/tiles/wms/wms20.png rename to test/rendering/ol/data/tiles/wms/wms20.png diff --git a/test_rendering/spec/ol/expected/pan-canvas.png b/test/rendering/ol/expected/pan-canvas.png similarity index 100% rename from test_rendering/spec/ol/expected/pan-canvas.png rename to test/rendering/ol/expected/pan-canvas.png diff --git a/test_rendering/spec/ol/expected/pan-webgl.png b/test/rendering/ol/expected/pan-webgl.png similarity index 100% rename from test_rendering/spec/ol/expected/pan-webgl.png rename to test/rendering/ol/expected/pan-webgl.png diff --git a/test_rendering/spec/ol/expected/render-canvas.png b/test/rendering/ol/expected/render-canvas.png similarity index 100% rename from test_rendering/spec/ol/expected/render-canvas.png rename to test/rendering/ol/expected/render-canvas.png diff --git a/test_rendering/spec/ol/expected/render-linestring-bevel.png b/test/rendering/ol/expected/render-linestring-bevel.png similarity index 100% rename from test_rendering/spec/ol/expected/render-linestring-bevel.png rename to test/rendering/ol/expected/render-linestring-bevel.png diff --git a/test_rendering/spec/ol/expected/render-linestring-butt.png b/test/rendering/ol/expected/render-linestring-butt.png similarity index 100% rename from test_rendering/spec/ol/expected/render-linestring-butt.png rename to test/rendering/ol/expected/render-linestring-butt.png diff --git a/test_rendering/spec/ol/expected/render-linestring.png b/test/rendering/ol/expected/render-linestring.png similarity index 100% rename from test_rendering/spec/ol/expected/render-linestring.png rename to test/rendering/ol/expected/render-linestring.png diff --git a/test_rendering/spec/ol/expected/render-point.png b/test/rendering/ol/expected/render-point.png similarity index 100% rename from test_rendering/spec/ol/expected/render-point.png rename to test/rendering/ol/expected/render-point.png diff --git a/test_rendering/spec/ol/expected/render-polygon.png b/test/rendering/ol/expected/render-polygon.png similarity index 100% rename from test_rendering/spec/ol/expected/render-polygon.png rename to test/rendering/ol/expected/render-polygon.png diff --git a/test_rendering/spec/ol/expected/render-webgl.png b/test/rendering/ol/expected/render-webgl.png similarity index 100% rename from test_rendering/spec/ol/expected/render-webgl.png rename to test/rendering/ol/expected/render-webgl.png diff --git a/test_rendering/spec/ol/expected/rotate-canvas.png b/test/rendering/ol/expected/rotate-canvas.png similarity index 100% rename from test_rendering/spec/ol/expected/rotate-canvas.png rename to test/rendering/ol/expected/rotate-canvas.png diff --git a/test_rendering/spec/ol/expected/rotate-webgl.png b/test/rendering/ol/expected/rotate-webgl.png similarity index 100% rename from test_rendering/spec/ol/expected/rotate-webgl.png rename to test/rendering/ol/expected/rotate-webgl.png diff --git a/test_rendering/spec/ol/expected/zoom-canvas.png b/test/rendering/ol/expected/zoom-canvas.png similarity index 100% rename from test_rendering/spec/ol/expected/zoom-canvas.png rename to test/rendering/ol/expected/zoom-canvas.png diff --git a/test_rendering/spec/ol/expected/zoom-webgl.png b/test/rendering/ol/expected/zoom-webgl.png similarity index 100% rename from test_rendering/spec/ol/expected/zoom-webgl.png rename to test/rendering/ol/expected/zoom-webgl.png diff --git a/test_rendering/spec/ol/layer/clip.test.js b/test/rendering/ol/layer/clip.test.js similarity index 93% rename from test_rendering/spec/ol/layer/clip.test.js rename to test/rendering/ol/layer/clip.test.js index baa3a5e00f..bcbb48f8e8 100644 --- a/test_rendering/spec/ol/layer/clip.test.js +++ b/test/rendering/ol/layer/clip.test.js @@ -57,7 +57,7 @@ describe('layer clipping', function() { it('clips to all parts of the MultiPolygon', function(done) { var source = new ol.source.XYZ({ - url: 'spec/ol/data/tiles/osm/{z}/{x}/{y}.png' + url: 'rendering/ol/data/tiles/osm/{z}/{x}/{y}.png' }); var layer = new ol.layer.Tile({ @@ -100,7 +100,7 @@ describe('layer clipping', function() { if (err) { return done(err); } - expectResemble(map, 'spec/ol/layer/expected/multipolygon-clip.png', IMAGE_TOLERANCE, done); + expectResemble(map, 'rendering/ol/layer/expected/multipolygon-clip.png', IMAGE_TOLERANCE, done); }); map.addLayer(layer); diff --git a/test_rendering/spec/ol/layer/expected/192x256-canvas.png b/test/rendering/ol/layer/expected/192x256-canvas.png similarity index 100% rename from test_rendering/spec/ol/layer/expected/192x256-canvas.png rename to test/rendering/ol/layer/expected/192x256-canvas.png diff --git a/test_rendering/spec/ol/layer/expected/192x256-webgl.png b/test/rendering/ol/layer/expected/192x256-webgl.png similarity index 100% rename from test_rendering/spec/ol/layer/expected/192x256-webgl.png rename to test/rendering/ol/layer/expected/192x256-webgl.png diff --git a/test_rendering/spec/ol/layer/expected/2-layers-canvas-extent-hidpi.png b/test/rendering/ol/layer/expected/2-layers-canvas-extent-hidpi.png similarity index 100% rename from test_rendering/spec/ol/layer/expected/2-layers-canvas-extent-hidpi.png rename to test/rendering/ol/layer/expected/2-layers-canvas-extent-hidpi.png diff --git a/test_rendering/spec/ol/layer/expected/2-layers-canvas-extent-rotate-hidpi.png b/test/rendering/ol/layer/expected/2-layers-canvas-extent-rotate-hidpi.png similarity index 100% rename from test_rendering/spec/ol/layer/expected/2-layers-canvas-extent-rotate-hidpi.png rename to test/rendering/ol/layer/expected/2-layers-canvas-extent-rotate-hidpi.png diff --git a/test_rendering/spec/ol/layer/expected/2-layers-canvas-extent-rotate.png b/test/rendering/ol/layer/expected/2-layers-canvas-extent-rotate.png similarity index 100% rename from test_rendering/spec/ol/layer/expected/2-layers-canvas-extent-rotate.png rename to test/rendering/ol/layer/expected/2-layers-canvas-extent-rotate.png diff --git a/test_rendering/spec/ol/layer/expected/2-layers-canvas-extent.png b/test/rendering/ol/layer/expected/2-layers-canvas-extent.png similarity index 100% rename from test_rendering/spec/ol/layer/expected/2-layers-canvas-extent.png rename to test/rendering/ol/layer/expected/2-layers-canvas-extent.png diff --git a/test_rendering/spec/ol/layer/expected/2-layers-canvas.png b/test/rendering/ol/layer/expected/2-layers-canvas.png similarity index 100% rename from test_rendering/spec/ol/layer/expected/2-layers-canvas.png rename to test/rendering/ol/layer/expected/2-layers-canvas.png diff --git a/test_rendering/spec/ol/layer/expected/2-layers-webgl.png b/test/rendering/ol/layer/expected/2-layers-webgl.png similarity index 100% rename from test_rendering/spec/ol/layer/expected/2-layers-webgl.png rename to test/rendering/ol/layer/expected/2-layers-webgl.png diff --git a/test_rendering/spec/ol/layer/expected/512x256-canvas.png b/test/rendering/ol/layer/expected/512x256-canvas.png similarity index 100% rename from test_rendering/spec/ol/layer/expected/512x256-canvas.png rename to test/rendering/ol/layer/expected/512x256-canvas.png diff --git a/test_rendering/spec/ol/layer/expected/512x256-webgl.png b/test/rendering/ol/layer/expected/512x256-webgl.png similarity index 100% rename from test_rendering/spec/ol/layer/expected/512x256-webgl.png rename to test/rendering/ol/layer/expected/512x256-webgl.png diff --git a/test_rendering/spec/ol/layer/expected/image-canvas.png b/test/rendering/ol/layer/expected/image-canvas.png similarity index 100% rename from test_rendering/spec/ol/layer/expected/image-canvas.png rename to test/rendering/ol/layer/expected/image-canvas.png diff --git a/test_rendering/spec/ol/layer/expected/image-scaled.png b/test/rendering/ol/layer/expected/image-scaled.png similarity index 100% rename from test_rendering/spec/ol/layer/expected/image-scaled.png rename to test/rendering/ol/layer/expected/image-scaled.png diff --git a/test_rendering/spec/ol/layer/expected/image-webgl.png b/test/rendering/ol/layer/expected/image-webgl.png similarity index 100% rename from test_rendering/spec/ol/layer/expected/image-webgl.png rename to test/rendering/ol/layer/expected/image-webgl.png diff --git a/test_rendering/spec/ol/layer/expected/inverted-star.png b/test/rendering/ol/layer/expected/inverted-star.png similarity index 100% rename from test_rendering/spec/ol/layer/expected/inverted-star.png rename to test/rendering/ol/layer/expected/inverted-star.png diff --git a/test_rendering/spec/ol/layer/expected/multipolygon-clip.png b/test/rendering/ol/layer/expected/multipolygon-clip.png similarity index 100% rename from test_rendering/spec/ol/layer/expected/multipolygon-clip.png rename to test/rendering/ol/layer/expected/multipolygon-clip.png diff --git a/test_rendering/spec/ol/layer/expected/opacity-canvas.png b/test/rendering/ol/layer/expected/opacity-canvas.png similarity index 100% rename from test_rendering/spec/ol/layer/expected/opacity-canvas.png rename to test/rendering/ol/layer/expected/opacity-canvas.png diff --git a/test_rendering/spec/ol/layer/expected/opacity-webgl.png b/test/rendering/ol/layer/expected/opacity-webgl.png similarity index 100% rename from test_rendering/spec/ol/layer/expected/opacity-webgl.png rename to test/rendering/ol/layer/expected/opacity-webgl.png diff --git a/test_rendering/spec/ol/layer/expected/osm-canvas.png b/test/rendering/ol/layer/expected/osm-canvas.png similarity index 100% rename from test_rendering/spec/ol/layer/expected/osm-canvas.png rename to test/rendering/ol/layer/expected/osm-canvas.png diff --git a/test_rendering/spec/ol/layer/expected/osm-webgl.png b/test/rendering/ol/layer/expected/osm-webgl.png similarity index 100% rename from test_rendering/spec/ol/layer/expected/osm-webgl.png rename to test/rendering/ol/layer/expected/osm-webgl.png diff --git a/test_rendering/spec/ol/layer/expected/render-canvas.png b/test/rendering/ol/layer/expected/render-canvas.png similarity index 100% rename from test_rendering/spec/ol/layer/expected/render-canvas.png rename to test/rendering/ol/layer/expected/render-canvas.png diff --git a/test_rendering/spec/ol/layer/expected/vector-canvas-opaque.png b/test/rendering/ol/layer/expected/vector-canvas-opaque.png similarity index 100% rename from test_rendering/spec/ol/layer/expected/vector-canvas-opaque.png rename to test/rendering/ol/layer/expected/vector-canvas-opaque.png diff --git a/test_rendering/spec/ol/layer/expected/vector-canvas-rotated.png b/test/rendering/ol/layer/expected/vector-canvas-rotated.png similarity index 100% rename from test_rendering/spec/ol/layer/expected/vector-canvas-rotated.png rename to test/rendering/ol/layer/expected/vector-canvas-rotated.png diff --git a/test_rendering/spec/ol/layer/expected/vector-canvas-simplified-fill.png b/test/rendering/ol/layer/expected/vector-canvas-simplified-fill.png similarity index 100% rename from test_rendering/spec/ol/layer/expected/vector-canvas-simplified-fill.png rename to test/rendering/ol/layer/expected/vector-canvas-simplified-fill.png diff --git a/test_rendering/spec/ol/layer/expected/vector-canvas-simplified-stroke.png b/test/rendering/ol/layer/expected/vector-canvas-simplified-stroke.png similarity index 100% rename from test_rendering/spec/ol/layer/expected/vector-canvas-simplified-stroke.png rename to test/rendering/ol/layer/expected/vector-canvas-simplified-stroke.png diff --git a/test_rendering/spec/ol/layer/expected/vector-canvas-simplified.png b/test/rendering/ol/layer/expected/vector-canvas-simplified.png similarity index 100% rename from test_rendering/spec/ol/layer/expected/vector-canvas-simplified.png rename to test/rendering/ol/layer/expected/vector-canvas-simplified.png diff --git a/test_rendering/spec/ol/layer/expected/vector-canvas-stroke.png b/test/rendering/ol/layer/expected/vector-canvas-stroke.png similarity index 100% rename from test_rendering/spec/ol/layer/expected/vector-canvas-stroke.png rename to test/rendering/ol/layer/expected/vector-canvas-stroke.png diff --git a/test_rendering/spec/ol/layer/expected/vector-canvas.png b/test/rendering/ol/layer/expected/vector-canvas.png similarity index 100% rename from test_rendering/spec/ol/layer/expected/vector-canvas.png rename to test/rendering/ol/layer/expected/vector-canvas.png diff --git a/test_rendering/spec/ol/layer/expected/vectortile-canvas-hidpi.png b/test/rendering/ol/layer/expected/vectortile-canvas-hidpi.png similarity index 100% rename from test_rendering/spec/ol/layer/expected/vectortile-canvas-hidpi.png rename to test/rendering/ol/layer/expected/vectortile-canvas-hidpi.png diff --git a/test_rendering/spec/ol/layer/expected/vectortile-canvas-rotated-hidpi.png b/test/rendering/ol/layer/expected/vectortile-canvas-rotated-hidpi.png similarity index 100% rename from test_rendering/spec/ol/layer/expected/vectortile-canvas-rotated-hidpi.png rename to test/rendering/ol/layer/expected/vectortile-canvas-rotated-hidpi.png diff --git a/test_rendering/spec/ol/layer/expected/vectortile-canvas-rotated.png b/test/rendering/ol/layer/expected/vectortile-canvas-rotated.png similarity index 100% rename from test_rendering/spec/ol/layer/expected/vectortile-canvas-rotated.png rename to test/rendering/ol/layer/expected/vectortile-canvas-rotated.png diff --git a/test_rendering/spec/ol/layer/expected/vectortile-canvas.png b/test/rendering/ol/layer/expected/vectortile-canvas.png similarity index 100% rename from test_rendering/spec/ol/layer/expected/vectortile-canvas.png rename to test/rendering/ol/layer/expected/vectortile-canvas.png diff --git a/test_rendering/spec/ol/layer/image.test.js b/test/rendering/ol/layer/image.test.js similarity index 88% rename from test_rendering/spec/ol/layer/image.test.js rename to test/rendering/ol/layer/image.test.js index 60757d6b2d..148e523c03 100644 --- a/test_rendering/spec/ol/layer/image.test.js +++ b/test/rendering/ol/layer/image.test.js @@ -63,7 +63,7 @@ describe('ol.rendering.layer.Image', function() { beforeEach(function() { source = new ol.source.ImageStatic({ - url: 'spec/ol/data/tiles/osm/5/5/12.png', + url: 'rendering/ol/data/tiles/osm/5/5/12.png', imageExtent: ol.tilegrid.createXYZ().getTileCoordExtent( [5, 5, -12 - 1]), projection: ol.proj.get('EPSG:3857') @@ -77,7 +77,7 @@ describe('ol.rendering.layer.Image', function() { it('tests the canvas renderer', function(done) { map = createMap('canvas'); waitForImages([source], {}, function() { - expectResemble(map, 'spec/ol/layer/expected/image-canvas.png', + expectResemble(map, 'rendering/ol/layer/expected/image-canvas.png', IMAGE_TOLERANCE, done); }); }); @@ -86,7 +86,7 @@ describe('ol.rendering.layer.Image', function() { assertWebGL(); map = createMap('webgl'); waitForImages([source], {}, function() { - expectResemble(map, 'spec/ol/layer/expected/image-webgl.png', + expectResemble(map, 'rendering/ol/layer/expected/image-webgl.png', IMAGE_TOLERANCE, done); }); }); @@ -97,7 +97,7 @@ describe('ol.rendering.layer.Image', function() { beforeEach(function() { source = new ol.source.ImageStatic({ - url: 'spec/ol/data/tiles/osm/5/5/12.png', + url: 'rendering/ol/data/tiles/osm/5/5/12.png', imageExtent: ol.proj.transformExtent( [-123, 37, -122, 38], 'EPSG:4326', 'EPSG:3857') }); @@ -110,7 +110,7 @@ describe('ol.rendering.layer.Image', function() { it('renders correctly', function(done) { map = createMap('canvas'); waitForImages([source], {}, function() { - expectResemble(map, 'spec/ol/layer/expected/image-scaled.png', + expectResemble(map, 'rendering/ol/layer/expected/image-scaled.png', IMAGE_TOLERANCE, done); }); }); diff --git a/test_rendering/spec/ol/layer/tile.test.js b/test/rendering/ol/layer/tile.test.js similarity index 83% rename from test_rendering/spec/ol/layer/tile.test.js rename to test/rendering/ol/layer/tile.test.js index 2ab6e129d9..0e7f4f732c 100644 --- a/test_rendering/spec/ol/layer/tile.test.js +++ b/test/rendering/ol/layer/tile.test.js @@ -72,7 +72,7 @@ describe('ol.rendering.layer.Tile', function() { beforeEach(function() { source = new ol.source.XYZ({ - url: 'spec/ol/data/tiles/osm/{z}/{x}/{y}.png' + url: 'rendering/ol/data/tiles/osm/{z}/{x}/{y}.png' }); }); @@ -83,7 +83,7 @@ describe('ol.rendering.layer.Tile', function() { it('tests the canvas renderer', function(done) { map = createMap('canvas'); waitForTiles([source], {}, function() { - expectResemble(map, 'spec/ol/layer/expected/osm-canvas.png', + expectResemble(map, 'rendering/ol/layer/expected/osm-canvas.png', IMAGE_TOLERANCE, done); }); }); @@ -92,7 +92,7 @@ describe('ol.rendering.layer.Tile', function() { assertWebGL(); map = createMap('webgl'); waitForTiles([source], {}, function() { - expectResemble(map, 'spec/ol/layer/expected/osm-webgl.png', + expectResemble(map, 'rendering/ol/layer/expected/osm-webgl.png', IMAGE_TOLERANCE, done); }); }); @@ -103,10 +103,10 @@ describe('ol.rendering.layer.Tile', function() { beforeEach(function() { source1 = new ol.source.XYZ({ - url: 'spec/ol/data/tiles/osm/{z}/{x}/{y}.png' + url: 'rendering/ol/data/tiles/osm/{z}/{x}/{y}.png' }); source2 = new ol.source.XYZ({ - url: 'spec/ol/data/tiles/stamen-labels/{z}/{x}/{y}.png' + url: 'rendering/ol/data/tiles/stamen-labels/{z}/{x}/{y}.png' }); }); @@ -117,7 +117,7 @@ describe('ol.rendering.layer.Tile', function() { it('tests the canvas renderer', function(done) { map = createMap('canvas'); waitForTiles([source1, source2], {}, function() { - expectResemble(map, 'spec/ol/layer/expected/2-layers-canvas.png', + expectResemble(map, 'rendering/ol/layer/expected/2-layers-canvas.png', IMAGE_TOLERANCE, done); }); }); @@ -126,7 +126,7 @@ describe('ol.rendering.layer.Tile', function() { assertWebGL(); map = createMap('webgl'); waitForTiles([source1, source2], {}, function() { - expectResemble(map, 'spec/ol/layer/expected/2-layers-webgl.png', + expectResemble(map, 'rendering/ol/layer/expected/2-layers-webgl.png', IMAGE_TOLERANCE, done); }); }); @@ -141,7 +141,7 @@ describe('ol.rendering.layer.Tile', function() { it('tests canvas layer extent clipping', function(done) { map = createMap('canvas'); waitForTiles([source1, source2], [{}, {extent: centerExtent(map)}], function() { - expectResemble(map, 'spec/ol/layer/expected/2-layers-canvas-extent.png', + expectResemble(map, 'rendering/ol/layer/expected/2-layers-canvas-extent.png', IMAGE_TOLERANCE, done); }); }); @@ -150,7 +150,7 @@ describe('ol.rendering.layer.Tile', function() { map = createMap('canvas'); map.getView().setRotation(Math.PI / 2); waitForTiles([source1, source2], [{}, {extent: centerExtent(map)}], function() { - expectResemble(map, 'spec/ol/layer/expected/2-layers-canvas-extent-rotate.png', + expectResemble(map, 'rendering/ol/layer/expected/2-layers-canvas-extent-rotate.png', IMAGE_TOLERANCE, done); }); }); @@ -158,7 +158,7 @@ describe('ol.rendering.layer.Tile', function() { it('tests canvas layer extent clipping (HiDPI)', function(done) { map = createMap('canvas', undefined, undefined, 2); waitForTiles([source1, source2], [{}, {extent: centerExtent(map)}], function() { - expectResemble(map, 'spec/ol/layer/expected/2-layers-canvas-extent-hidpi.png', + expectResemble(map, 'rendering/ol/layer/expected/2-layers-canvas-extent-hidpi.png', IMAGE_TOLERANCE, done); }); }); @@ -167,7 +167,7 @@ describe('ol.rendering.layer.Tile', function() { map = createMap('canvas', undefined, undefined, 2); map.getView().setRotation(Math.PI / 2); waitForTiles([source1, source2], [{}, {extent: centerExtent(map)}], function() { - expectResemble(map, 'spec/ol/layer/expected/2-layers-canvas-extent-rotate-hidpi.png', + expectResemble(map, 'rendering/ol/layer/expected/2-layers-canvas-extent-rotate-hidpi.png', IMAGE_TOLERANCE, done); }); }); @@ -179,7 +179,7 @@ describe('ol.rendering.layer.Tile', function() { beforeEach(function() { source = new ol.source.XYZ({ - url: 'spec/ol/data/tiles/osm/{z}/{x}/{y}.png' + url: 'rendering/ol/data/tiles/osm/{z}/{x}/{y}.png' }); }); @@ -190,7 +190,7 @@ describe('ol.rendering.layer.Tile', function() { it('tests the canvas renderer', function(done) { map = createMap('canvas'); waitForTiles([source], {opacity: 0.2}, function() { - expectResemble(map, 'spec/ol/layer/expected/opacity-canvas.png', + expectResemble(map, 'rendering/ol/layer/expected/opacity-canvas.png', IMAGE_TOLERANCE, done); }); }); @@ -199,7 +199,7 @@ describe('ol.rendering.layer.Tile', function() { assertWebGL(); map = createMap('webgl'); waitForTiles([source], {opacity: 0.2}, function() { - expectResemble(map, 'spec/ol/layer/expected/opacity-webgl.png', + expectResemble(map, 'rendering/ol/layer/expected/opacity-webgl.png', IMAGE_TOLERANCE, done); }); }); @@ -209,7 +209,7 @@ describe('ol.rendering.layer.Tile', function() { function createSource(tileSize) { return new ol.source.TileImage({ - url: 'spec/ol/data/tiles/' + tileSize + '/{z}/{x}/{y}.png', + url: 'rendering/ol/data/tiles/' + tileSize + '/{z}/{x}/{y}.png', tileGrid: ol.tilegrid.createXYZ({ tileSize: tileSize.split('x') }) @@ -224,7 +224,7 @@ describe('ol.rendering.layer.Tile', function() { var source = createSource('512x256'); map = createMap('canvas', [-10997148, 4569099]); waitForTiles([source], {}, function() { - expectResemble(map, 'spec/ol/layer/expected/512x256-canvas.png', + expectResemble(map, 'rendering/ol/layer/expected/512x256-canvas.png', IMAGE_TOLERANCE, done); }); }); @@ -234,7 +234,7 @@ describe('ol.rendering.layer.Tile', function() { var source = createSource('512x256'); map = createMap('webgl', [-10997148, 4569099]); waitForTiles([source], {}, function() { - expectResemble(map, 'spec/ol/layer/expected/512x256-webgl.png', + expectResemble(map, 'rendering/ol/layer/expected/512x256-webgl.png', IMAGE_TOLERANCE, done); }); }); @@ -244,7 +244,7 @@ describe('ol.rendering.layer.Tile', function() { map = createMap('canvas', [-11271098, 3747248], [100, 100], undefined, source.getTileGrid().getResolutions()); waitForTiles([source], {}, function() { - expectResemble(map, 'spec/ol/layer/expected/192x256-canvas.png', + expectResemble(map, 'rendering/ol/layer/expected/192x256-canvas.png', IMAGE_TOLERANCE, done); }); }); @@ -255,7 +255,7 @@ describe('ol.rendering.layer.Tile', function() { map = createMap('webgl', [-11271098, 3747248], [100, 100], undefined, source.getTileGrid().getResolutions()); waitForTiles([source], {}, function() { - expectResemble(map, 'spec/ol/layer/expected/192x256-webgl.png', + expectResemble(map, 'rendering/ol/layer/expected/192x256-webgl.png', IMAGE_TOLERANCE, done); }); }); @@ -266,7 +266,7 @@ describe('ol.rendering.layer.Tile', function() { beforeEach(function() { source = new ol.source.XYZ({ - url: 'spec/ol/data/tiles/osm/{z}/{x}/{y}.png' + url: 'rendering/ol/data/tiles/osm/{z}/{x}/{y}.png' }); onAddLayer = function(evt) { evt.element.on('render', function(e) { @@ -290,7 +290,7 @@ describe('ol.rendering.layer.Tile', function() { map = createMap('canvas', undefined, [100, 100]); map.getLayers().on('add', onAddLayer); waitForTiles([source], {}, function() { - expectResemble(map, 'spec/ol/layer/expected/render-canvas.png', + expectResemble(map, 'rendering/ol/layer/expected/render-canvas.png', IMAGE_TOLERANCE, done); }); }); diff --git a/test_rendering/spec/ol/layer/vector.test.js b/test/rendering/ol/layer/vector.test.js similarity index 93% rename from test_rendering/spec/ol/layer/vector.test.js rename to test/rendering/ol/layer/vector.test.js index 356c2bd3b8..b6488429b0 100644 --- a/test_rendering/spec/ol/layer/vector.test.js +++ b/test/rendering/ol/layer/vector.test.js @@ -92,7 +92,7 @@ describe('ol.rendering.layer.Vector', function() { source: source })); map.once('postrender', function() { - expectResemble(map, 'spec/ol/layer/expected/vector-canvas.png', + expectResemble(map, 'rendering/ol/layer/expected/vector-canvas.png', 17, done); }); }); @@ -151,7 +151,7 @@ describe('ol.rendering.layer.Vector', function() { }) })); map.once('postrender', function() { - expectResemble(map, 'spec/ol/layer/expected/vector-canvas-rotated.png', + expectResemble(map, 'rendering/ol/layer/expected/vector-canvas-rotated.png', 1.7, done); }); }); @@ -177,7 +177,7 @@ describe('ol.rendering.layer.Vector', function() { }) })); map.once('postrender', function() { - expectResemble(map, 'spec/ol/layer/expected/vector-canvas-opaque.png', + expectResemble(map, 'rendering/ol/layer/expected/vector-canvas-opaque.png', 24.34, done); }); }); @@ -201,7 +201,7 @@ describe('ol.rendering.layer.Vector', function() { }) })); map.once('postrender', function() { - expectResemble(map, 'spec/ol/layer/expected/vector-canvas-stroke.png', + expectResemble(map, 'rendering/ol/layer/expected/vector-canvas-stroke.png', 7, done); }); }); @@ -252,9 +252,9 @@ describe('ol.rendering.layer.Vector', function() { var referenceImage = canvas.getContext('2d').getImageData(0, 0, canvas.width, canvas.height); // now render the same with `overlaps: false` layer.setSource(createSource(false)); - // result should be exactly the same as with `overlaps: true` + // result should be similar to `overlaps: true` map.once('postrender', function() { - expectResemble(map, referenceImage, 0, done); + expectResemble(map, referenceImage, 2, done); }); }); }); @@ -362,7 +362,7 @@ describe('ol.rendering.layer.Vector', function() { map.addLayer(layer); map.once('postrender', function() { - expectResemble(map, 'spec/ol/layer/expected/inverted-star.png', 1, done); + expectResemble(map, 'rendering/ol/layer/expected/inverted-star.png', 1, done); }); }); @@ -424,7 +424,7 @@ describe('ol.rendering.layer.Vector', function() { }) })); map.once('postrender', function() { - expectResemble(map, 'spec/ol/layer/expected/vector-canvas-simplified.png', + expectResemble(map, 'rendering/ol/layer/expected/vector-canvas-simplified.png', IMAGE_TOLERANCE, done); }); }); @@ -436,7 +436,7 @@ describe('ol.rendering.layer.Vector', function() { }) })); map.once('postrender', function() { - expectResemble(map, 'spec/ol/layer/expected/vector-canvas-simplified-fill.png', + expectResemble(map, 'rendering/ol/layer/expected/vector-canvas-simplified-fill.png', IMAGE_TOLERANCE, done); }); }); @@ -449,7 +449,7 @@ describe('ol.rendering.layer.Vector', function() { }) })); map.once('postrender', function() { - expectResemble(map, 'spec/ol/layer/expected/vector-canvas-simplified-stroke.png', + expectResemble(map, 'rendering/ol/layer/expected/vector-canvas-simplified-stroke.png', IMAGE_TOLERANCE, done); }); }); diff --git a/test_rendering/spec/ol/layer/vectortile.test.js b/test/rendering/ol/layer/vectortile.test.js similarity index 85% rename from test_rendering/spec/ol/layer/vectortile.test.js rename to test/rendering/ol/layer/vectortile.test.js index f4224e9cb5..7dc677e441 100644 --- a/test_rendering/spec/ol/layer/vectortile.test.js +++ b/test/rendering/ol/layer/vectortile.test.js @@ -64,7 +64,7 @@ describe('ol.rendering.layer.VectorTile', function() { format: new ol.format.MVT(), tileGrid: ol.tilegrid.createXYZ(), tilePixelRatio: 16, - url: 'spec/ol/data/tiles/mvt/{z}-{x}-{y}.vector.pbf' + url: 'rendering/ol/data/tiles/mvt/{z}-{x}-{y}.vector.pbf' }); }); @@ -75,7 +75,7 @@ describe('ol.rendering.layer.VectorTile', function() { it('renders correctly with the canvas renderer', function(done) { map = createMap('canvas'); waitForTiles(source, {}, function() { - expectResemble(map, 'spec/ol/layer/expected/vectortile-canvas.png', + expectResemble(map, 'rendering/ol/layer/expected/vectortile-canvas.png', 11.7, done); }); }); @@ -84,7 +84,7 @@ describe('ol.rendering.layer.VectorTile', function() { map = createMap('canvas'); map.getView().setRotation(Math.PI / 4); waitForTiles(source, {}, function() { - expectResemble(map, 'spec/ol/layer/expected/vectortile-canvas-rotated.png', + expectResemble(map, 'rendering/ol/layer/expected/vectortile-canvas-rotated.png', 13.4, done); }); }); @@ -92,7 +92,7 @@ describe('ol.rendering.layer.VectorTile', function() { it('renders correctly with the canvas renderer (HiDPI)', function(done) { map = createMap('canvas', 2); waitForTiles(source, {}, function() { - expectResemble(map, 'spec/ol/layer/expected/vectortile-canvas-hidpi.png', + expectResemble(map, 'rendering/ol/layer/expected/vectortile-canvas-hidpi.png', 11.3, done); }); }); @@ -101,7 +101,7 @@ describe('ol.rendering.layer.VectorTile', function() { map = createMap('canvas', 2); map.getView().setRotation(Math.PI / 4); waitForTiles(source, {}, function() { - expectResemble(map, 'spec/ol/layer/expected/vectortile-canvas-rotated-hidpi.png', + expectResemble(map, 'rendering/ol/layer/expected/vectortile-canvas-rotated-hidpi.png', 14.8, done); }); }); diff --git a/test_rendering/spec/ol/map.test.js b/test/rendering/ol/map.test.js similarity index 85% rename from test_rendering/spec/ol/map.test.js rename to test/rendering/ol/map.test.js index 4c391c1c76..8dff9af2e4 100644 --- a/test_rendering/spec/ol/map.test.js +++ b/test/rendering/ol/map.test.js @@ -89,14 +89,14 @@ describe('ol.rendering.Map', function() { it('tests the canvas renderer', function(done) { map = createMap('canvas'); expectResemble( - map, 'spec/ol/expected/render-canvas.png', IMAGE_TOLERANCE, done); + map, 'rendering/ol/expected/render-canvas.png', IMAGE_TOLERANCE, done); }); it('tests the WebGL renderer', function(done) { assertWebGL(); map = createMap('webgl'); expectResemble( - map, 'spec/ol/expected/render-webgl.png', IMAGE_TOLERANCE, done); + map, 'rendering/ol/expected/render-webgl.png', IMAGE_TOLERANCE, done); }); }); @@ -109,7 +109,7 @@ describe('ol.rendering.Map', function() { map = createMap('canvas'); map.getView().setCenter([10, 10]); expectResemble( - map, 'spec/ol/expected/pan-canvas.png', IMAGE_TOLERANCE, done); + map, 'rendering/ol/expected/pan-canvas.png', IMAGE_TOLERANCE, done); }); it('tests the WebGL renderer', function(done) { @@ -117,7 +117,7 @@ describe('ol.rendering.Map', function() { map = createMap('webgl'); map.getView().setCenter([10, 10]); expectResemble( - map, 'spec/ol/expected/pan-webgl.png', IMAGE_TOLERANCE, done); + map, 'rendering/ol/expected/pan-webgl.png', IMAGE_TOLERANCE, done); }); }); @@ -131,7 +131,7 @@ describe('ol.rendering.Map', function() { map.getView().setRotation(90); map.getView().setCenter([10, 10]); expectResemble( - map, 'spec/ol/expected/rotate-canvas.png', 2.8, done); + map, 'rendering/ol/expected/rotate-canvas.png', 2.8, done); }); it('tests the WebGL renderer', function(done) { @@ -140,7 +140,7 @@ describe('ol.rendering.Map', function() { map.getView().setRotation(90); map.getView().setCenter([10, 10]); expectResemble( - map, 'spec/ol/expected/rotate-webgl.png', IMAGE_TOLERANCE, done); + map, 'rendering/ol/expected/rotate-webgl.png', IMAGE_TOLERANCE, done); }); }); @@ -154,7 +154,7 @@ describe('ol.rendering.Map', function() { map.getView().setCenter([10, 10]); map.getView().setResolution(2); expectResemble( - map, 'spec/ol/expected/zoom-canvas.png', IMAGE_TOLERANCE, done); + map, 'rendering/ol/expected/zoom-canvas.png', IMAGE_TOLERANCE, done); }); it('tests the WebGL renderer', function(done) { @@ -163,7 +163,7 @@ describe('ol.rendering.Map', function() { map.getView().setCenter([10, 10]); map.getView().setResolution(2); expectResemble( - map, 'spec/ol/expected/zoom-webgl.png', IMAGE_TOLERANCE, done); + map, 'rendering/ol/expected/zoom-webgl.png', IMAGE_TOLERANCE, done); }); }); }); diff --git a/test_rendering/spec/ol/render.test.js b/test/rendering/ol/render.test.js similarity index 92% rename from test_rendering/spec/ol/render.test.js rename to test/rendering/ol/render.test.js index b9d5c1d583..46503d58d6 100644 --- a/test_rendering/spec/ol/render.test.js +++ b/test/rendering/ol/render.test.js @@ -44,7 +44,7 @@ describe('ol.render', function() { vectorContext.drawGeometry(new ol.geom.Point([50, 50])); resembleCanvas(context.canvas, - 'spec/ol/expected/render-point.png', IMAGE_TOLERANCE, done); + 'rendering/ol/expected/render-point.png', IMAGE_TOLERANCE, done); }); @@ -64,7 +64,7 @@ describe('ol.render', function() { ])); resembleCanvas(context.canvas, - 'spec/ol/expected/render-linestring.png', IMAGE_TOLERANCE, done); + 'rendering/ol/expected/render-linestring.png', IMAGE_TOLERANCE, done); }); @@ -85,7 +85,7 @@ describe('ol.render', function() { ])); resembleCanvas(context.canvas, - 'spec/ol/expected/render-linestring-butt.png', IMAGE_TOLERANCE, done); + 'rendering/ol/expected/render-linestring-butt.png', IMAGE_TOLERANCE, done); }); @@ -106,7 +106,7 @@ describe('ol.render', function() { ])); resembleCanvas(context.canvas, - 'spec/ol/expected/render-linestring-bevel.png', IMAGE_TOLERANCE, done); + 'rendering/ol/expected/render-linestring-bevel.png', IMAGE_TOLERANCE, done); }); @@ -131,7 +131,7 @@ describe('ol.render', function() { ])); resembleCanvas(context.canvas, - 'spec/ol/expected/render-polygon.png', IMAGE_TOLERANCE, done); + 'rendering/ol/expected/render-polygon.png', IMAGE_TOLERANCE, done); }); diff --git a/test_rendering/spec/ol/reproj/expected/4326-to-3857.png b/test/rendering/ol/reproj/expected/4326-to-3857.png similarity index 100% rename from test_rendering/spec/ol/reproj/expected/4326-to-3857.png rename to test/rendering/ol/reproj/expected/4326-to-3857.png diff --git a/test_rendering/spec/ol/reproj/expected/512x256-to-64x128.png b/test/rendering/ol/reproj/expected/512x256-to-64x128.png similarity index 100% rename from test_rendering/spec/ol/reproj/expected/512x256-to-64x128.png rename to test/rendering/ol/reproj/expected/512x256-to-64x128.png diff --git a/test_rendering/spec/ol/reproj/expected/dateline-merc-180.png b/test/rendering/ol/reproj/expected/dateline-merc-180.png similarity index 100% rename from test_rendering/spec/ol/reproj/expected/dateline-merc-180.png rename to test/rendering/ol/reproj/expected/dateline-merc-180.png diff --git a/test_rendering/spec/ol/reproj/expected/dateline-pole.png b/test/rendering/ol/reproj/expected/dateline-pole.png similarity index 100% rename from test_rendering/spec/ol/reproj/expected/dateline-pole.png rename to test/rendering/ol/reproj/expected/dateline-pole.png diff --git a/test_rendering/spec/ol/reproj/expected/image-3857-to-4326.png b/test/rendering/ol/reproj/expected/image-3857-to-4326.png similarity index 100% rename from test_rendering/spec/ol/reproj/expected/image-3857-to-4326.png rename to test/rendering/ol/reproj/expected/image-3857-to-4326.png diff --git a/test_rendering/spec/ol/reproj/expected/image-dateline-merc-180.png b/test/rendering/ol/reproj/expected/image-dateline-merc-180.png similarity index 100% rename from test_rendering/spec/ol/reproj/expected/image-dateline-merc-180.png rename to test/rendering/ol/reproj/expected/image-dateline-merc-180.png diff --git a/test_rendering/spec/ol/reproj/expected/image-dateline-pole.png b/test/rendering/ol/reproj/expected/image-dateline-pole.png similarity index 100% rename from test_rendering/spec/ol/reproj/expected/image-dateline-pole.png rename to test/rendering/ol/reproj/expected/image-dateline-pole.png diff --git a/test_rendering/spec/ol/reproj/expected/osm4326.png b/test/rendering/ol/reproj/expected/osm4326.png similarity index 100% rename from test_rendering/spec/ol/reproj/expected/osm4326.png rename to test/rendering/ol/reproj/expected/osm4326.png diff --git a/test_rendering/spec/ol/reproj/expected/osm5070.png b/test/rendering/ol/reproj/expected/osm5070.png similarity index 100% rename from test_rendering/spec/ol/reproj/expected/osm5070.png rename to test/rendering/ol/reproj/expected/osm5070.png diff --git a/test_rendering/spec/ol/reproj/expected/osm54009.png b/test/rendering/ol/reproj/expected/osm54009.png similarity index 100% rename from test_rendering/spec/ol/reproj/expected/osm54009.png rename to test/rendering/ol/reproj/expected/osm54009.png diff --git a/test_rendering/spec/ol/reproj/expected/stitch-osm3740.png b/test/rendering/ol/reproj/expected/stitch-osm3740.png similarity index 100% rename from test_rendering/spec/ol/reproj/expected/stitch-osm3740.png rename to test/rendering/ol/reproj/expected/stitch-osm3740.png diff --git a/test_rendering/spec/ol/reproj/expected/stitch-osm4326.png b/test/rendering/ol/reproj/expected/stitch-osm4326.png similarity index 100% rename from test_rendering/spec/ol/reproj/expected/stitch-osm4326.png rename to test/rendering/ol/reproj/expected/stitch-osm4326.png diff --git a/test_rendering/spec/ol/reproj/image.test.js b/test/rendering/ol/reproj/image.test.js similarity index 90% rename from test_rendering/spec/ol/reproj/image.test.js rename to test/rendering/ol/reproj/image.test.js index 62a7f9223a..b2b118c603 100644 --- a/test_rendering/spec/ol/reproj/image.test.js +++ b/test/rendering/ol/reproj/image.test.js @@ -38,7 +38,7 @@ describe('ol.rendering.reproj.Image', function() { describe('image reprojections from EPSG:3857', function() { beforeEach(function() { source = new ol.source.ImageStatic({ - url: 'spec/ol/data/tiles/osm/5/5/12.png', + url: 'rendering/ol/data/tiles/osm/5/5/12.png', imageExtent: ol.tilegrid.createXYZ().getTileCoordExtent([5, 5, -13]), projection: ol.proj.get('EPSG:3857') }); @@ -48,7 +48,7 @@ describe('ol.rendering.reproj.Image', function() { testSingleImage(source, 'EPSG:3857', ol.tilegrid.createXYZ().getTileCoordExtent([5, 5, -13]), 2 * ol.proj.EPSG3857.HALF_SIZE / (256 * (1 << 5)), 1, - 'spec/ol/data/tiles/osm/5/5/12.png', done); + 'rendering/ol/data/tiles/osm/5/5/12.png', done); }); it('to EPSG:4326', function(done) { @@ -56,7 +56,7 @@ describe('ol.rendering.reproj.Image', function() { ol.tilegrid.createForProjection('EPSG:4326'). getTileCoordExtent([6, 10, -10]), 360 / (256 * (1 << 4)), 1, - 'spec/ol/reproj/expected/image-3857-to-4326.png', done); + 'rendering/ol/reproj/expected/image-3857-to-4326.png', done); }); }); }); diff --git a/test_rendering/spec/ol/reproj/tile.test.js b/test/rendering/ol/reproj/tile.test.js similarity index 83% rename from test_rendering/spec/ol/reproj/tile.test.js rename to test/rendering/ol/reproj/tile.test.js index ba850e1005..5182e1c792 100644 --- a/test_rendering/spec/ol/reproj/tile.test.js +++ b/test/rendering/ol/reproj/tile.test.js @@ -41,19 +41,19 @@ describe('ol.rendering.reproj.Tile', function() { beforeEach(function() { source = new ol.source.XYZ({ projection: 'EPSG:3857', - url: 'spec/ol/data/tiles/osm/{z}/{x}/{y}.png' + url: 'rendering/ol/data/tiles/osm/{z}/{x}/{y}.png' }); }); it('works for identity reprojection', function(done) { testSingleTile(source, 'EPSG:3857', source.getTileGrid(), 5, 5, -13, 1, - 'spec/ol/data/tiles/osm/5/5/12.png', 1, done); + 'rendering/ol/data/tiles/osm/5/5/12.png', 1, done); }); it('to EPSG:4326', function(done) { var tileGrid = ol.tilegrid.createForProjection('EPSG:4326', 7, [64, 64]); testSingleTile(source, 'EPSG:4326', tileGrid, 7, 21, -20, 1, - 'spec/ol/reproj/expected/osm4326.png', 1, done); + 'rendering/ol/reproj/expected/osm4326.png', 1, done); }); it('to EPSG:5070', function(done) { @@ -65,7 +65,7 @@ describe('ol.rendering.reproj.Tile', function() { var tileGrid = ol.tilegrid.createForProjection('EPSG:5070', 5, [64, 64]); testSingleTile(source, 'EPSG:5070', tileGrid, 5, 13, -15, 1, - 'spec/ol/reproj/expected/osm5070.png', 1, done); + 'rendering/ol/reproj/expected/osm5070.png', 1, done); }); it('to ESRI:54009', function(done) { @@ -76,7 +76,7 @@ describe('ol.rendering.reproj.Tile', function() { var tileGrid = ol.tilegrid.createForProjection('ESRI:54009', 7, [64, 64]); testSingleTile(source, 'ESRI:54009', tileGrid, 7, 27, -16, 1, - 'spec/ol/reproj/expected/osm54009.png', 1, done); + 'rendering/ol/reproj/expected/osm54009.png', 1, done); }); }); @@ -84,14 +84,14 @@ describe('ol.rendering.reproj.Tile', function() { beforeEach(function() { source = new ol.source.XYZ({ projection: 'EPSG:3857', - url: 'spec/ol/data/tiles/osm/{z}/{x}/{y}.png' + url: 'rendering/ol/data/tiles/osm/{z}/{x}/{y}.png' }); }); it('to EPSG:4326', function(done) { var tileGrid = ol.tilegrid.createForProjection('EPSG:4326', 7, [64, 64]); testSingleTile(source, 'EPSG:4326', tileGrid, 7, 23, -21, 1, - 'spec/ol/reproj/expected/stitch-osm4326.png', 2, done); + 'rendering/ol/reproj/expected/stitch-osm4326.png', 2, done); }); it('to EPSG:3740', function(done) { @@ -103,7 +103,7 @@ describe('ol.rendering.reproj.Tile', function() { var tileGrid = ol.tilegrid.createForProjection('EPSG:3740', 4, [64, 64]); testSingleTile(source, 'EPSG:3740', tileGrid, 4, 4, -13, 1, - 'spec/ol/reproj/expected/stitch-osm3740.png', 4, done); + 'rendering/ol/reproj/expected/stitch-osm3740.png', 4, done); }); }); @@ -112,19 +112,19 @@ describe('ol.rendering.reproj.Tile', function() { source = new ol.source.XYZ({ projection: 'EPSG:4326', maxZoom: 0, - url: 'spec/ol/data/tiles/4326/{z}/{x}/{y}.png' + url: 'rendering/ol/data/tiles/4326/{z}/{x}/{y}.png' }); }); it('works for identity reprojection', function(done) { testSingleTile(source, 'EPSG:4326', source.getTileGrid(), 0, 0, -1, 1, - 'spec/ol/data/tiles/4326/0/0/0.png', 1, done); + 'rendering/ol/data/tiles/4326/0/0/0.png', 1, done); }); it('to EPSG:3857', function(done) { var tileGrid = ol.tilegrid.createForProjection('EPSG:3857', 0, [64, 64]); testSingleTile(source, 'EPSG:3857', tileGrid, 0, 0, -1, 1, - 'spec/ol/reproj/expected/4326-to-3857.png', 1, done); + 'rendering/ol/reproj/expected/4326-to-3857.png', 1, done); }); }); @@ -132,20 +132,20 @@ describe('ol.rendering.reproj.Tile', function() { beforeEach(function() { source = new ol.source.XYZ({ projection: 'EPSG:3857', - url: 'spec/ol/data/tiles/osm-512x256/{z}/{x}/{y}.png', + url: 'rendering/ol/data/tiles/osm-512x256/{z}/{x}/{y}.png', tileSize: [512, 256] }); }); it('works for identity reprojection', function(done) { testSingleTile(source, 'EPSG:3857', source.getTileGrid(), 5, 3, -13, 1, - 'spec/ol/data/tiles/osm-512x256/5/3/12.png', 1, done); + 'rendering/ol/data/tiles/osm-512x256/5/3/12.png', 1, done); }); it('to 64x128 EPSG:4326', function(done) { var tileGrid = ol.tilegrid.createForProjection('EPSG:4326', 7, [64, 128]); testSingleTile(source, 'EPSG:4326', tileGrid, 7, 27, -10, 1, - 'spec/ol/reproj/expected/512x256-to-64x128.png', 1, done); + 'rendering/ol/reproj/expected/512x256-to-64x128.png', 1, done); }); }); @@ -154,7 +154,7 @@ describe('ol.rendering.reproj.Tile', function() { source = new ol.source.XYZ({ projection: 'EPSG:4326', maxZoom: 0, - url: 'spec/ol/data/tiles/4326/{z}/{x}/{y}.png' + url: 'rendering/ol/data/tiles/4326/{z}/{x}/{y}.png' }); }); @@ -165,7 +165,7 @@ describe('ol.rendering.reproj.Tile', function() { var tileGrid = ol.tilegrid.createForProjection('merc_180', 0, [64, 64]); testSingleTile(source, 'merc_180', tileGrid, 0, 0, -1, 1, - 'spec/ol/reproj/expected/dateline-merc-180.png', 2, done); + 'rendering/ol/reproj/expected/dateline-merc-180.png', 2, done); }); it('displays north pole correctly (EPSG:3413)', function(done) { @@ -176,7 +176,7 @@ describe('ol.rendering.reproj.Tile', function() { var tileGrid = ol.tilegrid.createForProjection('EPSG:3413', 0, [64, 64]); testSingleTile(source, 'EPSG:3413', tileGrid, 0, 0, -1, 1, - 'spec/ol/reproj/expected/dateline-pole.png', 2, done); + 'rendering/ol/reproj/expected/dateline-pole.png', 2, done); }); }); }); diff --git a/test_rendering/spec/ol/source/expected/0_1.canvas.png b/test/rendering/ol/source/expected/0_1.canvas.png similarity index 100% rename from test_rendering/spec/ol/source/expected/0_1.canvas.png rename to test/rendering/ol/source/expected/0_1.canvas.png diff --git a/test_rendering/spec/ol/source/expected/0_1.webgl.png b/test/rendering/ol/source/expected/0_1.webgl.png similarity index 100% rename from test_rendering/spec/ol/source/expected/0_1.webgl.png rename to test/rendering/ol/source/expected/0_1.webgl.png diff --git a/test_rendering/spec/ol/source/expected/0_2.canvas.png b/test/rendering/ol/source/expected/0_2.canvas.png similarity index 100% rename from test_rendering/spec/ol/source/expected/0_2.canvas.png rename to test/rendering/ol/source/expected/0_2.canvas.png diff --git a/test_rendering/spec/ol/source/expected/0_2.webgl.png b/test/rendering/ol/source/expected/0_2.webgl.png similarity index 100% rename from test_rendering/spec/ol/source/expected/0_2.webgl.png rename to test/rendering/ol/source/expected/0_2.webgl.png diff --git a/test_rendering/spec/ol/source/expected/20_1.canvas.png b/test/rendering/ol/source/expected/20_1.canvas.png similarity index 100% rename from test_rendering/spec/ol/source/expected/20_1.canvas.png rename to test/rendering/ol/source/expected/20_1.canvas.png diff --git a/test_rendering/spec/ol/source/expected/20_1.webgl.png b/test/rendering/ol/source/expected/20_1.webgl.png similarity index 100% rename from test_rendering/spec/ol/source/expected/20_1.webgl.png rename to test/rendering/ol/source/expected/20_1.webgl.png diff --git a/test_rendering/spec/ol/source/expected/20_2.canvas.png b/test/rendering/ol/source/expected/20_2.canvas.png similarity index 100% rename from test_rendering/spec/ol/source/expected/20_2.canvas.png rename to test/rendering/ol/source/expected/20_2.canvas.png diff --git a/test_rendering/spec/ol/source/expected/20_2.webgl.png b/test/rendering/ol/source/expected/20_2.webgl.png similarity index 100% rename from test_rendering/spec/ol/source/expected/20_2.webgl.png rename to test/rendering/ol/source/expected/20_2.webgl.png diff --git a/test_rendering/spec/ol/source/tilewms.test.js b/test/rendering/ol/source/tilewms.test.js similarity index 79% rename from test_rendering/spec/ol/source/tilewms.test.js rename to test/rendering/ol/source/tilewms.test.js index ec59214a50..cf7770b1fc 100644 --- a/test_rendering/spec/ol/source/tilewms.test.js +++ b/test/rendering/ol/source/tilewms.test.js @@ -43,7 +43,7 @@ describe('ol.rendering.source.TileWMS', function() { 'LAYERS': 'layer' }, gutter: gutter, - url: 'spec/ol/data/tiles/wms/wms' + gutter + '.png' + url: 'rendering/ol/data/tiles/wms/wms' + gutter + '.png' }); } @@ -52,7 +52,7 @@ describe('ol.rendering.source.TileWMS', function() { var map = createMap('canvas', 1); var source = createSource(0); tilesLoaded(source, function() { - expectResemble(map, 'spec/ol/source/expected/0_1.canvas.png', IMAGE_TOLERANCE, done); + expectResemble(map, 'rendering/ol/source/expected/0_1.canvas.png', IMAGE_TOLERANCE, done); }); map.addLayer(new ol.layer.Tile({ source: source @@ -64,7 +64,7 @@ describe('ol.rendering.source.TileWMS', function() { var map = createMap('webgl', 1); var source = createSource(0); tilesLoaded(source, function() { - expectResemble(map, 'spec/ol/source/expected/0_1.webgl.png', IMAGE_TOLERANCE, done); + expectResemble(map, 'rendering/ol/source/expected/0_1.webgl.png', IMAGE_TOLERANCE, done); }); map.addLayer(new ol.layer.Tile({ source: source @@ -77,7 +77,7 @@ describe('ol.rendering.source.TileWMS', function() { var map = createMap('canvas', 2); var source = createSource(0); tilesLoaded(source, function() { - expectResemble(map, 'spec/ol/source/expected/0_2.canvas.png', IMAGE_TOLERANCE, done); + expectResemble(map, 'rendering/ol/source/expected/0_2.canvas.png', IMAGE_TOLERANCE, done); }); map.addLayer(new ol.layer.Tile({ source: source @@ -89,7 +89,7 @@ describe('ol.rendering.source.TileWMS', function() { var map = createMap('webgl', 2); var source = createSource(0); tilesLoaded(source, function() { - expectResemble(map, 'spec/ol/source/expected/0_2.webgl.png', IMAGE_TOLERANCE, done); + expectResemble(map, 'rendering/ol/source/expected/0_2.webgl.png', IMAGE_TOLERANCE, done); }); map.addLayer(new ol.layer.Tile({ source: source @@ -103,7 +103,7 @@ describe('ol.rendering.source.TileWMS', function() { var map = createMap('canvas', 1); var source = createSource(20); tilesLoaded(source, function() { - expectResemble(map, 'spec/ol/source/expected/20_1.canvas.png', IMAGE_TOLERANCE, done); + expectResemble(map, 'rendering/ol/source/expected/20_1.canvas.png', IMAGE_TOLERANCE, done); }); map.addLayer(new ol.layer.Tile({ source: source @@ -115,7 +115,7 @@ describe('ol.rendering.source.TileWMS', function() { var map = createMap('webgl', 1); var source = createSource(20); tilesLoaded(source, function() { - expectResemble(map, 'spec/ol/source/expected/20_1.webgl.png', IMAGE_TOLERANCE, done); + expectResemble(map, 'rendering/ol/source/expected/20_1.webgl.png', IMAGE_TOLERANCE, done); }); map.addLayer(new ol.layer.Tile({ source: source @@ -128,7 +128,7 @@ describe('ol.rendering.source.TileWMS', function() { var map = createMap('canvas', 2); var source = createSource(20); tilesLoaded(source, function() { - expectResemble(map, 'spec/ol/source/expected/20_2.canvas.png', IMAGE_TOLERANCE, done); + expectResemble(map, 'rendering/ol/source/expected/20_2.canvas.png', IMAGE_TOLERANCE, done); }); map.addLayer(new ol.layer.Tile({ source: source @@ -140,7 +140,7 @@ describe('ol.rendering.source.TileWMS', function() { var map = createMap('webgl', 2); var source = createSource(20); tilesLoaded(source, function() { - expectResemble(map, 'spec/ol/source/expected/20_2.webgl.png', IMAGE_TOLERANCE, done); + expectResemble(map, 'rendering/ol/source/expected/20_2.webgl.png', IMAGE_TOLERANCE, done); }); map.addLayer(new ol.layer.Tile({ source: source diff --git a/test_rendering/spec/ol/style/circle.test.js b/test/rendering/ol/style/circle.test.js similarity index 97% rename from test_rendering/spec/ol/style/circle.test.js rename to test/rendering/ol/style/circle.test.js index a123db58f8..c921553c21 100644 --- a/test_rendering/spec/ol/style/circle.test.js +++ b/test/rendering/ol/style/circle.test.js @@ -186,7 +186,7 @@ describe('ol.rendering.style.Circle', function() { it('tests the canvas renderer', function(done) { map = createMap('canvas'); createFeatures(); - expectResemble(map, 'spec/ol/style/expected/circle-canvas.png', + expectResemble(map, 'rendering/ol/style/expected/circle-canvas.png', 8.0, done); }); @@ -194,7 +194,7 @@ describe('ol.rendering.style.Circle', function() { assertWebGL(); map = createMap('webgl'); createFeatures(); - expectResemble(map, 'spec/ol/style/expected/circle-webgl.png', + expectResemble(map, 'rendering/ol/style/expected/circle-webgl.png', 8.0, done); }); }); diff --git a/test_rendering/spec/ol/style/expected/circle-canvas.png b/test/rendering/ol/style/expected/circle-canvas.png similarity index 100% rename from test_rendering/spec/ol/style/expected/circle-canvas.png rename to test/rendering/ol/style/expected/circle-canvas.png diff --git a/test_rendering/spec/ol/style/expected/circle-webgl.png b/test/rendering/ol/style/expected/circle-webgl.png similarity index 100% rename from test_rendering/spec/ol/style/expected/circle-webgl.png rename to test/rendering/ol/style/expected/circle-webgl.png diff --git a/test_rendering/spec/ol/style/expected/icon-canvas-svg-offset.png b/test/rendering/ol/style/expected/icon-canvas-svg-offset.png similarity index 100% rename from test_rendering/spec/ol/style/expected/icon-canvas-svg-offset.png rename to test/rendering/ol/style/expected/icon-canvas-svg-offset.png diff --git a/test_rendering/spec/ol/style/expected/icon-canvas-svg-offset2.png b/test/rendering/ol/style/expected/icon-canvas-svg-offset2.png similarity index 100% rename from test_rendering/spec/ol/style/expected/icon-canvas-svg-offset2.png rename to test/rendering/ol/style/expected/icon-canvas-svg-offset2.png diff --git a/test_rendering/spec/ol/style/expected/icon-canvas-svg-scale.png b/test/rendering/ol/style/expected/icon-canvas-svg-scale.png similarity index 100% rename from test_rendering/spec/ol/style/expected/icon-canvas-svg-scale.png rename to test/rendering/ol/style/expected/icon-canvas-svg-scale.png diff --git a/test_rendering/spec/ol/style/expected/icon-canvas.png b/test/rendering/ol/style/expected/icon-canvas.png similarity index 100% rename from test_rendering/spec/ol/style/expected/icon-canvas.png rename to test/rendering/ol/style/expected/icon-canvas.png diff --git a/test_rendering/spec/ol/style/expected/icon-webgl.png b/test/rendering/ol/style/expected/icon-webgl.png similarity index 100% rename from test_rendering/spec/ol/style/expected/icon-webgl.png rename to test/rendering/ol/style/expected/icon-webgl.png diff --git a/test_rendering/spec/ol/style/expected/linestring-strokes-canvas-hidpi.png b/test/rendering/ol/style/expected/linestring-strokes-canvas-hidpi.png similarity index 100% rename from test_rendering/spec/ol/style/expected/linestring-strokes-canvas-hidpi.png rename to test/rendering/ol/style/expected/linestring-strokes-canvas-hidpi.png diff --git a/test_rendering/spec/ol/style/expected/linestring-strokes-canvas.png b/test/rendering/ol/style/expected/linestring-strokes-canvas.png similarity index 100% rename from test_rendering/spec/ol/style/expected/linestring-strokes-canvas.png rename to test/rendering/ol/style/expected/linestring-strokes-canvas.png diff --git a/test_rendering/spec/ol/style/expected/linestring-strokes-webgl.png b/test/rendering/ol/style/expected/linestring-strokes-webgl.png similarity index 100% rename from test_rendering/spec/ol/style/expected/linestring-strokes-webgl.png rename to test/rendering/ol/style/expected/linestring-strokes-webgl.png diff --git a/test_rendering/spec/ol/style/expected/polygon-fill-and-strokes-canvas.png b/test/rendering/ol/style/expected/polygon-fill-and-strokes-canvas.png similarity index 100% rename from test_rendering/spec/ol/style/expected/polygon-fill-and-strokes-canvas.png rename to test/rendering/ol/style/expected/polygon-fill-and-strokes-canvas.png diff --git a/test_rendering/spec/ol/style/expected/polygon-fill-and-strokes-webgl.png b/test/rendering/ol/style/expected/polygon-fill-and-strokes-webgl.png similarity index 100% rename from test_rendering/spec/ol/style/expected/polygon-fill-and-strokes-webgl.png rename to test/rendering/ol/style/expected/polygon-fill-and-strokes-webgl.png diff --git a/test_rendering/spec/ol/style/expected/polygon-pattern-gradient-canvas.png b/test/rendering/ol/style/expected/polygon-pattern-gradient-canvas.png similarity index 100% rename from test_rendering/spec/ol/style/expected/polygon-pattern-gradient-canvas.png rename to test/rendering/ol/style/expected/polygon-pattern-gradient-canvas.png diff --git a/test_rendering/spec/ol/style/expected/polygon-types-canvas-stroke.png b/test/rendering/ol/style/expected/polygon-types-canvas-stroke.png similarity index 100% rename from test_rendering/spec/ol/style/expected/polygon-types-canvas-stroke.png rename to test/rendering/ol/style/expected/polygon-types-canvas-stroke.png diff --git a/test_rendering/spec/ol/style/expected/polygon-types-canvas.png b/test/rendering/ol/style/expected/polygon-types-canvas.png similarity index 100% rename from test_rendering/spec/ol/style/expected/polygon-types-canvas.png rename to test/rendering/ol/style/expected/polygon-types-canvas.png diff --git a/test_rendering/spec/ol/style/expected/polygon-types-webgl-stroke.png b/test/rendering/ol/style/expected/polygon-types-webgl-stroke.png similarity index 100% rename from test_rendering/spec/ol/style/expected/polygon-types-webgl-stroke.png rename to test/rendering/ol/style/expected/polygon-types-webgl-stroke.png diff --git a/test_rendering/spec/ol/style/expected/polygon-types-webgl.png b/test/rendering/ol/style/expected/polygon-types-webgl.png similarity index 100% rename from test_rendering/spec/ol/style/expected/polygon-types-webgl.png rename to test/rendering/ol/style/expected/polygon-types-webgl.png diff --git a/test_rendering/spec/ol/style/expected/polygon-zindex-canvas.png b/test/rendering/ol/style/expected/polygon-zindex-canvas.png similarity index 100% rename from test_rendering/spec/ol/style/expected/polygon-zindex-canvas.png rename to test/rendering/ol/style/expected/polygon-zindex-canvas.png diff --git a/test_rendering/spec/ol/style/expected/polygon-zindex-webgl.png b/test/rendering/ol/style/expected/polygon-zindex-webgl.png similarity index 100% rename from test_rendering/spec/ol/style/expected/polygon-zindex-webgl.png rename to test/rendering/ol/style/expected/polygon-zindex-webgl.png diff --git a/test_rendering/spec/ol/style/expected/regularshape-canvas-default-style.png b/test/rendering/ol/style/expected/regularshape-canvas-default-style.png similarity index 100% rename from test_rendering/spec/ol/style/expected/regularshape-canvas-default-style.png rename to test/rendering/ol/style/expected/regularshape-canvas-default-style.png diff --git a/test_rendering/spec/ol/style/expected/regularshape-canvas.png b/test/rendering/ol/style/expected/regularshape-canvas.png similarity index 100% rename from test_rendering/spec/ol/style/expected/regularshape-canvas.png rename to test/rendering/ol/style/expected/regularshape-canvas.png diff --git a/test_rendering/spec/ol/style/expected/regularshape-webgl-default-style.png b/test/rendering/ol/style/expected/regularshape-webgl-default-style.png similarity index 100% rename from test_rendering/spec/ol/style/expected/regularshape-webgl-default-style.png rename to test/rendering/ol/style/expected/regularshape-webgl-default-style.png diff --git a/test_rendering/spec/ol/style/expected/regularshape-webgl.png b/test/rendering/ol/style/expected/regularshape-webgl.png similarity index 100% rename from test_rendering/spec/ol/style/expected/regularshape-webgl.png rename to test/rendering/ol/style/expected/regularshape-webgl.png diff --git a/test_rendering/spec/ol/style/expected/text-canvas.png b/test/rendering/ol/style/expected/text-canvas.png similarity index 100% rename from test_rendering/spec/ol/style/expected/text-canvas.png rename to test/rendering/ol/style/expected/text-canvas.png diff --git a/test_rendering/spec/ol/style/expected/text-rotated-canvas.png b/test/rendering/ol/style/expected/text-rotated-canvas.png similarity index 100% rename from test_rendering/spec/ol/style/expected/text-rotated-canvas.png rename to test/rendering/ol/style/expected/text-rotated-canvas.png diff --git a/test_rendering/spec/ol/style/expected/text-rotated-webgl.png b/test/rendering/ol/style/expected/text-rotated-webgl.png similarity index 100% rename from test_rendering/spec/ol/style/expected/text-rotated-webgl.png rename to test/rendering/ol/style/expected/text-rotated-webgl.png diff --git a/test_rendering/spec/ol/style/expected/text-webgl.png b/test/rendering/ol/style/expected/text-webgl.png similarity index 100% rename from test_rendering/spec/ol/style/expected/text-webgl.png rename to test/rendering/ol/style/expected/text-webgl.png diff --git a/test_rendering/spec/ol/style/icon.test.js b/test/rendering/ol/style/icon.test.js similarity index 79% rename from test_rendering/spec/ol/style/icon.test.js rename to test/rendering/ol/style/icon.test.js index e55cc6071c..61f575161c 100644 --- a/test_rendering/spec/ol/style/icon.test.js +++ b/test/rendering/ol/style/icon.test.js @@ -69,43 +69,43 @@ describe('ol.rendering.style.Icon', function() { it('tests the canvas renderer', function(done) { map = createMap('canvas'); - createFeatures('spec/ol/data/icon.png', imgInfo, function() { - expectResemble(map, 'spec/ol/style/expected/icon-canvas.png', + createFeatures('rendering/ol/data/icon.png', imgInfo, function() { + expectResemble(map, 'rendering/ol/style/expected/icon-canvas.png', IMAGE_TOLERANCE, done); }); }); it('scales svg correctly in the canvas renderer', function(done) { map = createMap('canvas', 512, 512); - createFeatures('spec/ol/data/me0.svg', { + createFeatures('rendering/ol/data/me0.svg', { scale: 96 / 512, imgSize: [512, 512] }, function() { - expectResemble(map, 'spec/ol/style/expected/icon-canvas-svg-scale.png', + expectResemble(map, 'rendering/ol/style/expected/icon-canvas-svg-scale.png', IMAGE_TOLERANCE, done); }); }); it('uses offset correctly in the canvas renderer', function(done) { map = createMap('canvas', 256, 512); - createFeatures('spec/ol/data/me0.svg', { + createFeatures('rendering/ol/data/me0.svg', { offset: [0, 256], size: [256, 256], imgSize: [512, 512] }, function() { - expectResemble(map, 'spec/ol/style/expected/icon-canvas-svg-offset.png', + expectResemble(map, 'rendering/ol/style/expected/icon-canvas-svg-offset.png', IMAGE_TOLERANCE, done); }); }); it('uses offset correctly if it is larger than size in the canvas renderer', function(done) { map = createMap('canvas', 256, 512); - createFeatures('spec/ol/data/me0.svg', { + createFeatures('rendering/ol/data/me0.svg', { offset: [0, 374], size: [256, 256], imgSize: [512, 512] }, function() { - expectResemble(map, 'spec/ol/style/expected/icon-canvas-svg-offset2.png', + expectResemble(map, 'rendering/ol/style/expected/icon-canvas-svg-offset2.png', IMAGE_TOLERANCE, done); }); }); @@ -113,8 +113,8 @@ describe('ol.rendering.style.Icon', function() { it('tests the WebGL renderer', function(done) { assertWebGL(); map = createMap('webgl'); - createFeatures('spec/ol/data/icon.png', imgInfo, function() { - expectResemble(map, 'spec/ol/style/expected/icon-webgl.png', + createFeatures('rendering/ol/data/icon.png', imgInfo, function() { + expectResemble(map, 'rendering/ol/style/expected/icon-webgl.png', 2.0, done); }); }); diff --git a/test_rendering/spec/ol/style/linestring.test.js b/test/rendering/ol/style/linestring.test.js similarity index 93% rename from test_rendering/spec/ol/style/linestring.test.js rename to test/rendering/ol/style/linestring.test.js index 344b597bfb..7ef1616e28 100644 --- a/test_rendering/spec/ol/style/linestring.test.js +++ b/test/rendering/ol/style/linestring.test.js @@ -114,14 +114,14 @@ describe('ol.rendering.style.LineString', function() { map = createMap('canvas'); createFeatures(); expectResemble( - map, 'spec/ol/style/expected/linestring-strokes-canvas.png', + map, 'rendering/ol/style/expected/linestring-strokes-canvas.png', 3.0, done); }); it('tests the WebGL renderer', function(done) { assertWebGL(); map = createMap('webgl'); createFeatures(); - expectResemble(map, 'spec/ol/style/expected/linestring-strokes-webgl.png', + expectResemble(map, 'rendering/ol/style/expected/linestring-strokes-webgl.png', 14.6, done); }); @@ -129,7 +129,7 @@ describe('ol.rendering.style.LineString', function() { map = createMap('canvas', 2); createFeatures(); expectResemble( - map, 'spec/ol/style/expected/linestring-strokes-canvas-hidpi.png', + map, 'rendering/ol/style/expected/linestring-strokes-canvas-hidpi.png', 3.0, done); }); }); diff --git a/test_rendering/spec/ol/style/polygon.test.js b/test/rendering/ol/style/polygon.test.js similarity index 92% rename from test_rendering/spec/ol/style/polygon.test.js rename to test/rendering/ol/style/polygon.test.js index 40ed4923f1..2ac45d9dae 100644 --- a/test_rendering/spec/ol/style/polygon.test.js +++ b/test/rendering/ol/style/polygon.test.js @@ -88,14 +88,14 @@ describe('ol.rendering.style.Polygon', function() { it('tests the canvas renderer', function(done) { map = createMap('canvas'); createFeatures(); - expectResemble(map, 'spec/ol/style/expected/polygon-types-canvas.png', + expectResemble(map, 'rendering/ol/style/expected/polygon-types-canvas.png', IMAGE_TOLERANCE, done); }); it('tests the webgl renderer', function(done) { map = createMap('webgl'); createFeatures(); - expectResemble(map, 'spec/ol/style/expected/polygon-types-webgl.png', + expectResemble(map, 'rendering/ol/style/expected/polygon-types-webgl.png', IMAGE_TOLERANCE, done); }); }); @@ -157,7 +157,7 @@ describe('ol.rendering.style.Polygon', function() { map = createMap('canvas', 100); map.getView().setResolution(0.5); createFeatures(); - expectResemble(map, 'spec/ol/style/expected/polygon-types-canvas-stroke.png', + expectResemble(map, 'rendering/ol/style/expected/polygon-types-canvas-stroke.png', IMAGE_TOLERANCE, done); }); @@ -165,7 +165,7 @@ describe('ol.rendering.style.Polygon', function() { map = createMap('webgl', 100); map.getView().setResolution(0.5); createFeatures(); - expectResemble(map, 'spec/ol/style/expected/polygon-types-webgl-stroke.png', + expectResemble(map, 'rendering/ol/style/expected/polygon-types-webgl-stroke.png', IMAGE_TOLERANCE, done); }); }); @@ -218,14 +218,14 @@ describe('ol.rendering.style.Polygon', function() { it('tests the canvas renderer', function(done) { map = createMap('canvas'); createFeatures(); - expectResemble(map, 'spec/ol/style/expected/polygon-zindex-canvas.png', + expectResemble(map, 'rendering/ol/style/expected/polygon-zindex-canvas.png', IMAGE_TOLERANCE, done); }); it('tests the webgl renderer', function(done) { map = createMap('webgl'); createFeatures(); - expectResemble(map, 'spec/ol/style/expected/polygon-zindex-webgl.png', + expectResemble(map, 'rendering/ol/style/expected/polygon-zindex-webgl.png', IMAGE_TOLERANCE, done); }); }); @@ -278,7 +278,7 @@ describe('ol.rendering.style.Polygon', function() { map = createMap('canvas'); createFeatures(); expectResemble( - map, 'spec/ol/style/expected/polygon-fill-and-strokes-canvas.png', + map, 'rendering/ol/style/expected/polygon-fill-and-strokes-canvas.png', IMAGE_TOLERANCE, done); }); @@ -286,7 +286,7 @@ describe('ol.rendering.style.Polygon', function() { map = createMap('webgl'); createFeatures(); expectResemble( - map, 'spec/ol/style/expected/polygon-fill-and-strokes-webgl.png', + map, 'rendering/ol/style/expected/polygon-fill-and-strokes-webgl.png', 5.76, done); }); }); @@ -343,7 +343,7 @@ describe('ol.rendering.style.Polygon', function() { map = createMap('canvas'); createFeatures(); expectResemble( - map, 'spec/ol/style/expected/polygon-pattern-gradient-canvas.png', + map, 'rendering/ol/style/expected/polygon-pattern-gradient-canvas.png', 2.75, done); }); }); diff --git a/test_rendering/spec/ol/style/regularshape.test.js b/test/rendering/ol/style/regularshape.test.js similarity index 90% rename from test_rendering/spec/ol/style/regularshape.test.js rename to test/rendering/ol/style/regularshape.test.js index 5f65b15f69..432cd4cd33 100644 --- a/test_rendering/spec/ol/style/regularshape.test.js +++ b/test/rendering/ol/style/regularshape.test.js @@ -116,7 +116,7 @@ describe('ol.rendering.style.RegularShape', function() { it('tests the canvas renderer', function(done) { map = createMap('canvas'); createFeatures(stroke, fill); - expectResemble(map, 'spec/ol/style/expected/regularshape-canvas.png', 9.4, done); + expectResemble(map, 'rendering/ol/style/expected/regularshape-canvas.png', 9.4, done); }); it('supports lineDash', function(done) { @@ -140,7 +140,7 @@ describe('ol.rendering.style.RegularShape', function() { assertWebGL(); map = createMap('webgl'); createFeatures(stroke, fill); - expectResemble(map, 'spec/ol/style/expected/regularshape-webgl.png', 8.2, done); + expectResemble(map, 'rendering/ol/style/expected/regularshape-webgl.png', 8.2, done); }); }); @@ -155,14 +155,14 @@ describe('ol.rendering.style.RegularShape', function() { it('tests the canvas renderer', function(done) { map = createMap('canvas'); createFeatures(stroke, fill); - expectResemble(map, 'spec/ol/style/expected/regularshape-canvas-default-style.png', 3.0, done); + expectResemble(map, 'rendering/ol/style/expected/regularshape-canvas-default-style.png', 3.0, done); }); it('tests the WebGL renderer', function(done) { assertWebGL(); map = createMap('webgl'); createFeatures(stroke, fill); - expectResemble(map, 'spec/ol/style/expected/regularshape-webgl-default-style.png', 3.0, done); + expectResemble(map, 'rendering/ol/style/expected/regularshape-webgl-default-style.png', 3.0, done); }); }); }); diff --git a/test_rendering/spec/ol/style/text.test.js b/test/rendering/ol/style/text.test.js similarity index 88% rename from test_rendering/spec/ol/style/text.test.js rename to test/rendering/ol/style/text.test.js index 0dbf7dbf5e..26d766be46 100644 --- a/test_rendering/spec/ol/style/text.test.js +++ b/test/rendering/ol/style/text.test.js @@ -92,27 +92,27 @@ describe('ol.rendering.style.Text', function() { it('tests the canvas renderer without rotation', function(done) { map = createMap('canvas'); createFeatures(); - expectResemble(map, 'spec/ol/style/expected/text-canvas.png', IMAGE_TOLERANCE, done); + expectResemble(map, 'rendering/ol/style/expected/text-canvas.png', IMAGE_TOLERANCE, done); }); it('tests the canvas renderer with rotation', function(done) { map = createMap('canvas'); createFeatures(); map.getView().setRotation(Math.PI / 7); - expectResemble(map, 'spec/ol/style/expected/text-rotated-canvas.png', IMAGE_TOLERANCE, done); + expectResemble(map, 'rendering/ol/style/expected/text-rotated-canvas.png', IMAGE_TOLERANCE, done); }); it('tests the webgl renderer without rotation', function(done) { map = createMap('webgl'); createFeatures(); - expectResemble(map, 'spec/ol/style/expected/text-webgl.png', 1.8, done); + expectResemble(map, 'rendering/ol/style/expected/text-webgl.png', 1.8, done); }); it('tests the webgl renderer with rotation', function(done) { map = createMap('webgl'); createFeatures(); map.getView().setRotation(Math.PI / 7); - expectResemble(map, 'spec/ol/style/expected/text-rotated-webgl.png', 1.8, done); + expectResemble(map, 'rendering/ol/style/expected/text-rotated-webgl.png', 1.8, done); }); }); diff --git a/test/spec/.eslintrc b/test/spec/.eslintrc deleted file mode 100644 index 38dceb5d93..0000000000 --- a/test/spec/.eslintrc +++ /dev/null @@ -1,12 +0,0 @@ -{ - "env": { - "mocha": true - }, - "globals": { - "afterLoadText": false, - "expect": false, - "proj4": false, - "sinon": false, - "where": false - } -} diff --git a/test_rendering/.eslintrc b/test_rendering/.eslintrc deleted file mode 100644 index 3bd7528f3c..0000000000 --- a/test_rendering/.eslintrc +++ /dev/null @@ -1,5 +0,0 @@ -{ - "rules": { - "openlayers-internal/valid-provide": 0 - } -} diff --git a/test_rendering/README.md b/test_rendering/README.md deleted file mode 100644 index 7a6487ffd3..0000000000 --- a/test_rendering/README.md +++ /dev/null @@ -1,25 +0,0 @@ -# Rendering tests - -This directory contains rendering tests which compare a rendered map with a -reference image using [resemble.js](http://huddle.github.io/Resemble.js/). - -Similar to the unit tests, there are two ways to run the tests: directly in the -browser or using [SlimerJS](http://slimerjs.org/) from the command-line. - -To run the tests in the browser, make sure the development server is running -(`make serve`) and open the URL -[http://localhost:3000/test_rendering/index.html](http://localhost:3000/test_rendering/index.html). - -From the command-line the tests can be run with the build target `make test-rendering`. - -## Adding new tests -When creating a new test case, a reference image has to be created. By appending `?generate` -to the URL, a canvas with the rendered map will be shown on the page when calling -`expectResemble`. Then the reference image can simply be created with a right-click -and "Save image as". - -It is recommended to only run a single test case when generating the reference image. - -## Image difference -When a test fails, an image showing the difference between the reference image and the -rendered map can be displayed by appending `?showdiff` to the URL. diff --git a/test_rendering/index.html b/test_rendering/index.html deleted file mode 100644 index 37fad198d5..0000000000 --- a/test_rendering/index.html +++ /dev/null @@ -1,65 +0,0 @@ - - - - OL Rendering Test Runner - - - - - -
- - - - - - - - - - - - - - - - - - diff --git a/test_rendering/slimerjs-profile/prefs.js b/test_rendering/slimerjs-profile/prefs.js deleted file mode 100644 index 5dfd9e4d11..0000000000 --- a/test_rendering/slimerjs-profile/prefs.js +++ /dev/null @@ -1,6 +0,0 @@ -/* global user_pref */ - -user_pref('webgl.force-enabled', true); -user_pref('webgl.disabled', false); -user_pref('webgl.msaa-force', true); -user_pref('layout.css.devPixelsPerPx', '1.0'); diff --git a/test_rendering/slimerjs-profile/times.json b/test_rendering/slimerjs-profile/times.json deleted file mode 100755 index 84e52a5d3e..0000000000 --- a/test_rendering/slimerjs-profile/times.json +++ /dev/null @@ -1,3 +0,0 @@ -{ -"created": 1427803527460 -} diff --git a/test_rendering/spec/.eslintrc b/test_rendering/spec/.eslintrc deleted file mode 100644 index d728c558cd..0000000000 --- a/test_rendering/spec/.eslintrc +++ /dev/null @@ -1,14 +0,0 @@ -{ - "env": { - "mocha": true - }, - "globals": { - "IMAGE_TOLERANCE": false, - "assertWebGL": false, - "createMapDiv": false, - "disposeMap": false, - "expect": false, - "expectResemble": false, - "resembleCanvas": false - } -} diff --git a/test_rendering/test.js b/test_rendering/test.js deleted file mode 100644 index 98a048cf03..0000000000 --- a/test_rendering/test.js +++ /dev/null @@ -1,47 +0,0 @@ -/* global phantom, slimer */ -/* eslint-disable no-console */ - -var url = phantom.args[0]; -var page = require('webpage').create(); - -var v = slimer.geckoVersion; -console.log('Gecko: ' + v.major + '.' + v.minor + '.' + v.patch); - -page.open(url).then(function(status) { - if (status === 'success') { - page.onCallback = function(failedTests) { - if (failedTests.length > 0) { - for (var i = 0; i < failedTests.length; i++) { - var test = failedTests[i]; - console.log(test.title); - console.error(test.errorStack); - console.log(''); - } - console.error(failedTests.length + ' test(s) failed.'); - } else { - // check for cov here - var coverage = page.evaluate(function() { - return window.__coverage__; - }); - - if (coverage) { - console.log('Writing coverage to coverage/coverage-rendering.json'); - var fs = require('fs'); - fs.write( - fs.workingDirectory + '/coverage/coverage-rendering.json', - JSON.stringify(coverage), - 'w' - ); - } - console.log('All tests passed.'); - } - - page.close(); - phantom.exit(failedTests.length === 0 ? 0 : 1); - }; - } else { - console.error('The tests could not be started. Is the server running?'); - page.close(); - phantom.exit(1); - } -}); From 36f01e7b08ed441fc99e6acded5db267763c78e7 Mon Sep 17 00:00:00 2001 From: Tim Schaub Date: Mon, 3 Jul 2017 13:59:40 -0600 Subject: [PATCH 05/18] Expose describe and it on where --- test/test-extensions.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/test/test-extensions.js b/test/test-extensions.js index 3988e14e30..15044332b1 100644 --- a/test/test-extensions.js +++ b/test/test-extensions.js @@ -483,7 +483,8 @@ throw new Error('where() called with unknown key: ' + key); } return { - describe: features[key] ? global.describe : global.xdescribe + describe: features[key] ? global.describe : global.xdescribe, + it: features[key] ? global.id : global.xit }; }; From a5113715ef3291c4c33c473d62d5d9e12b9a52db Mon Sep 17 00:00:00 2001 From: Tim Schaub Date: Mon, 3 Jul 2017 14:15:00 -0600 Subject: [PATCH 06/18] Conditionally run WebGL rendering tests --- test/rendering/ol/layer/image.test.js | 2 +- test/rendering/ol/layer/tile.test.js | 10 +++++----- test/rendering/ol/map.test.js | 10 +++++----- test/rendering/ol/source/tilewms.test.js | 8 ++++---- test/rendering/ol/style/circle.test.js | 2 +- test/rendering/ol/style/icon.test.js | 2 +- test/rendering/ol/style/linestring.test.js | 2 +- test/rendering/ol/style/polygon.test.js | 8 ++++---- test/rendering/ol/style/regularshape.test.js | 4 ++-- test/rendering/ol/style/text.test.js | 4 ++-- test/test-extensions.js | 3 ++- 11 files changed, 28 insertions(+), 27 deletions(-) diff --git a/test/rendering/ol/layer/image.test.js b/test/rendering/ol/layer/image.test.js index 148e523c03..121c5b6906 100644 --- a/test/rendering/ol/layer/image.test.js +++ b/test/rendering/ol/layer/image.test.js @@ -82,7 +82,7 @@ describe('ol.rendering.layer.Image', function() { }); }); - it('tests the WebGL renderer', function(done) { + where('WebGL').it('tests the WebGL renderer', function(done) { assertWebGL(); map = createMap('webgl'); waitForImages([source], {}, function() { diff --git a/test/rendering/ol/layer/tile.test.js b/test/rendering/ol/layer/tile.test.js index 0e7f4f732c..4be6ab5654 100644 --- a/test/rendering/ol/layer/tile.test.js +++ b/test/rendering/ol/layer/tile.test.js @@ -88,7 +88,7 @@ describe('ol.rendering.layer.Tile', function() { }); }); - it('tests the WebGL renderer', function(done) { + where('WebGL').it('tests the WebGL renderer', function(done) { assertWebGL(); map = createMap('webgl'); waitForTiles([source], {}, function() { @@ -122,7 +122,7 @@ describe('ol.rendering.layer.Tile', function() { }); }); - it('tests the WebGL renderer', function(done) { + where('WebGL').it('tests the WebGL renderer', function(done) { assertWebGL(); map = createMap('webgl'); waitForTiles([source1, source2], {}, function() { @@ -195,7 +195,7 @@ describe('ol.rendering.layer.Tile', function() { }); }); - it('tests the WebGL renderer', function(done) { + where('WebGL').it('tests the WebGL renderer', function(done) { assertWebGL(); map = createMap('webgl'); waitForTiles([source], {opacity: 0.2}, function() { @@ -229,7 +229,7 @@ describe('ol.rendering.layer.Tile', function() { }); }); - it('512x256 renders correcly using the webgl renderer', function(done) { + where('WebGL').it('512x256 renders correcly using the webgl renderer', function(done) { assertWebGL(); var source = createSource('512x256'); map = createMap('webgl', [-10997148, 4569099]); @@ -249,7 +249,7 @@ describe('ol.rendering.layer.Tile', function() { }); }); - it('192x256 renders correcly using the webgl renderer', function(done) { + where('WebGL').it('192x256 renders correcly using the webgl renderer', function(done) { assertWebGL(); var source = createSource('192x256'); map = createMap('webgl', [-11271098, 3747248], [100, 100], undefined, diff --git a/test/rendering/ol/map.test.js b/test/rendering/ol/map.test.js index 8dff9af2e4..f82e60bb1b 100644 --- a/test/rendering/ol/map.test.js +++ b/test/rendering/ol/map.test.js @@ -69,7 +69,7 @@ describe('ol.rendering.Map', function() { }); }); - it('tests the WebGL renderer', function(done) { + where('WebGL').it('tests the WebGL renderer', function(done) { assertWebGL(); map = createMap('webgl'); map.once('postrender', function() { @@ -92,7 +92,7 @@ describe('ol.rendering.Map', function() { map, 'rendering/ol/expected/render-canvas.png', IMAGE_TOLERANCE, done); }); - it('tests the WebGL renderer', function(done) { + where('WebGL').it('tests the WebGL renderer', function(done) { assertWebGL(); map = createMap('webgl'); expectResemble( @@ -112,7 +112,7 @@ describe('ol.rendering.Map', function() { map, 'rendering/ol/expected/pan-canvas.png', IMAGE_TOLERANCE, done); }); - it('tests the WebGL renderer', function(done) { + where('WebGL').it('tests the WebGL renderer', function(done) { assertWebGL(); map = createMap('webgl'); map.getView().setCenter([10, 10]); @@ -134,7 +134,7 @@ describe('ol.rendering.Map', function() { map, 'rendering/ol/expected/rotate-canvas.png', 2.8, done); }); - it('tests the WebGL renderer', function(done) { + where('WebGL').it('tests the WebGL renderer', function(done) { assertWebGL(); map = createMap('webgl'); map.getView().setRotation(90); @@ -157,7 +157,7 @@ describe('ol.rendering.Map', function() { map, 'rendering/ol/expected/zoom-canvas.png', IMAGE_TOLERANCE, done); }); - it('tests the WebGL renderer', function(done) { + where('WebGL').it('tests the WebGL renderer', function(done) { assertWebGL(); map = createMap('webgl'); map.getView().setCenter([10, 10]); diff --git a/test/rendering/ol/source/tilewms.test.js b/test/rendering/ol/source/tilewms.test.js index cf7770b1fc..85bae35dec 100644 --- a/test/rendering/ol/source/tilewms.test.js +++ b/test/rendering/ol/source/tilewms.test.js @@ -59,7 +59,7 @@ describe('ol.rendering.source.TileWMS', function() { })); }); - it('tests the WebGL renderer', function(done) { + where('WebGL').it('tests the WebGL renderer', function(done) { assertWebGL(); var map = createMap('webgl', 1); var source = createSource(0); @@ -84,7 +84,7 @@ describe('ol.rendering.source.TileWMS', function() { })); }); - it('tests the WebGL renderer', function(done) { + where('WebGL').it('tests the WebGL renderer', function(done) { assertWebGL(); var map = createMap('webgl', 2); var source = createSource(0); @@ -110,7 +110,7 @@ describe('ol.rendering.source.TileWMS', function() { })); }); - it('tests the WebGL renderer', function(done) { + where('WebGL').it('tests the WebGL renderer', function(done) { assertWebGL(); var map = createMap('webgl', 1); var source = createSource(20); @@ -135,7 +135,7 @@ describe('ol.rendering.source.TileWMS', function() { })); }); - it('tests the WebGL renderer', function(done) { + where('WebGL').it('tests the WebGL renderer', function(done) { assertWebGL(); var map = createMap('webgl', 2); var source = createSource(20); diff --git a/test/rendering/ol/style/circle.test.js b/test/rendering/ol/style/circle.test.js index c921553c21..5e6e78a149 100644 --- a/test/rendering/ol/style/circle.test.js +++ b/test/rendering/ol/style/circle.test.js @@ -190,7 +190,7 @@ describe('ol.rendering.style.Circle', function() { 8.0, done); }); - it('tests the WebGL renderer', function(done) { + where('WebGL').it('tests the WebGL renderer', function(done) { assertWebGL(); map = createMap('webgl'); createFeatures(); diff --git a/test/rendering/ol/style/icon.test.js b/test/rendering/ol/style/icon.test.js index 61f575161c..67759ee524 100644 --- a/test/rendering/ol/style/icon.test.js +++ b/test/rendering/ol/style/icon.test.js @@ -110,7 +110,7 @@ describe('ol.rendering.style.Icon', function() { }); }); - it('tests the WebGL renderer', function(done) { + where('WebGL').it('tests the WebGL renderer', function(done) { assertWebGL(); map = createMap('webgl'); createFeatures('rendering/ol/data/icon.png', imgInfo, function() { diff --git a/test/rendering/ol/style/linestring.test.js b/test/rendering/ol/style/linestring.test.js index 7ef1616e28..5ebe3ac9f1 100644 --- a/test/rendering/ol/style/linestring.test.js +++ b/test/rendering/ol/style/linestring.test.js @@ -117,7 +117,7 @@ describe('ol.rendering.style.LineString', function() { map, 'rendering/ol/style/expected/linestring-strokes-canvas.png', 3.0, done); }); - it('tests the WebGL renderer', function(done) { + where('WebGL').it('tests the WebGL renderer', function(done) { assertWebGL(); map = createMap('webgl'); createFeatures(); diff --git a/test/rendering/ol/style/polygon.test.js b/test/rendering/ol/style/polygon.test.js index 2ac45d9dae..d5eea4efec 100644 --- a/test/rendering/ol/style/polygon.test.js +++ b/test/rendering/ol/style/polygon.test.js @@ -92,7 +92,7 @@ describe('ol.rendering.style.Polygon', function() { IMAGE_TOLERANCE, done); }); - it('tests the webgl renderer', function(done) { + where('WebGL').it('tests the webgl renderer', function(done) { map = createMap('webgl'); createFeatures(); expectResemble(map, 'rendering/ol/style/expected/polygon-types-webgl.png', @@ -161,7 +161,7 @@ describe('ol.rendering.style.Polygon', function() { IMAGE_TOLERANCE, done); }); - it('tests the webgl renderer', function(done) { + where('WebGL').it('tests the webgl renderer', function(done) { map = createMap('webgl', 100); map.getView().setResolution(0.5); createFeatures(); @@ -222,7 +222,7 @@ describe('ol.rendering.style.Polygon', function() { IMAGE_TOLERANCE, done); }); - it('tests the webgl renderer', function(done) { + where('WebGL').it('tests the webgl renderer', function(done) { map = createMap('webgl'); createFeatures(); expectResemble(map, 'rendering/ol/style/expected/polygon-zindex-webgl.png', @@ -282,7 +282,7 @@ describe('ol.rendering.style.Polygon', function() { IMAGE_TOLERANCE, done); }); - it('tests the webgl renderer', function(done) { + where('WebGL').it('tests the webgl renderer', function(done) { map = createMap('webgl'); createFeatures(); expectResemble( diff --git a/test/rendering/ol/style/regularshape.test.js b/test/rendering/ol/style/regularshape.test.js index 432cd4cd33..613ba0b015 100644 --- a/test/rendering/ol/style/regularshape.test.js +++ b/test/rendering/ol/style/regularshape.test.js @@ -136,7 +136,7 @@ describe('ol.rendering.style.RegularShape', function() { expectResemble(map, 'spec/ol/style/expected/regularshape-canvas-linedashoffset.png', 5, done); }); - it('tests the WebGL renderer', function(done) { + where('WebGL').it('tests the WebGL renderer', function(done) { assertWebGL(); map = createMap('webgl'); createFeatures(stroke, fill); @@ -158,7 +158,7 @@ describe('ol.rendering.style.RegularShape', function() { expectResemble(map, 'rendering/ol/style/expected/regularshape-canvas-default-style.png', 3.0, done); }); - it('tests the WebGL renderer', function(done) { + where('WebGL').it('tests the WebGL renderer', function(done) { assertWebGL(); map = createMap('webgl'); createFeatures(stroke, fill); diff --git a/test/rendering/ol/style/text.test.js b/test/rendering/ol/style/text.test.js index 26d766be46..135c5617e0 100644 --- a/test/rendering/ol/style/text.test.js +++ b/test/rendering/ol/style/text.test.js @@ -102,13 +102,13 @@ describe('ol.rendering.style.Text', function() { expectResemble(map, 'rendering/ol/style/expected/text-rotated-canvas.png', IMAGE_TOLERANCE, done); }); - it('tests the webgl renderer without rotation', function(done) { + where('WebGL').it('tests the webgl renderer without rotation', function(done) { map = createMap('webgl'); createFeatures(); expectResemble(map, 'rendering/ol/style/expected/text-webgl.png', 1.8, done); }); - it('tests the webgl renderer with rotation', function(done) { + where('WebGL').it('tests the webgl renderer with rotation', function(done) { map = createMap('webgl'); createFeatures(); map.getView().setRotation(Math.PI / 7); diff --git a/test/test-extensions.js b/test/test-extensions.js index 15044332b1..32b47d9b24 100644 --- a/test/test-extensions.js +++ b/test/test-extensions.js @@ -467,7 +467,8 @@ ArrayBuffer: 'ArrayBuffer' in global, 'ArrayBuffer.isView': 'ArrayBuffer' in global && !!ArrayBuffer.isView, FileReader: 'FileReader' in global, - Uint8ClampedArray: ('Uint8ClampedArray' in global) + Uint8ClampedArray: ('Uint8ClampedArray' in global), + WebGL: false }; /** From 39cf0ee1546e89bca7df03f90a080ffc46a1351e Mon Sep 17 00:00:00 2001 From: Tim Schaub Date: Mon, 3 Jul 2017 14:25:10 -0600 Subject: [PATCH 07/18] Avoid failure when other tests don't clean up --- test/spec/ol/control/attribution.test.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/test/spec/ol/control/attribution.test.js b/test/spec/ol/control/attribution.test.js index ca2d8d6403..daec6568bf 100644 --- a/test/spec/ol/control/attribution.test.js +++ b/test/spec/ol/control/attribution.test.js @@ -8,9 +8,9 @@ goog.require('ol.source.Tile'); describe('ol.control.Attribution', function() { - var map, target; + var map; beforeEach(function() { - target = document.createElement('div'); + var target = document.createElement('div'); target.style.width = target.style.height = '100px'; document.body.appendChild(target); map = new ol.Map({ @@ -63,13 +63,13 @@ describe('ol.control.Attribution', function() { }); afterEach(function() { - map.setTarget(null); - document.body.removeChild(target); + disposeMap(map); + map = null; }); it('does not add duplicate attributions', function() { map.renderSync(); - var attribution = document.querySelectorAll('.ol-attribution li'); + var attribution = map.getTarget().querySelectorAll('.ol-attribution li'); expect(attribution.length).to.be(3); // first
  • is the logo }); From 46bcce464fde8277d4839be4d53b2257d33c0cfa Mon Sep 17 00:00:00 2001 From: Tim Schaub Date: Mon, 3 Jul 2017 14:57:16 -0600 Subject: [PATCH 08/18] Add missing requires to tests --- test/.eslintrc | 1 - test/rendering/ol/render.test.js | 16 +-- test/spec/ol/color.test.js | 11 +- test/spec/ol/control/attribution.test.js | 2 + test/spec/ol/events.test.js | 4 +- test/spec/ol/format/gml.test.js | 5 +- test/spec/ol/format/kml.test.js | 10 +- test/spec/ol/format/wfs.test.js | 1 + test/spec/ol/graticule.test.js | 2 +- .../ol/interaction/dragrotateandzoom.test.js | 1 + test/spec/ol/interaction/draw.test.js | 5 +- test/spec/ol/interaction/interaction.test.js | 4 +- test/spec/ol/interaction/modify.test.js | 3 +- test/spec/ol/map.test.js | 3 +- test/spec/ol/mapbrowserevent.test.js | 4 +- test/spec/ol/proj/transforms.test.js | 9 +- .../spec/ol/render/webgl/circlereplay.test.js | 3 +- test/spec/ol/render/webgl/immediate.test.js | 12 +- .../ol/render/webgl/linestringreplay.test.js | 3 +- .../ol/render/webgl/polygonreplay.test.js | 3 +- .../ol/render/webgl/texturereplay.test.js | 1 + test/spec/ol/renderer/canvas/map.test.js | 3 +- test/spec/ol/renderer/canvas/replay.test.js | 3 +- .../spec/ol/renderer/canvas/tilelayer.test.js | 3 +- .../renderer/canvas/vectortilelayer.test.js | 2 + test/spec/ol/source/tile.test.js | 108 +++++++++--------- test/spec/ol/source/vectortile.test.js | 1 + test/spec/ol/style/text.test.js | 1 + test/spec/ol/tile.test.js | 2 + test/spec/ol/tilequeue.test.js | 1 + test/spec/ol/vectorimagetile.test.js | 4 +- test/spec/ol/vectortile.test.js | 5 +- test/spec/ol/view.test.js | 2 + test/test-extensions.js | 5 + 34 files changed, 141 insertions(+), 102 deletions(-) diff --git a/test/.eslintrc b/test/.eslintrc index 5f03f0ac52..272c7b2d05 100644 --- a/test/.eslintrc +++ b/test/.eslintrc @@ -3,7 +3,6 @@ "mocha": true }, "rules": { - "openlayers-internal/no-missing-requires": 0, "openlayers-internal/valid-provide": 0 }, "globals": { diff --git a/test/rendering/ol/render.test.js b/test/rendering/ol/render.test.js index 46503d58d6..ed101ac5a6 100644 --- a/test/rendering/ol/render.test.js +++ b/test/rendering/ol/render.test.js @@ -11,24 +11,22 @@ goog.require('ol.style.Fill'); goog.require('ol.style.Stroke'); goog.require('ol.style.Style'); +function getContext() { + return document.createElement('canvas').getContext('2d'); +} describe('ol.render', function() { - var context; - - beforeEach(function() { - context = document.createElement('canvas').getContext('2d'); - }); - describe('ol.render.toContext()', function() { it('creates a vector context from a Canvas 2d context', function() { - var vectorContext = ol.render.toContext(context, {size: [100, 100]}); + var vectorContext = ol.render.toContext(getContext(), {size: [100, 100]}); expect(vectorContext).to.be.a(ol.render.VectorContext); expect(vectorContext).to.be.a(ol.render.canvas.Immediate); }); it('can be used to render a point geometry', function(done) { + var context = getContext(); var vectorContext = ol.render.toContext(context, {size: [100, 100]}); var style = new ol.style.Style({ @@ -49,6 +47,7 @@ describe('ol.render', function() { }); it('can be used to render a linestring geometry', function(done) { + var context = getContext(); var vectorContext = ol.render.toContext(context, {size: [100, 100]}); var style = new ol.style.Style({ @@ -69,6 +68,7 @@ describe('ol.render', function() { }); it('respects lineCap for linestring', function(done) { + var context = getContext(); var vectorContext = ol.render.toContext(context, {size: [100, 100]}); var style = new ol.style.Style({ @@ -90,6 +90,7 @@ describe('ol.render', function() { }); it('respects lineJoin for linestring', function(done) { + var context = getContext(); var vectorContext = ol.render.toContext(context, {size: [100, 100]}); var style = new ol.style.Style({ @@ -111,6 +112,7 @@ describe('ol.render', function() { }); it('can be used to render a polygon geometry', function(done) { + var context = getContext(); var vectorContext = ol.render.toContext(context, {size: [100, 100]}); var style = new ol.style.Style({ diff --git a/test/spec/ol/color.test.js b/test/spec/ol/color.test.js index ad7f178552..54a8a38cc1 100644 --- a/test/spec/ol/color.test.js +++ b/test/spec/ol/color.test.js @@ -1,6 +1,7 @@ goog.provide('ol.test.color'); goog.require('ol.color'); +goog.require('ol'); describe('ol.color', function() { @@ -57,7 +58,8 @@ describe('ol.color', function() { }); after(function() { - ol.color.fromStringInternal_.restore(); + var spy = ol.color.fromStringInternal_; + spy.restore(); }); if (ol.ENABLE_NAMED_COLORS) { @@ -119,11 +121,12 @@ describe('ol.color', function() { }); it('caches parsed values', function() { - var count = ol.color.fromStringInternal_.callCount; + var spy = ol.color.fromStringInternal_; + var count = spy.callCount; ol.color.fromString('aquamarine'); - expect(ol.color.fromStringInternal_.callCount).to.be(count + 1); + expect(spy.callCount).to.be(count + 1); ol.color.fromString('aquamarine'); - expect(ol.color.fromStringInternal_.callCount).to.be(count + 1); + expect(spy.callCount).to.be(count + 1); }); it('throws an error on invalid colors', function() { diff --git a/test/spec/ol/control/attribution.test.js b/test/spec/ol/control/attribution.test.js index daec6568bf..5ceea026fe 100644 --- a/test/spec/ol/control/attribution.test.js +++ b/test/spec/ol/control/attribution.test.js @@ -1,10 +1,12 @@ goog.provide('ol.test.control.Attribution'); goog.require('ol.Map'); +goog.require('ol.Tile'); goog.require('ol.View'); goog.require('ol.control.Attribution'); goog.require('ol.layer.Tile'); goog.require('ol.source.Tile'); +goog.require('ol.tilegrid'); describe('ol.control.Attribution', function() { diff --git a/test/spec/ol/events.test.js b/test/spec/ol/events.test.js index 9f74169196..076f80738f 100644 --- a/test/spec/ol/events.test.js +++ b/test/spec/ol/events.test.js @@ -2,7 +2,7 @@ goog.provide('ol.test.events'); goog.require('ol.events'); goog.require('ol.events.EventTarget'); - +goog.require('ol'); describe('ol.events', function() { var add, remove, target; @@ -53,7 +53,7 @@ describe('ol.events', function() { var boundListener = ol.events.bindListener_(listenerObj); expect(listenerObj.boundListener).to.equal(boundListener); boundListener(); - ol.events.unlistenByKey.restore(); + unlistenSpy.restore(); }); }); diff --git a/test/spec/ol/format/gml.test.js b/test/spec/ol/format/gml.test.js index 2764eab7ab..7c93ecb21f 100644 --- a/test/spec/ol/format/gml.test.js +++ b/test/spec/ol/format/gml.test.js @@ -1,16 +1,17 @@ goog.provide('ol.test.format.GML'); +goog.require('ol.Feature'); goog.require('ol.format.GML'); goog.require('ol.format.GML2'); goog.require('ol.geom.LineString'); goog.require('ol.geom.LinearRing'); -goog.require('ol.geom.MultiPoint'); goog.require('ol.geom.MultiLineString'); +goog.require('ol.geom.MultiPoint'); goog.require('ol.geom.MultiPolygon'); -goog.require('ol.xml'); goog.require('ol.geom.Point'); goog.require('ol.geom.Polygon'); goog.require('ol.proj'); +goog.require('ol.xml'); var readGeometry = function(format, text, opt_options) { var doc = ol.xml.parse(text); diff --git a/test/spec/ol/format/kml.test.js b/test/spec/ol/format/kml.test.js index 48ac137bd9..8d873b6239 100644 --- a/test/spec/ol/format/kml.test.js +++ b/test/spec/ol/format/kml.test.js @@ -1,7 +1,7 @@ goog.provide('ol.test.format.KML'); -goog.require('ol.array'); goog.require('ol.Feature'); +goog.require('ol.array'); goog.require('ol.format.GeoJSON'); goog.require('ol.format.KML'); goog.require('ol.geom.GeometryCollection'); @@ -12,12 +12,14 @@ goog.require('ol.geom.MultiPoint'); goog.require('ol.geom.MultiPolygon'); goog.require('ol.geom.Point'); goog.require('ol.geom.Polygon'); -goog.require('ol.style.Circle'); -goog.require('ol.style.Fill'); -goog.require('ol.style.Icon'); goog.require('ol.proj'); goog.require('ol.proj.Projection'); goog.require('ol.proj.transforms'); +goog.require('ol.style.Circle'); +goog.require('ol.style.Fill'); +goog.require('ol.style.Icon'); +goog.require('ol.style.IconAnchorUnits'); +goog.require('ol.style.IconOrigin'); goog.require('ol.style.Stroke'); goog.require('ol.style.Style'); goog.require('ol.style.Text'); diff --git a/test/spec/ol/format/wfs.test.js b/test/spec/ol/format/wfs.test.js index 503427f078..f07ef80b47 100644 --- a/test/spec/ol/format/wfs.test.js +++ b/test/spec/ol/format/wfs.test.js @@ -4,6 +4,7 @@ goog.require('ol.Feature'); goog.require('ol.format.GML2'); goog.require('ol.format.WFS'); goog.require('ol.format.filter'); +goog.require('ol.geom.LineString'); goog.require('ol.geom.MultiLineString'); goog.require('ol.geom.MultiPoint'); goog.require('ol.geom.MultiPolygon'); diff --git a/test/spec/ol/graticule.test.js b/test/spec/ol/graticule.test.js index dc628c61d0..c13165d88e 100644 --- a/test/spec/ol/graticule.test.js +++ b/test/spec/ol/graticule.test.js @@ -4,7 +4,7 @@ goog.require('ol.Graticule'); goog.require('ol.Map'); goog.require('ol.proj'); goog.require('ol.style.Stroke'); - +goog.require('ol.style.Text'); describe('ol.Graticule', function() { var graticule; diff --git a/test/spec/ol/interaction/dragrotateandzoom.test.js b/test/spec/ol/interaction/dragrotateandzoom.test.js index a21438639b..b533c5ae22 100644 --- a/test/spec/ol/interaction/dragrotateandzoom.test.js +++ b/test/spec/ol/interaction/dragrotateandzoom.test.js @@ -4,6 +4,7 @@ goog.require('ol.Map'); goog.require('ol.MapBrowserPointerEvent'); goog.require('ol.View'); goog.require('ol.interaction.DragRotateAndZoom'); +goog.require('ol.interaction.Interaction'); goog.require('ol.layer.Vector'); goog.require('ol.pointer.PointerEvent'); goog.require('ol.source.Vector'); diff --git a/test/spec/ol/interaction/draw.test.js b/test/spec/ol/interaction/draw.test.js index 588f353771..b7003683dc 100644 --- a/test/spec/ol/interaction/draw.test.js +++ b/test/spec/ol/interaction/draw.test.js @@ -1,11 +1,12 @@ goog.provide('ol.test.interaction.Draw'); -goog.require('ol.array'); -goog.require('ol.events'); goog.require('ol.Feature'); goog.require('ol.Map'); goog.require('ol.MapBrowserPointerEvent'); goog.require('ol.View'); +goog.require('ol.array'); +goog.require('ol.events'); +goog.require('ol.events.condition'); goog.require('ol.geom.Circle'); goog.require('ol.geom.LineString'); goog.require('ol.geom.MultiLineString'); diff --git a/test/spec/ol/interaction/interaction.test.js b/test/spec/ol/interaction/interaction.test.js index b9cbf62e01..cab1457c62 100644 --- a/test/spec/ol/interaction/interaction.test.js +++ b/test/spec/ol/interaction/interaction.test.js @@ -1,10 +1,10 @@ goog.provide('ol.test.interaction.Interaction'); -goog.require('ol.events.EventTarget'); goog.require('ol.Map'); +goog.require('ol.View'); +goog.require('ol.events.EventTarget'); goog.require('ol.interaction.Interaction'); - describe('ol.interaction.Interaction', function() { describe('constructor', function() { diff --git a/test/spec/ol/interaction/modify.test.js b/test/spec/ol/interaction/modify.test.js index d4e43489aa..fec751e9ae 100644 --- a/test/spec/ol/interaction/modify.test.js +++ b/test/spec/ol/interaction/modify.test.js @@ -1,12 +1,13 @@ goog.provide('ol.test.interaction.Modify'); -goog.require('ol.events'); goog.require('ol.Collection'); goog.require('ol.Feature'); goog.require('ol.Map'); goog.require('ol.MapBrowserPointerEvent'); goog.require('ol.View'); +goog.require('ol.events'); goog.require('ol.events.condition'); +goog.require('ol.geom.Circle'); goog.require('ol.geom.LineString'); goog.require('ol.geom.Point'); goog.require('ol.geom.Polygon'); diff --git a/test/spec/ol/map.test.js b/test/spec/ol/map.test.js index ebf772e2ec..e576fc1078 100644 --- a/test/spec/ol/map.test.js +++ b/test/spec/ol/map.test.js @@ -9,10 +9,11 @@ goog.require('ol.interaction'); goog.require('ol.interaction.DoubleClickZoom'); goog.require('ol.interaction.Interaction'); goog.require('ol.interaction.MouseWheelZoom'); +goog.require('ol.interaction.PinchZoom'); goog.require('ol.layer.Tile'); +goog.require('ol.renderer.canvas.IntermediateCanvas'); goog.require('ol.source.XYZ'); - describe('ol.Map', function() { describe('constructor', function() { diff --git a/test/spec/ol/mapbrowserevent.test.js b/test/spec/ol/mapbrowserevent.test.js index 0f7426e3af..cbfe875441 100644 --- a/test/spec/ol/mapbrowserevent.test.js +++ b/test/spec/ol/mapbrowserevent.test.js @@ -1,11 +1,11 @@ goog.provide('ol.test.MapBrowserEventHandler'); -goog.require('ol.events'); goog.require('ol.Map'); goog.require('ol.MapBrowserEventHandler'); +goog.require('ol.events'); +goog.require('ol.has'); goog.require('ol.pointer.PointerEvent'); - describe('ol.MapBrowserEventHandler', function() { describe('#emulateClick_', function() { var clock; diff --git a/test/spec/ol/proj/transforms.test.js b/test/spec/ol/proj/transforms.test.js index 3ba0965038..429c981fd2 100644 --- a/test/spec/ol/proj/transforms.test.js +++ b/test/spec/ol/proj/transforms.test.js @@ -24,13 +24,14 @@ describe('ol.proj.transforms.remove()', function() { return input; }; ol.proj.transforms.add(foo, bar, transform); - expect(ol.proj.transforms.cache_).not.to.be(undefined); - expect(ol.proj.transforms.cache_.foo).not.to.be(undefined); - expect(ol.proj.transforms.cache_.foo.bar).to.be(transform); + var cache = ol.proj.transforms.cache_; + expect(cache).not.to.be(undefined); + expect(cache.foo).not.to.be(undefined); + expect(cache.foo.bar).to.be(transform); var removed = ol.proj.transforms.remove(foo, bar); expect(removed).to.be(transform); - expect(ol.proj.transforms.cache_.foo).to.be(undefined); + expect(cache.foo).to.be(undefined); }); }); diff --git a/test/spec/ol/render/webgl/circlereplay.test.js b/test/spec/ol/render/webgl/circlereplay.test.js index 8aa91eeac3..f8b3e104c0 100644 --- a/test/spec/ol/render/webgl/circlereplay.test.js +++ b/test/spec/ol/render/webgl/circlereplay.test.js @@ -3,8 +3,9 @@ goog.provide('ol.test.render.webgl.CircleReplay'); goog.require('ol'); goog.require('ol.Feature'); goog.require('ol.geom.Circle'); -goog.require('ol.render.webgl.circlereplay.defaultshader'); goog.require('ol.render.webgl.CircleReplay'); +goog.require('ol.render.webgl.circlereplay.defaultshader'); +goog.require('ol.render.webgl.circlereplay.defaultshader.Locations'); goog.require('ol.style.Fill'); goog.require('ol.style.Stroke'); diff --git a/test/spec/ol/render/webgl/immediate.test.js b/test/spec/ol/render/webgl/immediate.test.js index f3f34b44d7..792b509845 100644 --- a/test/spec/ol/render/webgl/immediate.test.js +++ b/test/spec/ol/render/webgl/immediate.test.js @@ -1,15 +1,17 @@ goog.provide('ol.test.render.webgl.Immediate'); -goog.require('ol.geom.GeometryCollection'); +goog.require('ol.Feature'); goog.require('ol.geom.Circle'); -goog.require('ol.geom.Point'); -goog.require('ol.geom.MultiPoint'); +goog.require('ol.geom.GeometryCollection'); goog.require('ol.geom.LineString'); goog.require('ol.geom.MultiLineString'); -goog.require('ol.geom.Polygon'); +goog.require('ol.geom.MultiPoint'); goog.require('ol.geom.MultiPolygon'); -goog.require('ol.render.webgl.ImageReplay'); +goog.require('ol.geom.Point'); +goog.require('ol.geom.Polygon'); goog.require('ol.render.webgl.CircleReplay'); +goog.require('ol.render.webgl.ImageReplay'); +goog.require('ol.render.webgl.Immediate'); goog.require('ol.render.webgl.LineStringReplay'); goog.require('ol.render.webgl.PolygonReplay'); goog.require('ol.style.Circle'); diff --git a/test/spec/ol/render/webgl/linestringreplay.test.js b/test/spec/ol/render/webgl/linestringreplay.test.js index 073e50b6f3..875abb0d7d 100644 --- a/test/spec/ol/render/webgl/linestringreplay.test.js +++ b/test/spec/ol/render/webgl/linestringreplay.test.js @@ -4,8 +4,9 @@ goog.require('ol'); goog.require('ol.Feature'); goog.require('ol.geom.LineString'); goog.require('ol.geom.MultiLineString'); -goog.require('ol.render.webgl.linestringreplay.defaultshader'); goog.require('ol.render.webgl.LineStringReplay'); +goog.require('ol.render.webgl.linestringreplay.defaultshader'); +goog.require('ol.render.webgl.linestringreplay.defaultshader.Locations'); goog.require('ol.style.Stroke'); describe('ol.render.webgl.LineStringReplay', function() { diff --git a/test/spec/ol/render/webgl/polygonreplay.test.js b/test/spec/ol/render/webgl/polygonreplay.test.js index 92ff160822..7933608924 100644 --- a/test/spec/ol/render/webgl/polygonreplay.test.js +++ b/test/spec/ol/render/webgl/polygonreplay.test.js @@ -4,8 +4,9 @@ goog.require('ol'); goog.require('ol.Feature'); goog.require('ol.geom.MultiPolygon'); goog.require('ol.geom.Polygon'); -goog.require('ol.render.webgl.polygonreplay.defaultshader'); goog.require('ol.render.webgl.PolygonReplay'); +goog.require('ol.render.webgl.polygonreplay.defaultshader'); +goog.require('ol.render.webgl.polygonreplay.defaultshader.Locations'); goog.require('ol.structs.LinkedList'); goog.require('ol.structs.RBush'); goog.require('ol.style.Fill'); diff --git a/test/spec/ol/render/webgl/texturereplay.test.js b/test/spec/ol/render/webgl/texturereplay.test.js index 5e85440a6b..79cdb27d48 100644 --- a/test/spec/ol/render/webgl/texturereplay.test.js +++ b/test/spec/ol/render/webgl/texturereplay.test.js @@ -2,6 +2,7 @@ goog.provide('ol.test.render.webgl.TextureReplay'); goog.require('ol.render.webgl.TextureReplay'); goog.require('ol.render.webgl.texturereplay.defaultshader'); +goog.require('ol.render.webgl.texturereplay.defaultshader.Locations'); describe('ol.render.webgl.TextureReplay', function() { var replay; diff --git a/test/spec/ol/renderer/canvas/map.test.js b/test/spec/ol/renderer/canvas/map.test.js index c0ca55f322..5c0d8c44c5 100644 --- a/test/spec/ol/renderer/canvas/map.test.js +++ b/test/spec/ol/renderer/canvas/map.test.js @@ -10,7 +10,8 @@ goog.require('ol.layer.Vector'); goog.require('ol.renderer.canvas.Layer'); goog.require('ol.renderer.canvas.Map'); goog.require('ol.source.Vector'); - +goog.require('ol.style.Icon'); +goog.require('ol.style.Style'); describe('ol.renderer.canvas.Map', function() { diff --git a/test/spec/ol/renderer/canvas/replay.test.js b/test/spec/ol/renderer/canvas/replay.test.js index 65ddd21f59..c4118adb11 100644 --- a/test/spec/ol/renderer/canvas/replay.test.js +++ b/test/spec/ol/renderer/canvas/replay.test.js @@ -1,6 +1,6 @@ goog.provide('ol.test.renderer.canvas.Replay'); -goog.require('ol.transform'); +goog.require('ol'); goog.require('ol.Feature'); goog.require('ol.geom.Polygon'); goog.require('ol.render.canvas.LineStringReplay'); @@ -11,6 +11,7 @@ goog.require('ol.renderer.vector'); goog.require('ol.style.Fill'); goog.require('ol.style.Stroke'); goog.require('ol.style.Style'); +goog.require('ol.transform'); describe('ol.render.canvas.ReplayGroup', function() { diff --git a/test/spec/ol/renderer/canvas/tilelayer.test.js b/test/spec/ol/renderer/canvas/tilelayer.test.js index aa695b9546..bf23c3a97d 100644 --- a/test/spec/ol/renderer/canvas/tilelayer.test.js +++ b/test/spec/ol/renderer/canvas/tilelayer.test.js @@ -2,12 +2,13 @@ goog.provide('ol.test.renderer.canvas.TileLayer'); goog.require('ol.Map'); goog.require('ol.View'); -goog.require('ol.transform'); goog.require('ol.layer.Tile'); +goog.require('ol.proj'); goog.require('ol.renderer.Map'); goog.require('ol.renderer.canvas.TileLayer'); goog.require('ol.source.TileWMS'); goog.require('ol.source.XYZ'); +goog.require('ol.transform'); describe('ol.renderer.canvas.TileLayer', function() { diff --git a/test/spec/ol/renderer/canvas/vectortilelayer.test.js b/test/spec/ol/renderer/canvas/vectortilelayer.test.js index bceb61a5d6..5ef41ccb71 100644 --- a/test/spec/ol/renderer/canvas/vectortilelayer.test.js +++ b/test/spec/ol/renderer/canvas/vectortilelayer.test.js @@ -3,6 +3,8 @@ goog.provide('ol.test.renderer.canvas.VectorTileLayer'); goog.require('ol'); goog.require('ol.Feature'); goog.require('ol.Map'); +goog.require('ol.TileState'); +goog.require('ol.VectorImageTile'); goog.require('ol.VectorTile'); goog.require('ol.View'); goog.require('ol.format.MVT'); diff --git a/test/spec/ol/source/tile.test.js b/test/spec/ol/source/tile.test.js index 36fb5db22a..27c45ed03e 100644 --- a/test/spec/ol/source/tile.test.js +++ b/test/spec/ol/source/tile.test.js @@ -9,6 +9,48 @@ goog.require('ol.source.Source'); goog.require('ol.source.Tile'); goog.require('ol.tilegrid.TileGrid'); +/** + * Tile source for tests that uses a EPSG:4326 based grid with 4 resolutions and + * 256x256 tiles. + * + * @constructor + * @extends {ol.source.Tile} + * @param {Object.} tileStates Lookup of tile key to + * tile state. + */ +ol.test.source.TileSource.Mock = function(tileStates) { + var tileGrid = new ol.tilegrid.TileGrid({ + resolutions: [360 / 256, 180 / 256, 90 / 256, 45 / 256], + origin: [-180, -180], + tileSize: 256 + }); + + ol.source.Tile.call(this, { + projection: ol.proj.get('EPSG:4326'), + tileGrid: tileGrid + }); + + for (var key in tileStates) { + this.tileCache.set(key, new ol.Tile(key.split('/'), tileStates[key])); + } + +}; +ol.inherits(ol.test.source.TileSource.Mock, ol.source.Tile); + + +/** + * @inheritDoc + */ +ol.test.source.TileSource.Mock.prototype.getTile = function(z, x, y) { + var key = this.getKeyZXY(z, x, y); + if (this.tileCache.containsKey(key)) { + return /** @type {!ol.Tile} */ (this.tileCache.get(key)); + } else { + var tile = new ol.Tile(key, 0); // IDLE + this.tileCache.set(key, tile); + return tile; + } +}; describe('ol.source.Tile', function() { @@ -79,7 +121,7 @@ describe('ol.source.Tile', function() { }); it('does not call the callback if no tiles are loaded', function() { - var source = new ol.test.source.TileMock({}); + var source = new ol.test.source.TileSource.Mock({}); var grid = source.getTileGrid(); var extent = [-180, -180, 180, 180]; var zoom = 3; @@ -90,7 +132,7 @@ describe('ol.source.Tile', function() { }); it('does not call getTile() if no tiles are loaded', function() { - var source = new ol.test.source.TileMock({}); + var source = new ol.test.source.TileSource.Mock({}); sinon.spy(source, 'getTile'); var grid = source.getTileGrid(); var extent = [-180, -180, 180, 180]; @@ -104,7 +146,7 @@ describe('ol.source.Tile', function() { it('calls callback for each loaded tile', function() { - var source = new ol.test.source.TileMock({ + var source = new ol.test.source.TileSource.Mock({ '1/0/0': 2, // LOADED '1/0/1': 2, // LOADED '1/1/0': 1, // LOADING, @@ -120,7 +162,7 @@ describe('ol.source.Tile', function() { it('returns true if range is fully loaded', function() { // a source with no loaded tiles - var source = new ol.test.source.TileMock({ + var source = new ol.test.source.TileSource.Mock({ '1/0/0': 2, // LOADED, '1/0/1': 2, // LOADED, '1/1/0': 2, // LOADED, @@ -140,7 +182,7 @@ describe('ol.source.Tile', function() { it('returns false if range is not fully loaded', function() { // a source with no loaded tiles - var source = new ol.test.source.TileMock({ + var source = new ol.test.source.TileSource.Mock({ '1/0/0': 2, // LOADED, '1/0/1': 2, // LOADED, '1/1/0': 1, // LOADING, @@ -160,7 +202,7 @@ describe('ol.source.Tile', function() { it('allows callback to override loaded check', function() { // a source with no loaded tiles - var source = new ol.test.source.TileMock({ + var source = new ol.test.source.TileSource.Mock({ '1/0/0': 2, // LOADED, '1/0/1': 2, // LOADED, '1/1/0': 2, // LOADED, @@ -232,7 +274,7 @@ describe('ol.source.Tile', function() { describe('#refresh()', function() { it('checks clearing of internal state', function() { // create a source with one loaded tile - var source = new ol.test.source.TileMock({ + var source = new ol.test.source.TileSource.Mock({ '1/0/0': 2 // LOADED }); // check the loaded tile is there @@ -250,63 +292,19 @@ describe('ol.source.Tile', function() { }); -/** - * Tile source for tests that uses a EPSG:4326 based grid with 4 resolutions and - * 256x256 tiles. - * - * @constructor - * @extends {ol.source.Tile} - * @param {Object.} tileStates Lookup of tile key to - * tile state. - */ -ol.test.source.TileMock = function(tileStates) { - var tileGrid = new ol.tilegrid.TileGrid({ - resolutions: [360 / 256, 180 / 256, 90 / 256, 45 / 256], - origin: [-180, -180], - tileSize: 256 - }); - - ol.source.Tile.call(this, { - projection: ol.proj.get('EPSG:4326'), - tileGrid: tileGrid - }); - - for (var key in tileStates) { - this.tileCache.set(key, new ol.Tile(key.split('/'), tileStates[key])); - } - -}; -ol.inherits(ol.test.source.TileMock, ol.source.Tile); - - -/** - * @inheritDoc - */ -ol.test.source.TileMock.prototype.getTile = function(z, x, y) { - var key = this.getKeyZXY(z, x, y); - if (this.tileCache.containsKey(key)) { - return /** @type {!ol.Tile} */ (this.tileCache.get(key)); - } else { - var tile = new ol.Tile(key, 0); // IDLE - this.tileCache.set(key, tile); - return tile; - } -}; - - -describe('ol.test.source.TileMock', function() { +describe('ol.test.source.TileSource.Mock', function() { describe('constructor', function() { it('creates a tile source', function() { - var source = new ol.test.source.TileMock({}); + var source = new ol.test.source.TileSource.Mock({}); expect(source).to.be.a(ol.source.Tile); - expect(source).to.be.a(ol.test.source.TileMock); + expect(source).to.be.a(ol.test.source.TileSource.Mock); }); }); describe('#getTile()', function() { it('returns a tile with state based on constructor arg', function() { - var source = new ol.test.source.TileMock({ + var source = new ol.test.source.TileSource.Mock({ '0/0/0': 2, // LOADED, '1/0/0': 2 // LOADED }); diff --git a/test/spec/ol/source/vectortile.test.js b/test/spec/ol/source/vectortile.test.js index 1f5c2d06e4..771f3e3b32 100644 --- a/test/spec/ol/source/vectortile.test.js +++ b/test/spec/ol/source/vectortile.test.js @@ -1,6 +1,7 @@ goog.provide('ol.test.source.VectorTile'); goog.require('ol.VectorImageTile'); +goog.require('ol.VectorTile'); goog.require('ol.format.MVT'); goog.require('ol.proj'); goog.require('ol.source.VectorTile'); diff --git a/test/spec/ol/style/text.test.js b/test/spec/ol/style/text.test.js index 2897f1fc5a..8fa6b00faa 100644 --- a/test/spec/ol/style/text.test.js +++ b/test/spec/ol/style/text.test.js @@ -1,6 +1,7 @@ goog.provide('ol.test.style.Text'); goog.require('ol.style.Fill'); +goog.require('ol.style.Stroke'); goog.require('ol.style.Text'); diff --git a/test/spec/ol/tile.test.js b/test/spec/ol/tile.test.js index 2a8a40314b..ec3ab6ad76 100644 --- a/test/spec/ol/tile.test.js +++ b/test/spec/ol/tile.test.js @@ -1,5 +1,7 @@ goog.provide('ol.test.Tile'); +goog.require('ol'); +goog.require('ol.ImageTile'); goog.require('ol.TileState'); describe('ol.Tile', function() { diff --git a/test/spec/ol/tilequeue.test.js b/test/spec/ol/tilequeue.test.js index b1e8f194d8..d94ec27083 100644 --- a/test/spec/ol/tilequeue.test.js +++ b/test/spec/ol/tilequeue.test.js @@ -3,6 +3,7 @@ goog.provide('ol.test.TileQueue'); goog.require('ol.ImageTile'); goog.require('ol.Tile'); goog.require('ol.TileQueue'); +goog.require('ol.TileState'); goog.require('ol.source.Image'); goog.require('ol.structs.PriorityQueue'); diff --git a/test/spec/ol/vectorimagetile.test.js b/test/spec/ol/vectorimagetile.test.js index 6d7559f802..2dd6b229fd 100644 --- a/test/spec/ol/vectorimagetile.test.js +++ b/test/spec/ol/vectorimagetile.test.js @@ -1,10 +1,12 @@ goog.provide('ol.test.VectorImageTile'); -goog.require('ol.events'); +goog.require('ol.TileState'); goog.require('ol.VectorImageTile'); goog.require('ol.VectorTile'); +goog.require('ol.events'); goog.require('ol.format.GeoJSON'); goog.require('ol.proj'); +goog.require('ol.tilegrid'); describe('ol.VectorImageTile', function() { diff --git a/test/spec/ol/vectortile.test.js b/test/spec/ol/vectortile.test.js index b794ef0d90..9ad2d9f287 100644 --- a/test/spec/ol/vectortile.test.js +++ b/test/spec/ol/vectortile.test.js @@ -1,11 +1,12 @@ goog.provide('ol.test.VectorTile'); -goog.require('ol.events'); +goog.require('ol.Feature'); goog.require('ol.VectorImageTile'); goog.require('ol.VectorTile'); -goog.require('ol.Feature'); +goog.require('ol.events'); goog.require('ol.format.TextFeature'); goog.require('ol.proj'); +goog.require('ol.proj.Projection'); describe('ol.VectorTile', function() { diff --git a/test/spec/ol/view.test.js b/test/spec/ol/view.test.js index f57ec3141e..10cb9c1ddd 100644 --- a/test/spec/ol/view.test.js +++ b/test/spec/ol/view.test.js @@ -1,9 +1,11 @@ goog.provide('ol.test.View'); goog.require('ol'); +goog.require('ol.Map'); goog.require('ol.View'); goog.require('ol.ViewHint'); goog.require('ol.extent'); +goog.require('ol.geom.Circle'); goog.require('ol.geom.LineString'); goog.require('ol.geom.Point'); diff --git a/test/test-extensions.js b/test/test-extensions.js index 32b47d9b24..e72879dfae 100644 --- a/test/test-extensions.js +++ b/test/test-extensions.js @@ -1,3 +1,8 @@ +goog.require('ol.array'); +goog.require('ol.has'); +goog.require('ol.renderer.canvas.Map'); +goog.require('ol.renderer.webgl.Map'); + // FIXME remove afterLoadXml as it uses the wrong XML parser on IE9 // helper functions for async testing and other utility functions. From a2c043d1b4e5cafabafbea7987c24b625f619d8d Mon Sep 17 00:00:00 2001 From: Tim Schaub Date: Mon, 3 Jul 2017 15:17:18 -0600 Subject: [PATCH 09/18] Clean up after rendering tests --- test/rendering/ol/source/tilewms.test.js | 24 ++++++++++++++++-------- test/test-extensions.js | 8 ++++++++ 2 files changed, 24 insertions(+), 8 deletions(-) diff --git a/test/rendering/ol/source/tilewms.test.js b/test/rendering/ol/source/tilewms.test.js index 85bae35dec..fc7193daed 100644 --- a/test/rendering/ol/source/tilewms.test.js +++ b/test/rendering/ol/source/tilewms.test.js @@ -47,9 +47,17 @@ describe('ol.rendering.source.TileWMS', function() { }); } + var map; + afterEach(function() { + if (map) { + disposeMap(map); + } + map = null; + }); + describe('0px gutter, 1 pixel ratio', function() { it('tests the canvas renderer', function(done) { - var map = createMap('canvas', 1); + map = createMap('canvas', 1); var source = createSource(0); tilesLoaded(source, function() { expectResemble(map, 'rendering/ol/source/expected/0_1.canvas.png', IMAGE_TOLERANCE, done); @@ -61,7 +69,7 @@ describe('ol.rendering.source.TileWMS', function() { where('WebGL').it('tests the WebGL renderer', function(done) { assertWebGL(); - var map = createMap('webgl', 1); + map = createMap('webgl', 1); var source = createSource(0); tilesLoaded(source, function() { expectResemble(map, 'rendering/ol/source/expected/0_1.webgl.png', IMAGE_TOLERANCE, done); @@ -74,7 +82,7 @@ describe('ol.rendering.source.TileWMS', function() { describe('0px gutter, 2 pixel ratio', function() { it('tests the canvas renderer', function(done) { - var map = createMap('canvas', 2); + map = createMap('canvas', 2); var source = createSource(0); tilesLoaded(source, function() { expectResemble(map, 'rendering/ol/source/expected/0_2.canvas.png', IMAGE_TOLERANCE, done); @@ -86,7 +94,7 @@ describe('ol.rendering.source.TileWMS', function() { where('WebGL').it('tests the WebGL renderer', function(done) { assertWebGL(); - var map = createMap('webgl', 2); + map = createMap('webgl', 2); var source = createSource(0); tilesLoaded(source, function() { expectResemble(map, 'rendering/ol/source/expected/0_2.webgl.png', IMAGE_TOLERANCE, done); @@ -100,7 +108,7 @@ describe('ol.rendering.source.TileWMS', function() { describe('20px gutter, 1 pixel ratio', function() { it('tests the canvas renderer', function(done) { - var map = createMap('canvas', 1); + map = createMap('canvas', 1); var source = createSource(20); tilesLoaded(source, function() { expectResemble(map, 'rendering/ol/source/expected/20_1.canvas.png', IMAGE_TOLERANCE, done); @@ -112,7 +120,7 @@ describe('ol.rendering.source.TileWMS', function() { where('WebGL').it('tests the WebGL renderer', function(done) { assertWebGL(); - var map = createMap('webgl', 1); + map = createMap('webgl', 1); var source = createSource(20); tilesLoaded(source, function() { expectResemble(map, 'rendering/ol/source/expected/20_1.webgl.png', IMAGE_TOLERANCE, done); @@ -125,7 +133,7 @@ describe('ol.rendering.source.TileWMS', function() { describe('20px gutter, 2 pixel ratio', function() { it('tests the canvas renderer', function(done) { - var map = createMap('canvas', 2); + map = createMap('canvas', 2); var source = createSource(20); tilesLoaded(source, function() { expectResemble(map, 'rendering/ol/source/expected/20_2.canvas.png', IMAGE_TOLERANCE, done); @@ -137,7 +145,7 @@ describe('ol.rendering.source.TileWMS', function() { where('WebGL').it('tests the WebGL renderer', function(done) { assertWebGL(); - var map = createMap('webgl', 2); + map = createMap('webgl', 2); var source = createSource(20); tilesLoaded(source, function() { expectResemble(map, 'rendering/ol/source/expected/20_2.webgl.png', IMAGE_TOLERANCE, done); diff --git a/test/test-extensions.js b/test/test-extensions.js index e72879dfae..048cf42242 100644 --- a/test/test-extensions.js +++ b/test/test-extensions.js @@ -494,4 +494,12 @@ goog.require('ol.renderer.webgl.Map'); }; }; + // throw if anybody appends a div to the body and doesn't remove it + afterEach(function() { + var garbage = document.body.getElementsByTagName('div'); + if (garbage.length) { + throw new Error('Found extra
    elements in the body'); + } + }); + })(this); From 3bdddeac1deb091e6fcb241358cb75aba8b346b6 Mon Sep 17 00:00:00 2001 From: Tim Schaub Date: Mon, 3 Jul 2017 15:39:02 -0600 Subject: [PATCH 10/18] More test cleanup --- test/rendering/ol/layer/image.test.js | 28 ++++----- test/rendering/ol/layer/tile.test.js | 63 +++++++------------ test/rendering/ol/layer/vector.test.js | 64 ++++++++++--------- test/rendering/ol/layer/vectortile.test.js | 28 ++++----- test/rendering/ol/map.test.js | 66 ++++++-------------- test/rendering/ol/source/tilewms.test.js | 33 +++++----- test/rendering/ol/style/circle.test.js | 21 ++++--- test/rendering/ol/style/icon.test.js | 27 ++++---- test/rendering/ol/style/linestring.test.js | 23 +++---- test/rendering/ol/style/polygon.test.js | 46 ++++++-------- test/rendering/ol/style/regularshape.test.js | 31 ++++----- test/rendering/ol/style/text.test.js | 26 ++++---- test/spec/ol/interaction/extent.test.js | 28 +++------ test/spec/ol/source/raster.test.js | 20 +++--- 14 files changed, 219 insertions(+), 285 deletions(-) diff --git a/test/rendering/ol/layer/image.test.js b/test/rendering/ol/layer/image.test.js index 121c5b6906..75d9e5e5e7 100644 --- a/test/rendering/ol/layer/image.test.js +++ b/test/rendering/ol/layer/image.test.js @@ -11,13 +11,11 @@ goog.require('ol.tilegrid'); describe('ol.rendering.layer.Image', function() { - var target, map; + var map; function createMap(renderer) { - target = createMapDiv(50, 50); - map = new ol.Map({ - target: target, + target: createMapDiv(50, 50), renderer: renderer, view: new ol.View({ center: ol.proj.transform( @@ -25,9 +23,15 @@ describe('ol.rendering.layer.Image', function() { zoom: 5 }) }); - return map; } + afterEach(function() { + if (map) { + disposeMap(map); + } + map = null; + }); + function waitForImages(sources, layerOptions, onImagesLoaded) { var imagesLoading = 0; var imagesLoaded = 0; @@ -70,12 +74,8 @@ describe('ol.rendering.layer.Image', function() { }); }); - afterEach(function() { - disposeMap(map); - }); - it('tests the canvas renderer', function(done) { - map = createMap('canvas'); + createMap('canvas'); waitForImages([source], {}, function() { expectResemble(map, 'rendering/ol/layer/expected/image-canvas.png', IMAGE_TOLERANCE, done); @@ -84,7 +84,7 @@ describe('ol.rendering.layer.Image', function() { where('WebGL').it('tests the WebGL renderer', function(done) { assertWebGL(); - map = createMap('webgl'); + createMap('webgl'); waitForImages([source], {}, function() { expectResemble(map, 'rendering/ol/layer/expected/image-webgl.png', IMAGE_TOLERANCE, done); @@ -103,12 +103,8 @@ describe('ol.rendering.layer.Image', function() { }); }); - afterEach(function() { - disposeMap(map); - }); - it('renders correctly', function(done) { - map = createMap('canvas'); + createMap('canvas'); waitForImages([source], {}, function() { expectResemble(map, 'rendering/ol/layer/expected/image-scaled.png', IMAGE_TOLERANCE, done); diff --git a/test/rendering/ol/layer/tile.test.js b/test/rendering/ol/layer/tile.test.js index 4be6ab5654..160bdb587d 100644 --- a/test/rendering/ol/layer/tile.test.js +++ b/test/rendering/ol/layer/tile.test.js @@ -17,15 +17,14 @@ goog.require('ol.tilegrid'); describe('ol.rendering.layer.Tile', function() { - var target, map; + var map; function createMap(renderer, opt_center, opt_size, opt_pixelRatio, opt_resolutions) { var size = opt_size !== undefined ? opt_size : [50, 50]; - target = createMapDiv(size[0], size[1]); map = new ol.Map({ pixelRatio: opt_pixelRatio || 1, - target: target, + target: createMapDiv(size[0], size[1]), renderer: renderer, view: new ol.View({ center: opt_center !== undefined ? opt_center : ol.proj.transform( @@ -34,9 +33,15 @@ describe('ol.rendering.layer.Tile', function() { zoom: 5 }) }); - return map; } + afterEach(function() { + if (map) { + disposeMap(map); + } + map = null; + }); + function waitForTiles(sources, layerOptions, onTileLoaded) { var tilesLoading = 0; var tileLoaded = 0; @@ -76,12 +81,8 @@ describe('ol.rendering.layer.Tile', function() { }); }); - afterEach(function() { - disposeMap(map); - }); - it('tests the canvas renderer', function(done) { - map = createMap('canvas'); + createMap('canvas'); waitForTiles([source], {}, function() { expectResemble(map, 'rendering/ol/layer/expected/osm-canvas.png', IMAGE_TOLERANCE, done); @@ -90,7 +91,7 @@ describe('ol.rendering.layer.Tile', function() { where('WebGL').it('tests the WebGL renderer', function(done) { assertWebGL(); - map = createMap('webgl'); + createMap('webgl'); waitForTiles([source], {}, function() { expectResemble(map, 'rendering/ol/layer/expected/osm-webgl.png', IMAGE_TOLERANCE, done); @@ -110,12 +111,8 @@ describe('ol.rendering.layer.Tile', function() { }); }); - afterEach(function() { - disposeMap(map); - }); - it('tests the canvas renderer', function(done) { - map = createMap('canvas'); + createMap('canvas'); waitForTiles([source1, source2], {}, function() { expectResemble(map, 'rendering/ol/layer/expected/2-layers-canvas.png', IMAGE_TOLERANCE, done); @@ -124,7 +121,7 @@ describe('ol.rendering.layer.Tile', function() { where('WebGL').it('tests the WebGL renderer', function(done) { assertWebGL(); - map = createMap('webgl'); + createMap('webgl'); waitForTiles([source1, source2], {}, function() { expectResemble(map, 'rendering/ol/layer/expected/2-layers-webgl.png', IMAGE_TOLERANCE, done); @@ -139,7 +136,7 @@ describe('ol.rendering.layer.Tile', function() { } it('tests canvas layer extent clipping', function(done) { - map = createMap('canvas'); + createMap('canvas'); waitForTiles([source1, source2], [{}, {extent: centerExtent(map)}], function() { expectResemble(map, 'rendering/ol/layer/expected/2-layers-canvas-extent.png', IMAGE_TOLERANCE, done); @@ -147,7 +144,7 @@ describe('ol.rendering.layer.Tile', function() { }); it('tests canvas layer extent clipping with rotation', function(done) { - map = createMap('canvas'); + createMap('canvas'); map.getView().setRotation(Math.PI / 2); waitForTiles([source1, source2], [{}, {extent: centerExtent(map)}], function() { expectResemble(map, 'rendering/ol/layer/expected/2-layers-canvas-extent-rotate.png', @@ -156,7 +153,7 @@ describe('ol.rendering.layer.Tile', function() { }); it('tests canvas layer extent clipping (HiDPI)', function(done) { - map = createMap('canvas', undefined, undefined, 2); + createMap('canvas', undefined, undefined, 2); waitForTiles([source1, source2], [{}, {extent: centerExtent(map)}], function() { expectResemble(map, 'rendering/ol/layer/expected/2-layers-canvas-extent-hidpi.png', IMAGE_TOLERANCE, done); @@ -164,7 +161,7 @@ describe('ol.rendering.layer.Tile', function() { }); it('tests canvas layer extent clipping with rotation (HiDPI)', function(done) { - map = createMap('canvas', undefined, undefined, 2); + createMap('canvas', undefined, undefined, 2); map.getView().setRotation(Math.PI / 2); waitForTiles([source1, source2], [{}, {extent: centerExtent(map)}], function() { expectResemble(map, 'rendering/ol/layer/expected/2-layers-canvas-extent-rotate-hidpi.png', @@ -183,12 +180,8 @@ describe('ol.rendering.layer.Tile', function() { }); }); - afterEach(function() { - disposeMap(map); - }); - it('tests the canvas renderer', function(done) { - map = createMap('canvas'); + createMap('canvas'); waitForTiles([source], {opacity: 0.2}, function() { expectResemble(map, 'rendering/ol/layer/expected/opacity-canvas.png', IMAGE_TOLERANCE, done); @@ -197,7 +190,7 @@ describe('ol.rendering.layer.Tile', function() { where('WebGL').it('tests the WebGL renderer', function(done) { assertWebGL(); - map = createMap('webgl'); + createMap('webgl'); waitForTiles([source], {opacity: 0.2}, function() { expectResemble(map, 'rendering/ol/layer/expected/opacity-webgl.png', IMAGE_TOLERANCE, done); @@ -216,13 +209,9 @@ describe('ol.rendering.layer.Tile', function() { }); } - afterEach(function() { - disposeMap(map); - }); - it('512x256 renders correcly using the canvas renderer', function(done) { var source = createSource('512x256'); - map = createMap('canvas', [-10997148, 4569099]); + createMap('canvas', [-10997148, 4569099]); waitForTiles([source], {}, function() { expectResemble(map, 'rendering/ol/layer/expected/512x256-canvas.png', IMAGE_TOLERANCE, done); @@ -232,7 +221,7 @@ describe('ol.rendering.layer.Tile', function() { where('WebGL').it('512x256 renders correcly using the webgl renderer', function(done) { assertWebGL(); var source = createSource('512x256'); - map = createMap('webgl', [-10997148, 4569099]); + createMap('webgl', [-10997148, 4569099]); waitForTiles([source], {}, function() { expectResemble(map, 'rendering/ol/layer/expected/512x256-webgl.png', IMAGE_TOLERANCE, done); @@ -241,7 +230,7 @@ describe('ol.rendering.layer.Tile', function() { it('192x256 renders correcly using the canvas renderer', function(done) { var source = createSource('192x256'); - map = createMap('canvas', [-11271098, 3747248], [100, 100], undefined, + createMap('canvas', [-11271098, 3747248], [100, 100], undefined, source.getTileGrid().getResolutions()); waitForTiles([source], {}, function() { expectResemble(map, 'rendering/ol/layer/expected/192x256-canvas.png', @@ -252,7 +241,7 @@ describe('ol.rendering.layer.Tile', function() { where('WebGL').it('192x256 renders correcly using the webgl renderer', function(done) { assertWebGL(); var source = createSource('192x256'); - map = createMap('webgl', [-11271098, 3747248], [100, 100], undefined, + createMap('webgl', [-11271098, 3747248], [100, 100], undefined, source.getTileGrid().getResolutions()); waitForTiles([source], {}, function() { expectResemble(map, 'rendering/ol/layer/expected/192x256-webgl.png', @@ -282,12 +271,8 @@ describe('ol.rendering.layer.Tile', function() { }; }); - afterEach(function() { - disposeMap(map); - }); - it('works with the canvas renderer', function(done) { - map = createMap('canvas', undefined, [100, 100]); + createMap('canvas', undefined, [100, 100]); map.getLayers().on('add', onAddLayer); waitForTiles([source], {}, function() { expectResemble(map, 'rendering/ol/layer/expected/render-canvas.png', diff --git a/test/rendering/ol/layer/vector.test.js b/test/rendering/ol/layer/vector.test.js index b6488429b0..e324569d3b 100644 --- a/test/rendering/ol/layer/vector.test.js +++ b/test/rendering/ol/layer/vector.test.js @@ -16,23 +16,27 @@ goog.require('ol.style.Style'); describe('ol.rendering.layer.Vector', function() { - var center, target, map; + var center = [1825927.7316762917, 6143091.089223046]; + var map; function createMap(renderer) { - target = createMapDiv(80, 80); - center = [1825927.7316762917, 6143091.089223046]; - map = new ol.Map({ - target: target, + target: createMapDiv(80, 80), renderer: renderer, view: new ol.View({ center: center, zoom: 13 }) }); - return map; } + afterEach(function() { + if (map) { + disposeMap(map); + } + map = null; + }); + var source; function addCircle(r) { @@ -67,12 +71,8 @@ describe('ol.rendering.layer.Vector', function() { source = new ol.source.Vector(); }); - afterEach(function() { - disposeMap(map); - }); - it('renders opacity correctly with the canvas renderer', function(done) { - map = createMap('canvas'); + createMap('canvas'); var smallLine = new ol.Feature(new ol.geom.LineString([ [center[0], center[1] - 1], [center[0], center[1] + 1] @@ -137,7 +137,7 @@ describe('ol.rendering.layer.Vector', function() { }); it('renders rotation correctly with the canvas renderer', function(done) { - map = createMap('canvas'); + createMap('canvas'); map.getView().setRotation(Math.PI + Math.PI / 4); addPolygon(300); addCircle(500); @@ -157,7 +157,7 @@ describe('ol.rendering.layer.Vector', function() { }); it('renders fill/stroke batches correctly with the canvas renderer', function(done) { - map = createMap('canvas'); + createMap('canvas'); source = new ol.source.Vector({ overlaps: false }); @@ -183,7 +183,7 @@ describe('ol.rendering.layer.Vector', function() { }); it('renders stroke batches correctly with the canvas renderer', function(done) { - map = createMap('canvas'); + createMap('canvas'); source = new ol.source.Vector({ overlaps: false }); @@ -207,7 +207,7 @@ describe('ol.rendering.layer.Vector', function() { }); it('interrupts fill/stroke batches correctly with the canvas renderer', function(done) { - map = createMap('canvas'); + createMap('canvas'); var color; function createSource(overlaps) { color = '#3399CC'; @@ -260,7 +260,7 @@ describe('ol.rendering.layer.Vector', function() { }); it('interrupts stroke batches correctly with the canvas renderer', function(done) { - map = createMap('canvas'); + createMap('canvas'); var color; function createSource(overlaps) { color = '#3399CC'; @@ -313,9 +313,9 @@ describe('ol.rendering.layer.Vector', function() { describe('polygon rendering', function() { - var map; + var map2; beforeEach(function() { - map = new ol.Map({ + map2 = new ol.Map({ target: createMapDiv(128, 128), view: new ol.View({ center: [0, 0], @@ -325,7 +325,8 @@ describe('ol.rendering.layer.Vector', function() { }); afterEach(function() { - disposeMap(map); + disposeMap(map2); + map2 = null; }); it('renders a feature that spans the world', function(done) { @@ -359,10 +360,10 @@ describe('ol.rendering.layer.Vector', function() { }) }); - map.addLayer(layer); + map2.addLayer(layer); - map.once('postrender', function() { - expectResemble(map, 'rendering/ol/layer/expected/inverted-star.png', 1, done); + map2.once('postrender', function() { + expectResemble(map2, 'rendering/ol/layer/expected/inverted-star.png', 1, done); }); }); @@ -371,7 +372,7 @@ describe('ol.rendering.layer.Vector', function() { describe('Polygon simplification', function() { - var layer, map; + var layer, map3; beforeEach(function() { var src = new ol.source.Vector({ @@ -402,7 +403,7 @@ describe('ol.rendering.layer.Vector', function() { projection: 'EPSG:4326' }); - map = new ol.Map({ + map3 = new ol.Map({ layers: [layer], target: createMapDiv(100, 100), view: view @@ -410,7 +411,8 @@ describe('ol.rendering.layer.Vector', function() { }); afterEach(function() { - disposeMap(map); + disposeMap(map3); + map3 = null; }); it('renders partially out-of-view polygons with a fill and stroke', function(done) { @@ -423,8 +425,8 @@ describe('ol.rendering.layer.Vector', function() { color: [255, 0, 0, 1] }) })); - map.once('postrender', function() { - expectResemble(map, 'rendering/ol/layer/expected/vector-canvas-simplified.png', + map3.once('postrender', function() { + expectResemble(map3, 'rendering/ol/layer/expected/vector-canvas-simplified.png', IMAGE_TOLERANCE, done); }); }); @@ -435,8 +437,8 @@ describe('ol.rendering.layer.Vector', function() { color: [0, 0, 0, 1] }) })); - map.once('postrender', function() { - expectResemble(map, 'rendering/ol/layer/expected/vector-canvas-simplified-fill.png', + map3.once('postrender', function() { + expectResemble(map3, 'rendering/ol/layer/expected/vector-canvas-simplified-fill.png', IMAGE_TOLERANCE, done); }); }); @@ -448,8 +450,8 @@ describe('ol.rendering.layer.Vector', function() { width: 2 }) })); - map.once('postrender', function() { - expectResemble(map, 'rendering/ol/layer/expected/vector-canvas-simplified-stroke.png', + map3.once('postrender', function() { + expectResemble(map3, 'rendering/ol/layer/expected/vector-canvas-simplified-stroke.png', IMAGE_TOLERANCE, done); }); }); diff --git a/test/rendering/ol/layer/vectortile.test.js b/test/rendering/ol/layer/vectortile.test.js index 7dc677e441..a2b8956cca 100644 --- a/test/rendering/ol/layer/vectortile.test.js +++ b/test/rendering/ol/layer/vectortile.test.js @@ -11,23 +11,25 @@ goog.require('ol.tilegrid'); describe('ol.rendering.layer.VectorTile', function() { - var target, map; + var map; function createMap(renderer, opt_pixelRatio) { - target = createMapDiv(50, 50); - map = new ol.Map({ pixelRatio: opt_pixelRatio, - target: target, + target: createMapDiv(50, 50), renderer: renderer, view: new ol.View({ center: [1825927.7316762917, 6143091.089223046], zoom: 14 }) }); - return map; } + afterEach(function() { + disposeMap(map); + map = null; + }); + function waitForTiles(source, layerOptions, onTileLoaded) { var tilesLoading = 0; var tileLoaded = 0; @@ -68,29 +70,25 @@ describe('ol.rendering.layer.VectorTile', function() { }); }); - afterEach(function() { - disposeMap(map); - }); - it('renders correctly with the canvas renderer', function(done) { - map = createMap('canvas'); + createMap('canvas'); waitForTiles(source, {}, function() { expectResemble(map, 'rendering/ol/layer/expected/vectortile-canvas.png', - 11.7, done); + 22, done); }); }); it('renders rotated view correctly with the canvas renderer', function(done) { - map = createMap('canvas'); + createMap('canvas'); map.getView().setRotation(Math.PI / 4); waitForTiles(source, {}, function() { expectResemble(map, 'rendering/ol/layer/expected/vectortile-canvas-rotated.png', - 13.4, done); + 14, done); }); }); it('renders correctly with the canvas renderer (HiDPI)', function(done) { - map = createMap('canvas', 2); + createMap('canvas', 2); waitForTiles(source, {}, function() { expectResemble(map, 'rendering/ol/layer/expected/vectortile-canvas-hidpi.png', 11.3, done); @@ -98,7 +96,7 @@ describe('ol.rendering.layer.VectorTile', function() { }); it('renders rotated view correctly with the canvas renderer (HiDPI)', function(done) { - map = createMap('canvas', 2); + createMap('canvas', 2); map.getView().setRotation(Math.PI / 4); waitForTiles(source, {}, function() { expectResemble(map, 'rendering/ol/layer/expected/vectortile-canvas-rotated-hidpi.png', diff --git a/test/rendering/ol/map.test.js b/test/rendering/ol/map.test.js index f82e60bb1b..755805a6c0 100644 --- a/test/rendering/ol/map.test.js +++ b/test/rendering/ol/map.test.js @@ -10,11 +10,8 @@ goog.require('ol.source.Vector'); describe('ol.rendering.Map', function() { - var target, map; - + var map; function createMap(renderer) { - target = createMapDiv(50, 50); - var vectorLayer = new ol.layer.Vector({ source: new ol.source.Vector({ features: [new ol.Feature({ @@ -24,7 +21,7 @@ describe('ol.rendering.Map', function() { }); map = new ol.Map({ - target: target, + target: createMapDiv(50, 50), renderer: renderer, layers: [vectorLayer], view: new ol.View({ @@ -33,34 +30,19 @@ describe('ol.rendering.Map', function() { resolution: 1 }) }); - return map; } - describe('#updateSize()', function() { - var map, target; - - function createMap(renderer) { - target = document.createElement('div'); - document.body.appendChild(target); - map = new ol.Map({ - renderer: renderer, - controls: [], - target: target, - view: new ol.View({ - center: [0, 0], - zoom: 2 - }) - }); - return map; + afterEach(function() { + if (map) { + disposeMap(map); } + map = null; + }); - afterEach(function() { - map.setTarget(null); - document.body.removeChild(target); - }); + describe('#updateSize()', function() { it('tests the canvas renderer', function(done) { - map = createMap('canvas'); + createMap('canvas'); map.once('postrender', function() { var initialSize = map.getSize(); map.updateSize(); @@ -71,7 +53,7 @@ describe('ol.rendering.Map', function() { where('WebGL').it('tests the WebGL renderer', function(done) { assertWebGL(); - map = createMap('webgl'); + createMap('webgl'); map.once('postrender', function() { var initialSize = map.getSize(); map.updateSize(); @@ -82,31 +64,25 @@ describe('ol.rendering.Map', function() { }); describe('#render()', function() { - afterEach(function() { - disposeMap(map); - }); it('tests the canvas renderer', function(done) { - map = createMap('canvas'); + createMap('canvas'); expectResemble( map, 'rendering/ol/expected/render-canvas.png', IMAGE_TOLERANCE, done); }); where('WebGL').it('tests the WebGL renderer', function(done) { assertWebGL(); - map = createMap('webgl'); + createMap('webgl'); expectResemble( map, 'rendering/ol/expected/render-webgl.png', IMAGE_TOLERANCE, done); }); }); describe('#pan()', function() { - afterEach(function() { - disposeMap(map); - }); it('tests the canvas renderer', function(done) { - map = createMap('canvas'); + createMap('canvas'); map.getView().setCenter([10, 10]); expectResemble( map, 'rendering/ol/expected/pan-canvas.png', IMAGE_TOLERANCE, done); @@ -114,7 +90,7 @@ describe('ol.rendering.Map', function() { where('WebGL').it('tests the WebGL renderer', function(done) { assertWebGL(); - map = createMap('webgl'); + createMap('webgl'); map.getView().setCenter([10, 10]); expectResemble( map, 'rendering/ol/expected/pan-webgl.png', IMAGE_TOLERANCE, done); @@ -122,12 +98,9 @@ describe('ol.rendering.Map', function() { }); describe('#rotate()', function() { - afterEach(function() { - disposeMap(map); - }); it('tests the canvas renderer', function(done) { - map = createMap('canvas'); + createMap('canvas'); map.getView().setRotation(90); map.getView().setCenter([10, 10]); expectResemble( @@ -136,7 +109,7 @@ describe('ol.rendering.Map', function() { where('WebGL').it('tests the WebGL renderer', function(done) { assertWebGL(); - map = createMap('webgl'); + createMap('webgl'); map.getView().setRotation(90); map.getView().setCenter([10, 10]); expectResemble( @@ -145,12 +118,9 @@ describe('ol.rendering.Map', function() { }); describe('#zoom()', function() { - afterEach(function() { - disposeMap(map); - }); it('tests the canvas renderer', function(done) { - map = createMap('canvas'); + createMap('canvas'); map.getView().setCenter([10, 10]); map.getView().setResolution(2); expectResemble( @@ -159,7 +129,7 @@ describe('ol.rendering.Map', function() { where('WebGL').it('tests the WebGL renderer', function(done) { assertWebGL(); - map = createMap('webgl'); + createMap('webgl'); map.getView().setCenter([10, 10]); map.getView().setResolution(2); expectResemble( diff --git a/test/rendering/ol/source/tilewms.test.js b/test/rendering/ol/source/tilewms.test.js index fc7193daed..838f50a136 100644 --- a/test/rendering/ol/source/tilewms.test.js +++ b/test/rendering/ol/source/tilewms.test.js @@ -25,8 +25,9 @@ describe('ol.rendering.source.TileWMS', function() { } + var map; function createMap(renderer, pixelRatio) { - return new ol.Map({ + map = new ol.Map({ target: createMapDiv(200, 200), pixelRatio: pixelRatio, renderer: renderer, @@ -37,6 +38,13 @@ describe('ol.rendering.source.TileWMS', function() { }); } + afterEach(function() { + if (map) { + disposeMap(map); + } + map = null; + }); + function createSource(gutter) { return new ol.source.TileWMS({ params: { @@ -47,17 +55,10 @@ describe('ol.rendering.source.TileWMS', function() { }); } - var map; - afterEach(function() { - if (map) { - disposeMap(map); - } - map = null; - }); describe('0px gutter, 1 pixel ratio', function() { it('tests the canvas renderer', function(done) { - map = createMap('canvas', 1); + createMap('canvas', 1); var source = createSource(0); tilesLoaded(source, function() { expectResemble(map, 'rendering/ol/source/expected/0_1.canvas.png', IMAGE_TOLERANCE, done); @@ -69,7 +70,7 @@ describe('ol.rendering.source.TileWMS', function() { where('WebGL').it('tests the WebGL renderer', function(done) { assertWebGL(); - map = createMap('webgl', 1); + createMap('webgl', 1); var source = createSource(0); tilesLoaded(source, function() { expectResemble(map, 'rendering/ol/source/expected/0_1.webgl.png', IMAGE_TOLERANCE, done); @@ -82,7 +83,7 @@ describe('ol.rendering.source.TileWMS', function() { describe('0px gutter, 2 pixel ratio', function() { it('tests the canvas renderer', function(done) { - map = createMap('canvas', 2); + createMap('canvas', 2); var source = createSource(0); tilesLoaded(source, function() { expectResemble(map, 'rendering/ol/source/expected/0_2.canvas.png', IMAGE_TOLERANCE, done); @@ -94,7 +95,7 @@ describe('ol.rendering.source.TileWMS', function() { where('WebGL').it('tests the WebGL renderer', function(done) { assertWebGL(); - map = createMap('webgl', 2); + createMap('webgl', 2); var source = createSource(0); tilesLoaded(source, function() { expectResemble(map, 'rendering/ol/source/expected/0_2.webgl.png', IMAGE_TOLERANCE, done); @@ -108,7 +109,7 @@ describe('ol.rendering.source.TileWMS', function() { describe('20px gutter, 1 pixel ratio', function() { it('tests the canvas renderer', function(done) { - map = createMap('canvas', 1); + createMap('canvas', 1); var source = createSource(20); tilesLoaded(source, function() { expectResemble(map, 'rendering/ol/source/expected/20_1.canvas.png', IMAGE_TOLERANCE, done); @@ -120,7 +121,7 @@ describe('ol.rendering.source.TileWMS', function() { where('WebGL').it('tests the WebGL renderer', function(done) { assertWebGL(); - map = createMap('webgl', 1); + createMap('webgl', 1); var source = createSource(20); tilesLoaded(source, function() { expectResemble(map, 'rendering/ol/source/expected/20_1.webgl.png', IMAGE_TOLERANCE, done); @@ -133,7 +134,7 @@ describe('ol.rendering.source.TileWMS', function() { describe('20px gutter, 2 pixel ratio', function() { it('tests the canvas renderer', function(done) { - map = createMap('canvas', 2); + createMap('canvas', 2); var source = createSource(20); tilesLoaded(source, function() { expectResemble(map, 'rendering/ol/source/expected/20_2.canvas.png', IMAGE_TOLERANCE, done); @@ -145,7 +146,7 @@ describe('ol.rendering.source.TileWMS', function() { where('WebGL').it('tests the WebGL renderer', function(done) { assertWebGL(); - map = createMap('webgl', 2); + createMap('webgl', 2); var source = createSource(20); tilesLoaded(source, function() { expectResemble(map, 'rendering/ol/source/expected/20_2.webgl.png', IMAGE_TOLERANCE, done); diff --git a/test/rendering/ol/style/circle.test.js b/test/rendering/ol/style/circle.test.js index 5e6e78a149..2392a07c77 100644 --- a/test/rendering/ol/style/circle.test.js +++ b/test/rendering/ol/style/circle.test.js @@ -14,18 +14,16 @@ goog.require('ol.style.Stroke'); describe('ol.rendering.style.Circle', function() { - var target, map, vectorSource; + var map, vectorSource; function createMap(renderer) { - target = createMapDiv(50, 50); - vectorSource = new ol.source.Vector(); var vectorLayer = new ol.layer.Vector({ source: vectorSource }); map = new ol.Map({ - target: target, + target: createMapDiv(50, 50), renderer: renderer, layers: [vectorLayer], view: new ol.View({ @@ -34,13 +32,16 @@ describe('ol.rendering.style.Circle', function() { resolution: 1 }) }); - return map; } - describe('#render', function() { - afterEach(function() { + afterEach(function() { + if (map) { disposeMap(map); - }); + map = null; + } + }); + + describe('#render', function() { function createFeatures() { var feature; @@ -184,7 +185,7 @@ describe('ol.rendering.style.Circle', function() { } it('tests the canvas renderer', function(done) { - map = createMap('canvas'); + createMap('canvas'); createFeatures(); expectResemble(map, 'rendering/ol/style/expected/circle-canvas.png', 8.0, done); @@ -192,7 +193,7 @@ describe('ol.rendering.style.Circle', function() { where('WebGL').it('tests the WebGL renderer', function(done) { assertWebGL(); - map = createMap('webgl'); + createMap('webgl'); createFeatures(); expectResemble(map, 'rendering/ol/style/expected/circle-webgl.png', 8.0, done); diff --git a/test/rendering/ol/style/icon.test.js b/test/rendering/ol/style/icon.test.js index 67759ee524..9db2f15d6a 100644 --- a/test/rendering/ol/style/icon.test.js +++ b/test/rendering/ol/style/icon.test.js @@ -12,7 +12,7 @@ goog.require('ol.style.Style'); describe('ol.rendering.style.Icon', function() { - var target, map, vectorSource; + var map, vectorSource; var imgInfo = { anchor: [0.5, 46], @@ -24,15 +24,13 @@ describe('ol.rendering.style.Icon', function() { }; function createMap(renderer, width, height) { - target = createMapDiv(width ? width : 50, height ? height : 50); - vectorSource = new ol.source.Vector(); var vectorLayer = new ol.layer.Vector({ source: vectorSource }); map = new ol.Map({ - target: target, + target: createMapDiv(width ? width : 50, height ? height : 50), renderer: renderer, layers: [vectorLayer], view: new ol.View({ @@ -41,13 +39,16 @@ describe('ol.rendering.style.Icon', function() { resolution: 1 }) }); - return map; } - describe('#render', function() { - afterEach(function() { + afterEach(function() { + if (map) { disposeMap(map); - }); + map = null; + } + }); + + describe('#render', function() { function createFeatures(src, imgInfo, callback) { var feature; @@ -68,7 +69,7 @@ describe('ol.rendering.style.Icon', function() { } it('tests the canvas renderer', function(done) { - map = createMap('canvas'); + createMap('canvas'); createFeatures('rendering/ol/data/icon.png', imgInfo, function() { expectResemble(map, 'rendering/ol/style/expected/icon-canvas.png', IMAGE_TOLERANCE, done); @@ -76,7 +77,7 @@ describe('ol.rendering.style.Icon', function() { }); it('scales svg correctly in the canvas renderer', function(done) { - map = createMap('canvas', 512, 512); + createMap('canvas', 512, 512); createFeatures('rendering/ol/data/me0.svg', { scale: 96 / 512, imgSize: [512, 512] @@ -87,7 +88,7 @@ describe('ol.rendering.style.Icon', function() { }); it('uses offset correctly in the canvas renderer', function(done) { - map = createMap('canvas', 256, 512); + createMap('canvas', 256, 512); createFeatures('rendering/ol/data/me0.svg', { offset: [0, 256], size: [256, 256], @@ -99,7 +100,7 @@ describe('ol.rendering.style.Icon', function() { }); it('uses offset correctly if it is larger than size in the canvas renderer', function(done) { - map = createMap('canvas', 256, 512); + createMap('canvas', 256, 512); createFeatures('rendering/ol/data/me0.svg', { offset: [0, 374], size: [256, 256], @@ -112,7 +113,7 @@ describe('ol.rendering.style.Icon', function() { where('WebGL').it('tests the WebGL renderer', function(done) { assertWebGL(); - map = createMap('webgl'); + createMap('webgl'); createFeatures('rendering/ol/data/icon.png', imgInfo, function() { expectResemble(map, 'rendering/ol/style/expected/icon-webgl.png', 2.0, done); diff --git a/test/rendering/ol/style/linestring.test.js b/test/rendering/ol/style/linestring.test.js index 5ebe3ac9f1..e9cb82c58c 100644 --- a/test/rendering/ol/style/linestring.test.js +++ b/test/rendering/ol/style/linestring.test.js @@ -12,11 +12,9 @@ goog.require('ol.style.Stroke'); describe('ol.rendering.style.LineString', function() { - var target, map, vectorSource; + var map, vectorSource; function createMap(renderer, opt_pixelRatio) { - target = createMapDiv(50, 50); - vectorSource = new ol.source.Vector(); var vectorLayer = new ol.layer.Vector({ source: vectorSource @@ -24,7 +22,7 @@ describe('ol.rendering.style.LineString', function() { map = new ol.Map({ pixelRatio: opt_pixelRatio || 1, - target: target, + target: createMapDiv(50, 50), renderer: renderer, layers: [vectorLayer], view: new ol.View({ @@ -33,13 +31,16 @@ describe('ol.rendering.style.LineString', function() { resolution: 1 }) }); - return map; } - describe('different strokes', function() { - afterEach(function() { + afterEach(function() { + if (map) { disposeMap(map); - }); + map = null; + } + }); + + describe('different strokes', function() { function createFeatures() { var feature; @@ -111,7 +112,7 @@ describe('ol.rendering.style.LineString', function() { } it('tests the canvas renderer', function(done) { - map = createMap('canvas'); + createMap('canvas'); createFeatures(); expectResemble( map, 'rendering/ol/style/expected/linestring-strokes-canvas.png', @@ -119,14 +120,14 @@ describe('ol.rendering.style.LineString', function() { }); where('WebGL').it('tests the WebGL renderer', function(done) { assertWebGL(); - map = createMap('webgl'); + createMap('webgl'); createFeatures(); expectResemble(map, 'rendering/ol/style/expected/linestring-strokes-webgl.png', 14.6, done); }); it('tests the canvas renderer (HiDPI)', function(done) { - map = createMap('canvas', 2); + createMap('canvas', 2); createFeatures(); expectResemble( map, 'rendering/ol/style/expected/linestring-strokes-canvas-hidpi.png', diff --git a/test/rendering/ol/style/polygon.test.js b/test/rendering/ol/style/polygon.test.js index d5eea4efec..1974077206 100644 --- a/test/rendering/ol/style/polygon.test.js +++ b/test/rendering/ol/style/polygon.test.js @@ -13,11 +13,10 @@ goog.require('ol.style.Stroke'); describe('ol.rendering.style.Polygon', function() { - var target, map, vectorSource; + var map, vectorSource; function createMap(renderer, opt_size) { var size = opt_size || 50; - target = createMapDiv(size, size); vectorSource = new ol.source.Vector(); var vectorLayer = new ol.layer.Vector({ @@ -25,7 +24,7 @@ describe('ol.rendering.style.Polygon', function() { }); map = new ol.Map({ - target: target, + target: createMapDiv(size, size), renderer: renderer, layers: [vectorLayer], view: new ol.View({ @@ -34,13 +33,16 @@ describe('ol.rendering.style.Polygon', function() { resolution: 1 }) }); - return map; } - describe('different types', function() { - afterEach(function() { + afterEach(function() { + if (map) { disposeMap(map); - }); + map = null; + } + }); + + describe('different types', function() { function createFeatures() { var fill = new ol.style.Fill({color: 'red'}); @@ -86,14 +88,14 @@ describe('ol.rendering.style.Polygon', function() { } it('tests the canvas renderer', function(done) { - map = createMap('canvas'); + createMap('canvas'); createFeatures(); expectResemble(map, 'rendering/ol/style/expected/polygon-types-canvas.png', IMAGE_TOLERANCE, done); }); where('WebGL').it('tests the webgl renderer', function(done) { - map = createMap('webgl'); + createMap('webgl'); createFeatures(); expectResemble(map, 'rendering/ol/style/expected/polygon-types-webgl.png', IMAGE_TOLERANCE, done); @@ -101,9 +103,6 @@ describe('ol.rendering.style.Polygon', function() { }); describe('different types with stroke', function() { - afterEach(function() { - disposeMap(map); - }); function createFeatures() { var stroke = new ol.style.Stroke({ @@ -154,7 +153,7 @@ describe('ol.rendering.style.Polygon', function() { } it('tests the canvas renderer', function(done) { - map = createMap('canvas', 100); + createMap('canvas', 100); map.getView().setResolution(0.5); createFeatures(); expectResemble(map, 'rendering/ol/style/expected/polygon-types-canvas-stroke.png', @@ -162,7 +161,7 @@ describe('ol.rendering.style.Polygon', function() { }); where('WebGL').it('tests the webgl renderer', function(done) { - map = createMap('webgl', 100); + createMap('webgl', 100); map.getView().setResolution(0.5); createFeatures(); expectResemble(map, 'rendering/ol/style/expected/polygon-types-webgl-stroke.png', @@ -171,9 +170,6 @@ describe('ol.rendering.style.Polygon', function() { }); describe('z-index', function() { - afterEach(function() { - disposeMap(map); - }); function createFeatures() { var feature; @@ -216,14 +212,14 @@ describe('ol.rendering.style.Polygon', function() { } it('tests the canvas renderer', function(done) { - map = createMap('canvas'); + createMap('canvas'); createFeatures(); expectResemble(map, 'rendering/ol/style/expected/polygon-zindex-canvas.png', IMAGE_TOLERANCE, done); }); where('WebGL').it('tests the webgl renderer', function(done) { - map = createMap('webgl'); + createMap('webgl'); createFeatures(); expectResemble(map, 'rendering/ol/style/expected/polygon-zindex-webgl.png', IMAGE_TOLERANCE, done); @@ -231,9 +227,6 @@ describe('ol.rendering.style.Polygon', function() { }); describe('different fills and strokes', function() { - afterEach(function() { - disposeMap(map); - }); function createFeatures() { var feature; @@ -275,7 +268,7 @@ describe('ol.rendering.style.Polygon', function() { } it('tests the canvas renderer', function(done) { - map = createMap('canvas'); + createMap('canvas'); createFeatures(); expectResemble( map, 'rendering/ol/style/expected/polygon-fill-and-strokes-canvas.png', @@ -283,7 +276,7 @@ describe('ol.rendering.style.Polygon', function() { }); where('WebGL').it('tests the webgl renderer', function(done) { - map = createMap('webgl'); + createMap('webgl'); createFeatures(); expectResemble( map, 'rendering/ol/style/expected/polygon-fill-and-strokes-webgl.png', @@ -292,9 +285,6 @@ describe('ol.rendering.style.Polygon', function() { }); describe('CanvasPattern and LinearGradient as fills and strokes', function() { - afterEach(function() { - disposeMap(map); - }); function createRainbowGradient() { var canvas = document.createElement('canvas'); @@ -340,7 +330,7 @@ describe('ol.rendering.style.Polygon', function() { } it('tests the canvas renderer', function(done) { - map = createMap('canvas'); + createMap('canvas'); createFeatures(); expectResemble( map, 'rendering/ol/style/expected/polygon-pattern-gradient-canvas.png', diff --git a/test/rendering/ol/style/regularshape.test.js b/test/rendering/ol/style/regularshape.test.js index 613ba0b015..c8681fa6d5 100644 --- a/test/rendering/ol/style/regularshape.test.js +++ b/test/rendering/ol/style/regularshape.test.js @@ -14,18 +14,16 @@ goog.require('ol.style.Stroke'); describe('ol.rendering.style.RegularShape', function() { - var target, map, vectorSource; + var map, vectorSource; function createMap(renderer) { - target = createMapDiv(50, 50); - vectorSource = new ol.source.Vector(); var vectorLayer = new ol.layer.Vector({ source: vectorSource }); map = new ol.Map({ - target: target, + target: createMapDiv(50, 50), renderer: renderer, layers: [vectorLayer], view: new ol.View({ @@ -34,11 +32,16 @@ describe('ol.rendering.style.RegularShape', function() { resolution: 1 }) }); - return map; } - function createFeatures(stroke, fill) { + afterEach(function() { + if (map) { + disposeMap(map); + map = null; + } + }); + function createFeatures(stroke, fill) { var feature; feature = new ol.Feature({ geometry: new ol.geom.Point([-15, 15]) @@ -109,12 +112,8 @@ describe('ol.rendering.style.RegularShape', function() { var stroke = new ol.style.Stroke({width: 2}); var fill = new ol.style.Fill({color: 'red'}); - afterEach(function() { - disposeMap(map); - }); - it('tests the canvas renderer', function(done) { - map = createMap('canvas'); + createMap('canvas'); createFeatures(stroke, fill); expectResemble(map, 'rendering/ol/style/expected/regularshape-canvas.png', 9.4, done); }); @@ -138,7 +137,7 @@ describe('ol.rendering.style.RegularShape', function() { where('WebGL').it('tests the WebGL renderer', function(done) { assertWebGL(); - map = createMap('webgl'); + createMap('webgl'); createFeatures(stroke, fill); expectResemble(map, 'rendering/ol/style/expected/regularshape-webgl.png', 8.2, done); }); @@ -148,19 +147,15 @@ describe('ol.rendering.style.RegularShape', function() { var stroke = new ol.style.Stroke(); var fill = new ol.style.Fill(); - afterEach(function() { - disposeMap(map); - }); - it('tests the canvas renderer', function(done) { - map = createMap('canvas'); + createMap('canvas'); createFeatures(stroke, fill); expectResemble(map, 'rendering/ol/style/expected/regularshape-canvas-default-style.png', 3.0, done); }); where('WebGL').it('tests the WebGL renderer', function(done) { assertWebGL(); - map = createMap('webgl'); + createMap('webgl'); createFeatures(stroke, fill); expectResemble(map, 'rendering/ol/style/expected/regularshape-webgl-default-style.png', 3.0, done); }); diff --git a/test/rendering/ol/style/text.test.js b/test/rendering/ol/style/text.test.js index 135c5617e0..ec6ea416e5 100644 --- a/test/rendering/ol/style/text.test.js +++ b/test/rendering/ol/style/text.test.js @@ -13,18 +13,16 @@ goog.require('ol.style.Stroke'); describe('ol.rendering.style.Text', function() { - var target, map, vectorSource; + var map, vectorSource; function createMap(renderer) { - target = createMapDiv(200, 200); - vectorSource = new ol.source.Vector(); var vectorLayer = new ol.layer.Vector({ source: vectorSource }); map = new ol.Map({ - target: target, + target: createMapDiv(200, 200), renderer: renderer, layers: [vectorLayer], view: new ol.View({ @@ -33,13 +31,16 @@ describe('ol.rendering.style.Text', function() { resolution: 1 }) }); - return map; } - describe('#render', function() { - afterEach(function() { + afterEach(function() { + if (map) { disposeMap(map); - }); + map = null; + } + }); + + describe('#render', function() { function createFeatures() { var feature; @@ -86,30 +87,29 @@ describe('ol.rendering.style.Text', function() { }) })); vectorSource.addFeature(feature); - } it('tests the canvas renderer without rotation', function(done) { - map = createMap('canvas'); + createMap('canvas'); createFeatures(); expectResemble(map, 'rendering/ol/style/expected/text-canvas.png', IMAGE_TOLERANCE, done); }); it('tests the canvas renderer with rotation', function(done) { - map = createMap('canvas'); + createMap('canvas'); createFeatures(); map.getView().setRotation(Math.PI / 7); expectResemble(map, 'rendering/ol/style/expected/text-rotated-canvas.png', IMAGE_TOLERANCE, done); }); where('WebGL').it('tests the webgl renderer without rotation', function(done) { - map = createMap('webgl'); + createMap('webgl'); createFeatures(); expectResemble(map, 'rendering/ol/style/expected/text-webgl.png', 1.8, done); }); where('WebGL').it('tests the webgl renderer with rotation', function(done) { - map = createMap('webgl'); + createMap('webgl'); createFeatures(); map.getView().setRotation(Math.PI / 7); expectResemble(map, 'rendering/ol/style/expected/text-rotated-webgl.png', 1.8, done); diff --git a/test/spec/ol/interaction/extent.test.js b/test/spec/ol/interaction/extent.test.js index acdb85865a..fd1520e28f 100644 --- a/test/spec/ol/interaction/extent.test.js +++ b/test/spec/ol/interaction/extent.test.js @@ -7,22 +7,13 @@ goog.require('ol.interaction.Extent'); goog.require('ol.pointer.PointerEvent'); describe('ol.interaction.Extent', function() { - - var target, map, interaction; + var map, interaction; var width = 360; var height = 180; - beforeEach(function(done) { - target = document.createElement('div'); - - var style = target.style; - style.position = 'absolute'; - style.left = '-1000px'; - style.top = '-1000px'; - style.width = width + 'px'; - style.height = height + 'px'; - document.body.appendChild(target); + beforeEach(function() { + var target = createMapDiv(width, height); map = new ol.Map({ target: target, @@ -33,18 +24,18 @@ describe('ol.interaction.Extent', function() { resolution: 1 }) }); - - map.once('postrender', function() { - done(); - }); + map.renderSync(); interaction = new ol.interaction.Extent(); map.addInteraction(interaction); }); afterEach(function() { - map.dispose(); - document.body.removeChild(target); + if (map) { + disposeMap(map); + } + map = null; + interaction = null; }); /** @@ -92,6 +83,7 @@ describe('ol.interaction.Extent', function() { expect(interaction.snapToVertex_([230, 40], map)).to.eql([50, 50]); expect(interaction.snapToVertex_([231, 41], map)).to.eql([50, 50]); }); + it('snap to edge works', function() { interaction.setExtent([-50, -50, 50, 50]); diff --git a/test/spec/ol/source/raster.test.js b/test/spec/ol/source/raster.test.js index 6d4d44458e..90017bfeeb 100644 --- a/test/spec/ol/source/raster.test.js +++ b/test/spec/ol/source/raster.test.js @@ -22,7 +22,7 @@ var blue = 'data:image/gif;base64,R0lGODlhAQABAPAAAAAA/////yH5BAAAAAAALAAAAA' + where('Uint8ClampedArray').describe('ol.source.Raster', function() { - var target, map, redSource, greenSource, blueSource, raster; + var map, target, redSource, greenSource, blueSource, raster; beforeEach(function() { target = document.createElement('div'); @@ -79,13 +79,14 @@ where('Uint8ClampedArray').describe('ol.source.Raster', function() { }); afterEach(function() { - map.setTarget(null); - map.dispose(); + if (map) { + disposeMap(map); + } + map = null; raster.dispose(); greenSource.dispose(); redSource.dispose(); blueSource.dispose(); - document.body.removeChild(target); }); describe('constructor', function() { @@ -304,9 +305,10 @@ where('Uint8ClampedArray').describe('ol.source.Raster', function() { }); describe('tile loading', function() { - beforeEach(function() { - map.setTarget(null); - map.dispose(); + var map2; + afterEach(function() { + disposeMap(map2); + map2 = null; }); it('is initiated on the underlying source', function(done) { @@ -323,7 +325,7 @@ where('Uint8ClampedArray').describe('ol.source.Raster', function() { } }); - map = new ol.Map({ + map2 = new ol.Map({ target: target, view: new ol.View({ center: [0, 0], @@ -340,7 +342,7 @@ where('Uint8ClampedArray').describe('ol.source.Raster', function() { expect(tileCache.getCount()).to.equal(0); - map.once('moveend', function() { + map2.once('moveend', function() { expect(tileCache.getCount()).to.equal(1); var state = tileCache.peekLast().getState(); expect(state === ol.TileState.LOADED || state === ol.TileState.LOADED).to.be(true); From fb820f4b8124b9ba53754dff0db491c732aeed72 Mon Sep 17 00:00:00 2001 From: Tim Schaub Date: Mon, 3 Jul 2017 16:34:28 -0600 Subject: [PATCH 11/18] Run tests on Firefox in Travis --- .travis.yml | 9 +------- Makefile | 48 +++++------------------------------------ package.json | 6 ++++-- test/karma.config.js | 51 ++------------------------------------------ 4 files changed, 12 insertions(+), 102 deletions(-) diff --git a/.travis.yml b/.travis.yml index 089ab6968d..e851feb2a7 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,7 +3,7 @@ sudo: false language: node_js node_js: - - "6.1" + - "8" addons: firefox: "52.0" @@ -14,9 +14,6 @@ cache: env: - DISPLAY=:99.0 -before_install: - - "npm prune" - before_script: - "rm src/ol/renderer/webgl/*shader.js" - "sh -e /etc/init.d/xvfb start" @@ -24,10 +21,6 @@ before_script: script: "make ci" -after_success: - - "make test-coverage" - - "cat coverage/lcov.info | ./node_modules/.bin/coveralls" - branches: only: - master diff --git a/Makefile b/Makefile index 2aac3d0e20..32a6116174 100644 --- a/Makefile +++ b/Makefile @@ -6,9 +6,6 @@ SRC_SHADER_JS := $(patsubst %shader.glsl,%shader.js,$(SRC_GLSL)) SRC_JS := $(filter-out $(SRC_SHADER_JS),$(shell find src -name '*.js')) SRC_JSDOC = $(shell find src -type f -name '*.jsdoc') -SPEC_JS := $(shell find test/spec -type f -name '*.js') -SPEC_RENDERING_JS := $(shell find test_rendering/spec -name '*.js') - EXAMPLES := $(shell find examples -type f) EXAMPLES_HTML := $(filter-out examples/index.html,$(shell find examples -maxdepth 1 -type f -name '*.html')) EXAMPLES_JS := $(patsubst %.html,%.js,$(EXAMPLES_HTML)) @@ -56,7 +53,6 @@ help: @echo "Other less frequently used targets are:" @echo @echo "- build Build ol.js, ol-debug.js, ol.js.map and ol.css" - @echo "- lint Check the code with the linter" @echo "- ci Run the full continuous integration process" @echo "- apidoc Build the API documentation using JSDoc" @echo "- cleanall Remove all the build artefacts" @@ -70,7 +66,7 @@ apidoc: build/timestamps/jsdoc-$(BRANCH)-timestamp build: build/ol.css build/ol.js build/ol-debug.js build/ol.js.map .PHONY: check -check: lint build/ol.js test +check: build/ol.js test .PHONY: check-examples check-examples: $(CHECK_EXAMPLE_TIMESTAMPS) @@ -86,21 +82,18 @@ check-deps: done ;\ .PHONY: ci -ci: lint build test test-rendering package compile-examples check-examples apidoc +ci: build test package compile-examples check-examples apidoc .PHONY: compile-examples compile-examples: build/compiled-examples/all.combined.js .PHONY: clean clean: - rm -f build/timestamps/eslint-timestamp rm -f build/timestamps/check-*-timestamp rm -f build/ol.css rm -f build/ol.js rm -f build/ol.js.map rm -f build/ol-debug.js - rm -f build/test_requires.js - rm -f build/test_rendering_requires.js rm -rf build/examples rm -rf build/compiled-examples rm -rf build/package @@ -119,9 +112,6 @@ examples: $(BUILD_EXAMPLES) .PHONY: install install: build/timestamps/node-modules-timestamp -.PHONY: lint -lint: build/timestamps/eslint-timestamp - .PHONY: npm-install npm-install: build/timestamps/node-modules-timestamp @@ -129,24 +119,12 @@ npm-install: build/timestamps/node-modules-timestamp shaders: $(SRC_SHADER_JS) .PHONY: serve -serve: build/test_requires.js build/test_rendering_requires.js +serve: node tasks/serve.js .PHONY: test -test: build/timestamps/node-modules-timestamp build/test_requires.js - node tasks/test.js - -.PHONY: test-coverage -test-coverage: build/timestamps/node-modules-timestamp - node tasks/test-coverage.js - -.PHONY: test-rendering -test-rendering: build/timestamps/node-modules-timestamp \ - build/test_rendering_requires.js - @rm -rf build/slimerjs-profile - @mkdir -p build/slimerjs-profile - @cp -r test_rendering/slimerjs-profile/* build/slimerjs-profile/ - node tasks/test-rendering.js +test: build/timestamps/node-modules-timestamp + npm test .PHONY: host-examples host-examples: $(BUILD_HOSTED_EXAMPLES) \ @@ -248,14 +226,6 @@ $(BUILD_HOSTED)/build/ol-deps.js: host-libraries --root_with_prefix "$(BUILD_HOSTED)/closure-library/third_party ../../third_party" \ --output_file $@ -build/timestamps/eslint-timestamp: $(SRC_JS) $(SPEC_JS) $(SPEC_RENDERING_JS) \ - $(TASKS_JS) $(EXAMPLES_JS) \ - build/timestamps/node-modules-timestamp - @mkdir -p $(@D) - @echo "Running eslint..." - @./node_modules/.bin/eslint tasks test test_rendering src examples - @touch $@ - build/timestamps/node-modules-timestamp: package.json @mkdir -p $(@D) npm install @@ -291,14 +261,6 @@ build/ol-debug.js: config/ol-debug.json $(SRC_JS) $(SRC_SHADER_JS) \ @$(STAT_COMPRESSED) /tmp/ol-debug.js.gz @rm /tmp/ol-debug.js.gz -build/test_requires.js: $(SPEC_JS) $(SRC_JS) - @mkdir -p $(@D) - @node tasks/generate-requires.js $^ > $@ - -build/test_rendering_requires.js: $(SPEC_RENDERING_JS) - @mkdir -p $(@D) - @node tasks/generate-requires.js $^ > $@ - %shader.js: %shader.glsl src/ol/webgl/shader.mustache bin/pyglslunit.py build/timestamps/node-modules-timestamp @python bin/pyglslunit.py --input $< | ./node_modules/.bin/mustache - src/ol/webgl/shader.mustache > $@ diff --git a/package.json b/package.json index 91bec39a15..b6095cfc36 100644 --- a/package.json +++ b/package.json @@ -12,9 +12,10 @@ "install": "node tasks/install.js", "postinstall": "closure-util update", "start": "node tasks/serve.js", - "pretest": "eslint tasks test src examples", + "lint": "eslint tasks test src examples", "lint-package": "eslint --fix build/package", - "test": "node tasks/test.js", + "pretest": "npm run lint", + "test": "npm run karma -- --single-run", "debug-server": "node tasks/serve-lib.js", "karma": "node tasks/test-all.js start test/karma.config.js" }, @@ -64,6 +65,7 @@ "jscodeshift": "^0.3.30", "karma": "^1.7.0", "karma-chrome-launcher": "^2.1.1", + "karma-firefox-launcher": "^1.0.1", "karma-mocha": "^1.3.0", "karma-sauce-launcher": "^1.1.0", "marked": "0.3.6", diff --git a/test/karma.config.js b/test/karma.config.js index 739d466bb0..e4c27cda52 100644 --- a/test/karma.config.js +++ b/test/karma.config.js @@ -1,4 +1,3 @@ -var pkg = require('../package.json'); var path = require('path'); /** @@ -48,55 +47,9 @@ module.exports = function(karma) { }); if (process.env.TRAVIS) { - if (!process.env.SAUCE_USERNAME || !process.env.SAUCE_ACCESS_KEY) { - process.stderr.write('SAUCE_USERNAME or SAUCE_ACCESS_KEY not set\n'); - process.exit(1); - } - - // see https://wiki.saucelabs.com/display/DOCS/Platform+Configurator - // for platform and browserName options (Selenium API, node.js code) - var customLaunchers = { - SL_Chrome: { - base: 'SauceLabs', - browserName: 'chrome' - }, - SL_Firefox: { - base: 'SauceLabs', - browserName: 'firefox' - }, - SL_IE: { - base: 'SauceLabs', - platform: 'Windows 10', - browserName: 'internet explorer' - }, - SL_Edge: { - base: 'SauceLabs', - platform: 'Windows 10', - browserName: 'MicrosoftEdge' - }, - SL_Safari: { - base: 'SauceLabs', - platform: 'macos 10.12', - browserName: 'safari' - } - }; karma.set({ - sauceLabs: { - testName: pkg.name + ' ' + pkg.version, - recordScreenshots: false, - connectOptions: { - port: 5757 - }, - startConnect: false, - tunnelIdentifier: process.env.TRAVIS_JOB_NUMBER, - username: process.env.SAUCE_USERNAME, - accessKey: process.env.SAUCE_ACCESS_KEY - }, - reporters: ['dots', 'saucelabs'], - captureTimeout: 240000, - browserNoActivityTimeout: 240000, - customLaunchers: customLaunchers, - browsers: Object.keys(customLaunchers) + reporters: ['dots'], + browsers: ['Firefox'] }); } else { karma.set({ From 02b2cdbd27a495cef35418218b0591fff97c0681 Mon Sep 17 00:00:00 2001 From: Tim Schaub Date: Mon, 3 Jul 2017 17:12:12 -0600 Subject: [PATCH 12/18] Remove unused tasks and update instructions --- .gitignore | 1 - package.json | 2 +- tasks/generate-requires.js | 40 ------- tasks/test-all.js | 102 ------------------ tasks/test-coverage.js | 210 ------------------------------------- tasks/test-rendering.js | 50 --------- tasks/test.js | 165 +++++++++++++++-------------- test/README.md | 21 ++-- test/karma.config.js | 2 +- test/phantom_hooks.js | 17 --- 10 files changed, 95 insertions(+), 515 deletions(-) delete mode 100644 tasks/generate-requires.js delete mode 100644 tasks/test-all.js delete mode 100644 tasks/test-coverage.js delete mode 100644 tasks/test-rendering.js delete mode 100644 test/phantom_hooks.js diff --git a/.gitignore b/.gitignore index 29e4fd2852..2dfbfc3697 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,3 @@ /build/ /node_modules/ /dist/ -/coverage/ diff --git a/package.json b/package.json index b6095cfc36..5f48b552dd 100644 --- a/package.json +++ b/package.json @@ -17,7 +17,7 @@ "pretest": "npm run lint", "test": "npm run karma -- --single-run", "debug-server": "node tasks/serve-lib.js", - "karma": "node tasks/test-all.js start test/karma.config.js" + "karma": "node tasks/test.js start test/karma.config.js" }, "main": "dist/ol.js", "repository": { diff --git a/tasks/generate-requires.js b/tasks/generate-requires.js deleted file mode 100644 index 43d914c810..0000000000 --- a/tasks/generate-requires.js +++ /dev/null @@ -1,40 +0,0 @@ -var fs = require('fs-extra'); - -// The number of files that we need to generate goog.require's for. -var numFiles = process.argv.length - 1; - -/** - * Object used a set of found goog.provide's. - * @type {Object.} - */ -var requires = {}; - -process.argv.forEach(function(val, index, array) { - - if (index === 0) { - return; - } - - fs.readFile(val, function(err, data) { - if (err) { - return; - } - - var re = new RegExp('goog\\.provide\\(\'(.*)\'\\);'); - - data.toString().split('\n').forEach(function(line) { - var match = line.match(re); - if (match) { - requires[match[1]] = true; - } - }); - - if (--numFiles === 0) { - Object.keys(requires).sort().forEach(function(key) { - process.stdout.write('goog.require(\'' + key + '\');\n'); - }); - } - - }); - -}); diff --git a/tasks/test-all.js b/tasks/test-all.js deleted file mode 100644 index 5a5ac8223e..0000000000 --- a/tasks/test-all.js +++ /dev/null @@ -1,102 +0,0 @@ -const Server = require('karma').Server; -const closure = require('closure-util'); -const path = require('path'); -const processCliArgs = require('karma/lib/cli').process; - -function insertDependencies(manager, files, previousLookup) { - previousLookup = previousLookup || {}; - let firstIndex = NaN; - const original = files.filter((obj, index) => { - if (previousLookup[obj.pattern]) { - if (isNaN(firstIndex)) { - firstIndex = index; - } - return false; - } else { - return true; - } - }); - if (isNaN(firstIndex)) { - firstIndex = 0; - } - const lookup = {}; - const dependencies = manager.getDependencies().map(script => { - lookup[script.path] = true; - return { - pattern: script.path, - included: true, - served: true, - watched: false - }; - }); - original.splice.apply(original, [firstIndex, 0].concat(dependencies)); - files.length = 0; - files.push.apply(files, original); - - return lookup; -} - -/** - * Start Karma. This prepends the Karma `files` config with all library files - * sorted in dependency order. - * @param {Object} config Karma options. - * @param {Manager} manager The dependency file manager. - * @param {function(Error)} callback Called with any error. - */ -function serve(config, manager, callback) { - function exit(code) { - let error = null; - if (code) { - error = new Error(`Karma exited with ${code}`); - error.code = code; - } - callback(error); - } - const server = new Server(config, exit); - - const files = server.get('config.files'); - - let lookup = insertDependencies(manager, files); - - // stop goog base.js from trying to load deps.js - files.unshift({ - pattern: path.resolve(__dirname, '../test/no-deps.js'), - included: true, - served: true, - watched: false - }); - - manager.on('update', () => { - lookup = insertDependencies(manager, files, lookup); - server.refreshFiles(); - }); - - server.start(); -} - -function main(config, callback) { - const manager = new closure.Manager({ - lib: [ - 'src/**/*.js', - 'build/ol.ext/*.js' - ] - }); - - manager.on('error', callback); - - manager.on('ready', () => { - serve(config, manager, callback); - }); -} - -if (require.main === module) { - const config = processCliArgs(); - main(config, (err, manager) => { - if (err) { - process.stderr.write(err.message, () => process.exit(1)); - return; - } else { - process.exit(0); - } - }); -} diff --git a/tasks/test-coverage.js b/tasks/test-coverage.js deleted file mode 100644 index 1fd94bbe47..0000000000 --- a/tasks/test-coverage.js +++ /dev/null @@ -1,210 +0,0 @@ -/** - * This task instruments our source code with istanbul, runs the test suite - * on the instrumented source and collects the coverage data. It then creates - * test coverage reports. - * - * TODO This can be improved in style. We should possibly rewrite it and use - * async.waterfall. - */ - -var fs = require('fs-extra'); -var istanbul = require('istanbul'); -var path = require('path'); -var glob = require('glob'); - -var runTestsuite = require('./test').runTests; - -// setup some paths -var dir = path.join(__dirname, '../src'); -var backupDir = path.join(__dirname, '../src-backup'); -var instrumentedDir = path.join(__dirname, '../src-instrumented'); -var coverageDir = path.join(__dirname, '../coverage'); - -fs.mkdirSync(coverageDir); - -// The main players in the coverage generation via istanbul -var instrumenter = new istanbul.Instrumenter(); -var reporter = new istanbul.Reporter(false, coverageDir); -var collector = new istanbul.Collector(); - -// General options used for the resource shuffling / directory copying -var copyOpts = { - // Overwrite existing file or directory - clobber: true, - // Preserve the mtime and atime when copying files - preserveTimestamps: true -}; - -/** - * A small utility method printing out log messages. - * @param {string} msg The message. - */ -var log = function(msg) { - process.stdout.write(msg + '\n'); -}; - -/** - * Creates folders for backup and instrumentation and copies the contents of the - * current src folder into them. - */ -var setupBackupAndInstrumentationDir = function() { - if (!fs.existsSync(backupDir)) { - log('• create directory for backup of src: ' + backupDir); - fs.mkdirSync(backupDir); - } - - if (!fs.existsSync(instrumentedDir)) { - log('• create directory for instrumented src: ' + instrumentedDir); - fs.mkdirSync(instrumentedDir); - } - - log('• copy src files to backup folder'); - fs.copySync(dir, backupDir, copyOpts); - log('• copy src files to instrumentation folder'); - fs.copySync(dir, instrumentedDir, copyOpts); -}; - -/** - * Reverts the changes done in setupBackupAndInstrumentationDir, copies the - * backup over the src directory and removes the instrumentation and backup - * directory. - */ -var revertBackupAndInstrumentationDir = function() { - log('• copy original src back to src folder'); - fs.copySync(backupDir, dir, copyOpts); - log('• delete backup directory'); - fs.removeSync(backupDir); - log('• delete instrumentation directory'); - fs.removeSync(instrumentedDir); -}; - -/** - * Callback for when runTestsuite() has finished. - */ -var collectAndWriteCoverageData = function() { - log('• collect data from coverage *.json files'); - - var coverageFiles = [ - path.join(__dirname, '..', 'coverage', 'coverage.json'), - path.join(__dirname, '..', 'coverage', 'coverage-rendering.json') - ]; - coverageFiles.forEach(function(coverageFile) { - if (fs.existsSync(coverageFile)) { - log(' • collect data from ' + path.basename(coverageFile)); - var coverageJson = JSON.parse(fs.readFileSync(coverageFile, 'utf8')); - collector.add(coverageJson); - } - }); - - reporter.addAll(['lcovonly', 'html']); - - revertBackupAndInstrumentationDir(); - - log('• write report from collected data'); - reporter.write(collector, true, function() { - process.exit(0); - }); -}; - -/** - * Runs the rendering test by spawning a call to `make test-rendering`. The - * `make`-call sets up certain things so that the rendering tests can actually - * run, which is why we call it this way. - * - * @param {Function} callback The callback to invoke once `make` has exited. - * Will receive the exit code. - */ -var runRenderingTestsuite = function(callback) { - var spawn = require('child_process').spawn; - var child = spawn('make', ['test-rendering'], {stdio: 'inherit'}); - child.on('exit', function(code) { - callback(code); - }); -}; - -/** - * Derive output file name from input file name, by replacing the *last* - * occurrence of `/src/` by `/src-instrumented/` - * - * @param {String} file The input filename. - * @return {String} file The output filename. - */ -var outputFilenameByFilename = function(file) { - var search = '/src/'; - var replace = '/src-instrumented/'; - var re = new RegExp(search, 'g'); - var m, match; - while ((m = re.exec(file)) !== null) { - match = m; - } - var idx = match.index; - var outfile = file.substr(0, idx) + replace + - file.substr(idx + search.length); - - return outfile; -}; - -/** - * Will instrument all JavaScript files that are passed as second parameter. - * This is the callback to the glob call. - * @param {Error} err Any error. - * @param {Array.} files List of file paths. - */ -var foundAllJavaScriptSourceFiles = function(err, files) { - if (err) { - process.stderr.write(err.message + '\n'); - process.exit(1); - } - log('• instrumenting every src file'); - var cnt = 0; - files.forEach(function(file) { - cnt++; - var content = fs.readFileSync(file, 'utf-8'); - var outfile = outputFilenameByFilename(file); - var instrumented = instrumenter.instrumentSync(content, file); - fs.writeFileSync(outfile, instrumented); - if (cnt % 10 === 0) { - log(' • instrumented ' + cnt + ' files'); - } - }); - log(' • done. ' + cnt + ' files instrumented'); - log('• copy instrumented src back to src folder'); - - fs.copySync(instrumentedDir, dir, copyOpts); - - log('• run test suites on instrumented code'); - - log(' • run rendering test suite'); - runRenderingTestsuite(function(codeRendering) { - if (codeRendering === 0) { - log(' • run standard test suite'); - runTestsuite({coverage: true, reporter: 'dot'}, function(code) { - if (code === 0) { - collectAndWriteCoverageData(); - } else { - process.stderr.write('Trouble running the standard testsuite\n'); - process.exit(1); - } - }); - } else { - process.stderr.write('Trouble running the rendering testsuite\n'); - process.exit(1); - } - }); -}; - -/** - * Our main method, first it sets up certain directory, and then it starts the - * coverage process by gathering all JavaScript files and then instrumenting - * them. - */ -var main = function() { - setupBackupAndInstrumentationDir(); - glob(dir + '/**/*.js', {}, foundAllJavaScriptSourceFiles); -}; - -if (require.main === module) { - main(); -} - -module.exports = main; diff --git a/tasks/test-rendering.js b/tasks/test-rendering.js deleted file mode 100644 index f9384bacfc..0000000000 --- a/tasks/test-rendering.js +++ /dev/null @@ -1,50 +0,0 @@ -/** - * This task starts a dev server that provides a script loader for OpenLayers - * and Closure Library and runs rendering tests in SlimerJS. - */ - -var path = require('path'); -var spawn = require('child_process').spawn; - -var slimerjs = require('slimerjs'); - -var serve = require('./serve'); -var listen = require('./test').listen; - - -/** - * Create the debug server and run tests. - */ -serve.createServer(function(err, server) { - if (err) { - process.stderr.write(err.message + '\n'); - process.exit(1); - } - - listen(3001, 3005, server, function(err) { - if (err) { - process.stderr.write('Server failed to start: ' + err.message + '\n'); - process.exit(1); - } - - var address = server.address(); - var url = 'http://' + address.address + ':' + address.port; - var profile = path.join(__dirname, '../build/slimerjs-profile'); - var args = [ - '-profile', - profile, - path.join(__dirname, - '../test_rendering/test.js'), - url + '/test_rendering/index.html' - ]; - - var child = spawn(slimerjs.path, args, {stdio: 'pipe'}); - child.stdout.on('data', function(data) { - process.stdout.write(data); - }); - child.on('exit', function(code) { - process.exit(code); - }); - }); - -}); diff --git a/tasks/test.js b/tasks/test.js index 04bab7491f..5a5ac8223e 100644 --- a/tasks/test.js +++ b/tasks/test.js @@ -1,95 +1,102 @@ -/** - * This task starts a dev server that provides a script loader for OpenLayers - * and Closure Library and runs tests in PhantomJS. - */ +const Server = require('karma').Server; +const closure = require('closure-util'); +const path = require('path'); +const processCliArgs = require('karma/lib/cli').process; -var path = require('path'); -var spawn = require('child_process').spawn; - -var phantomjs = require('phantomjs-prebuilt'); - -var serve = require('./serve'); - -/** - * Try listening for incoming connections on a range of ports. - * @param {number} min Minimum port to try. - * @param {number} max Maximum port to try. - * @param {http.Server} server The server. - * @param {function(Error)} callback Callback called with any error. - */ -function listen(min, max, server, callback) { - function _listen(port) { - server.once('error', function(err) { - if (err.code === 'EADDRINUSE') { - ++port; - if (port < max) { - _listen(port); - } else { - callback(new Error('Could not find an open port')); - } - } else { - callback(err); +function insertDependencies(manager, files, previousLookup) { + previousLookup = previousLookup || {}; + let firstIndex = NaN; + const original = files.filter((obj, index) => { + if (previousLookup[obj.pattern]) { + if (isNaN(firstIndex)) { + firstIndex = index; } - }); - server.listen(port, '127.0.0.1'); - } - server.once('listening', function() { - callback(null); + return false; + } else { + return true; + } }); - _listen(min); + if (isNaN(firstIndex)) { + firstIndex = 0; + } + const lookup = {}; + const dependencies = manager.getDependencies().map(script => { + lookup[script.path] = true; + return { + pattern: script.path, + included: true, + served: true, + watched: false + }; + }); + original.splice.apply(original, [firstIndex, 0].concat(dependencies)); + files.length = 0; + files.push.apply(files, original); + + return lookup; } - -function runTests(conf, callback) { - var coverage = 'coverage' in conf ? conf.coverage : false; - var reporter = 'reporter' in conf ? conf.reporter : 'spec'; - /** - * Create the debug server and run tests. - */ - serve.createServer(function(err, server) { - if (err) { - process.stderr.write(err.message + '\n'); - process.exit(1); +/** + * Start Karma. This prepends the Karma `files` config with all library files + * sorted in dependency order. + * @param {Object} config Karma options. + * @param {Manager} manager The dependency file manager. + * @param {function(Error)} callback Called with any error. + */ +function serve(config, manager, callback) { + function exit(code) { + let error = null; + if (code) { + error = new Error(`Karma exited with ${code}`); + error.code = code; } + callback(error); + } + const server = new Server(config, exit); - listen(3001, 3005, server, function(err) { - if (err) { - process.stderr.write('Server failed to start: ' + err.message + '\n'); - process.exit(1); - } - var address = server.address(); - var url = 'http://' + address.address + ':' + address.port; - var args = [ - require.resolve('mocha-phantomjs-core'), - url + '/test/index.html', - reporter - ]; - var config = { - ignoreResourceErrors: true, - useColors: true - }; + const files = server.get('config.files'); - if (coverage) { - config.hooks = path.join(__dirname, '../test/phantom_hooks.js'); - } + let lookup = insertDependencies(manager, files); - args.push(JSON.stringify(config)); + // stop goog base.js from trying to load deps.js + files.unshift({ + pattern: path.resolve(__dirname, '../test/no-deps.js'), + included: true, + served: true, + watched: false + }); - var child = spawn(phantomjs.path, args, {stdio: 'inherit'}); - child.on('exit', function(code) { - callback(code); - }); - }); + manager.on('update', () => { + lookup = insertDependencies(manager, files, lookup); + server.refreshFiles(); + }); + + server.start(); +} + +function main(config, callback) { + const manager = new closure.Manager({ + lib: [ + 'src/**/*.js', + 'build/ol.ext/*.js' + ] + }); + + manager.on('error', callback); + + manager.on('ready', () => { + serve(config, manager, callback); }); } if (require.main === module) { - runTests({coverage: false, reporter: 'spec'}, function(code) { - process.exit(code); + const config = processCliArgs(); + main(config, (err, manager) => { + if (err) { + process.stderr.write(err.message, () => process.exit(1)); + return; + } else { + process.exit(0); + } }); } - -module.exports = { - runTests: runTests, - listen: listen -}; diff --git a/test/README.md b/test/README.md index 6afea658f3..6f63717932 100644 --- a/test/README.md +++ b/test/README.md @@ -14,24 +14,17 @@ Install the test dependencies (from the root of the repository): npm install -Run the tests once with PhantomJS: +Run the tests once: - make test + npm test -(Note that for `npm` users, this can also be run as `npm test`.) +To run the tests continuously: -Run the tests in a browser: + npm run karma - make serve - -(Again for `npm` users, this is `npm start`.) - -Now visit http://localhost:3000/test/ in your browser. The tests will re-run -any time one of the source or spec files changes. - -Tip for TDD'ers: to make PhantomJS run the test suite continuously each time -a spec file is changed you can use nosier (http://pypi.python.org/pypi/nosier) -and do `nosier -p test -p src "make test"`. +After this, the test server is listening on http://localhost:9876/, and you can +attach any number of browsers for testing (during development, tests will run +in Chrome by default). # Rendering tests diff --git a/test/karma.config.js b/test/karma.config.js index e4c27cda52..38d0bdd7aa 100644 --- a/test/karma.config.js +++ b/test/karma.config.js @@ -4,7 +4,7 @@ var path = require('path'); * The config below is not enough to run Karma. In addition, we need to add * all library files in dependency order. This could be done with a plugin if * Karma supported async plugins (there may other alternatives as well). But - * for now we start Karma with the `tasks/test-all.js` script. This script + * for now we start Karma with the `tasks/test.js` script. This script * sorts dependencies and add files to the Karma config below. */ diff --git a/test/phantom_hooks.js b/test/phantom_hooks.js deleted file mode 100644 index 5880770711..0000000000 --- a/test/phantom_hooks.js +++ /dev/null @@ -1,17 +0,0 @@ -/* eslint-disable no-console */ - -module.exports = { - afterEnd: function(runner) { - var fs = require('fs'); - var coverage = runner.page.evaluate(function() { - return window.__coverage__; - }); - - if (coverage) { - console.log('Writing coverage to coverage/coverage.json'); - fs.write('coverage/coverage.json', JSON.stringify(coverage), 'w'); - } else { - console.log('No coverage data generated'); - } - } -}; From 73afb656d7fe03c5a1db6893ac4d01ba3c199729 Mon Sep 17 00:00:00 2001 From: Tim Schaub Date: Wed, 16 Aug 2017 14:24:42 -0400 Subject: [PATCH 13/18] Test fixes --- .../ol/expected/render-polygon-linedash.png | Bin .../ol/expected/render-polygon-linedashoffset.png | Bin .../ol/layer/expected/vector-canvas-transparent.png | Bin test/rendering/ol/layer/vector.test.js | 4 ++-- test/rendering/ol/render.test.js | 6 ++++-- .../style/expected/regularshape-canvas-linedash.png | Bin .../expected/regularshape-canvas-linedashoffset.png | Bin test/rendering/ol/style/regularshape.test.js | 8 ++++---- test/spec/ol/format/mvt.test.js | 3 ++- test/spec/ol/map.test.js | 4 ++++ test/spec/ol/renderer/canvas/replay.test.js | 6 ++++++ .../spec/ol/renderer/canvas/vectortilelayer.test.js | 1 + test/spec/ol/sphere.test.js | 5 +++++ 13 files changed, 28 insertions(+), 9 deletions(-) rename {test_rendering/spec => test/rendering}/ol/expected/render-polygon-linedash.png (100%) rename {test_rendering/spec => test/rendering}/ol/expected/render-polygon-linedashoffset.png (100%) rename {test_rendering/spec => test/rendering}/ol/layer/expected/vector-canvas-transparent.png (100%) rename {test_rendering/spec => test/rendering}/ol/style/expected/regularshape-canvas-linedash.png (100%) rename {test_rendering/spec => test/rendering}/ol/style/expected/regularshape-canvas-linedashoffset.png (100%) diff --git a/test_rendering/spec/ol/expected/render-polygon-linedash.png b/test/rendering/ol/expected/render-polygon-linedash.png similarity index 100% rename from test_rendering/spec/ol/expected/render-polygon-linedash.png rename to test/rendering/ol/expected/render-polygon-linedash.png diff --git a/test_rendering/spec/ol/expected/render-polygon-linedashoffset.png b/test/rendering/ol/expected/render-polygon-linedashoffset.png similarity index 100% rename from test_rendering/spec/ol/expected/render-polygon-linedashoffset.png rename to test/rendering/ol/expected/render-polygon-linedashoffset.png diff --git a/test_rendering/spec/ol/layer/expected/vector-canvas-transparent.png b/test/rendering/ol/layer/expected/vector-canvas-transparent.png similarity index 100% rename from test_rendering/spec/ol/layer/expected/vector-canvas-transparent.png rename to test/rendering/ol/layer/expected/vector-canvas-transparent.png diff --git a/test/rendering/ol/layer/vector.test.js b/test/rendering/ol/layer/vector.test.js index e324569d3b..558bc02535 100644 --- a/test/rendering/ol/layer/vector.test.js +++ b/test/rendering/ol/layer/vector.test.js @@ -98,7 +98,7 @@ describe('ol.rendering.layer.Vector', function() { }); it('renders transparent layers correctly with the canvas renderer', function(done) { - map = createMap('canvas'); + createMap('canvas'); var smallLine = new ol.Feature(new ol.geom.LineString([ [center[0], center[1] - 1], [center[0], center[1] + 1] @@ -131,7 +131,7 @@ describe('ol.rendering.layer.Vector', function() { opacity: 0.5 })); map.once('postrender', function() { - expectResemble(map, 'spec/ol/layer/expected/vector-canvas-transparent.png', + expectResemble(map, 'rendering/ol/layer/expected/vector-canvas-transparent.png', 7, done); }); }); diff --git a/test/rendering/ol/render.test.js b/test/rendering/ol/render.test.js index ed101ac5a6..80b92578dd 100644 --- a/test/rendering/ol/render.test.js +++ b/test/rendering/ol/render.test.js @@ -138,6 +138,7 @@ describe('ol.render', function() { }); it('supports lineDash styles', function(done) { + var context = getContext(); var vectorContext = ol.render.toContext(context, {size: [100, 100]}); var style = new ol.style.Style({ @@ -154,11 +155,12 @@ describe('ol.render', function() { ])); resembleCanvas(context.canvas, - 'spec/ol/expected/render-polygon-linedash.png', IMAGE_TOLERANCE, done); + 'rendering/ol/expected/render-polygon-linedash.png', IMAGE_TOLERANCE, done); }); it('supports lineDashOffset', function(done) { + var context = getContext(); var vectorContext = ol.render.toContext(context, {size: [100, 100]}); var style = new ol.style.Style({ @@ -176,7 +178,7 @@ describe('ol.render', function() { ])); resembleCanvas(context.canvas, - 'spec/ol/expected/render-polygon-linedashoffset.png', IMAGE_TOLERANCE, done); + 'rendering/ol/expected/render-polygon-linedashoffset.png', IMAGE_TOLERANCE, done); }); diff --git a/test_rendering/spec/ol/style/expected/regularshape-canvas-linedash.png b/test/rendering/ol/style/expected/regularshape-canvas-linedash.png similarity index 100% rename from test_rendering/spec/ol/style/expected/regularshape-canvas-linedash.png rename to test/rendering/ol/style/expected/regularshape-canvas-linedash.png diff --git a/test_rendering/spec/ol/style/expected/regularshape-canvas-linedashoffset.png b/test/rendering/ol/style/expected/regularshape-canvas-linedashoffset.png similarity index 100% rename from test_rendering/spec/ol/style/expected/regularshape-canvas-linedashoffset.png rename to test/rendering/ol/style/expected/regularshape-canvas-linedashoffset.png diff --git a/test/rendering/ol/style/regularshape.test.js b/test/rendering/ol/style/regularshape.test.js index c8681fa6d5..e0da26e6ab 100644 --- a/test/rendering/ol/style/regularshape.test.js +++ b/test/rendering/ol/style/regularshape.test.js @@ -119,20 +119,20 @@ describe('ol.rendering.style.RegularShape', function() { }); it('supports lineDash', function(done) { - map = createMap('canvas'); + createMap('canvas'); createFeatures(new ol.style.Stroke({ lineDash: [10, 5] })); - expectResemble(map, 'spec/ol/style/expected/regularshape-canvas-linedash.png', 5, done); + expectResemble(map, 'rendering/ol/style/expected/regularshape-canvas-linedash.png', 5, done); }); it('supports lineDashOffset', function(done) { - map = createMap('canvas'); + createMap('canvas'); createFeatures(new ol.style.Stroke({ lineDash: [10, 5], lineDashOffset: 5 })); - expectResemble(map, 'spec/ol/style/expected/regularshape-canvas-linedashoffset.png', 5, done); + expectResemble(map, 'rendering/ol/style/expected/regularshape-canvas-linedashoffset.png', 5, done); }); where('WebGL').it('tests the WebGL renderer', function(done) { diff --git a/test/spec/ol/format/mvt.test.js b/test/spec/ol/format/mvt.test.js index bc4f2ec517..d1c106bdad 100644 --- a/test/spec/ol/format/mvt.test.js +++ b/test/spec/ol/format/mvt.test.js @@ -3,6 +3,7 @@ goog.provide('ol.test.format.MVT'); goog.require('ol.Feature'); goog.require('ol.ext.PBF'); goog.require('ol.ext.vectortile.VectorTile'); +goog.require('ol.extent'); goog.require('ol.format.MVT'); goog.require('ol.geom.Point'); goog.require('ol.render.Feature'); @@ -92,7 +93,7 @@ where('ArrayBuffer.isView').describe('ol.format.MVT', function() { var format = new ol.format.MVT(); format.readFeatures(data); var extent = format.getLastExtent(); - expect(extent.getWidth()).to.be(4096); + expect(ol.extent.getWidth(extent)).to.be(4096); }); }); diff --git a/test/spec/ol/map.test.js b/test/spec/ol/map.test.js index e576fc1078..5ee928c401 100644 --- a/test/spec/ol/map.test.js +++ b/test/spec/ol/map.test.js @@ -1,9 +1,11 @@ goog.provide('ol.test.Map'); +goog.require('ol.Feature'); goog.require('ol.Map'); goog.require('ol.MapEvent'); goog.require('ol.Overlay'); goog.require('ol.View'); +goog.require('ol.geom.Point'); goog.require('ol.has'); goog.require('ol.interaction'); goog.require('ol.interaction.DoubleClickZoom'); @@ -11,7 +13,9 @@ goog.require('ol.interaction.Interaction'); goog.require('ol.interaction.MouseWheelZoom'); goog.require('ol.interaction.PinchZoom'); goog.require('ol.layer.Tile'); +goog.require('ol.layer.Vector'); goog.require('ol.renderer.canvas.IntermediateCanvas'); +goog.require('ol.source.Vector'); goog.require('ol.source.XYZ'); describe('ol.Map', function() { diff --git a/test/spec/ol/renderer/canvas/replay.test.js b/test/spec/ol/renderer/canvas/replay.test.js index c4118adb11..3ea0066442 100644 --- a/test/spec/ol/renderer/canvas/replay.test.js +++ b/test/spec/ol/renderer/canvas/replay.test.js @@ -2,6 +2,12 @@ goog.provide('ol.test.renderer.canvas.Replay'); goog.require('ol'); goog.require('ol.Feature'); +goog.require('ol.geom.GeometryCollection'); +goog.require('ol.geom.LineString'); +goog.require('ol.geom.MultiLineString'); +goog.require('ol.geom.MultiPoint'); +goog.require('ol.geom.MultiPolygon'); +goog.require('ol.geom.Point'); goog.require('ol.geom.Polygon'); goog.require('ol.render.canvas.LineStringReplay'); goog.require('ol.render.canvas.PolygonReplay'); diff --git a/test/spec/ol/renderer/canvas/vectortilelayer.test.js b/test/spec/ol/renderer/canvas/vectortilelayer.test.js index 5ef41ccb71..9b8a3ca451 100644 --- a/test/spec/ol/renderer/canvas/vectortilelayer.test.js +++ b/test/spec/ol/renderer/canvas/vectortilelayer.test.js @@ -7,6 +7,7 @@ goog.require('ol.TileState'); goog.require('ol.VectorImageTile'); goog.require('ol.VectorTile'); goog.require('ol.View'); +goog.require('ol.extent'); goog.require('ol.format.MVT'); goog.require('ol.geom.Point'); goog.require('ol.layer.VectorTile'); diff --git a/test/spec/ol/sphere.test.js b/test/spec/ol/sphere.test.js index 771c871e5a..1b6124d959 100644 --- a/test/spec/ol/sphere.test.js +++ b/test/spec/ol/sphere.test.js @@ -5,6 +5,11 @@ goog.provide('ol.test.Sphere'); goog.require('ol.Sphere'); goog.require('ol.format.WKT'); +goog.require('ol.geom.GeometryCollection'); +goog.require('ol.geom.LineString'); +goog.require('ol.geom.MultiLineString'); +goog.require('ol.geom.MultiPoint'); +goog.require('ol.geom.Point'); goog.require('ol.proj.EPSG4326'); From 5d0b1efba7bf0c2dbf8dae6635cb807631b92947 Mon Sep 17 00:00:00 2001 From: Tim Schaub Date: Wed, 16 Aug 2017 14:36:49 -0400 Subject: [PATCH 14/18] Fix typos --- test/karma.config.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/karma.config.js b/test/karma.config.js index 38d0bdd7aa..672107e46f 100644 --- a/test/karma.config.js +++ b/test/karma.config.js @@ -3,9 +3,9 @@ var path = require('path'); /** * The config below is not enough to run Karma. In addition, we need to add * all library files in dependency order. This could be done with a plugin if - * Karma supported async plugins (there may other alternatives as well). But + * Karma supported async plugins (there may be other alternatives as well). But * for now we start Karma with the `tasks/test.js` script. This script - * sorts dependencies and add files to the Karma config below. + * sorts dependencies and adds files to the Karma config below. */ module.exports = function(karma) { From 1fdef48812ced9e871025377f241c634f4ac46eb Mon Sep 17 00:00:00 2001 From: Tim Schaub Date: Wed, 16 Aug 2017 14:55:48 -0400 Subject: [PATCH 15/18] Run tests on Sauce --- .travis.yml | 30 ++++++++++++------------------ test/karma.config.js | 41 +++++++++++++++++++++++++++++++++++++++-- 2 files changed, 51 insertions(+), 20 deletions(-) diff --git a/.travis.yml b/.travis.yml index e851feb2a7..567937a0e3 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,26 +1,20 @@ -sudo: false - +sudo: required language: node_js - node_js: - - "8" - -addons: - firefox: "52.0" - +- '8' cache: directories: - - node_modules + - node_modules env: - - DISPLAY=:99.0 - +- DISPLAY=:99.0 before_script: - - "rm src/ol/renderer/webgl/*shader.js" - - "sh -e /etc/init.d/xvfb start" - - "npm ls || true" - -script: "make ci" - +- rm src/ol/renderer/webgl/*shader.js +script: make ci branches: only: - - master + - master +addons: + sauce_connect: + username: openlayers + jwt: + secure: bb2Ibzu9RLe6ZlIG7JVcuH7IoLMxa/i3LTM7t8mbsPjVOGs5ycyJ7M9MbvqB/F2EzbeV4XB2c9ufI4TkaLYceY5kdWjfZVN8iasr+GFqKMv1uR4i6bpu8KmHJ+blxwfY1QOQ/cGwEx+fbeycMtpTc3Y3GyXaPlCQLhbZvesMg88= diff --git a/test/karma.config.js b/test/karma.config.js index 672107e46f..a52e2dcded 100644 --- a/test/karma.config.js +++ b/test/karma.config.js @@ -1,4 +1,5 @@ var path = require('path'); +var pkg = require('../package.json'); /** * The config below is not enough to run Karma. In addition, we need to add @@ -47,9 +48,45 @@ module.exports = function(karma) { }); if (process.env.TRAVIS) { + // see https://wiki.saucelabs.com/display/DOCS/Platform+Configurator + // for platform and browserName options (Selenium API, node.js code) + var customLaunchers = { + SL_Chrome: { + base: 'SauceLabs', + browserName: 'chrome' + }, + SL_Firefox: { + base: 'SauceLabs', + browserName: 'firefox' + }, + SL_Edge: { + base: 'SauceLabs', + platform: 'Windows 10', + browserName: 'MicrosoftEdge' + }, + SL_Safari: { + base: 'SauceLabs', + platform: 'macos 10.12', + browserName: 'safari' + } + }; karma.set({ - reporters: ['dots'], - browsers: ['Firefox'] + sauceLabs: { + testName: pkg.name + '@' + pkg.version, + recordScreenshots: false, + connectOptions: { + port: 5757 + }, + startConnect: false, + tunnelIdentifier: process.env.TRAVIS_JOB_NUMBER, + username: 'openlayers', + accessKey: process.env.SAUCE_ACCESS_KEY + }, + reporters: ['dots', 'saucelabs'], + captureTimeout: 240000, + browserNoActivityTimeout: 240000, + customLaunchers: customLaunchers, + browsers: Object.keys(customLaunchers) }); } else { karma.set({ From ea5484d676fbd640f74e31b6c0c3b0fc81f5afd3 Mon Sep 17 00:00:00 2001 From: Tim Schaub Date: Wed, 16 Aug 2017 16:16:16 -0400 Subject: [PATCH 16/18] Avoid Edge and Safari for now --- test/karma.config.js | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/test/karma.config.js b/test/karma.config.js index a52e2dcded..2091e69133 100644 --- a/test/karma.config.js +++ b/test/karma.config.js @@ -58,16 +58,16 @@ module.exports = function(karma) { SL_Firefox: { base: 'SauceLabs', browserName: 'firefox' - }, - SL_Edge: { - base: 'SauceLabs', - platform: 'Windows 10', - browserName: 'MicrosoftEdge' - }, - SL_Safari: { - base: 'SauceLabs', - platform: 'macos 10.12', - browserName: 'safari' + // }, + // SL_Edge: { + // base: 'SauceLabs', + // platform: 'Windows 10', + // browserName: 'MicrosoftEdge' + // }, + // SL_Safari: { + // base: 'SauceLabs', + // platform: 'macos 10.12', + // browserName: 'safari' } }; karma.set({ From 1cad1ffab61dacd9482b59510aa6ba68d1cfdf9f Mon Sep 17 00:00:00 2001 From: Tim Schaub Date: Wed, 16 Aug 2017 16:29:52 -0400 Subject: [PATCH 17/18] Name tests like the pull request --- .travis.yml | 2 -- test/karma.config.js | 14 ++++++++++---- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/.travis.yml b/.travis.yml index 567937a0e3..2a58dd9250 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,8 +5,6 @@ node_js: cache: directories: - node_modules -env: -- DISPLAY=:99.0 before_script: - rm src/ol/renderer/webgl/*shader.js script: make ci diff --git a/test/karma.config.js b/test/karma.config.js index 2091e69133..7ad0d333aa 100644 --- a/test/karma.config.js +++ b/test/karma.config.js @@ -1,5 +1,7 @@ -var path = require('path'); -var pkg = require('../package.json'); +/* eslint-env node, es6 */ + +const path = require('path'); +const pkg = require('../package.json'); /** * The config below is not enough to run Karma. In addition, we need to add @@ -48,9 +50,13 @@ module.exports = function(karma) { }); if (process.env.TRAVIS) { + const testName = process.env.TRAVIS_PULL_REQUEST ? + `https://github.com/openlayers/openlayers/pull/${process.env.TRAVIS_PULL_REQUEST}` : + `${pkg.name}@${pkg.version} (${process.env.TRAVIS_COMMIT})`; + // see https://wiki.saucelabs.com/display/DOCS/Platform+Configurator // for platform and browserName options (Selenium API, node.js code) - var customLaunchers = { + const customLaunchers = { SL_Chrome: { base: 'SauceLabs', browserName: 'chrome' @@ -72,7 +78,7 @@ module.exports = function(karma) { }; karma.set({ sauceLabs: { - testName: pkg.name + '@' + pkg.version, + testName: testName, recordScreenshots: false, connectOptions: { port: 5757 From a61e9f563c3baa9384c318a287b457bf303cba8e Mon Sep 17 00:00:00 2001 From: Tim Schaub Date: Wed, 16 Aug 2017 16:58:22 -0400 Subject: [PATCH 18/18] No sudo and add comment --- .travis.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 2a58dd9250..173b2289d0 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,4 +1,4 @@ -sudo: required +sudo: false language: node_js node_js: - '8' @@ -15,4 +15,5 @@ addons: sauce_connect: username: openlayers jwt: + # This is the encrypted SAUCE_ACCESS_KEY secure: bb2Ibzu9RLe6ZlIG7JVcuH7IoLMxa/i3LTM7t8mbsPjVOGs5ycyJ7M9MbvqB/F2EzbeV4XB2c9ufI4TkaLYceY5kdWjfZVN8iasr+GFqKMv1uR4i6bpu8KmHJ+blxwfY1QOQ/cGwEx+fbeycMtpTc3Y3GyXaPlCQLhbZvesMg88=