From ac1d7572e493be5ce1c86c0abc02695a0816dafb Mon Sep 17 00:00:00 2001 From: Andreas Hocevar Date: Mon, 1 Feb 2016 09:55:35 +0100 Subject: [PATCH] Add tests for scroll zoom --- .../mousewheelzoominteraction.test.js | 136 ++++++++++++++++++ 1 file changed, 136 insertions(+) create mode 100644 test/spec/ol/interaction/mousewheelzoominteraction.test.js diff --git a/test/spec/ol/interaction/mousewheelzoominteraction.test.js b/test/spec/ol/interaction/mousewheelzoominteraction.test.js new file mode 100644 index 0000000000..79e52d90dc --- /dev/null +++ b/test/spec/ol/interaction/mousewheelzoominteraction.test.js @@ -0,0 +1,136 @@ +/*global createMapDiv, disposeMap*/ +goog.provide('ol.test.interaction.MouseWheelZoom'); + + +describe('ol.interaction.MouseWheelZoom', function() { + var map; + + beforeEach(function() { + map = new ol.Map({ + target: createMapDiv(100, 100), + view: new ol.View({ + center: [0, 0], + resolutions: [2, 1, 0.5], + zoom: 1 + }) + }); + map.renderSync(); + }); + afterEach(function() { + disposeMap(map); + }); + + describe('handleEvent()', function() { + it('[wheel] works on Firefox in DOM_DELTA_PIXEL mode', function(done) { + var origHasFirefox = ol.has.FIREFOX; + ol.has.FIREFOX = true; + var spy = sinon.spy(ol.interaction.Interaction, 'zoomByDelta'); + map.once('postrender', function() { + expect(spy.getCall(0).args[2]).to.be(-1); + expect(spy.getCall(0).args[3]).to.eql([0, 0]); + ol.interaction.Interaction.zoomByDelta.restore(); + ol.has.FIREFOX = origHasFirefox; + done(); + }); + var event = new ol.MapBrowserEvent(ol.events.EventType.WHEEL, map, { + type: ol.events.EventType.WHEEL, + deltaMode: WheelEvent.DOM_DELTA_PIXEL, + deltaY: ol.has.DEVICE_PIXEL_RATIO, + target: map.getViewport(), + preventDefault: ol.events.Event.prototype.preventDefault + }); + event.coordinate = [0, 0]; + map.handleMapBrowserEvent(event); + }); + it('[wheel] works in DOM_DELTA_PIXEL mode', function(done) { + var origHasFirefox = ol.has.FIREFOX; + ol.has.FIREFOX = false; + var spy = sinon.spy(ol.interaction.Interaction, 'zoomByDelta'); + map.once('postrender', function() { + expect(spy.getCall(0).args[2]).to.be(-1); + expect(spy.getCall(0).args[3]).to.eql([0, 0]); + ol.interaction.Interaction.zoomByDelta.restore(); + ol.has.FIREFOX = origHasFirefox; + done(); + }); + var event = new ol.MapBrowserEvent(ol.events.EventType.WHEEL, map, { + type: ol.events.EventType.WHEEL, + deltaMode: WheelEvent.DOM_DELTA_PIXEL, + deltaY: 1, + target: map.getViewport(), + preventDefault: ol.events.Event.prototype.preventDefault + }); + event.coordinate = [0, 0]; + map.handleMapBrowserEvent(event); + }); + it('[wheel] works in DOM_DELTA_LINE mode', function(done) { + var spy = sinon.spy(ol.interaction.Interaction, 'zoomByDelta'); + map.once('postrender', function() { + expect(spy.getCall(0).args[2]).to.be(-1); + expect(spy.getCall(0).args[3]).to.eql([0, 0]); + ol.interaction.Interaction.zoomByDelta.restore(); + done(); + }); + var event = new ol.MapBrowserEvent(ol.events.EventType.WHEEL, map, { + type: ol.events.EventType.WHEEL, + deltaMode: WheelEvent.DOM_DELTA_LINE, + deltaY: 1 / 40, + target: map.getViewport(), + preventDefault: ol.events.Event.prototype.preventDefault + }); + event.coordinate = [0, 0]; + map.handleMapBrowserEvent(event); + }); + it('[mousewheel] works on Safari', 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[2]).to.be(-1); + expect(spy.getCall(0).args[3]).to.eql([0, 0]); + ol.interaction.Interaction.zoomByDelta.restore(); + ol.has.SAFARI = origHasSafari; + done(); + }); + var event = new ol.MapBrowserEvent(ol.events.EventType.MOUSEWHEEL, map, { + type: ol.events.EventType.MOUSEWHEEL, + wheelDeltaY: -3, + target: map.getViewport(), + preventDefault: ol.events.Event.prototype.preventDefault + }); + event.coordinate = [0, 0]; + map.handleMapBrowserEvent(event); + }); + it('[mousewheel] works on other browsers', 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[2]).to.be(-1); + expect(spy.getCall(0).args[3]).to.eql([0, 0]); + ol.interaction.Interaction.zoomByDelta.restore(); + ol.has.SAFARI = origHasSafari; + done(); + }); + var event = new ol.MapBrowserEvent(ol.events.EventType.MOUSEWHEEL, map, { + type: ol.events.EventType.MOUSEWHEEL, + wheelDeltaY: -1, + target: map.getViewport(), + preventDefault: ol.events.Event.prototype.preventDefault + }); + event.coordinate = [0, 0]; + map.handleMapBrowserEvent(event); + }); + }); + +}); + + +goog.require('goog.object'); +goog.require('ol.Map'); +goog.require('ol.MapBrowserEvent'); +goog.require('ol.View'); +goog.require('ol.events.Event'); +goog.require('ol.events.EventType'); +goog.require('ol.interaction.Interaction'); +goog.require('ol.interaction.MouseWheelZoom');