Avoid instanceof checks in global test extensions
This commit is contained in:
+28
-44
@@ -1,11 +1,8 @@
|
|||||||
goog.require('ol.array');
|
goog.require('ol.array');
|
||||||
goog.require('ol.has');
|
goog.require('ol.has');
|
||||||
goog.require('ol.renderer.canvas.Map');
|
// avoid importing anything that results in an instanceof check
|
||||||
goog.require('ol.renderer.webgl.Map');
|
// since these extensions are global, instanceof checks fail with modules
|
||||||
|
|
||||||
// FIXME remove afterLoadXml as it uses the wrong XML parser on IE9
|
|
||||||
|
|
||||||
// helper functions for async testing and other utility functions.
|
|
||||||
(function(global) {
|
(function(global) {
|
||||||
|
|
||||||
// show generated maps for rendering tests
|
// show generated maps for rendering tests
|
||||||
@@ -430,37 +427,6 @@ goog.require('ol.renderer.webgl.Map');
|
|||||||
}
|
}
|
||||||
global.resembleCanvas = resembleCanvas;
|
global.resembleCanvas = resembleCanvas;
|
||||||
|
|
||||||
function expectResembleCanvas(map, referenceImage, tolerance, done) {
|
|
||||||
map.render();
|
|
||||||
map.on('postcompose', function(event) {
|
|
||||||
var canvas = event.context.canvas;
|
|
||||||
resembleCanvas(canvas, referenceImage, tolerance, done);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function expectResembleWebGL(map, referenceImage, tolerance, done) {
|
|
||||||
map.render();
|
|
||||||
map.on('postcompose', function(event) {
|
|
||||||
if (event.frameState.animate) {
|
|
||||||
// make sure the tile-queue is empty
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
var webglCanvas = event.glContext.getCanvas();
|
|
||||||
expect(webglCanvas).to.be.a(HTMLCanvasElement);
|
|
||||||
|
|
||||||
// draw the WebGL canvas on a new canvas, because we can not create
|
|
||||||
// a 2d context for that canvas because there is already a webgl context.
|
|
||||||
var canvas = document.createElement('canvas');
|
|
||||||
canvas.width = webglCanvas.width;
|
|
||||||
canvas.height = webglCanvas.height;
|
|
||||||
canvas.getContext('2d').drawImage(webglCanvas, 0, 0,
|
|
||||||
webglCanvas.width, webglCanvas.height);
|
|
||||||
|
|
||||||
resembleCanvas(canvas, referenceImage, tolerance, done);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Assert that the given map resembles a reference image.
|
* Assert that the given map resembles a reference image.
|
||||||
*
|
*
|
||||||
@@ -470,14 +436,32 @@ goog.require('ol.renderer.webgl.Map');
|
|||||||
* @param {function} done A callback to indicate that the test is done.
|
* @param {function} done A callback to indicate that the test is done.
|
||||||
*/
|
*/
|
||||||
global.expectResemble = function(map, referenceImage, tolerance, done) {
|
global.expectResemble = function(map, referenceImage, tolerance, done) {
|
||||||
if (map.getRenderer() instanceof ol.renderer.canvas.Map) {
|
map.render();
|
||||||
expectResembleCanvas(map, referenceImage, tolerance, done);
|
map.on('postcompose', function(event) {
|
||||||
} else if (map.getRenderer() instanceof ol.renderer.webgl.Map) {
|
if (event.frameState.animate) {
|
||||||
expectResembleWebGL(map, referenceImage, tolerance, done);
|
// make sure the tile-queue is empty
|
||||||
} else {
|
return;
|
||||||
expect().fail(
|
}
|
||||||
'resemble only works with the canvas and WebGL renderer.');
|
|
||||||
}
|
var canvas;
|
||||||
|
if (event.glContext) {
|
||||||
|
var webglCanvas = event.glContext.getCanvas();
|
||||||
|
expect(webglCanvas).to.be.a(HTMLCanvasElement);
|
||||||
|
|
||||||
|
// draw the WebGL canvas on a new canvas, because we can not create
|
||||||
|
// a 2d context for that canvas because there is already a webgl context.
|
||||||
|
canvas = document.createElement('canvas');
|
||||||
|
canvas.width = webglCanvas.width;
|
||||||
|
canvas.height = webglCanvas.height;
|
||||||
|
canvas.getContext('2d').drawImage(webglCanvas, 0, 0,
|
||||||
|
webglCanvas.width, webglCanvas.height);
|
||||||
|
} else {
|
||||||
|
canvas = event.context.canvas;
|
||||||
|
}
|
||||||
|
expect(canvas).to.be.a(HTMLCanvasElement);
|
||||||
|
|
||||||
|
resembleCanvas(canvas, referenceImage, tolerance, done);
|
||||||
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
var features = {
|
var features = {
|
||||||
|
|||||||
Reference in New Issue
Block a user