108 lines
3.1 KiB
JavaScript
108 lines
3.1 KiB
JavaScript
describe('ol.renderer.dom.Map', function() {
|
|
|
|
var layer,
|
|
map,
|
|
prototype = ol.renderer.dom.Map.prototype;
|
|
|
|
beforeEach(function() {
|
|
// always use setTimeout based shim for requestAnimationFrame
|
|
spyOn(goog.async.AnimationDelay.prototype, 'getRaf_')
|
|
.andCallFake(function() {return null;});
|
|
|
|
// set up renderer spies
|
|
spyOn(prototype, 'render').andCallThrough();
|
|
spyOn(prototype, 'beforeRenderFrame').andCallThrough();
|
|
spyOn(prototype, 'renderFrame').andCallThrough();
|
|
spyOn(prototype, 'afterRenderFrame').andCallThrough();
|
|
|
|
layer = new ol.layer.TileLayer({
|
|
source: new ol.source.MapQuestOpenAerial()
|
|
});
|
|
|
|
map = new ol.Map({
|
|
center: new ol.Coordinate(0, 0),
|
|
layers: new ol.Collection([layer]),
|
|
renderer: ol.RendererHint.DOM,
|
|
target: 'map',
|
|
zoom: 1
|
|
});
|
|
|
|
});
|
|
|
|
afterEach(function() {
|
|
map.dispose();
|
|
layer.dispose();
|
|
});
|
|
|
|
describe('#render', function() {
|
|
it('is called immediately by ol.Map#render', function() {
|
|
map.render();
|
|
|
|
expect(prototype.render).toHaveBeenCalled();
|
|
expect(prototype.render).toHaveBeenCalledWith(undefined);
|
|
});
|
|
|
|
it('is passed the callback passed to ol.Map#render', function() {
|
|
function callback() {}
|
|
map.render(callback);
|
|
|
|
expect(prototype.render).toHaveBeenCalled();
|
|
expect(prototype.render).toHaveBeenCalledWith(callback);
|
|
});
|
|
});
|
|
|
|
describe('#renderFrame', function() {
|
|
|
|
it('is not called immediately from ol.Map#render', function() {
|
|
map.render();
|
|
var renderer = map.renderer_,
|
|
renderFrame = renderer.renderFrame,
|
|
afterRenderFrame = renderer.afterRenderFrame;
|
|
|
|
expect(prototype.renderFrame).not.toHaveBeenCalled();
|
|
expect(prototype.afterRenderFrame).not.toHaveBeenCalled();
|
|
|
|
waitsFor('afterRenderFrame to be called', 500, function() {
|
|
return prototype.afterRenderFrame.callCount > 0;
|
|
});
|
|
|
|
runs(function() {
|
|
expect(prototype.renderFrame).toHaveBeenCalled();
|
|
});
|
|
});
|
|
|
|
it('is not called multiple times when setting map properties', function() {
|
|
expect(prototype.renderFrame).not.toHaveBeenCalled();
|
|
|
|
var callCount = 0;
|
|
|
|
waitsFor('renderFrame to be called', 500, function() {
|
|
callCount = prototype.renderFrame.callCount;
|
|
return callCount > 0;
|
|
});
|
|
|
|
runs(function() {
|
|
expect(prototype.renderFrame).toHaveBeenCalled();
|
|
callCount = prototype.renderFrame.callCount;
|
|
|
|
// renderFrame is not called immediately after ol.Map#setCenter
|
|
map.setCenter(new ol.Coordinate(10, 10));
|
|
expect(prototype.renderFrame.callCount).toEqual(callCount);
|
|
|
|
// renderFrame is not called immediately after ol.Map#setResolution
|
|
map.setResolution(map.getResolution() / 2);
|
|
expect(prototype.renderFrame.callCount).toEqual(callCount);
|
|
|
|
// renderFrame is called after some delay
|
|
waitsFor('renderFrame to be called again', 500, function() {
|
|
return prototype.renderFrame.callCount > callCount;
|
|
});
|
|
});
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
});
|