Merge pull request #4711 from ahocevar/no-goog-events

Removal of goog.events.*
This commit is contained in:
Andreas Hocevar
2016-02-03 14:05:32 +01:00
126 changed files with 2761 additions and 1202 deletions

View File

@@ -32,22 +32,6 @@
goog.json.USE_NATIVE_JSON = true;
/**
* The goog.dom.ViewportSizeMonitor (used in map.js) creates a global leak
* by setting goog.UID_PROPERTY_ on the monitored window. In order to test
* that we don't have other global leaks, we preemptively set the property
* so Mocha can compare the global before and after our tests.
*
* In addition, calling goog.events.listen on the global object (as done
* in deviceorientation.js) creates a second leak by setting
* goog.events.LISTENER_MAP_PROP_ on the global object.
*
* We preemptively set both of these properties so Mocha can compare the
* global before and after tests. The call to goog.events.listen also
* calls goog.getUid.
*/
goog.events.listen(this, 'test', function() {});
var runner = mocha.run();
if (window.console && console.log) {
// write stacks to the console for failed tests

View File

@@ -114,7 +114,7 @@ describe('ol.collection', function() {
it('fires a remove event', function() {
var collection = new ol.Collection([0, 1, 2]);
var cb = sinon.spy();
goog.events.listen(collection, ol.CollectionEventType.REMOVE, cb);
ol.events.listen(collection, ol.CollectionEventType.REMOVE, cb);
expect(collection.remove(1)).to.eql(1);
expect(cb).to.be.called();
expect(cb.lastCall.args[0].element).to.eql(1);
@@ -137,10 +137,10 @@ describe('ol.collection', function() {
it('does dispatch events', function() {
var collection = new ol.Collection(['a', 'b']);
var added, removed;
goog.events.listen(collection, ol.CollectionEventType.ADD, function(e) {
ol.events.listen(collection, ol.CollectionEventType.ADD, function(e) {
added = e.element;
});
goog.events.listen(
ol.events.listen(
collection, ol.CollectionEventType.REMOVE, function(e) {
removed = e.element;
});
@@ -154,7 +154,7 @@ describe('ol.collection', function() {
it('does dispatch events', function() {
var collection = new ol.Collection(['a']);
var removed;
goog.events.listen(
ol.events.listen(
collection, ol.CollectionEventType.REMOVE, function(e) {
removed = e.element;
});
@@ -167,7 +167,7 @@ describe('ol.collection', function() {
it('does dispatch events', function() {
var collection = new ol.Collection([0, 2]);
var added;
goog.events.listen(
ol.events.listen(
collection, ol.CollectionEventType.ADD, function(e) {
added = e.element;
});
@@ -179,7 +179,7 @@ describe('ol.collection', function() {
describe('setAt beyond end', function() {
it('triggers events properly', function() {
var added = [];
goog.events.listen(
ol.events.listen(
collection, ol.CollectionEventType.ADD, function(e) {
added.push(e.element);
});
@@ -200,7 +200,7 @@ describe('ol.collection', function() {
beforeEach(function() {
collection = new ol.Collection([0, 1, 2]);
cb = sinon.spy();
goog.events.listen(collection, 'change:length', cb);
ol.events.listen(collection, 'change:length', cb);
});
describe('insertAt', function() {
@@ -229,7 +229,7 @@ describe('ol.collection', function() {
it('triggers add when pushing', function() {
var collection = new ol.Collection();
var elem;
goog.events.listen(collection, ol.CollectionEventType.ADD, function(e) {
ol.events.listen(collection, ol.CollectionEventType.ADD, function(e) {
elem = e.element;
});
collection.push(1);
@@ -246,8 +246,8 @@ describe('ol.collection', function() {
});
describe('setAt', function() {
it('triggers remove', function() {
goog.events.listen(collection, ol.CollectionEventType.ADD, cb1);
goog.events.listen(collection, ol.CollectionEventType.REMOVE, cb2);
ol.events.listen(collection, ol.CollectionEventType.ADD, cb1);
ol.events.listen(collection, ol.CollectionEventType.REMOVE, cb2);
collection.setAt(0, 2);
expect(cb2.lastCall.args[0].element).to.eql(1);
expect(cb1.lastCall.args[0].element).to.eql(2);
@@ -255,7 +255,7 @@ describe('ol.collection', function() {
});
describe('pop', function() {
it('triggers remove', function() {
goog.events.listen(collection, ol.CollectionEventType.REMOVE, cb1);
ol.events.listen(collection, ol.CollectionEventType.REMOVE, cb1);
collection.pop();
expect(cb1.lastCall.args[0].element).to.eql(1);
});
@@ -273,7 +273,7 @@ describe('ol.collection', function() {
it('fires events', function() {
var collection = new ol.Collection();
var elems = [];
goog.events.listen(collection, ol.CollectionEventType.ADD, function(e) {
ol.events.listen(collection, ol.CollectionEventType.ADD, function(e) {
elems.push(e.element);
});
collection.extend([1, 2]);
@@ -284,6 +284,6 @@ describe('ol.collection', function() {
});
goog.require('goog.events');
goog.require('ol.events');
goog.require('ol.Collection');
goog.require('ol.CollectionEventType');

View File

@@ -1,3 +1,4 @@
/*global createMapDiv, disposeMap*/
goog.provide('ol.test.control.ZoomSlider');
describe('ol.control.ZoomSlider', function() {
@@ -50,10 +51,10 @@ describe('ol.control.ZoomSlider', function() {
});
describe('dragger setup', function() {
it('creates a goog.fx.Dragger', function() {
expect(zoomslider.dragger_ instanceof goog.fx.Dragger).to.be(true);
expect(zoomslider.dragger_.limits instanceof goog.math.Rect).to.be(true);
describe('#initSlider_', function() {
it('sets limits', function() {
zoomslider.initSlider_();
expect(zoomslider.limits_ instanceof goog.math.Rect).to.be(true);
});
});
@@ -85,12 +86,104 @@ describe('ol.control.ZoomSlider', function() {
});
});
describe('Pointer event handling', function() {
var map;
beforeEach(function() {
map = new ol.Map({
target: createMapDiv(500, 100),
view: new ol.View({
center: [0, 0],
resolutions: [16, 8, 4, 2, 1, 0.5, 0.25, 0.125, 0.0625]
})
});
});
afterEach(function() {
disposeMap(map);
});
it('[horizontal] handles a drag sequence', function() {
var spy = sinon.spy(goog.Disposable.prototype, 'registerDisposable');
var control = new ol.control.ZoomSlider();
map.addControl(control);
map.getView().setZoom(0);
control.element.style.width = '500px';
control.element.style.height = '10px';
control.element.firstChild.style.width = '100px';
control.element.firstChild.style.height = '10px';
map.renderSync();
var dragger = spy.firstCall.args[0];
spy.restore();
var event = new ol.pointer.PointerEvent(ol.pointer.EventType.POINTERDOWN, {
target: control.element.firstElementChild
});
event.clientX = control.limits_.width;
event.clientY = 0;
dragger.dispatchEvent(event);
expect(control.currentResolution_).to.be(16);
expect(control.dragging_).to.be(true);
expect(control.dragListenerKeys_).to.be.ok();
event.type = ol.pointer.EventType.POINTERMOVE;
event.clientX = 6 * control.limits_.width / 8;
event.clientY = 0;
dragger.dispatchEvent(event);
expect(control.currentResolution_).to.be(4);
event.type = ol.pointer.EventType.POINTERMOVE;
event.clientX = 4 * control.limits_.width / 8;
event.clientY = 0;
dragger.dispatchEvent(event);
event.type = ol.pointer.EventType.POINTERUP;
dragger.dispatchEvent(event);
expect(control.currentResolution_).to.be(1);
expect(control.dragListenerKeys_).to.be(null);
expect(control.dragging_).to.be(false);
});
it('[vertical] handles a drag sequence', function() {
var spy = sinon.spy(goog.Disposable.prototype, 'registerDisposable');
var control = new ol.control.ZoomSlider();
control.element.style.width = '10px';
control.element.style.height = '100px';
control.element.firstChild.style.width = '10px';
control.element.firstChild.style.height = '20px';
map.addControl(control);
map.getView().setZoom(8);
map.renderSync();
var dragger = spy.firstCall.args[0];
spy.restore();
var event = new ol.pointer.PointerEvent(ol.pointer.EventType.POINTERDOWN, {
target: control.element.firstElementChild
});
event.clientX = 0;
event.clientY = 0;
dragger.dispatchEvent(event);
expect(control.currentResolution_).to.be(0.0625);
expect(control.dragging_).to.be(true);
expect(control.dragListenerKeys_).to.be.ok();
event.type = ol.pointer.EventType.POINTERMOVE;
event.clientX = 0;
event.clientY = 2 * control.limits_.height / 8;
dragger.dispatchEvent(event);
expect(control.currentResolution_).to.be(0.25);
event.type = ol.pointer.EventType.POINTERMOVE;
event.clientX = 0;
event.clientY = 4 * control.limits_.height / 8;
dragger.dispatchEvent(event);
event.type = ol.pointer.EventType.POINTERUP;
dragger.dispatchEvent(event);
expect(control.currentResolution_).to.be(1);
expect(control.dragListenerKeys_).to.be(null);
expect(control.dragging_).to.be(false);
});
});
});
goog.require('goog.Disposable');
goog.require('goog.dispose');
goog.require('goog.dom');
goog.require('goog.dom.classlist');
goog.require('goog.fx.Dragger');
goog.require('goog.math.Rect');
goog.require('ol.Map');
goog.require('ol.View');
goog.require('ol.control.ZoomSlider');
goog.require('ol.pointer.PointerEvent');

216
test/spec/ol/events.test.js Normal file
View File

@@ -0,0 +1,216 @@
goog.provide('ol.test.events');
describe('ol.events', function() {
var add, remove, target;
beforeEach(function() {
add = sinon.spy();
remove = sinon.spy();
target = {
addEventListener: add,
removeEventListener: remove
};
});
describe('bindListener_()', function() {
it('binds a listener and returns a bound listener function', function() {
var listenerObj = {
listener: sinon.spy(),
bindTo: {id: 1}
};
var boundListener = ol.events.bindListener_(listenerObj);
expect(listenerObj.boundListener).to.equal(boundListener);
boundListener();
expect(listenerObj.listener.thisValues[0]).to.equal(listenerObj.bindTo);
});
it('binds a self-unregistering listener when callOnce is true', function() {
var bindTo = {id: 1};
var listener = sinon.spy();
target.removeEventListener = function() {};
var listenerObj = {
type: 'foo',
target: target,
listener: listener,
bindTo: bindTo,
callOnce: true
};
var boundListener = ol.events.bindListener_(listenerObj);
expect(listenerObj.boundListener).to.equal(boundListener);
var spy = sinon.spy(ol.events, 'unlistenByKey');
boundListener();
expect(listener.thisValues[0]).to.equal(bindTo);
expect(spy.firstCall.args[0]).to.eql(listenerObj);
ol.events.unlistenByKey.restore();
});
});
describe('findListener_()', function() {
var listener, listenerObj, listeners;
beforeEach(function() {
listener = function() {};
listenerObj = {
type: 'foo',
target: target,
listener: listener
};
listeners = [listenerObj];
});
it('searches a listener array for a specific listener', function() {
var bindTo = {id: 1};
var result = ol.events.findListener_(listeners, listener);
expect(result).to.be(listenerObj);
result = ol.events.findListener_(listeners, listener, bindTo);
expect(result).to.be(undefined);
listenerObj.bindTo = bindTo;
result = ol.events.findListener_(listeners, listener);
expect(result).to.be(undefined);
result = ol.events.findListener_(listeners, listener, bindTo);
expect(result).to.be(listenerObj);
});
it('marks the delete index on a listener object', function() {
var result = ol.events.findListener_(listeners, listener, undefined, true);
expect(result).to.be(listenerObj);
expect(listenerObj.deleteIndex).to.be(0);
});
});
describe('getListeners()', function() {
it('returns listeners for a target and type', function() {
var foo = ol.events.listen(target, 'foo', function() {});
var bar = ol.events.listen(target, 'bar', function() {});
expect (ol.events.getListeners(target, 'foo')).to.eql([foo]);
expect (ol.events.getListeners(target, 'bar')).to.eql([bar]);
});
it('returns undefined when no listeners are registered', function() {
expect (ol.events.getListeners(target, 'foo')).to.be(undefined);
});
});
describe('listen()', function() {
it('calls addEventListener on the target', function() {
ol.events.listen(target, 'foo', function() {});
expect(add.callCount).to.be(1);
});
it('returns a key', function() {
var key = ol.events.listen(target, 'foo', function() {});
expect(key).to.be.a(Object);
});
it('does not add the same listener twice', function() {
var listener = function() {};
var key1 = ol.events.listen(target, 'foo', listener);
var key2 = ol.events.listen(target, 'foo', listener);
expect(key1).to.equal(key2);
expect(add.callCount).to.be(1);
});
it('only treats listeners as same when all args are equal', function() {
var listener = function() {};
ol.events.listen(target, 'foo', listener, {});
ol.events.listen(target, 'foo', listener, {});
ol.events.listen(target, 'foo', listener, undefined);
expect(add.callCount).to.be(3);
});
});
describe('listenOnce()', function() {
it('creates a one-off listener', function() {
var listener = sinon.spy();
var key = ol.events.listenOnce(target, 'foo', listener);
expect(add.callCount).to.be(1);
expect(key.callOnce).to.be(true);
key.boundListener();
expect(listener.callCount).to.be(1);
expect(remove.callCount).to.be(1);
});
it('does not add the same listener twice', function() {
var listener = function() {};
var key1 = ol.events.listenOnce(target, 'foo', listener);
var key2 = ol.events.listenOnce(target, 'foo', listener);
expect(key1).to.equal(key2);
expect(add.callCount).to.be(1);
expect(key1.callOnce).to.be(true);
});
it('listen() can turn a one-off listener into a permanent one', function() {
var listener = sinon.spy();
var key = ol.events.listenOnce(target, 'foo', listener);
expect(key.callOnce).to.be(true);
key = ol.events.listen(target, 'foo', listener);
expect(add.callCount).to.be(1);
expect(key.callOnce).to.be(false);
key.boundListener();
expect(remove.callCount).to.be(0);
});
});
describe('unlisten()', function() {
it('unregisters previously registered listeners', function() {
var listener = function() {};
ol.events.listen(target, 'foo', listener);
ol.events.unlisten(target, 'foo', listener);
expect(ol.events.getListeners(target, 'foo')).to.be(undefined);
});
it('works with multiple types', function() {
var listener = function() {};
ol.events.listen(target, ['foo', 'bar'], listener);
ol.events.unlisten(target, ['bar', 'foo'], listener);
expect(ol.events.getListeners(target, 'foo')).to.be(undefined);
expect(ol.events.getListeners(target, 'bar')).to.be(undefined);
});
});
describe('unlistenByKey()', function() {
it('unregisters previously registered listeners', function() {
var key = ol.events.listen(target, 'foo', function() {});
ol.events.unlistenByKey(key);
expect(ol.events.getListeners(target, 'foo')).to.be(undefined);
});
it('works with multiple types', function() {
var key = ol.events.listen(target, ['foo', 'bar'], function() {});
ol.events.unlistenByKey(key);
expect(ol.events.getListeners(target, 'foo')).to.be(undefined);
expect(ol.events.getListeners(target, 'bar')).to.be(undefined);
});
});
describe('unlistenAll()', function() {
it('unregisters all listeners registered for a target', function() {
var keys = [
ol.events.listen(target, 'foo', function() {}),
ol.events.listen(target, 'bar', function() {})
];
ol.events.unlistenAll(target);
expect(ol.events.getListeners(target, 'foo')).to.be(undefined);
expect(ol.events.getListeners(target, 'bar')).to.be(undefined);
expect(ol.events.LISTENER_MAP_PROP_ in target).to.be(false);
expect(keys).to.eql([{}, {}]);
});
});
describe('Compatibility with ol.events.EventTarget', function() {
it('does not register duplicated listeners', function() {
var target = new ol.events.EventTarget();
var listener = function() {};
var key1 = ol.events.listen(target, 'foo', listener);
expect(target.getListeners('foo')).to.eql([key1.boundListener]);
var key2 = ol.events.listen(target, 'foo', listener);
expect(key2.boundListener).to.equal(key1.boundListener);
expect(target.getListeners('foo')).to.eql([key1.boundListener]);
});
it('registers multiple listeners if this object is different', function() {
var target = new ol.events.EventTarget();
var listener = function() {};
var key1 = ol.events.listen(target, 'foo', listener, {});
var key2 = ol.events.listen(target, 'foo', listener, {});
expect(key1.boundListener).to.not.equal(key2.boundListener);
expect(target.getListeners('foo')).to.eql(
[key2.boundListener, key1.boundListener]);
});
});
});
goog.require('ol.events');
goog.require('ol.events.EventTarget');

View File

@@ -0,0 +1,57 @@
goog.provide('ol.test.events.Event');
describe('ol.events.Event', function() {
describe('constructor', function() {
it('takes a type as argument', function() {
var event = new ol.events.Event('foo');
expect(event.type).to.be('foo');
});
it('can be constructed with an optional 2nd target arg', function() {
var target = {id: 1};
var event = new ol.events.Event('foo', target);
expect(event.target).to.equal(target);
});
it('does not set the propagationStopped flag', function() {
var event = new ol.events.Event('foo');
expect(event.propagationStopped).to.be(undefined);
});
});
describe('#preventDefault', function() {
it('sets the propagationStopped flag', function() {
var event = new ol.events.Event('foo');
event.preventDefault();
expect(event.propagationStopped).to.be(true);
});
it('is the same as #stopPropagation', function() {
var event = new ol.events.Event('foo');
expect(event.stopPropagation).to.equal(event.preventDefault);
});
});
describe('ol.events.Event.preventDefault', function() {
it('calls preventDefault on the event object', function() {
var event = {
preventDefault: sinon.spy()
};
ol.events.Event.preventDefault(event);
expect(event.preventDefault.called).to.be(true);
});
});
describe('ol.events.Event.stopPropagation', function() {
it('calls preventDefault on the event object', function() {
var event = {
stopPropagation: sinon.spy()
};
ol.events.Event.stopPropagation(event);
expect(event.stopPropagation.called).to.be(true);
});
});
});
goog.require('ol.events.Event');

View File

@@ -0,0 +1,132 @@
goog.provide('ol.test.events.EventTarget');
describe('ol.events.EventTarget', function() {
var called, events, eventTarget, spy1, spy2, spy3;
beforeEach(function() {
called = [];
events = [];
function spy(evt) {
called.push(this.id);
events.push(evt);
}
spy1 = spy.bind({id: 1});
spy2 = spy.bind({id: 2});
spy3 = spy.bind({id: 3});
eventTarget = new ol.events.EventTarget();
});
describe('constructor', function() {
it('creates an instance', function() {
expect(eventTarget).to.be.a(ol.events.EventTarget);
});
it('creates an empty listeners_ object', function() {
expect(Object.keys(eventTarget.listeners_)).to.have.length(0);
});
});
describe('#hasListener', function() {
it('reports any listeners when called without argument', function() {
expect(eventTarget.hasListener()).to.be(false);
eventTarget.listeners_['foo'] = [function() {}];
expect(eventTarget.hasListener()).to.be(true);
});
it('reports listeners for the type passed as argument', function() {
eventTarget.listeners_['foo'] = [function() {}];
expect(eventTarget.hasListener('foo')).to.be(true);
expect(eventTarget.hasListener('bar')).to.be(false);
});
});
describe('#getListeners', function() {
it('returns listeners for a type or undefined if none', function() {
expect(eventTarget.getListeners('foo')).to.be(undefined);
var listeners = [function() {}];
eventTarget.listeners_['foo'] = listeners;
expect(eventTarget.getListeners('foo')).to.equal(listeners);
});
});
describe('#addEventListener()', function() {
it('has listeners for each registered type', function() {
eventTarget.addEventListener('foo', spy1);
eventTarget.addEventListener('bar', spy2);
expect(eventTarget.hasListener('foo')).to.be(true);
expect(eventTarget.hasListener('bar')).to.be(true);
});
});
describe('#removeEventListener()', function() {
it('keeps the listeners registry clean', function() {
eventTarget.addEventListener('foo', spy1);
eventTarget.removeEventListener('foo', spy1);
expect(eventTarget.hasListener('foo')).to.be(false);
});
it('removes added listeners from the listeners registry', function() {
eventTarget.addEventListener('foo', spy1);
eventTarget.addEventListener('foo', spy2);
eventTarget.removeEventListener('foo', spy1, false);
expect(eventTarget.getListeners('foo')).to.have.length(1);
});
});
describe('#dispatchEvent()', function() {
it('calls listeners in the correct order', function() {
eventTarget.addEventListener('foo', spy1);
eventTarget.addEventListener('foo', spy2);
eventTarget.dispatchEvent('foo');
expect(called).to.eql([1, 2]);
});
it('stops propagation when listeners return false', function() {
eventTarget.addEventListener('foo', spy1);
eventTarget.addEventListener('foo', function(evt) {
spy2();
return false;
}, false);
eventTarget.addEventListener('foo', spy3);
eventTarget.dispatchEvent('foo');
expect(called).to.eql([1, 2]);
});
it('stops propagation when listeners call preventDefault()', function() {
eventTarget.addEventListener('foo', function(evt) {
spy2();
evt.preventDefault();
});
eventTarget.addEventListener('foo', spy1);
eventTarget.dispatchEvent('foo');
expect(called).to.eql([2]);
});
it('passes a default ol.events.Event object to listeners', function() {
eventTarget.addEventListener('foo', spy1);
eventTarget.dispatchEvent('foo');
expect(events[0]).to.be.a(ol.events.Event);
expect(events[0].type).to.be('foo');
expect(events[0].target).to.equal(eventTarget);
});
it('passes a custom event object with target to listeners', function() {
eventTarget.addEventListener('foo', spy1);
var event = {
type: 'foo'
};
eventTarget.dispatchEvent(event);
expect(events[0]).to.equal(event);
expect(events[0].target).to.equal(eventTarget);
});
});
describe('#dispose()', function() {
it('cleans up foreign references', function() {
ol.events.listen(eventTarget, 'foo', spy1, document);
expect(eventTarget.hasListener('foo')).to.be(true);
eventTarget.dispose();
expect(eventTarget.hasListener('foo')).to.be(false);
});
});
});
goog.require('ol.events');
goog.require('ol.events.Event');
goog.require('ol.events.EventTarget');

View File

@@ -462,7 +462,7 @@ describe('ol.Feature.createStyleFunction()', function() {
});
goog.require('goog.events');
goog.require('ol.events');
goog.require('goog.object');
goog.require('ol.Feature');
goog.require('ol.geom.Point');

View File

@@ -69,7 +69,7 @@ describe('ol.featureloader', function() {
var url = 'spec/ol/data/point.json';
var format = new ol.format.GeoJSON();
loader = ol.featureloader.tile(url, format);
goog.events.listen(tile, 'change', function(e) {
ol.events.listen(tile, 'change', function(e) {
expect(tile.getFeatures().length).to.be.greaterThan(0);
done();
});
@@ -81,7 +81,7 @@ describe('ol.featureloader', function() {
var url = 'spec/ol/data/14-8938-5680.vector.pbf';
var format = new ol.format.MVT();
loader = ol.featureloader.tile(url, format);
goog.events.listen(tile, 'change', function(e) {
ol.events.listen(tile, 'change', function(e) {
expect(tile.getFeatures().length).to.be.greaterThan(0);
expect(tile.getProjection().getUnits()).to.be('tile-pixels');
done();
@@ -93,7 +93,7 @@ describe('ol.featureloader', function() {
});
goog.require('goog.events');
goog.require('ol.events');
goog.require('ol.VectorTile');
goog.require('ol.featureloader');
goog.require('ol.format.GeoJSON');

View File

@@ -1,16 +1,101 @@
goog.provide('ol.test.interaction.DragAndDrop');
describe('ol.interaction.DragAndDrop', function() {
var viewport, map, interaction;
beforeEach(function() {
viewport = new ol.events.EventTarget();
map = {
getViewport: function() {
return viewport;
},
getView: function() {
return new ol.View()
}
};
interaction = new ol.interaction.DragAndDrop({
formatConstructors: [ol.format.GeoJSON]
});
});
describe('constructor', function() {
it('can be constructed without arguments', function() {
var instance = new ol.interaction.DragAndDrop();
expect(instance).to.be.an(ol.interaction.DragAndDrop);
var interaction = new ol.interaction.DragAndDrop();
expect(interaction).to.be.an(ol.interaction.DragAndDrop);
});
it('sets formatConstructors on the instance', function() {
expect(interaction.formatConstructors_).to.have.length(1);
});
});
describe('#setMap()', function() {
it('registers and unregisters listeners', function() {
interaction.setMap(map);
expect(viewport.hasListener(ol.events.EventType.DRAGENTER)).to.be(true);
expect(viewport.hasListener(ol.events.EventType.DRAGOVER)).to.be(true);
expect(viewport.hasListener(ol.events.EventType.DROP)).to.be(true);
interaction.setMap(null);
expect(viewport.hasListener(ol.events.EventType.DRAGENTER)).to.be(false);
expect(viewport.hasListener(ol.events.EventType.DRAGOVER)).to.be(false);
expect(viewport.hasListener(ol.events.EventType.DROP)).to.be(false);
});
});
describe('#handleDrop_', function() {
var origFileReader = goog.global.FileReader;
beforeEach(function() {
FileReader = function() {
ol.events.EventTarget.apply(this, arguments);
this.readAsText = function(file) {
this.result = file;
this.dispatchEvent('load');
};
};
ol.inherits(FileReader, ol.events.EventTarget);
});
afterEach(function() {
goog.global.FileReader = origFileReader;
});
it('reads dropped files', function(done) {
interaction.on('addfeatures', function(evt) {
expect(evt.features.length).to.be(1);
done();
});
interaction.setMap(map);
var event = new ol.events.Event();
event.dataTransfer = {};
event.type = ol.events.EventType.DRAGENTER;
viewport.dispatchEvent(event);
event.type = ol.events.EventType.DRAGOVER;
viewport.dispatchEvent(event);
event.type = ol.events.EventType.DROP;
event.dataTransfer.files = {
length: 1,
item: function() {
return JSON.stringify({
type: 'FeatureCollection',
features: [{type: 'Feature', id: '1'}]
});
}
}
viewport.dispatchEvent(event);
expect(event.dataTransfer.dropEffect).to.be('copy');
expect(event.propagationStopped).to.be(true);
});
});
});
goog.require('ol.interaction.DragAndDrop');
goog.require('ol.View');
goog.require('ol.events.Event');
goog.require('ol.events.EventTarget');
goog.require('ol.events.EventType');
goog.require('ol.format.GeoJSON');

View File

@@ -51,11 +51,11 @@ describe('ol.interaction.Draw', function() {
var shiftKey = opt_shiftKey !== undefined ? opt_shiftKey : false;
var event = new ol.MapBrowserPointerEvent(type, map,
new ol.pointer.PointerEvent(type,
new goog.events.BrowserEvent({
{
clientX: position.x + x + width / 2,
clientY: position.y + y + height / 2,
shiftKey: shiftKey
})));
}));
map.handleMapBrowserEvent(event);
}
@@ -163,8 +163,8 @@ describe('ol.interaction.Draw', function() {
it('triggers draw events', function() {
var ds = sinon.spy();
var de = sinon.spy();
goog.events.listen(draw, ol.interaction.DrawEventType.DRAWSTART, ds);
goog.events.listen(draw, ol.interaction.DrawEventType.DRAWEND, de);
ol.events.listen(draw, ol.interaction.DrawEventType.DRAWSTART, ds);
ol.events.listen(draw, ol.interaction.DrawEventType.DRAWEND, de);
simulateEvent('pointermove', 10, 20);
simulateEvent('pointerdown', 10, 20);
simulateEvent('pointerup', 10, 20);
@@ -180,7 +180,7 @@ describe('ol.interaction.Draw', function() {
end: 0,
addfeature: 0
};
goog.events.listen(draw, ol.interaction.DrawEventType.DRAWEND,
ol.events.listen(draw, ol.interaction.DrawEventType.DRAWEND,
function() {
expect(receivedEvents.end).to.be(0);
expect(receivedEvents.addfeature).to.be(0);
@@ -309,8 +309,8 @@ describe('ol.interaction.Draw', function() {
it('triggers draw events', function() {
var ds = sinon.spy();
var de = sinon.spy();
goog.events.listen(draw, ol.interaction.DrawEventType.DRAWSTART, ds);
goog.events.listen(draw, ol.interaction.DrawEventType.DRAWEND, de);
ol.events.listen(draw, ol.interaction.DrawEventType.DRAWSTART, ds);
ol.events.listen(draw, ol.interaction.DrawEventType.DRAWEND, de);
// first point
simulateEvent('pointermove', 10, 20);
@@ -467,8 +467,8 @@ describe('ol.interaction.Draw', function() {
it('triggers draw events', function() {
var ds = sinon.spy();
var de = sinon.spy();
goog.events.listen(draw, ol.interaction.DrawEventType.DRAWSTART, ds);
goog.events.listen(draw, ol.interaction.DrawEventType.DRAWEND, de);
ol.events.listen(draw, ol.interaction.DrawEventType.DRAWSTART, ds);
ol.events.listen(draw, ol.interaction.DrawEventType.DRAWEND, de);
// first point
simulateEvent('pointermove', 10, 20);
@@ -607,8 +607,8 @@ describe('ol.interaction.Draw', function() {
it('triggers draw events', function() {
var ds = sinon.spy();
var de = sinon.spy();
goog.events.listen(draw, ol.interaction.DrawEventType.DRAWSTART, ds);
goog.events.listen(draw, ol.interaction.DrawEventType.DRAWEND, de);
ol.events.listen(draw, ol.interaction.DrawEventType.DRAWSTART, ds);
ol.events.listen(draw, ol.interaction.DrawEventType.DRAWEND, de);
// first point
simulateEvent('pointermove', 10, 20);
@@ -805,7 +805,7 @@ describe('ol.interaction.Draw', function() {
it('dispatches a drawstart event', function() {
var spy = sinon.spy();
goog.events.listen(draw, ol.interaction.DrawEventType.DRAWSTART, spy);
ol.events.listen(draw, ol.interaction.DrawEventType.DRAWSTART, spy);
draw.extend(feature);
expect(spy.callCount).to.be(1);
});
@@ -814,8 +814,7 @@ describe('ol.interaction.Draw', function() {
});
goog.require('goog.dispose');
goog.require('goog.events');
goog.require('goog.events.BrowserEvent');
goog.require('ol.events');
goog.require('goog.style');
goog.require('ol.Feature');
goog.require('ol.Map');

View File

@@ -11,7 +11,7 @@ describe('ol.interaction.Interaction', function() {
it('creates a new interaction', function() {
expect(interaction).to.be.a(ol.interaction.Interaction);
expect(interaction).to.be.a(goog.events.EventTarget);
expect(interaction).to.be.a(ol.events.EventTarget);
});
it('creates an active interaction', function() {
@@ -55,6 +55,6 @@ describe('ol.interaction.Interaction', function() {
});
goog.require('goog.events.EventTarget');
goog.require('ol.events.EventTarget');
goog.require('ol.Map');
goog.require('ol.interaction.Interaction');

View File

@@ -0,0 +1,58 @@
/*global createMapDiv, disposeMap*/
goog.provide('ol.test.interaction.KeyboardPan');
describe('ol.interaction.KeyboardPan', function() {
var map;
beforeEach(function() {
map = new ol.Map({
target: createMapDiv(100, 100),
view: new ol.View({
center: [0, 0],
resolutions: [1],
zoom: 0
})
});
map.renderSync();
});
afterEach(function() {
disposeMap(map);
});
describe('handleEvent()', function() {
it('pans on arrow keys', function() {
var spy = sinon.spy(ol.interaction.Interaction, 'pan');
var event = new ol.MapBrowserEvent(ol.events.EventType.KEYDOWN, map, {
type: ol.events.EventType.KEYDOWN,
target: map.getTargetElement(),
preventDefault: ol.events.Event.prototype.preventDefault
});
event.originalEvent.keyCode = ol.events.KeyCode.DOWN;
map.handleMapBrowserEvent(event);
event.originalEvent.keyCode = ol.events.KeyCode.UP;
map.handleMapBrowserEvent(event);
event.originalEvent.keyCode = ol.events.KeyCode.LEFT;
map.handleMapBrowserEvent(event);
event.originalEvent.keyCode = ol.events.KeyCode.RIGHT;
map.handleMapBrowserEvent(event);
expect(spy.getCall(0).args[2]).to.eql([0, -128]);
expect(spy.getCall(1).args[2]).to.eql([0, 128]);
expect(spy.getCall(2).args[2]).to.eql([-128, 0]);
expect(spy.getCall(3).args[2]).to.eql([128, 0]);
ol.interaction.Interaction.pan.restore();
});
});
});
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.events.KeyCode');
goog.require('ol.interaction.Interaction');
goog.require('ol.interaction.KeyboardPan');

View File

@@ -0,0 +1,51 @@
/*global createMapDiv, disposeMap*/
goog.provide('ol.test.interaction.KeyboardZoom');
describe('ol.interaction.KeyboardZoom', function() {
var map;
beforeEach(function() {
map = new ol.Map({
target: createMapDiv(100, 100),
view: new ol.View({
center: [0, 0],
resolutions: [1],
zoom: 0
})
});
map.renderSync();
});
afterEach(function() {
disposeMap(map);
});
describe('handleEvent()', function() {
it('zooms on + and - keys', function() {
var spy = sinon.spy(ol.interaction.Interaction, 'zoomByDelta');
var event = new ol.MapBrowserEvent(ol.events.EventType.KEYDOWN, map, {
type: ol.events.EventType.KEYDOWN,
target: map.getTargetElement(),
preventDefault: ol.events.Event.prototype.preventDefault
});
event.originalEvent.charCode = '+'.charCodeAt(0);
map.handleMapBrowserEvent(event);
event.originalEvent.charCode = '-'.charCodeAt(0);
map.handleMapBrowserEvent(event);
expect(spy.getCall(0).args[2]).to.eql(1);
expect(spy.getCall(1).args[2]).to.eql(-1);
ol.interaction.Interaction.zoomByDelta.restore();
});
});
});
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.KeyboardZoom');

View File

@@ -68,13 +68,13 @@ describe('ol.interaction.Modify', function() {
var shiftKey = opt_shiftKey !== undefined ? opt_shiftKey : false;
var event = new ol.MapBrowserPointerEvent(type, map,
new ol.pointer.PointerEvent(type,
new goog.events.BrowserEvent({
{
type: type,
button: button,
clientX: position.x + x + width / 2,
clientY: position.y + y + height / 2,
shiftKey: shiftKey
})));
}));
event.pointerEvent.pointerId = 1;
map.handleMapBrowserEvent(event);
}
@@ -327,10 +327,10 @@ describe('ol.interaction.Modify', function() {
beforeEach(function() {
getListeners = function(feature, modify) {
var listeners = goog.events.getListeners(
feature, goog.events.EventType.CHANGE, false);
var listeners = ol.events.getListeners(
feature, 'change');
return listeners.filter(function(listener) {
return listener.handler == modify;
return listener.bindTo === modify;
});
};
});
@@ -377,9 +377,7 @@ describe('ol.interaction.Modify', function() {
});
goog.require('goog.dispose');
goog.require('goog.events');
goog.require('goog.events.EventType');
goog.require('goog.events.BrowserEvent');
goog.require('ol.events');
goog.require('goog.style');
goog.require('ol.Collection');
goog.require('ol.Feature');

View File

@@ -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');

View File

@@ -82,11 +82,11 @@ describe('ol.interaction.Select', function() {
var shiftKey = opt_shiftKey !== undefined ? opt_shiftKey : false;
var event = new ol.MapBrowserPointerEvent(type, map,
new ol.pointer.PointerEvent(type,
new goog.events.BrowserEvent({
{
clientX: position.x + x + width / 2,
clientY: position.y + y + height / 2,
shiftKey: shiftKey
})));
}));
map.handleMapBrowserEvent(event);
}
@@ -333,8 +333,6 @@ describe('ol.interaction.Select', function() {
});
goog.require('goog.dispose');
goog.require('goog.events');
goog.require('goog.events.BrowserEvent');
goog.require('goog.style');
goog.require('ol.Collection');
goog.require('ol.Feature');

View File

@@ -56,12 +56,11 @@ describe('ol.interaction.Translate', function() {
var position = goog.style.getClientPosition(viewport);
var shiftKey = opt_shiftKey !== undefined ? opt_shiftKey : false;
var event = new ol.MapBrowserPointerEvent(type, map,
new ol.pointer.PointerEvent(type,
new goog.events.BrowserEvent({
new ol.pointer.PointerEvent(type, {
clientX: position.x + x + width / 2,
clientY: position.y + y + height / 2,
shiftKey: shiftKey
})));
}));
map.handleMapBrowserEvent(event);
}
@@ -110,8 +109,6 @@ describe('ol.interaction.Translate', function() {
});
goog.require('goog.dispose');
goog.require('goog.events');
goog.require('goog.events.BrowserEvent');
goog.require('goog.style');
goog.require('ol.Collection');
goog.require('ol.Feature');

View File

@@ -68,14 +68,14 @@ describe('ol.layer.Group', function() {
});
it('is dispatched by the group when layer opacity changes', function() {
group.on(goog.events.EventType.CHANGE, listener);
group.on(ol.events.EventType.CHANGE, listener);
layer.setOpacity(0.5);
expect(listener.calledOnce).to.be(true);
});
it('is dispatched by the group when layer visibility changes', function() {
group.on(goog.events.EventType.CHANGE, listener);
group.on(ol.events.EventType.CHANGE, listener);
layer.setVisible(false);
expect(listener.callCount).to.be(1);
@@ -286,14 +286,14 @@ describe('ol.layer.Group', function() {
var listeners = layerGroup.listenerKeys_[goog.getUid(layer)];
expect(listeners.length).to.eql(2);
expect(listeners[0]).to.be.a(goog.events.Listener);
expect(listeners[1]).to.be.a(goog.events.Listener);
expect(typeof listeners[0]).to.be('object');
expect(typeof listeners[1]).to.be('object');
// remove the layer from the group
layers.pop();
expect(goog.object.getCount(layerGroup.listenerKeys_)).to.eql(0);
expect(listeners[0].removed).to.eql(true);
expect(listeners[1].removed).to.eql(true);
expect(listeners[0].listener).to.be(undefined);
expect(listeners[1].listener).to.be(undefined);
});
});
@@ -491,8 +491,8 @@ describe('ol.layer.Group', function() {
goog.require('goog.array');
goog.require('goog.dispose');
goog.require('goog.events.EventType');
goog.require('goog.events.Listener');
goog.require('ol.events');
goog.require('ol.events.EventType');
goog.require('goog.object');
goog.require('ol.ObjectEventType');
goog.require('ol.extent');

View File

@@ -147,11 +147,14 @@ describe('ol.Map', function() {
document.body.removeChild(target);
});
it('results in an postrender event', function(done) {
it('calls renderFrame_ and results in an postrender event', function(done) {
var spy = sinon.spy(map, 'renderFrame_');
map.render();
map.once('postrender', function(event) {
expect(event).to.be.a(ol.MapEvent);
expect(typeof spy.firstCall.args[0]).to.be('number');
spy.restore();
var frameState = event.frameState;
expect(frameState).not.to.be(null);
done();
@@ -159,6 +162,30 @@ describe('ol.Map', function() {
});
it('uses the same render frame for subsequent calls', function(done) {
var id1, id2;
map.render();
id1 = map.animationDelayKey_;
map.once('postrender', function() {
expect(id2).to.be(id1);
done();
});
map.render();
id2 = map.animationDelayKey_;
});
it('creates a new render frame after renderSync()', function(done) {
var id1, id2;
map.render();
id1 = map.animationDelayKey_;
map.once('postrender', function() {
expect(id2).to.not.be(id1);
done();
});
map.renderSync();
id2 = map.animationDelayKey_;
});
it('results in an postrender event (for zero height map)', function(done) {
target.style.height = '0px';
map.updateSize();
@@ -202,6 +229,11 @@ describe('ol.Map', function() {
goog.dispose(map);
expect(goog.dom.getParentElement(map.getViewport())).to.be(null);
});
it('removes window listeners', function() {
goog.dispose(map);
expect(map.handleResize_).to.be(undefined);
});
});
describe('#setTarget', function() {
@@ -211,17 +243,13 @@ describe('ol.Map', function() {
map = new ol.Map({
target: document.createElement('div')
});
var viewportResizeListeners = map.viewportSizeMonitor_.getListeners(
goog.events.EventType.RESIZE, false);
expect(viewportResizeListeners).to.have.length(1);
expect(map.handleResize_).to.be.ok();
});
describe('call setTarget with null', function() {
it('unregisters the viewport resize listener', function() {
map.setTarget(null);
var viewportResizeListeners = map.viewportSizeMonitor_.getListeners(
goog.events.EventType.RESIZE, false);
expect(viewportResizeListeners).to.have.length(0);
expect(map.handleResize_).to.be(undefined);
});
});
@@ -229,9 +257,7 @@ describe('ol.Map', function() {
it('registers a viewport resize listener', function() {
map.setTarget(null);
map.setTarget(document.createElement('div'));
var viewportResizeListeners = map.viewportSizeMonitor_.getListeners(
goog.events.EventType.RESIZE, false);
expect(viewportResizeListeners).to.have.length(1);
expect(map.handleResize_).to.be.ok();
});
});
@@ -316,15 +342,15 @@ describe('ol.Map', function() {
target: target
});
var browserEvent = new goog.events.BrowserEvent({
var browserEvent = {
type: 'touchend',
target: target,
changedTouches: [{
clientX: 100,
clientY: 200
}]
});
var position = map.getEventPixel(browserEvent.getBrowserEvent());
};
var position = map.getEventPixel(browserEvent);
// 80 = clientX - target.style.left
expect(position[0]).to.eql(80);
// 190 = clientY - target.style.top
@@ -401,8 +427,6 @@ describe('ol.Map', function() {
goog.require('goog.dispose');
goog.require('goog.dom');
goog.require('goog.events.BrowserEvent');
goog.require('goog.events.EventType');
goog.require('ol.Map');
goog.require('ol.MapEvent');
goog.require('ol.Overlay');

View File

@@ -17,13 +17,13 @@ describe('ol.MapBrowserEventHandler', function() {
}));
clickSpy = sinon.spy();
goog.events.listen(handler, 'click', clickSpy);
ol.events.listen(handler, 'click', clickSpy);
singleclickSpy = sinon.spy();
goog.events.listen(handler, 'singleclick', singleclickSpy);
ol.events.listen(handler, 'singleclick', singleclickSpy);
dblclickSpy = sinon.spy();
goog.events.listen(handler, 'dblclick', dblclickSpy);
ol.events.listen(handler, 'dblclick', dblclickSpy);
});
@@ -32,24 +32,22 @@ describe('ol.MapBrowserEventHandler', function() {
});
it('emulates click', function() {
handler.emulateClick_(new ol.pointer.PointerEvent('pointerdown',
new goog.events.BrowserEvent({
type: 'mousedown',
target: target,
clientX: 0,
clientY: 0
})));
handler.emulateClick_(new ol.pointer.PointerEvent('pointerdown', {
type: 'mousedown',
target: target,
clientX: 0,
clientY: 0
}));
expect(clickSpy.called).to.be.ok();
});
it('emulates singleclick', function() {
handler.emulateClick_(new ol.pointer.PointerEvent('pointerdown',
new goog.events.BrowserEvent({
type: 'mousedown',
target: target,
clientX: 0,
clientY: 0
})));
handler.emulateClick_(new ol.pointer.PointerEvent('pointerdown', {
type: 'mousedown',
target: target,
clientX: 0,
clientY: 0
}));
expect(singleclickSpy.called).to.not.be.ok();
expect(dblclickSpy.called).to.not.be.ok();
@@ -57,35 +55,32 @@ describe('ol.MapBrowserEventHandler', function() {
expect(singleclickSpy.calledOnce).to.be.ok();
expect(dblclickSpy.called).to.not.be.ok();
handler.emulateClick_(new ol.pointer.PointerEvent('pointerdown',
new goog.events.BrowserEvent({
type: 'mousedown',
target: target,
clientX: 0,
clientY: 0
})));
handler.emulateClick_(new ol.pointer.PointerEvent('pointerdown', {
type: 'mousedown',
target: target,
clientX: 0,
clientY: 0
}));
expect(singleclickSpy.calledOnce).to.be.ok();
expect(dblclickSpy.called).to.not.be.ok();
});
it('emulates dblclick', function() {
handler.emulateClick_(new ol.pointer.PointerEvent('pointerdown',
new goog.events.BrowserEvent({
type: 'mousedown',
target: target,
clientX: 0,
clientY: 0
})));
handler.emulateClick_(new ol.pointer.PointerEvent('pointerdown', {
type: 'mousedown',
target: target,
clientX: 0,
clientY: 0
}));
expect(singleclickSpy.called).to.not.be.ok();
expect(dblclickSpy.called).to.not.be.ok();
handler.emulateClick_(new ol.pointer.PointerEvent('pointerdown',
new goog.events.BrowserEvent({
type: 'mousedown',
target: target,
clientX: 0,
clientY: 0
})));
handler.emulateClick_(new ol.pointer.PointerEvent('pointerdown', {
type: 'mousedown',
target: target,
clientX: 0,
clientY: 0
}));
expect(singleclickSpy.called).to.not.be.ok();
expect(dblclickSpy.calledOnce).to.be.ok();
@@ -108,8 +103,7 @@ describe('ol.MapBrowserEventHandler', function() {
});
it('is an event after handlePointerDown_ has been called', function() {
var event = new ol.pointer.PointerEvent('pointerdown',
new goog.events.BrowserEvent({}));
var event = new ol.pointer.PointerEvent('pointerdown', {});
handler.handlePointerDown_(event);
expect(handler.down_).to.be(event);
});
@@ -118,8 +112,7 @@ describe('ol.MapBrowserEventHandler', function() {
});
goog.require('goog.dom');
goog.require('goog.events');
goog.require('goog.events.BrowserEvent');
goog.require('ol.events');
goog.require('ol.Map');
goog.require('ol.MapBrowserEventHandler');
goog.require('ol.pointer.PointerEvent');

80
test/spec/ol/net.test.js Normal file
View File

@@ -0,0 +1,80 @@
goog.provide('ol.test.net');
describe('ol.net', function() {
describe('jsonp()', function() {
var head = goog.global.document.getElementsByTagName('head')[0];
var origAppendChild = head.appendChild;
var origCreateElement = document.createElement;
var origSetTimeout = goog.global.setTimeout;
var key, removeChild;
function createCallback(url, done) {
removeChild = sinon.spy();
var callback = function(data) {
expect(data).to.be(url + key);
expect(removeChild.called).to.be(true);
done();
};
key = 'olc_' + goog.getUid(callback);
return callback;
}
beforeEach(function() {
document.createElement = function() {
return {}
};
head.appendChild = function(element) {
element.parentNode = {
removeChild: removeChild
};
origSetTimeout(function() {
goog.global[key](element.src);
}, 0);
};
goog.global.setTimeout = function(fn, time) {
origSetTimeout(fn, 100);
};
});
afterEach(function() {
document.createElement = origCreateElement;
head.appendChild = origAppendChild;
goog.global.setTimeout = origSetTimeout;
});
it('appends callback param to url, cleans up after call', function(done) {
ol.net.jsonp('foo', createCallback('foo?callback=', done));
});
it('appends correct callback param to a url with query', function(done) {
var callback = createCallback('http://foo/bar?baz&callback=', done);
ol.net.jsonp('http://foo/bar?baz', callback);
});
it('calls errback when jsonp is not executed, cleans up', function(done) {
head.appendChild = function(element) {
element.parentNode = {
removeChild: removeChild
};
};
function callback() {
expect.fail();
}
function errback() {
expect(goog.global[key]).to.be(undefined);
expect(removeChild.called).to.be(true);
done();
}
ol.net.jsonp('foo', callback, errback);
});
it('accepts a custom callback param', function(done) {
var callback = createCallback('foo?mycallback=', done);
ol.net.jsonp('foo', callback, undefined, 'mycallback');
});
});
});
goog.require('ol.net');

View File

@@ -113,10 +113,10 @@ describe('ol.Object', function() {
beforeEach(function() {
listener1 = sinon.spy();
goog.events.listen(o, 'change:k', listener1);
ol.events.listen(o, 'change:k', listener1);
listener2 = sinon.spy();
goog.events.listen(o, ol.ObjectEventType.PROPERTYCHANGE, listener2);
ol.events.listen(o, ol.ObjectEventType.PROPERTYCHANGE, listener2);
});
it('dispatches events', function() {
@@ -146,10 +146,10 @@ describe('ol.Object', function() {
beforeEach(function() {
listener1 = sinon.spy();
goog.events.listen(o, 'change:k', listener1);
ol.events.listen(o, 'change:k', listener1);
listener2 = sinon.spy();
goog.events.listen(o, ol.ObjectEventType.PROPERTYCHANGE, listener2);
ol.events.listen(o, ol.ObjectEventType.PROPERTYCHANGE, listener2);
});
it('dispatches events to object', function() {
@@ -222,9 +222,9 @@ describe('ol.Object', function() {
beforeEach(function() {
listener1 = sinon.spy();
goog.events.listen(o, 'change:k', listener1);
ol.events.listen(o, 'change:k', listener1);
listener2 = sinon.spy();
goog.events.listen(o, 'change:K', listener2);
ol.events.listen(o, 'change:K', listener2);
});
it('dispatches the expected event', function() {
@@ -239,6 +239,6 @@ describe('ol.Object', function() {
});
goog.require('goog.events');
goog.require('ol.events');
goog.require('ol.Object');
goog.require('ol.ObjectEventType');

View File

@@ -7,7 +7,7 @@ describe('ol.Observable', function() {
it('creates a new observable', function() {
var observable = new ol.Observable();
expect(observable).to.be.a(ol.Observable);
expect(observable).to.be.a(goog.events.EventTarget);
expect(observable).to.be.a(ol.events.EventTarget);
});
});
@@ -51,7 +51,7 @@ describe('ol.Observable', function() {
it('returns a listener key', function() {
var key = observable.on('foo', listener);
expect(key).to.be.a(goog.events.Listener);
expect(typeof key).to.be('object');
});
});
@@ -101,7 +101,7 @@ describe('ol.Observable', function() {
it('returns a listener key', function() {
var key = observable.once('foo', listener);
expect(key).to.be.a(goog.events.Listener);
expect(typeof key).to.be('object');
});
});
@@ -167,6 +167,5 @@ describe('ol.Observable', function() {
});
goog.require('goog.events.EventTarget');
goog.require('goog.events.Listener');
goog.require('ol.events.EventTarget');
goog.require('ol.Observable');

View File

@@ -8,7 +8,7 @@ describe('ol.pointer.MouseSource', function() {
beforeEach(function() {
clock = sinon.useFakeTimers();
target = goog.dom.createElement('DIV');
target = new ol.events.EventTarget();
// make sure that a mouse and touch event source is used
ol.has.POINTER = false;
@@ -26,7 +26,7 @@ describe('ol.pointer.MouseSource', function() {
describe('simulated mouse events', function() {
it('prevents simulated mouse events', function() {
goog.events.listen(handler, 'pointerdown', eventSpy);
ol.events.listen(handler, 'pointerdown', eventSpy);
// simulates that a mouse event is triggered from a touch
simulateTouchEvent('touchstart', 10, 20);
@@ -37,7 +37,7 @@ describe('ol.pointer.MouseSource', function() {
});
it('dispatches real mouse events', function() {
goog.events.listen(handler, 'pointerdown', eventSpy);
ol.events.listen(handler, 'pointerdown', eventSpy);
// the two events are at different positions
simulateTouchEvent('touchstart', 10, 20);
@@ -50,7 +50,7 @@ describe('ol.pointer.MouseSource', function() {
// set the timeout to a lower value, to speed up the tests
ol.pointer.TouchSource.DEDUP_TIMEOUT = 100;
goog.events.listen(handler, 'pointerdown', eventSpy);
ol.events.listen(handler, 'pointerdown', eventSpy);
// first simulate a touch event, then a mouse event
// at the same position after a timeout
@@ -70,28 +70,28 @@ describe('ol.pointer.MouseSource', function() {
target: target
}];
var event = new goog.events.BrowserEvent({
var event = {
type: type,
touches: touches,
changedTouches: touches
});
goog.events.fireListeners(target, type, false, event);
};
target.dispatchEvent(event);
}
function simulateEvent(type, x, y) {
var event = new goog.events.BrowserEvent({
var event = {
type: type,
clientX: x,
clientY: y,
target: target
});
goog.events.fireListeners(target, type, false, event);
};
target.dispatchEvent(event);
}
});
goog.require('goog.dom');
goog.require('goog.events');
goog.require('goog.events.BrowserEvent');
goog.require('ol.events');
goog.require('ol.events.EventTarget');
goog.require('ol.has');
goog.require('ol.pointer.MouseSource');
goog.require('ol.pointer.PointerEvent');

View File

@@ -6,7 +6,7 @@ describe('ol.pointer.PointerEventHandler', function() {
var eventSpy;
beforeEach(function() {
target = goog.dom.createElement('DIV');
target = new ol.events.EventTarget();
// make sure that a mouse event source is used
ol.has.POINTER = false;
@@ -29,18 +29,18 @@ describe('ol.pointer.PointerEventHandler', function() {
});
function simulateEvent(type, x, y) {
var event = new goog.events.BrowserEvent({
var event = {
type: type,
clientX: x,
clientY: y,
target: target
});
goog.events.fireListeners(target, type, false, event);
};
target.dispatchEvent(event);
}
describe('pointer down', function() {
it('fires pointerdown events', function() {
goog.events.listen(handler, 'pointerdown', eventSpy);
ol.events.listen(handler, 'pointerdown', eventSpy);
simulateEvent('mousedown', 0, 0);
expect(eventSpy.calledOnce).to.be.ok();
@@ -54,7 +54,7 @@ describe('ol.pointer.PointerEventHandler', function() {
describe('pointer up', function() {
it('fires pointerup events', function() {
goog.events.listen(handler, 'pointerup', eventSpy);
ol.events.listen(handler, 'pointerup', eventSpy);
simulateEvent('mousedown', 0, 0);
simulateEvent('mouseup', 0, 0);
expect(eventSpy.calledOnce).to.be.ok();
@@ -63,7 +63,7 @@ describe('ol.pointer.PointerEventHandler', function() {
describe('pointer move', function() {
it('fires pointermove events', function() {
goog.events.listen(handler, 'pointermove', eventSpy);
ol.events.listen(handler, 'pointermove', eventSpy);
simulateEvent('mousemove', 0, 0);
expect(eventSpy.calledOnce).to.be.ok();
});
@@ -74,8 +74,8 @@ describe('ol.pointer.PointerEventHandler', function() {
var enterEventSpy = sinon.spy();
var overEventSpy = sinon.spy();
goog.events.listen(handler, 'pointerenter', enterEventSpy);
goog.events.listen(handler, 'pointerover', overEventSpy);
ol.events.listen(handler, 'pointerenter', enterEventSpy);
ol.events.listen(handler, 'pointerover', overEventSpy);
simulateEvent('mouseover', 0, 0);
@@ -89,8 +89,8 @@ describe('ol.pointer.PointerEventHandler', function() {
var leaveEventSpy = sinon.spy();
var outEventSpy = sinon.spy();
goog.events.listen(handler, 'pointerleave', leaveEventSpy);
goog.events.listen(handler, 'pointerout', outEventSpy);
ol.events.listen(handler, 'pointerleave', leaveEventSpy);
ol.events.listen(handler, 'pointerout', outEventSpy);
simulateEvent('mouseout', 0, 0);
@@ -107,7 +107,7 @@ describe('ol.pointer.PointerEventHandler', function() {
clientX: 1,
clientY: 2
};
var browserEvent = new goog.events.BrowserEvent(event);
var browserEvent = event;
var eventClone = handler.cloneEvent(browserEvent, event);
@@ -136,7 +136,7 @@ describe('ol.pointer.PointerEventHandler', function() {
clientX: 1,
clientY: 2
};
var browserEvent = new goog.events.BrowserEvent(event);
var browserEvent = event;
var eventClone = handler.cloneEvent(browserEvent, event);
var pointerEvent = handler.makeEvent('pointerdown',
@@ -161,8 +161,8 @@ describe('ol.pointer.PointerEventHandler', function() {
});
goog.require('goog.dom');
goog.require('goog.events');
goog.require('goog.events.BrowserEvent');
goog.require('ol.events');
goog.require('ol.events.EventTarget');
goog.require('ol.has');
goog.require('ol.pointer.MouseSource');
goog.require('ol.pointer.PointerEvent');

View File

@@ -8,7 +8,7 @@ describe('ol.pointer.TouchSource', function() {
var eventSpy;
beforeEach(function() {
target = goog.dom.createElement('DIV');
target = new ol.events.EventTarget();
// make sure that a mouse and touch event source is used
ol.has.POINTER = false;
@@ -25,7 +25,7 @@ describe('ol.pointer.TouchSource', function() {
describe('pointer event creation', function() {
it('generates pointer events for each touch contact', function() {
goog.events.listen(handler, 'pointerdown', eventSpy);
ol.events.listen(handler, 'pointerdown', eventSpy);
simulateTouchEvent('touchstart', [
{identifier: 3, clientX: 10, clientY: 11},
@@ -52,7 +52,7 @@ describe('ol.pointer.TouchSource', function() {
});
it('creates the right pointer events', function() {
goog.events.listen(handler, 'pointerdown', eventSpy);
ol.events.listen(handler, 'pointerdown', eventSpy);
// first touch
simulateTouchEvent('touchstart', [
@@ -71,7 +71,7 @@ describe('ol.pointer.TouchSource', function() {
// first touch moves
var moveEventSpy = sinon.spy();
goog.events.listen(handler, 'pointermove', moveEventSpy);
ol.events.listen(handler, 'pointermove', moveEventSpy);
simulateTouchEvent('touchmove', [
{identifier: 3, clientX: 15, clientY: 16}
@@ -81,7 +81,7 @@ describe('ol.pointer.TouchSource', function() {
// and then both touches go up
var upEventSpy = sinon.spy();
goog.events.listen(handler, 'pointerup', upEventSpy);
ol.events.listen(handler, 'pointerup', upEventSpy);
simulateTouchEvent('touchend', [
{identifier: 3, clientX: 15, clientY: 16},
@@ -93,7 +93,7 @@ describe('ol.pointer.TouchSource', function() {
});
it('handles flawed touches', function() {
goog.events.listen(handler, 'pointerdown', eventSpy);
ol.events.listen(handler, 'pointerdown', eventSpy);
// first touch
simulateTouchEvent('touchstart', [
@@ -104,7 +104,7 @@ describe('ol.pointer.TouchSource', function() {
// second touch, but the first touch has disappeared
var cancelEventSpy = sinon.spy();
goog.events.listen(handler, 'pointercancel', cancelEventSpy);
ol.events.listen(handler, 'pointercancel', cancelEventSpy);
simulateTouchEvent('touchstart', [
{identifier: 4, clientX: 30, clientY: 45}
], [{identifier: 4}]
@@ -120,18 +120,19 @@ describe('ol.pointer.TouchSource', function() {
function simulateTouchEvent(type, changedTouches, touches) {
touches = touches !== undefined ? touches : changedTouches;
var event = new goog.events.BrowserEvent({
type: type,
var event = new ol.events.Event(type);
goog.object.extend(event, {
touches: touches,
changedTouches: changedTouches
});
goog.events.fireListeners(target, type, false, event);
target.dispatchEvent(event);
}
});
goog.require('goog.dom');
goog.require('goog.events');
goog.require('goog.events.BrowserEvent');
goog.require('ol.events');
goog.require('ol.events.Event');
goog.require('ol.events.EventTarget');
goog.require('ol.has');
goog.require('ol.pointer.PointerEvent');
goog.require('ol.pointer.PointerEventHandler');

View File

@@ -39,8 +39,8 @@ describe('ol.renderer.vector', function() {
style, squaredTolerance, listener, listenerThis);
expect(iconStyleLoadSpy.calledOnce).to.be.ok();
listeners = goog.events.getListeners(
iconStyle.iconImage_, goog.events.EventType.CHANGE, false);
listeners = ol.events.getListeners(
iconStyle.iconImage_, ol.events.EventType.CHANGE);
expect(listeners.length).to.eql(1);
// call #2
@@ -48,8 +48,8 @@ describe('ol.renderer.vector', function() {
style, squaredTolerance, listener, listenerThis);
expect(iconStyleLoadSpy.calledOnce).to.be.ok();
listeners = goog.events.getListeners(
iconStyle.iconImage_, goog.events.EventType.CHANGE, false);
listeners = ol.events.getListeners(
iconStyle.iconImage_, ol.events.EventType.CHANGE);
expect(listeners.length).to.eql(1);
});
@@ -155,8 +155,8 @@ describe('ol.renderer.vector', function() {
});
});
goog.require('goog.events');
goog.require('goog.events.EventType');
goog.require('ol.events');
goog.require('ol.events.EventType');
goog.require('ol.geom.LineString');
goog.require('ol.geom.Point');
goog.require('ol.geom.Polygon');

View File

@@ -2,7 +2,7 @@ goog.provide('ol.test.renderer.Layer');
describe('ol.renderer.Layer', function() {
var renderer;
var eventType = goog.events.EventType.CHANGE;
var eventType = ol.events.EventType.CHANGE;
beforeEach(function() {
var layer = new ol.layer.Layer({});
@@ -79,7 +79,7 @@ describe('ol.renderer.Layer', function() {
});
});
goog.require('goog.events.EventType');
goog.require('ol.events.EventType');
goog.require('ol.Image');
goog.require('ol.ImageState');
goog.require('ol.layer.Layer');

View File

@@ -18,7 +18,7 @@ describe('ol.reproj.Image', function() {
it('changes state as expected', function(done) {
var image = createImage(1);
expect(image.getState()).to.be(ol.ImageState.IDLE);
image.listen('change', function() {
ol.events.listen(image, 'change', function() {
if (image.getState() == ol.ImageState.LOADED) {
done();
}
@@ -28,7 +28,7 @@ describe('ol.reproj.Image', function() {
it('returns correct canvas size', function(done) {
var image = createImage(1);
image.listen('change', function() {
ol.events.listen(image, 'change', function() {
if (image.getState() == ol.ImageState.LOADED) {
var canvas = image.getImage();
expect(canvas.width).to.be(36);
@@ -41,7 +41,7 @@ describe('ol.reproj.Image', function() {
it('respects pixelRatio', function(done) {
var image = createImage(2);
image.listen('change', function() {
ol.events.listen(image, 'change', function() {
if (image.getState() == ol.ImageState.LOADED) {
var canvas = image.getImage();
expect(canvas.width).to.be(72);
@@ -56,5 +56,6 @@ describe('ol.reproj.Image', function() {
goog.require('ol.Image');
goog.require('ol.ImageState');
goog.require('ol.events');
goog.require('ol.proj');
goog.require('ol.reproj.Image');

View File

@@ -34,7 +34,7 @@ describe('ol.reproj.Tile', function() {
it('changes state as expected', function(done) {
var tile = createTile(1);
expect(tile.getState()).to.be(ol.TileState.IDLE);
tile.listen('change', function() {
ol.events.listen(tile, 'change', function() {
if (tile.getState() == ol.TileState.LOADED) {
done();
}
@@ -68,7 +68,7 @@ describe('ol.reproj.Tile', function() {
it('respects tile size of target tile grid', function(done) {
var tile = createTile(1, [100, 40]);
tile.listen('change', function() {
ol.events.listen(tile, 'change', function() {
if (tile.getState() == ol.TileState.LOADED) {
var canvas = tile.getImage();
expect(canvas.width).to.be(100);
@@ -81,7 +81,7 @@ describe('ol.reproj.Tile', function() {
it('respects pixelRatio', function(done) {
var tile = createTile(3, [60, 20]);
tile.listen('change', function() {
ol.events.listen(tile, 'change', function() {
if (tile.getState() == ol.TileState.LOADED) {
var canvas = tile.getImage();
expect(canvas.width).to.be(180);
@@ -96,5 +96,6 @@ describe('ol.reproj.Tile', function() {
goog.require('ol.ImageTile');
goog.require('ol.TileState');
goog.require('ol.events');
goog.require('ol.proj');
goog.require('ol.reproj.Tile');

View File

@@ -7,24 +7,21 @@ describe('ol.source.BingMaps', function() {
var source, tileGrid;
beforeEach(function(done) {
var googNetJsonp = goog.net.Jsonp;
// mock goog.net.Jsonp (used in the ol.source.TileJSON constructor)
goog.net.Jsonp = function() {
this.send = function() {
var callback = arguments[1];
var client = new XMLHttpRequest();
client.open('GET', 'spec/ol/data/bing_aerialwithlabels.json', true);
client.onload = function() {
callback(JSON.parse(client.responseText));
};
client.send();
var olNetJsonp = ol.net.jsonp;
// mock ol.net.Jsonp (used in the ol.source.TileJSON constructor)
ol.net.jsonp = function(url, callback) {
var client = new XMLHttpRequest();
client.open('GET', 'spec/ol/data/bing_aerialwithlabels.json', true);
client.onload = function() {
callback(JSON.parse(client.responseText));
};
client.send();
};
source = new ol.source.BingMaps({
imagerySet: 'AerialWithLabels',
key: ''
});
goog.net.Jsonp = googNetJsonp;
ol.net.jsonp = olNetJsonp;
var key = source.on('change', function() {
if (source.getState() === 'ready') {
ol.Observable.unByKey(key);
@@ -75,7 +72,7 @@ describe('ol.source.BingMaps', function() {
});
goog.require('goog.net.Jsonp');
goog.require('ol.net');
goog.require('ol.source.BingMaps');
goog.require('ol.tilecoord');
goog.require('ol.Observable');

View File

@@ -124,7 +124,7 @@ describe('ol.source.TileImage', function() {
var tile = source.getTile(0, 0, -1, 1, ol.proj.get('EPSG:3857'));
expect(tile).to.be.a(ol.reproj.Tile);
tile.listen('change', function() {
ol.events.listen(tile, 'change', function() {
if (tile.getState() == ol.TileState.LOADED) {
done();
}
@@ -143,7 +143,7 @@ describe('ol.source.TileImage', function() {
var tile = source.getTile(0, 0, -1, 1, proj);
expect(tile).to.be.a(ol.reproj.Tile);
tile.listen('change', function() {
ol.events.listen(tile, 'change', function() {
if (tile.getState() == ol.TileState.LOADED) {
done();
}
@@ -157,6 +157,7 @@ goog.require('ol.ImageTile');
goog.require('ol.Tile');
goog.require('ol.TileState');
goog.require('ol.TileUrlFunction');
goog.require('ol.events');
goog.require('ol.proj');
goog.require('ol.proj.Projection');
goog.require('ol.reproj.Tile');

View File

@@ -11,7 +11,7 @@ describe('ol.source.TileJSON', function() {
var source = new ol.source.TileJSON({
url: 'invalid.jsonp'
});
goog.events.listen(source, 'change', changeSpy);
ol.events.listen(source, 'change', changeSpy);
});
});
@@ -73,7 +73,7 @@ describe('ol.source.TileJSON', function() {
});
goog.require('goog.events');
goog.require('ol.events');
goog.require('ol.source.State');
goog.require('ol.source.TileJSON');
goog.require('ol.Observable');

View File

@@ -57,7 +57,7 @@ describe('ol.source.Vector', function() {
it('fires a change event', function() {
var listener = sinon.spy();
goog.events.listen(vectorSource, 'change', listener);
ol.events.listen(vectorSource, 'change', listener);
vectorSource.addFeature(pointFeature);
expect(listener).to.be.called();
});
@@ -98,11 +98,11 @@ describe('ol.source.Vector', function() {
it('removes all features using fast path', function() {
var changeSpy = sinon.spy();
goog.events.listen(vectorSource, 'change', changeSpy);
ol.events.listen(vectorSource, 'change', changeSpy);
var removeFeatureSpy = sinon.spy();
goog.events.listen(vectorSource, 'removefeature', removeFeatureSpy);
ol.events.listen(vectorSource, 'removefeature', removeFeatureSpy);
var clearSourceSpy = sinon.spy();
goog.events.listen(vectorSource, 'clear', clearSourceSpy);
ol.events.listen(vectorSource, 'clear', clearSourceSpy);
vectorSource.clear(true);
expect(vectorSource.getFeatures()).to.eql([]);
expect(vectorSource.isEmpty()).to.be(true);
@@ -116,11 +116,11 @@ describe('ol.source.Vector', function() {
it('removes all features using slow path', function() {
var changeSpy = sinon.spy();
goog.events.listen(vectorSource, 'change', changeSpy);
ol.events.listen(vectorSource, 'change', changeSpy);
var removeFeatureSpy = sinon.spy();
goog.events.listen(vectorSource, 'removefeature', removeFeatureSpy);
ol.events.listen(vectorSource, 'removefeature', removeFeatureSpy);
var clearSourceSpy = sinon.spy();
goog.events.listen(vectorSource, 'clear', clearSourceSpy);
ol.events.listen(vectorSource, 'clear', clearSourceSpy);
vectorSource.clear();
expect(vectorSource.getFeatures()).to.eql([]);
expect(vectorSource.isEmpty()).to.be(true);
@@ -184,7 +184,7 @@ describe('ol.source.Vector', function() {
it('fires a change event', function() {
var listener = sinon.spy();
goog.events.listen(vectorSource, 'change', listener);
ol.events.listen(vectorSource, 'change', listener);
vectorSource.removeFeature(features[0]);
expect(listener).to.be.called();
});
@@ -270,7 +270,7 @@ describe('ol.source.Vector', function() {
var feature = new ol.Feature(new ol.geom.Point([1, 1]));
vectorSource.addFeature(feature);
var listener = sinon.spy();
goog.events.listen(vectorSource, 'change', listener);
ol.events.listen(vectorSource, 'change', listener);
feature.set('foo', 'bar');
expect(listener).to.be.called();
});
@@ -554,7 +554,7 @@ describe('ol.source.Vector', function() {
});
goog.require('goog.events');
goog.require('ol.events');
goog.require('ol.Collection');
goog.require('ol.Feature');
goog.require('ol.geom.Point');

View File

@@ -194,14 +194,14 @@ describe('ol.style.IconImageCache', function() {
src = '0';
iconImage = new ol.style.IconImage_(src, null);
goog.events.listen(iconImage, goog.events.EventType.CHANGE,
ol.events.listen(iconImage, ol.events.EventType.CHANGE,
ol.nullFunction, false);
cache.set(src, null, null, iconImage);
expect(cache.cacheSize_).to.eql(4);
src = '4';
iconImage = new ol.style.IconImage_(src, null);
goog.events.listen(iconImage, goog.events.EventType.CHANGE,
ol.events.listen(iconImage, ol.events.EventType.CHANGE,
ol.nullFunction, false);
cache.set(src, null, null, iconImage);
expect(cache.cacheSize_).to.eql(5);
@@ -217,6 +217,6 @@ describe('ol.style.IconImageCache', function() {
});
});
goog.require('goog.events');
goog.require('goog.events.EventType');
goog.require('ol.events');
goog.require('ol.events.EventType');
goog.require('ol.style.IconImageCache');